Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-fonts
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Aleksandr Isakov
wine-fonts
Commits
287243a9
Commit
287243a9
authored
Jan 18, 2013
by
Aric Stewart
Committed by
Alexandre Julliard
Jan 21, 2013
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
usp10: Group the GDEF table loading with the other opentype tables.
parent
9f18a03b
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
29 additions
and
32 deletions
+29
-32
opentype.c
dlls/usp10/opentype.c
+1
-19
shape.c
dlls/usp10/shape.c
+27
-12
usp10_internal.h
dlls/usp10/usp10_internal.h
+1
-1
No files found.
dlls/usp10/opentype.c
View file @
287243a9
...
...
@@ -76,8 +76,6 @@ typedef struct {
}
CMAP_SegmentedCoverage
;
/* These are all structures needed for the GDEF table */
#define GDEF_TAG MS_MAKE_TAG('G', 'D', 'E', 'F')
enum
{
BaseGlyph
=
1
,
LigatureGlyph
,
MarkGlyph
,
ComponentGlyph
};
typedef
struct
{
...
...
@@ -609,27 +607,11 @@ static WORD OT_get_glyph_class(const void *table, WORD glyph)
return
class
;
}
static
VOID
*
load_gdef_table
(
HDC
hdc
)
{
VOID
*
GDEF_Table
=
NULL
;
int
length
=
GetFontData
(
hdc
,
GDEF_TAG
,
0
,
NULL
,
0
);
if
(
length
!=
GDI_ERROR
)
{
GDEF_Table
=
HeapAlloc
(
GetProcessHeap
(),
0
,
length
);
GetFontData
(
hdc
,
GDEF_TAG
,
0
,
GDEF_Table
,
length
);
TRACE
(
"Loaded GDEF table of %i bytes
\n
"
,
length
);
}
return
GDEF_Table
;
}
void
OpenType_GDEF_UpdateGlyphProps
(
HDC
hdc
,
ScriptCache
*
psc
,
const
WORD
*
pwGlyphs
,
const
WORD
cGlyphs
,
WORD
*
pwLogClust
,
const
WORD
cChars
,
SCRIPT_GLYPHPROP
*
pGlyphProp
)
void
OpenType_GDEF_UpdateGlyphProps
(
ScriptCache
*
psc
,
const
WORD
*
pwGlyphs
,
const
WORD
cGlyphs
,
WORD
*
pwLogClust
,
const
WORD
cChars
,
SCRIPT_GLYPHPROP
*
pGlyphProp
)
{
int
i
;
void
*
glyph_class_table
=
NULL
;
if
(
!
psc
->
GDEF_Table
)
psc
->
GDEF_Table
=
load_gdef_table
(
hdc
);
if
(
psc
->
GDEF_Table
)
{
const
GDEF_Header
*
header
=
psc
->
GDEF_Table
;
...
...
dlls/usp10/shape.c
View file @
287243a9
...
...
@@ -63,7 +63,7 @@ static void ContextualShape_Mongolian(HDC hdc, ScriptCache *psc, SCRIPT_ANALYSIS
typedef
VOID
(
*
ShapeCharGlyphPropProc
)(
HDC
,
ScriptCache
*
,
SCRIPT_ANALYSIS
*
,
const
WCHAR
*
,
const
INT
,
const
WORD
*
,
const
INT
,
WORD
*
,
SCRIPT_CHARPROP
*
,
SCRIPT_GLYPHPROP
*
);
static
void
ShapeCharGlyphProp_Default
(
HDC
hdc
,
ScriptCache
*
psc
,
SCRIPT_ANALYSIS
*
psa
,
const
WCHAR
*
pwcChars
,
const
INT
cChars
,
const
WORD
*
pwGlyphs
,
const
INT
cGlyphs
,
WORD
*
pwLogClust
,
SCRIPT_CHARPROP
*
pCharProp
,
SCRIPT_GLYPHPROP
*
pGlyphProp
);
static
void
ShapeCharGlyphProp_Default
(
ScriptCache
*
psc
,
SCRIPT_ANALYSIS
*
psa
,
const
WCHAR
*
pwcChars
,
const
INT
cChars
,
const
WORD
*
pwGlyphs
,
const
INT
cGlyphs
,
WORD
*
pwLogClust
,
SCRIPT_CHARPROP
*
pCharProp
,
SCRIPT_GLYPHPROP
*
pGlyphProp
);
static
void
ShapeCharGlyphProp_Arabic
(
HDC
hdc
,
ScriptCache
*
psc
,
SCRIPT_ANALYSIS
*
psa
,
const
WCHAR
*
pwcChars
,
const
INT
cChars
,
const
WORD
*
pwGlyphs
,
const
INT
cGlyphs
,
WORD
*
pwLogClust
,
SCRIPT_CHARPROP
*
pCharProp
,
SCRIPT_GLYPHPROP
*
pGlyphProp
);
static
void
ShapeCharGlyphProp_Hebrew
(
HDC
hdc
,
ScriptCache
*
psc
,
SCRIPT_ANALYSIS
*
psa
,
const
WCHAR
*
pwcChars
,
const
INT
cChars
,
const
WORD
*
pwGlyphs
,
const
INT
cGlyphs
,
WORD
*
pwLogClust
,
SCRIPT_CHARPROP
*
pCharProp
,
SCRIPT_GLYPHPROP
*
pGlyphProp
);
static
void
ShapeCharGlyphProp_Thai
(
HDC
hdc
,
ScriptCache
*
psc
,
SCRIPT_ANALYSIS
*
psa
,
const
WCHAR
*
pwcChars
,
const
INT
cChars
,
const
WORD
*
pwGlyphs
,
const
INT
cGlyphs
,
WORD
*
pwLogClust
,
SCRIPT_CHARPROP
*
pCharProp
,
SCRIPT_GLYPHPROP
*
pGlyphProp
);
...
...
@@ -675,12 +675,27 @@ static VOID *load_gpos_table(HDC hdc)
return
GPOS_Table
;
}
static
VOID
*
load_gdef_table
(
HDC
hdc
)
{
VOID
*
GDEF_Table
=
NULL
;
int
length
=
GetFontData
(
hdc
,
MS_MAKE_TAG
(
'G'
,
'D'
,
'E'
,
'F'
),
0
,
NULL
,
0
);
if
(
length
!=
GDI_ERROR
)
{
GDEF_Table
=
HeapAlloc
(
GetProcessHeap
(),
0
,
length
);
GetFontData
(
hdc
,
MS_MAKE_TAG
(
'G'
,
'D'
,
'E'
,
'F'
),
0
,
GDEF_Table
,
length
);
TRACE
(
"Loaded GDEF table of %i bytes
\n
"
,
length
);
}
return
GDEF_Table
;
}
static
VOID
load_ot_tables
(
HDC
hdc
,
ScriptCache
*
psc
)
{
if
(
!
psc
->
GSUB_Table
)
psc
->
GSUB_Table
=
load_gsub_table
(
hdc
);
if
(
!
psc
->
GPOS_Table
)
psc
->
GPOS_Table
=
load_gpos_table
(
hdc
);
if
(
!
psc
->
GDEF_Table
)
psc
->
GDEF_Table
=
load_gdef_table
(
hdc
);
}
INT
SHAPE_does_GSUB_feature_apply_to_chars
(
HDC
hdc
,
SCRIPT_ANALYSIS
*
psa
,
ScriptCache
*
psc
,
const
WCHAR
*
chars
,
INT
write_dir
,
INT
count
,
const
char
*
feature
)
...
...
@@ -2741,8 +2756,6 @@ static void ContextualShape_Mongolian(HDC hdc, ScriptCache *psc, SCRIPT_ANALYSIS
else
dirL
=
1
;
load_ot_tables
(
hdc
,
psc
);
if
(
!
psc
->
GSUB_Table
)
return
;
...
...
@@ -2785,7 +2798,7 @@ static void ContextualShape_Mongolian(HDC hdc, ScriptCache *psc, SCRIPT_ANALYSIS
HeapFree
(
GetProcessHeap
(),
0
,
context_shape
);
}
static
void
ShapeCharGlyphProp_Default
(
HDC
hdc
,
ScriptCache
*
psc
,
SCRIPT_ANALYSIS
*
psa
,
const
WCHAR
*
pwcChars
,
const
INT
cChars
,
const
WORD
*
pwGlyphs
,
const
INT
cGlyphs
,
WORD
*
pwLogClust
,
SCRIPT_CHARPROP
*
pCharProp
,
SCRIPT_GLYPHPROP
*
pGlyphProp
)
static
void
ShapeCharGlyphProp_Default
(
ScriptCache
*
psc
,
SCRIPT_ANALYSIS
*
psa
,
const
WCHAR
*
pwcChars
,
const
INT
cChars
,
const
WORD
*
pwGlyphs
,
const
INT
cGlyphs
,
WORD
*
pwLogClust
,
SCRIPT_CHARPROP
*
pCharProp
,
SCRIPT_GLYPHPROP
*
pGlyphProp
)
{
int
i
,
k
;
...
...
@@ -2813,7 +2826,7 @@ static void ShapeCharGlyphProp_Default( HDC hdc, ScriptCache* psc, SCRIPT_ANALYS
pGlyphProp
[
i
].
sva
.
uJustification
=
SCRIPT_JUSTIFY_CHARACTER
;
}
OpenType_GDEF_UpdateGlyphProps
(
hdc
,
psc
,
pwGlyphs
,
cGlyphs
,
pwLogClust
,
cChars
,
pGlyphProp
);
OpenType_GDEF_UpdateGlyphProps
(
psc
,
pwGlyphs
,
cGlyphs
,
pwLogClust
,
cChars
,
pGlyphProp
);
UpdateClustersFromGlyphProp
(
cGlyphs
,
cChars
,
pwLogClust
,
pGlyphProp
);
}
...
...
@@ -2922,7 +2935,7 @@ static void ShapeCharGlyphProp_Arabic( HDC hdc, ScriptCache *psc, SCRIPT_ANALYSI
pGlyphProp
[
i
].
sva
.
uJustification
=
SCRIPT_JUSTIFY_NONE
;
}
OpenType_GDEF_UpdateGlyphProps
(
hdc
,
psc
,
pwGlyphs
,
cGlyphs
,
pwLogClust
,
cChars
,
pGlyphProp
);
OpenType_GDEF_UpdateGlyphProps
(
psc
,
pwGlyphs
,
cGlyphs
,
pwLogClust
,
cChars
,
pGlyphProp
);
UpdateClustersFromGlyphProp
(
cGlyphs
,
cChars
,
pwLogClust
,
pGlyphProp
);
HeapFree
(
GetProcessHeap
(),
0
,
spaces
);
}
...
...
@@ -2953,7 +2966,7 @@ static void ShapeCharGlyphProp_Hebrew( HDC hdc, ScriptCache *psc, SCRIPT_ANALYSI
}
}
OpenType_GDEF_UpdateGlyphProps
(
hdc
,
psc
,
pwGlyphs
,
cGlyphs
,
pwLogClust
,
cChars
,
pGlyphProp
);
OpenType_GDEF_UpdateGlyphProps
(
psc
,
pwGlyphs
,
cGlyphs
,
pwLogClust
,
cChars
,
pGlyphProp
);
UpdateClustersFromGlyphProp
(
cGlyphs
,
cChars
,
pwLogClust
,
pGlyphProp
);
}
...
...
@@ -2974,7 +2987,7 @@ static void ShapeCharGlyphProp_Thai( HDC hdc, ScriptCache *psc, SCRIPT_ANALYSIS
dirL
=
1
;
}
OpenType_GDEF_UpdateGlyphProps
(
hdc
,
psc
,
pwGlyphs
,
cGlyphs
,
pwLogClust
,
cChars
,
pGlyphProp
);
OpenType_GDEF_UpdateGlyphProps
(
psc
,
pwGlyphs
,
cGlyphs
,
pwLogClust
,
cChars
,
pGlyphProp
);
for
(
i
=
0
;
i
<
cGlyphs
;
i
++
)
{
...
...
@@ -3042,7 +3055,7 @@ static void ShapeCharGlyphProp_None( HDC hdc, ScriptCache* psc, SCRIPT_ANALYSIS*
else
pGlyphProp
[
i
].
sva
.
uJustification
=
SCRIPT_JUSTIFY_NONE
;
}
OpenType_GDEF_UpdateGlyphProps
(
hdc
,
psc
,
pwGlyphs
,
cGlyphs
,
pwLogClust
,
cChars
,
pGlyphProp
);
OpenType_GDEF_UpdateGlyphProps
(
psc
,
pwGlyphs
,
cGlyphs
,
pwLogClust
,
cChars
,
pGlyphProp
);
UpdateClustersFromGlyphProp
(
cGlyphs
,
cChars
,
pwLogClust
,
pGlyphProp
);
}
...
...
@@ -3073,7 +3086,7 @@ static void ShapeCharGlyphProp_Tibet( HDC hdc, ScriptCache* psc, SCRIPT_ANALYSIS
else
pGlyphProp
[
i
].
sva
.
uJustification
=
SCRIPT_JUSTIFY_NONE
;
}
OpenType_GDEF_UpdateGlyphProps
(
hdc
,
psc
,
pwGlyphs
,
cGlyphs
,
pwLogClust
,
cChars
,
pGlyphProp
);
OpenType_GDEF_UpdateGlyphProps
(
psc
,
pwGlyphs
,
cGlyphs
,
pwLogClust
,
cChars
,
pGlyphProp
);
UpdateClustersFromGlyphProp
(
cGlyphs
,
cChars
,
pwLogClust
,
pGlyphProp
);
/* Tibeten script does not set sva.fDiacritic or sva.fZeroWidth */
...
...
@@ -3091,7 +3104,7 @@ static void ShapeCharGlyphProp_BaseIndic( HDC hdc, ScriptCache *psc, SCRIPT_ANAL
{
int
i
,
k
;
OpenType_GDEF_UpdateGlyphProps
(
hdc
,
psc
,
pwGlyphs
,
cGlyphs
,
pwLogClust
,
cChars
,
pGlyphProp
);
OpenType_GDEF_UpdateGlyphProps
(
psc
,
pwGlyphs
,
cGlyphs
,
pwLogClust
,
cChars
,
pGlyphProp
);
for
(
i
=
0
;
i
<
cGlyphs
;
i
++
)
{
int
char_index
[
20
];
...
...
@@ -3235,10 +3248,12 @@ static void ShapeCharGlyphProp_Khmer( HDC hdc, ScriptCache *psc, SCRIPT_ANALYSIS
void
SHAPE_CharGlyphProp
(
HDC
hdc
,
ScriptCache
*
psc
,
SCRIPT_ANALYSIS
*
psa
,
const
WCHAR
*
pwcChars
,
const
INT
cChars
,
const
WORD
*
pwGlyphs
,
const
INT
cGlyphs
,
WORD
*
pwLogClust
,
SCRIPT_CHARPROP
*
pCharProp
,
SCRIPT_GLYPHPROP
*
pGlyphProp
)
{
load_ot_tables
(
hdc
,
psc
);
if
(
ShapingData
[
psa
->
eScript
].
charGlyphPropProc
)
ShapingData
[
psa
->
eScript
].
charGlyphPropProc
(
hdc
,
psc
,
psa
,
pwcChars
,
cChars
,
pwGlyphs
,
cGlyphs
,
pwLogClust
,
pCharProp
,
pGlyphProp
);
else
ShapeCharGlyphProp_Default
(
hdc
,
psc
,
psa
,
pwcChars
,
cChars
,
pwGlyphs
,
cGlyphs
,
pwLogClust
,
pCharProp
,
pGlyphProp
);
ShapeCharGlyphProp_Default
(
psc
,
psa
,
pwcChars
,
cChars
,
pwGlyphs
,
cGlyphs
,
pwLogClust
,
pCharProp
,
pGlyphProp
);
}
void
SHAPE_ContextualShaping
(
HDC
hdc
,
ScriptCache
*
psc
,
SCRIPT_ANALYSIS
*
psa
,
WCHAR
*
pwcChars
,
INT
cChars
,
WORD
*
pwOutGlyphs
,
INT
*
pcGlyphs
,
INT
cMaxGlyphs
,
WORD
*
pwLogClust
)
...
...
dlls/usp10/usp10_internal.h
View file @
287243a9
...
...
@@ -242,7 +242,7 @@ void Indic_ParseSyllables( HDC hdc, SCRIPT_ANALYSIS *psa, ScriptCache* psc, LPCW
void
BREAK_line
(
const
WCHAR
*
chars
,
int
count
,
const
SCRIPT_ANALYSIS
*
sa
,
SCRIPT_LOGATTR
*
la
)
DECLSPEC_HIDDEN
;
DWORD
OpenType_CMAP_GetGlyphIndex
(
HDC
hdc
,
ScriptCache
*
psc
,
DWORD
utf32c
,
LPWORD
pgi
,
DWORD
flags
)
DECLSPEC_HIDDEN
;
void
OpenType_GDEF_UpdateGlyphProps
(
HDC
hdc
,
ScriptCache
*
psc
,
const
WORD
*
pwGlyphs
,
const
WORD
cGlyphs
,
WORD
*
pwLogClust
,
const
WORD
cChars
,
SCRIPT_GLYPHPROP
*
pGlyphProp
)
DECLSPEC_HIDDEN
;
void
OpenType_GDEF_UpdateGlyphProps
(
ScriptCache
*
psc
,
const
WORD
*
pwGlyphs
,
const
WORD
cGlyphs
,
WORD
*
pwLogClust
,
const
WORD
cChars
,
SCRIPT_GLYPHPROP
*
pGlyphProp
)
DECLSPEC_HIDDEN
;
INT
OpenType_apply_GSUB_lookup
(
LPCVOID
table
,
INT
lookup_index
,
WORD
*
glyphs
,
INT
glyph_index
,
INT
write_dir
,
INT
*
glyph_count
)
DECLSPEC_HIDDEN
;
INT
OpenType_apply_GPOS_lookup
(
LPOUTLINETEXTMETRICW
lpotm
,
LPLOGFONTW
lplogfont
,
const
SCRIPT_ANALYSIS
*
analysis
,
INT
*
piAdvance
,
LPCVOID
table
,
INT
lookup_index
,
const
WORD
*
glyphs
,
INT
glyph_index
,
INT
glyph_count
,
GOFFSET
*
pGoffset
)
DECLSPEC_HIDDEN
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment