File: scriptnotes.html

package info (click to toggle)
fontforge-doc 20120731.b-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 7,536 kB
  • ctags: 1,461
  • sloc: makefile: 2
file content (233 lines) | stat: -rw-r--r-- 9,269 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
<HTML>
<HEAD>
  <!-- Created with AOLpress/2.0 -->
  <!-- AP: Created on: 27-Jan-2003 -->
  <!-- AP: Last modified: 30-Nov-2006 -->
  <TITLE>Special thoughts for special scripts</TITLE>
  <LINK REL="icon" href="fftype16.png">
  <LINK REL="stylesheet" TYPE="text/css" HREF="FontForge.css">
</HEAD>
<BODY>
<DIV id="in">
  <H1 ALIGN=Center>
    Special thoughts for special scripts
  </H1>
  <UL>
    <LI>
      <A HREF="editexample.html#FontCreate">Font Creation</A>
    <LI>
      <A HREF="editexample.html#CharCreate">Creating a glyph (tracing outlines)</A>
    <LI>
      <A HREF="editexample2.html#Navigating">Navigating to other glyphs</A>
    <LI>
      <A HREF="editexample2.html#Creating-o">On to the next glyph (consistent
      directions)</A>
    <LI>
      <A HREF="editexample3.html#consistent-stems">Consistent serifs and stem
      widths</A>
    <LI>
      <A HREF="editexample4.html#accents">Building accented glyphs</A>
    <LI>
      <A HREF="editexample4.html#ligature">Building a ligature</A>
    <LI>
      <A HREF="editexample5.html#metrics">Examining metrics</A>
    <LI>
      <A HREF="editexample5.html#Kerning">Kerning</A>
    <LI>
      <A HREF="editexample6.html#Variants">Glyph variants</A>
    <LI>
      <A HREF="editexample6.html#Marks">Anchoring marks</A>
    <LI>
      <A HREF="editexample7.html#checking">Checking your font</A>
    <LI>
      <A HREF="editexample7.html#generating">Generating it</A>
    <LI>
      <A HREF="editexample7.html#Families">Font Families</A>
    <LI>
      <A HREF="editexample7.html#summary">Final Summary</A>
    <LI>
      <A HREF="scriptnotes.html#Special">Notes on various scripts</A>
  </UL>
  <H2>
    <A NAME="Special">Special </A>thoughts for special scripts
  </H2>
  <P>
  <A HREF="http://www.microsoft.com/typography/specs/default.htm">Microsoft</A>
  provides some information on what (opentype) features a word processor should
  support by default for certain scripts.
  <P>
  <FONT COLOR="Red"><STRONG><BIG>Caveat:</BIG></STRONG></FONT> Just because
  a feature is documented and looks useful does not mean Uniscribe will use
  it for your script. Many Latin script fonts would like to use 'init', 'medi',
  'calt', etc. but none of these features is turned on by Uniscribe for Latin.
  <P>
  <FONT COLOR="Red"><STRONG><BIG>Caveat:</BIG></STRONG></FONT> Just because
  Uniscribe supports a feature that does not mean any given application will.
  Uniscribe (as of 2005) supports 'liga' for latin, but neither Word nor Office
  does.
  <P>
  <FONT COLOR="Red"><STRONG><BIG>Caveat:</BIG></STRONG></FONT> Uniscribe (MS
  unicode text layout routines) may ignore either the GPOS or the GSUB table
  depending on the script, and may even refuse to use the font at all if it
  doesn't have the right stuff in GPOS/GSUB. A Hebrew font must have both a
  GPOS and a GSUB. If it doesn't the font is not used. A latin font need not
  have either, but if it doesn't have GSUB then GPOS won't be used. So now
  if one table is present and the other isn't, FontForge will generate a dummy
  version of the other.
  <H3>
    Common
  </H3>
  <P>
  Many characters are used in more than one script. The digits, marks of
  punctuation, etc. are said in Unicode to belong to the script "Common". OpenType
  does not recognize this script. The closest thing it has is the script 'DFLT'.
  My understanding is that characters in the common script will have the script
  of adjacent text assigned to them by OpenType.
  <P>
  Thus if a font supports latin, greek or cyrillic then digits and punctuation
  might find themselves in any of those three scripts and all features which
  apply to any such character should be present in all scripts. For example
  if the digit 9 kerns with digit 1, then that kerning data should be present
  in cyrillic and greek as well as latin.
  <P>
  However it is possible (and I gather common in Japanese) to use the digits
  from one font surrounded by Kanji characters from another font. This means
  the digits may be in a font which does not support Kanji. However OpenType
  will assign them the Kanji script. Thus no lookups will be applied. Adobe
  suggests that for most features in scripts should also appear in the fallback
  script 'DFLT'. I'm not sure that anyone else follows this convention.
  <H3>
    Latin
  </H3>
  <P>
  Uniscribe supports the
  <A HREF="http://www.microsoft.com/typography/OpenType%20Dev/standard/shaping.mspx">following
  features</A>
  <P>
  There are not many special complications in latin. Latin fonts can generally
  fit in a single byte encoding with no (or few) font tables. There are a plethora
  of accented glyphs which could be built -- or you could use mark to base
  positioning. Kerning should be generated for some glyph combinations. A few
  ligatures need to be generated (the "f" ligatures: ff, fi, fl, ffi, ffl and
  perhaps st -- however for some languages (Turkish) the "fi" ligature should
  not be built).
  <P>
  You may want to add a set of smallcaps. Adobe has reserved a block in the
  private use area for latin small-caps -- this is now depreciated.
  <P>
  Some languages have specific requirements of their own
  <UL>
    <LI>
      <A HREF="http://studweb.euv-frankfurt-o.de/twardoch/f/en/typo/ogonek/kreska.html">For
      Polish</A>
  </UL>
  <H3>
    Greek
  </H3>
  <P>
  Uniscribe supports the
  <A HREF="http://www.microsoft.com/typography/OpenType%20Dev/standard/shaping.mspx">following
  features</A>
  <P>
  Greek also does not have many complications. Modern Greek fonts generally
  fit in a single byte encoding. For modern greek are a few accented glyphs
  that need to be built, while for polytonic greek there are many -- mark to
  base &amp; mark to mark are options. Kerning should be generated. I am not
  aware of any standard ligatures for modern greek (ancient greek had ligatures
  and variants on some of the glyphs though).
  <P>
  Small caps are again an option, and I have reserved a block in the private
  use area for them -- again this is depreciated.
  <H3>
    Cyrillic
  </H3>
  <P>
  Uniscribe supports the
  <A HREF="http://www.microsoft.com/typography/OpenType%20Dev/standard/shaping.mspx">following
  features</A>
  <P>
  Cyrillic fonts also fit in a single byte encoding. There are a few accented
  glyphs. Kerning should be generated. I am not aware of any standard ligatures.
  <P>
  Some languages need variant glyphs (specified with a 'loca' feature)
  <UL>
    <LI>
      <A HREF="http://jankojs.tripod.com/SerbianCyr.htm">Serbian/Macedonian</A>
  </UL>
  <H3>
    Arabic
  </H3>
  <P>
  Uniscribe supports the
  <A HREF="http://www.microsoft.com/typography/OpenType%20Dev/arabic/shaping.mspx">following
  features</A>
  <P>
  Arabic needs a complete set of initial, medial, final and isolated forms
  -- Unicode has reserved space for these. Arabic also needs a vast set of
  ligatures -- Unicode has reserved space for many, but I'd guess that extra
  ligatures will be needed sometimes. Arabic also needs a set of mark (mark
  to base, mark to ligature) attachments to position vowels above letters.
  Arabic may need a glyph decomposition table.
  <P>
  I'm told that in good Arabic typography there need to be many more than 4
  forms per glyph. I'm not sure how this should be supported.
  <P>
  Right to left.
  <H3>
    Hebrew
  </H3>
  <P>
  Uniscribe supports the
  <A HREF="http://www.microsoft.com/typography/OpenType%20Dev/hebrew/shaping.mspx">following
  features</A>
  <P>
  Hebrew has a few final forms but no special tables are needed for these.
  Hebrew may need kerning. Hebrew should have a set of mark (mark to base)
  tables to position vowels over letters. Hebrew may need a glyph decomposition
  table. I am not aware of any needed ligatures.
  <P>
  Right to left
  <H3>
    Indic scripts
  </H3>
  <P>
  Uniscribe supports the
  <A HREF="http://www.microsoft.com/typography/otfntdev/indicot/shaping.aspx">following
  features</A>
  <P>
  Indic scripts need a set of ligatures.
  <P>
  (they probably need a lot more but I'm not aware of what)
  <H3>
    Korean Hangul
  </H3>
  <P>
  Uniscribe supports the
  <A HREF="http://www.microsoft.com/typography/OpenType%20Dev/hangul/shaping.mspx">following
  features</A>
  <P>
  The Hangul script consists of a set of syllables built out of a phonetic
  alphabet. Generally fonts consist of a set of precomposed syllables.
  <P>
  Complications are introduced by the massive combinatorial explosion of all
  these syllables. These are eased in postscript by CID-keyed fonts.
  <P>
  Vertical writing and left to right writing are used, and some glyphs have
  a different orientation when drawn vertically (parentheses for example).
  <H3>
    Japanese and Chinese (and Korean Hanja)
  </H3>
  <P>
  MicroSoft does not describe these scripts (that I can find).
  <P>
  Again a massive collection of glyphs is needed, and postscript uses CID keyed
  fonts to deal with this.
  <P>
  Vertical writing and left to right writing are used, and some glyphs have
  a different orientation when drawn vertically (parentheses for example).
  <P>
  <P ALIGN=Center>
  -- <A HREF="editexample7.html">Prev</A> -- <A HREF="overview.html">TOC</A>
  -- <A HREF="fontview.html">Next</A> --
</DIV>
</BODY></HTML>