Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
c8079203
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
c8079203
编写于
7月 29, 2015
作者:
P
prr
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8132042: Preserve layout presentation
Reviewed-by: mschoene, srl, serb
上级
cf7f7d69
变更
11
隐藏空白更改
内联
并排
Showing
11 changed file
with
182 addition
and
23 deletion
+182
-23
src/share/native/sun/font/layout/IndicRearrangementProcessor.cpp
...re/native/sun/font/layout/IndicRearrangementProcessor.cpp
+80
-8
src/share/native/sun/font/layout/IndicRearrangementProcessor.h
...hare/native/sun/font/layout/IndicRearrangementProcessor.h
+3
-3
src/share/native/sun/font/layout/IndicRearrangementProcessor2.cpp
...e/native/sun/font/layout/IndicRearrangementProcessor2.cpp
+80
-8
src/share/native/sun/font/layout/IndicRearrangementProcessor2.h
...are/native/sun/font/layout/IndicRearrangementProcessor2.h
+3
-3
src/share/native/sun/font/layout/MorphTables.cpp
src/share/native/sun/font/layout/MorphTables.cpp
+3
-0
src/share/native/sun/font/layout/MorphTables2.cpp
src/share/native/sun/font/layout/MorphTables2.cpp
+3
-0
src/share/native/sun/font/layout/SegmentArrayProcessor.cpp
src/share/native/sun/font/layout/SegmentArrayProcessor.cpp
+2
-0
src/share/native/sun/font/layout/SegmentArrayProcessor2.cpp
src/share/native/sun/font/layout/SegmentArrayProcessor2.cpp
+2
-0
src/share/native/sun/font/layout/SegmentSingleProcessor2.cpp
src/share/native/sun/font/layout/SegmentSingleProcessor2.cpp
+2
-0
src/share/native/sun/font/layout/SimpleArrayProcessor2.cpp
src/share/native/sun/font/layout/SimpleArrayProcessor2.cpp
+2
-1
src/share/native/sun/font/layout/SingleTableProcessor.cpp
src/share/native/sun/font/layout/SingleTableProcessor.cpp
+2
-0
未找到文件。
src/share/native/sun/font/layout/IndicRearrangementProcessor.cpp
浏览文件 @
c8079203
...
...
@@ -76,14 +76,14 @@ ByteOffset IndicRearrangementProcessor::processStateEntry(LEGlyphStorage &glyphS
}
if
(
flags
&
irfMarkFirst
)
{
firstGlyph
=
currGlyph
;
firstGlyph
=
(
le_uint32
)
currGlyph
;
}
if
(
flags
&
irfMarkLast
)
{
lastGlyph
=
currGlyph
;
lastGlyph
=
(
le_uint32
)
currGlyph
;
}
doRearrangementAction
(
glyphStorage
,
(
IndicRearrangementVerb
)
(
flags
&
irfVerbMask
));
doRearrangementAction
(
glyphStorage
,
(
IndicRearrangementVerb
)
(
flags
&
irfVerbMask
)
,
success
);
if
(
!
(
flags
&
irfDontAdvance
))
{
// XXX: Should handle reverse too...
...
...
@@ -97,18 +97,29 @@ void IndicRearrangementProcessor::endStateTable()
{
}
void
IndicRearrangementProcessor
::
doRearrangementAction
(
LEGlyphStorage
&
glyphStorage
,
IndicRearrangementVerb
verb
)
const
void
IndicRearrangementProcessor
::
doRearrangementAction
(
LEGlyphStorage
&
glyphStorage
,
IndicRearrangementVerb
verb
,
LEErrorCode
&
success
)
const
{
LEGlyphID
a
,
b
,
c
,
d
;
le_int32
ia
,
ib
,
ic
,
id
,
ix
,
x
;
LEErrorCode
success
=
LE_NO_ERROR
;
if
(
LE_FAILURE
(
success
))
return
;
if
(
verb
==
irvNoAction
)
{
return
;
}
if
(
firstGlyph
>
lastGlyph
)
{
success
=
LE_INDEX_OUT_OF_BOUNDS_ERROR
;
return
;
}
switch
(
verb
)
{
case
irvNoAction
:
break
;
case
irvxA
:
if
(
firstGlyph
==
lastGlyph
)
break
;
if
(
firstGlyph
+
1
<
firstGlyph
)
{
success
=
LE_INDEX_OUT_OF_BOUNDS_ERROR
;
break
;
}
a
=
glyphStorage
[
firstGlyph
];
ia
=
glyphStorage
.
getCharIndex
(
firstGlyph
,
success
);
x
=
firstGlyph
+
1
;
...
...
@@ -125,6 +136,11 @@ void IndicRearrangementProcessor::doRearrangementAction(LEGlyphStorage &glyphSto
break
;
case
irvDx
:
if
(
firstGlyph
==
lastGlyph
)
break
;
if
(
lastGlyph
-
1
>
lastGlyph
)
{
success
=
LE_INDEX_OUT_OF_BOUNDS_ERROR
;
break
;
}
d
=
glyphStorage
[
lastGlyph
];
id
=
glyphStorage
.
getCharIndex
(
lastGlyph
,
success
);
x
=
lastGlyph
-
1
;
...
...
@@ -153,6 +169,11 @@ void IndicRearrangementProcessor::doRearrangementAction(LEGlyphStorage &glyphSto
break
;
case
irvxAB
:
if
((
firstGlyph
+
2
<
firstGlyph
)
||
(
lastGlyph
-
firstGlyph
<
1
))
{
// difference == 1 is a no-op, < 1 is an error.
success
=
LE_INDEX_OUT_OF_BOUNDS_ERROR
;
break
;
}
a
=
glyphStorage
[
firstGlyph
];
b
=
glyphStorage
[
firstGlyph
+
1
];
ia
=
glyphStorage
.
getCharIndex
(
firstGlyph
,
success
);
...
...
@@ -174,6 +195,11 @@ void IndicRearrangementProcessor::doRearrangementAction(LEGlyphStorage &glyphSto
break
;
case
irvxBA
:
if
((
firstGlyph
+
2
<
firstGlyph
)
||
(
lastGlyph
-
firstGlyph
<
1
))
{
success
=
LE_INDEX_OUT_OF_BOUNDS_ERROR
;
break
;
}
a
=
glyphStorage
[
firstGlyph
];
b
=
glyphStorage
[
firstGlyph
+
1
];
ia
=
glyphStorage
.
getCharIndex
(
firstGlyph
,
success
);
...
...
@@ -195,6 +221,11 @@ void IndicRearrangementProcessor::doRearrangementAction(LEGlyphStorage &glyphSto
break
;
case
irvCDx
:
if
((
lastGlyph
-
2
>
lastGlyph
)
||
(
lastGlyph
-
firstGlyph
<
1
))
{
success
=
LE_INDEX_OUT_OF_BOUNDS_ERROR
;
break
;
}
c
=
glyphStorage
[
lastGlyph
-
1
];
d
=
glyphStorage
[
lastGlyph
];
ic
=
glyphStorage
.
getCharIndex
(
lastGlyph
-
1
,
success
);
...
...
@@ -216,6 +247,11 @@ void IndicRearrangementProcessor::doRearrangementAction(LEGlyphStorage &glyphSto
break
;
case
irvDCx
:
if
((
lastGlyph
-
2
>
lastGlyph
)
||
(
lastGlyph
-
firstGlyph
<
1
))
{
success
=
LE_INDEX_OUT_OF_BOUNDS_ERROR
;
break
;
}
c
=
glyphStorage
[
lastGlyph
-
1
];
d
=
glyphStorage
[
lastGlyph
];
ic
=
glyphStorage
.
getCharIndex
(
lastGlyph
-
1
,
success
);
...
...
@@ -237,6 +273,11 @@ void IndicRearrangementProcessor::doRearrangementAction(LEGlyphStorage &glyphSto
break
;
case
irvCDxA
:
if
((
lastGlyph
-
2
>
lastGlyph
)
||
(
lastGlyph
-
firstGlyph
<
2
))
{
success
=
LE_INDEX_OUT_OF_BOUNDS_ERROR
;
break
;
}
a
=
glyphStorage
[
firstGlyph
];
c
=
glyphStorage
[
lastGlyph
-
1
];
d
=
glyphStorage
[
lastGlyph
];
...
...
@@ -262,6 +303,11 @@ void IndicRearrangementProcessor::doRearrangementAction(LEGlyphStorage &glyphSto
break
;
case
irvDCxA
:
if
((
lastGlyph
-
2
>
lastGlyph
)
||
(
lastGlyph
-
firstGlyph
<
2
))
{
success
=
LE_INDEX_OUT_OF_BOUNDS_ERROR
;
break
;
}
a
=
glyphStorage
[
firstGlyph
];
c
=
glyphStorage
[
lastGlyph
-
1
];
d
=
glyphStorage
[
lastGlyph
];
...
...
@@ -287,6 +333,11 @@ void IndicRearrangementProcessor::doRearrangementAction(LEGlyphStorage &glyphSto
break
;
case
irvDxAB
:
if
((
firstGlyph
+
2
<
firstGlyph
)
||
(
lastGlyph
-
firstGlyph
<
2
))
{
success
=
LE_INDEX_OUT_OF_BOUNDS_ERROR
;
break
;
}
a
=
glyphStorage
[
firstGlyph
];
b
=
glyphStorage
[
firstGlyph
+
1
];
d
=
glyphStorage
[
lastGlyph
];
...
...
@@ -312,6 +363,11 @@ void IndicRearrangementProcessor::doRearrangementAction(LEGlyphStorage &glyphSto
break
;
case
irvDxBA
:
if
((
firstGlyph
+
2
<
firstGlyph
)
||
(
lastGlyph
-
firstGlyph
<
2
))
{
success
=
LE_INDEX_OUT_OF_BOUNDS_ERROR
;
break
;
}
a
=
glyphStorage
[
firstGlyph
];
b
=
glyphStorage
[
firstGlyph
+
1
];
d
=
glyphStorage
[
lastGlyph
];
...
...
@@ -337,6 +393,10 @@ void IndicRearrangementProcessor::doRearrangementAction(LEGlyphStorage &glyphSto
break
;
case
irvCDxAB
:
if
(
lastGlyph
-
firstGlyph
<
3
)
{
success
=
LE_INDEX_OUT_OF_BOUNDS_ERROR
;
break
;
}
a
=
glyphStorage
[
firstGlyph
];
b
=
glyphStorage
[
firstGlyph
+
1
];
...
...
@@ -359,6 +419,10 @@ void IndicRearrangementProcessor::doRearrangementAction(LEGlyphStorage &glyphSto
break
;
case
irvCDxBA
:
if
(
lastGlyph
-
firstGlyph
<
3
)
{
success
=
LE_INDEX_OUT_OF_BOUNDS_ERROR
;
break
;
}
a
=
glyphStorage
[
firstGlyph
];
b
=
glyphStorage
[
firstGlyph
+
1
];
...
...
@@ -381,6 +445,10 @@ void IndicRearrangementProcessor::doRearrangementAction(LEGlyphStorage &glyphSto
break
;
case
irvDCxAB
:
if
(
lastGlyph
-
firstGlyph
<
3
)
{
success
=
LE_INDEX_OUT_OF_BOUNDS_ERROR
;
break
;
}
a
=
glyphStorage
[
firstGlyph
];
b
=
glyphStorage
[
firstGlyph
+
1
];
...
...
@@ -403,6 +471,10 @@ void IndicRearrangementProcessor::doRearrangementAction(LEGlyphStorage &glyphSto
break
;
case
irvDCxBA
:
if
(
lastGlyph
-
firstGlyph
<
3
)
{
success
=
LE_INDEX_OUT_OF_BOUNDS_ERROR
;
break
;
}
a
=
glyphStorage
[
firstGlyph
];
b
=
glyphStorage
[
firstGlyph
+
1
];
...
...
src/share/native/sun/font/layout/IndicRearrangementProcessor.h
浏览文件 @
c8079203
...
...
@@ -56,7 +56,7 @@ public:
virtual
void
endStateTable
();
void
doRearrangementAction
(
LEGlyphStorage
&
glyphStorage
,
IndicRearrangementVerb
verb
)
const
;
void
doRearrangementAction
(
LEGlyphStorage
&
glyphStorage
,
IndicRearrangementVerb
verb
,
LEErrorCode
&
success
)
const
;
IndicRearrangementProcessor
(
const
LEReferenceTo
<
MorphSubtableHeader
>
&
morphSubtableHeader
,
LEErrorCode
&
success
);
virtual
~
IndicRearrangementProcessor
();
...
...
@@ -76,8 +76,8 @@ public:
static
UClassID
getStaticClassID
();
protected:
le_int32
firstGlyph
;
le_int32
lastGlyph
;
le_
u
int32
firstGlyph
;
le_
u
int32
lastGlyph
;
LEReferenceTo
<
IndicRearrangementSubtableHeader
>
indicRearrangementSubtableHeader
;
LEReferenceToArrayOf
<
IndicRearrangementStateEntry
>
entryTable
;
...
...
src/share/native/sun/font/layout/IndicRearrangementProcessor2.cpp
浏览文件 @
c8079203
...
...
@@ -74,14 +74,14 @@ le_uint16 IndicRearrangementProcessor2::processStateEntry(LEGlyphStorage &glyphS
}
if
(
flags
&
irfMarkFirst
)
{
firstGlyph
=
currGlyph
;
firstGlyph
=
(
le_uint32
)
currGlyph
;
}
if
(
flags
&
irfMarkLast
)
{
lastGlyph
=
currGlyph
;
lastGlyph
=
(
le_uint32
)
currGlyph
;
}
doRearrangementAction
(
glyphStorage
,
(
IndicRearrangementVerb
)
(
flags
&
irfVerbMask
));
doRearrangementAction
(
glyphStorage
,
(
IndicRearrangementVerb
)
(
flags
&
irfVerbMask
)
,
success
);
if
(
!
(
flags
&
irfDontAdvance
))
{
currGlyph
+=
dir
;
...
...
@@ -94,18 +94,29 @@ void IndicRearrangementProcessor2::endStateTable()
{
}
void
IndicRearrangementProcessor2
::
doRearrangementAction
(
LEGlyphStorage
&
glyphStorage
,
IndicRearrangementVerb
verb
)
const
void
IndicRearrangementProcessor2
::
doRearrangementAction
(
LEGlyphStorage
&
glyphStorage
,
IndicRearrangementVerb
verb
,
LEErrorCode
&
success
)
const
{
LEGlyphID
a
,
b
,
c
,
d
;
le_int32
ia
,
ib
,
ic
,
id
,
ix
,
x
;
LEErrorCode
success
=
LE_NO_ERROR
;
if
(
LE_FAILURE
(
success
))
return
;
if
(
verb
==
irvNoAction
)
{
return
;
}
if
(
firstGlyph
>
lastGlyph
)
{
success
=
LE_INDEX_OUT_OF_BOUNDS_ERROR
;
return
;
}
switch
(
verb
)
{
case
irvNoAction
:
break
;
case
irvxA
:
if
(
firstGlyph
==
lastGlyph
)
break
;
if
(
firstGlyph
+
1
<
firstGlyph
)
{
success
=
LE_INDEX_OUT_OF_BOUNDS_ERROR
;
break
;
}
a
=
glyphStorage
[
firstGlyph
];
ia
=
glyphStorage
.
getCharIndex
(
firstGlyph
,
success
);
x
=
firstGlyph
+
1
;
...
...
@@ -122,6 +133,11 @@ void IndicRearrangementProcessor2::doRearrangementAction(LEGlyphStorage &glyphSt
break
;
case
irvDx
:
if
(
firstGlyph
==
lastGlyph
)
break
;
if
(
lastGlyph
-
1
>
lastGlyph
)
{
success
=
LE_INDEX_OUT_OF_BOUNDS_ERROR
;
break
;
}
d
=
glyphStorage
[
lastGlyph
];
id
=
glyphStorage
.
getCharIndex
(
lastGlyph
,
success
);
x
=
lastGlyph
-
1
;
...
...
@@ -150,6 +166,11 @@ void IndicRearrangementProcessor2::doRearrangementAction(LEGlyphStorage &glyphSt
break
;
case
irvxAB
:
if
((
firstGlyph
+
2
<
firstGlyph
)
||
(
lastGlyph
-
firstGlyph
<
1
))
{
// difference == 1 is a no-op, < 1 is an error.
success
=
LE_INDEX_OUT_OF_BOUNDS_ERROR
;
break
;
}
a
=
glyphStorage
[
firstGlyph
];
b
=
glyphStorage
[
firstGlyph
+
1
];
ia
=
glyphStorage
.
getCharIndex
(
firstGlyph
,
success
);
...
...
@@ -171,6 +192,11 @@ void IndicRearrangementProcessor2::doRearrangementAction(LEGlyphStorage &glyphSt
break
;
case
irvxBA
:
if
((
firstGlyph
+
2
<
firstGlyph
)
||
(
lastGlyph
-
firstGlyph
<
1
))
{
success
=
LE_INDEX_OUT_OF_BOUNDS_ERROR
;
break
;
}
a
=
glyphStorage
[
firstGlyph
];
b
=
glyphStorage
[
firstGlyph
+
1
];
ia
=
glyphStorage
.
getCharIndex
(
firstGlyph
,
success
);
...
...
@@ -192,6 +218,11 @@ void IndicRearrangementProcessor2::doRearrangementAction(LEGlyphStorage &glyphSt
break
;
case
irvCDx
:
if
((
lastGlyph
-
2
>
lastGlyph
)
||
(
lastGlyph
-
firstGlyph
<
1
))
{
success
=
LE_INDEX_OUT_OF_BOUNDS_ERROR
;
break
;
}
c
=
glyphStorage
[
lastGlyph
-
1
];
d
=
glyphStorage
[
lastGlyph
];
ic
=
glyphStorage
.
getCharIndex
(
lastGlyph
-
1
,
success
);
...
...
@@ -213,6 +244,11 @@ void IndicRearrangementProcessor2::doRearrangementAction(LEGlyphStorage &glyphSt
break
;
case
irvDCx
:
if
((
lastGlyph
-
2
>
lastGlyph
)
||
(
lastGlyph
-
firstGlyph
<
1
))
{
success
=
LE_INDEX_OUT_OF_BOUNDS_ERROR
;
break
;
}
c
=
glyphStorage
[
lastGlyph
-
1
];
d
=
glyphStorage
[
lastGlyph
];
ic
=
glyphStorage
.
getCharIndex
(
lastGlyph
-
1
,
success
);
...
...
@@ -234,6 +270,11 @@ void IndicRearrangementProcessor2::doRearrangementAction(LEGlyphStorage &glyphSt
break
;
case
irvCDxA
:
if
((
lastGlyph
-
2
>
lastGlyph
)
||
(
lastGlyph
-
firstGlyph
<
2
))
{
success
=
LE_INDEX_OUT_OF_BOUNDS_ERROR
;
break
;
}
a
=
glyphStorage
[
firstGlyph
];
c
=
glyphStorage
[
lastGlyph
-
1
];
d
=
glyphStorage
[
lastGlyph
];
...
...
@@ -259,6 +300,11 @@ void IndicRearrangementProcessor2::doRearrangementAction(LEGlyphStorage &glyphSt
break
;
case
irvDCxA
:
if
((
lastGlyph
-
2
>
lastGlyph
)
||
(
lastGlyph
-
firstGlyph
<
2
))
{
success
=
LE_INDEX_OUT_OF_BOUNDS_ERROR
;
break
;
}
a
=
glyphStorage
[
firstGlyph
];
c
=
glyphStorage
[
lastGlyph
-
1
];
d
=
glyphStorage
[
lastGlyph
];
...
...
@@ -284,6 +330,11 @@ void IndicRearrangementProcessor2::doRearrangementAction(LEGlyphStorage &glyphSt
break
;
case
irvDxAB
:
if
((
firstGlyph
+
2
<
firstGlyph
)
||
(
lastGlyph
-
firstGlyph
<
2
))
{
success
=
LE_INDEX_OUT_OF_BOUNDS_ERROR
;
break
;
}
a
=
glyphStorage
[
firstGlyph
];
b
=
glyphStorage
[
firstGlyph
+
1
];
d
=
glyphStorage
[
lastGlyph
];
...
...
@@ -309,6 +360,11 @@ void IndicRearrangementProcessor2::doRearrangementAction(LEGlyphStorage &glyphSt
break
;
case
irvDxBA
:
if
((
firstGlyph
+
2
<
firstGlyph
)
||
(
lastGlyph
-
firstGlyph
<
2
))
{
success
=
LE_INDEX_OUT_OF_BOUNDS_ERROR
;
break
;
}
a
=
glyphStorage
[
firstGlyph
];
b
=
glyphStorage
[
firstGlyph
+
1
];
d
=
glyphStorage
[
lastGlyph
];
...
...
@@ -334,6 +390,10 @@ void IndicRearrangementProcessor2::doRearrangementAction(LEGlyphStorage &glyphSt
break
;
case
irvCDxAB
:
if
(
lastGlyph
-
firstGlyph
<
3
)
{
success
=
LE_INDEX_OUT_OF_BOUNDS_ERROR
;
break
;
}
a
=
glyphStorage
[
firstGlyph
];
b
=
glyphStorage
[
firstGlyph
+
1
];
...
...
@@ -356,6 +416,10 @@ void IndicRearrangementProcessor2::doRearrangementAction(LEGlyphStorage &glyphSt
break
;
case
irvCDxBA
:
if
(
lastGlyph
-
firstGlyph
<
3
)
{
success
=
LE_INDEX_OUT_OF_BOUNDS_ERROR
;
break
;
}
a
=
glyphStorage
[
firstGlyph
];
b
=
glyphStorage
[
firstGlyph
+
1
];
...
...
@@ -378,6 +442,10 @@ void IndicRearrangementProcessor2::doRearrangementAction(LEGlyphStorage &glyphSt
break
;
case
irvDCxAB
:
if
(
lastGlyph
-
firstGlyph
<
3
)
{
success
=
LE_INDEX_OUT_OF_BOUNDS_ERROR
;
break
;
}
a
=
glyphStorage
[
firstGlyph
];
b
=
glyphStorage
[
firstGlyph
+
1
];
...
...
@@ -400,6 +468,10 @@ void IndicRearrangementProcessor2::doRearrangementAction(LEGlyphStorage &glyphSt
break
;
case
irvDCxBA
:
if
(
lastGlyph
-
firstGlyph
<
3
)
{
success
=
LE_INDEX_OUT_OF_BOUNDS_ERROR
;
break
;
}
a
=
glyphStorage
[
firstGlyph
];
b
=
glyphStorage
[
firstGlyph
+
1
];
...
...
src/share/native/sun/font/layout/IndicRearrangementProcessor2.h
浏览文件 @
c8079203
...
...
@@ -56,7 +56,7 @@ public:
virtual
void
endStateTable
();
void
doRearrangementAction
(
LEGlyphStorage
&
glyphStorage
,
IndicRearrangementVerb
verb
)
const
;
void
doRearrangementAction
(
LEGlyphStorage
&
glyphStorage
,
IndicRearrangementVerb
verb
,
LEErrorCode
&
success
)
const
;
IndicRearrangementProcessor2
(
const
LEReferenceTo
<
MorphSubtableHeader2
>
&
morphSubtableHeader
,
LEErrorCode
&
success
);
virtual
~
IndicRearrangementProcessor2
();
...
...
@@ -76,8 +76,8 @@ public:
static
UClassID
getStaticClassID
();
protected:
le_int32
firstGlyph
;
le_int32
lastGlyph
;
le_
u
int32
firstGlyph
;
le_
u
int32
lastGlyph
;
LEReferenceToArrayOf
<
IndicRearrangementStateEntry2
>
entryTable
;
LEReferenceTo
<
IndicRearrangementSubtableHeader2
>
indicRearrangementSubtableHeader
;
...
...
src/share/native/sun/font/layout/MorphTables.cpp
浏览文件 @
c8079203
...
...
@@ -75,6 +75,7 @@ void MorphTableHeader::process(const LETableReference &base, LEGlyphStorage &gly
return
;
}
subtableHeader
.
addOffset
(
length
,
success
);
if
(
LE_FAILURE
(
success
))
break
;
}
SubtableCoverage
coverage
=
SWAPW
(
subtableHeader
->
coverage
);
FeatureFlags
subtableFeatures
=
SWAPL
(
subtableHeader
->
subtableFeatures
);
...
...
@@ -91,6 +92,8 @@ void MorphSubtableHeader::process(const LEReferenceTo<MorphSubtableHeader> &base
{
SubtableProcessor
*
processor
=
NULL
;
if
(
LE_FAILURE
(
success
))
return
;
switch
(
SWAPW
(
coverage
)
&
scfTypeMask
)
{
case
mstIndicRearrangement
:
...
...
src/share/native/sun/font/layout/MorphTables2.cpp
浏览文件 @
c8079203
...
...
@@ -197,6 +197,7 @@ void MorphTableHeader2::process(const LEReferenceTo<MorphTableHeader2> &base, LE
return
;
}
subtableHeader
.
addOffset
(
length
,
success
);
// Don't addOffset for the last entry.
if
(
LE_FAILURE
(
success
))
break
;
}
le_uint32
coverage
=
SWAPL
(
subtableHeader
->
coverage
);
FeatureFlags
subtableFeatures
=
SWAPL
(
subtableHeader
->
subtableFeatures
);
...
...
@@ -212,6 +213,8 @@ void MorphSubtableHeader2::process(const LEReferenceTo<MorphSubtableHeader2> &ba
{
SubtableProcessor2
*
processor
=
NULL
;
if
(
LE_FAILURE
(
success
))
return
;
switch
(
SWAPL
(
coverage
)
&
scfTypeMask2
)
{
case
mstIndicRearrangement
:
...
...
src/share/native/sun/font/layout/SegmentArrayProcessor.cpp
浏览文件 @
c8079203
...
...
@@ -63,6 +63,8 @@ void SegmentArrayProcessor::process(LEGlyphStorage &glyphStorage, LEErrorCode &s
le_int32
glyphCount
=
glyphStorage
.
getGlyphCount
();
le_int32
glyph
;
if
(
LE_FAILURE
(
success
))
return
;
for
(
glyph
=
0
;
glyph
<
glyphCount
;
glyph
+=
1
)
{
LEGlyphID
thisGlyph
=
glyphStorage
[
glyph
];
const
LookupSegment
*
lookupSegment
=
segmentArrayLookupTable
->
lookupSegment
(
segmentArrayLookupTable
,
segments
,
thisGlyph
,
success
);
...
...
src/share/native/sun/font/layout/SegmentArrayProcessor2.cpp
浏览文件 @
c8079203
...
...
@@ -63,6 +63,8 @@ void SegmentArrayProcessor2::process(LEGlyphStorage &glyphStorage, LEErrorCode &
le_int32
glyphCount
=
glyphStorage
.
getGlyphCount
();
le_int32
glyph
;
if
(
LE_FAILURE
(
success
))
return
;
for
(
glyph
=
0
;
glyph
<
glyphCount
;
glyph
+=
1
)
{
LEGlyphID
thisGlyph
=
glyphStorage
[
glyph
];
// lookupSegment already range checked by lookupSegment() function.
...
...
src/share/native/sun/font/layout/SegmentSingleProcessor2.cpp
浏览文件 @
c8079203
...
...
@@ -64,6 +64,8 @@ void SegmentSingleProcessor2::process(LEGlyphStorage &glyphStorage, LEErrorCode
le_int32
glyphCount
=
glyphStorage
.
getGlyphCount
();
le_int32
glyph
;
if
(
LE_FAILURE
(
success
))
return
;
for
(
glyph
=
0
;
glyph
<
glyphCount
;
glyph
+=
1
)
{
LEGlyphID
thisGlyph
=
glyphStorage
[
glyph
];
const
LookupSegment
*
lookupSegment
=
segmentSingleLookupTable
->
lookupSegment
(
segmentSingleLookupTable
,
segments
,
thisGlyph
,
success
);
...
...
src/share/native/sun/font/layout/SimpleArrayProcessor2.cpp
浏览文件 @
c8079203
...
...
@@ -61,10 +61,11 @@ SimpleArrayProcessor2::~SimpleArrayProcessor2()
void
SimpleArrayProcessor2
::
process
(
LEGlyphStorage
&
glyphStorage
,
LEErrorCode
&
success
)
{
if
(
LE_FAILURE
(
success
))
return
;
le_int32
glyphCount
=
glyphStorage
.
getGlyphCount
();
le_int32
glyph
;
if
(
LE_FAILURE
(
success
))
return
;
for
(
glyph
=
0
;
glyph
<
glyphCount
;
glyph
+=
1
)
{
LEGlyphID
thisGlyph
=
glyphStorage
[
glyph
];
if
(
LE_GET_GLYPH
(
thisGlyph
)
<
0xFFFF
)
{
...
...
src/share/native/sun/font/layout/SingleTableProcessor.cpp
浏览文件 @
c8079203
...
...
@@ -63,6 +63,8 @@ void SingleTableProcessor::process(LEGlyphStorage &glyphStorage, LEErrorCode &su
le_int32
glyph
;
le_int32
glyphCount
=
glyphStorage
.
getGlyphCount
();
if
(
LE_FAILURE
(
success
))
return
;
for
(
glyph
=
0
;
glyph
<
glyphCount
;
glyph
+=
1
)
{
const
LookupSingle
*
lookupSingle
=
singleTableLookupTable
->
lookupSingle
(
singleTableLookupTable
,
entries
,
glyphStorage
[
glyph
],
success
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录