PageRenderTime 61ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 1ms

/htdocs.OLD/ja/gposgsub.html

https://bitbucket.org/sortsmill/sortsmill-tools
HTML | 1545 lines | 906 code | 0 blank | 639 comment | 0 complexity | b84164b98d4ae9cf96c6f2aeeedf7e13 MD5 | raw file
Possible License(s): GPL-3.0, LGPL-2.0

Large files files are truncated, but you can click here to view the full file

  1. <HTML>
  2. <HEAD>
  3. <!-- Created with AOLpress/2.0 -->
  4. <!-- AP: Created on: 29-Dec-2002 -->
  5. <!-- AP: Last modified: 11-Dec-2005 -->
  6. <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Shift_JIS">
  7. <!--<TITLE>Advanced Typography tables</TITLE> -->
  8. <TITLE>?????????? (ATT)</TITLE>
  9. <LINK REL="icon" href="../fftype16.png">
  10. <LINK REL="stylesheet" TYPE="text/css" HREF="FontForge.css">
  11. </HEAD>
  12. <BODY>
  13. <DIV id="in">
  14. <H1 ALIGN=Center>
  15. <!-- Advanced Typography Tables-->
  16. ?????????? (ATT)
  17. </H1>
  18. <P>
  19. <!--
  20. These differ between OpenType (originally called TrueType Open) and Apple
  21. (GX or Apple Advanced Typography). My support for both OpenType and Apple
  22. is incomplete. -->
  23. ???? OpenType (?? TrueType Open ?????????) ? Apple (GX ??? Apple ????????? (ATT)) ???????????????? OpenType ? Apple ???????????????????
  24. <UL>
  25. <LI>
  26. <!-- <A HREF="#opentype">The <B><CODE>GPOS</CODE></B>,
  27. <B><CODE>GSUB</CODE></B> and <B><CODE>GDEF</CODE></B> opentype tables</A>
  28. <A HREF="#opentype"><B><CODE>GPOS</CODE></B>, <B><CODE>GSUB</CODE></B> ??? <B><CODE>GDEF</CODE></B> OpenType ????</A>
  29. <LI>
  30. <!-- <A HREF="#AAT">Apple Advanced Typography</A>-->
  31. <A HREF="#AAT">Apple ??????????</A>
  32. <LI>
  33. <!-- <A HREF="#Conversion">What features can be converted between OpenType and
  34. AAT?</A>-->
  35. <A HREF="#Conversion">????? OpenType ? AAT ?????????</A>
  36. <LI>
  37. <A HREF="TrueOpenTables.html">other true type and open type tables</A>
  38. <LI>
  39. <A HREF="#Unsupported">What is unsupported</A>
  40. <LI>
  41. <A HREF="non-standard.html">FontForge's non-standard extensions</A>
  42. </UL>
  43. <H2>
  44. <!-- The <B><CODE>GPOS,</CODE></B> <B><CODE>GSUB</CODE></B> and
  45. <B><CODE>GDEF</CODE></B> <A NAME="opentype">opentype</A> tables -->
  46. <B><CODE>GPOS</CODE></B>, <B><CODE>GSUB</CODE></B> ??? <B><CODE>GDEF</CODE></B> <A NAME="opentype">OpenType</A> ????
  47. </H2>
  48. <P>
  49. <!--
  50. These two tables are used for positioning and substituting glyphs. The GPOS
  51. table can control things like: kerning, accent positioning, cursive joining,
  52. etc. The GSUB table can control things like: ligatures, arabic forms, vertical
  53. rotation, conversion to small caps, indic glyph rearrangement, etc. -->
  54. ????2?????????????????????????????
  55. GPOS ?????????????????????????: ??????????????????????????
  56. GSUB ?????????????????????????: ???????????????????????????????????????????????????
  57. <P>
  58. <!--
  59. This page assumes basic familiarity with the abilities of the tables, for
  60. more information on them read, study and inwardly digest the opentype docs
  61. on:-->
  62. ????????????????????????????????????????????????????????????????????? OpenType ???????????????????????????
  63. <UL>
  64. <LI>
  65. <!-- <A HREF="http://partners.adobe.com/public/developer/opentype/index_table_formats.html">The
  66. header for both GPOS and GSUB</A>-->
  67. <A HREF="http://partners.adobe.com/public/developer/opentype/index_table_formats.html">GPOS ? GSUB ????????</A>
  68. <LI>
  69. <!-- <A HREF="http://partners.adobe.com/public/developer/opentype/index_table_formats2.html">The
  70. GPOS table</A>, for positioning glyphs -->
  71. <A HREF="http://partners.adobe.com/public/developer/opentype/index_table_formats2.html">GPOS ???? (????????????)</A>
  72. <LI>
  73. <!-- <A HREF="http://partners.adobe.com/public/developer/opentype/index_table_formats1.html">The
  74. GSUB table</A>, for substituting glyphs-->
  75. <A HREF="http://partners.adobe.com/public/developer/opentype/index_table_formats1.html">GSUB ????</A> (??????????)
  76. <LI>
  77. <!-- <A HREF="http://partners.adobe.com/public/developer/opentype/index_table_formats5.html">The
  78. GDEF table</A>, for classifying glyphs and for providing a ligature caret
  79. table -->
  80. <A HREF="http://partners.adobe.com/public/developer/opentype/index_table_formats5.html">GDEF ???? (????????????????????????????)</A>
  81. <LI>
  82. <!-- <A HREF="http://partners.adobe.com/public/developer/opentype/index_tag3.html">The
  83. list of feature tags supported by opentype</A>-->
  84. <A HREF="http://partners.adobe.com/public/developer/opentype/index_tag3.html">OpenType ???????????????</A>
  85. <LI>
  86. <!-- <A HREF="http://partners.adobe.com/public/developer/opentype/index_tag1.html">The
  87. list of script tags supported by opentype</A>-->
  88. <A HREF="http://partners.adobe.com/public/developer/opentype/index_tag1.html">OpenType ????????????????</A>
  89. <LI>
  90. <!-- -<A HREF="http://partners.adobe.com/public/developer/opentype/index_tag2.html">The
  91. list of language tags supported by opentype</A>-->
  92. <A HREF="http://partners.adobe.com/public/developer/opentype/index_tag2.html">OpenType ???????????????</A>
  93. </UL>
  94. <P>
  95. <!--
  96. The basic idea of the GPOS and GSUB tables is that each script (or language
  97. within a script) has a set of "features" that are available to it. A feature
  98. in turn is associated with a lookup which contains data for the feature.
  99. An example of a script is 'latn' for latin, 'arab' for arabic, 'hani' for
  100. chinese ideographs. Two examples of features are 'kern' which provides kerning
  101. information between pairs of glyphs and 'init' which will transform one set
  102. of glyphs to another when those glyphs are at the beginning of a word.-->
  103. GPOS ????? GSUB ????????????????????? (?????????????????) ?????????????????????????????????????????????????????????? 1 ?????????????????????????????&lsquo;latn&rsquo;, ???????&lsquo;arab&rsquo;, ???&lsquo;hani&rsquo;????????????? 2 ??????????????????????????&lsquo;kern&rsquo;?????????????????????????????????????&lsquo;init&rsquo;??????
  104. <P>
  105. <!--
  106. FontForge <A HREF="gposgsub.html#Unsupported">does not support </A>the full
  107. range of possibilities inherent in these tables. -->
  108. FontForge ?????? 2 ??????????????????????<A HREF="gposgsub.html#Unsupported">???????????????</A>?
  109. <H3>
  110. <!-- The <B><CODE><A NAME="GPOS">GPOS</A></CODE></B> table-->
  111. <B><CODE><A NAME="GPOS">GPOS</A></CODE></B> ????
  112. </H3>
  113. <P>
  114. <!--
  115. FontForge will read the following sub tables of the GPOS table: -->
  116. FontForge ? GPOS ?????????????????????:
  117. <TABLE Border=1>
  118. <TR>
  119. <TH></TH>
  120. <TH>name</TH>
  121. <!-- <TH>Reading support</TH>-->
  122. <TH>????????</TH>
  123. <!-- <TH>Writing support</TH>-->
  124. <TH>????????</TH>
  125. </TR>
  126. <TR>
  127. <TD>1</TD>
  128. <!-- <TD>single adjustment</TD>-->
  129. <TD>1 ?????</TD>
  130. <!-- <TD>This sub-table allows the font designer to change the metrics of a specific
  131. glyph. The feature tag will provide a context in which the change should
  132. occur. For instance the 'tnum' (tabular numbers) feature could change a
  133. proportionally spaced digit by adjusting its advance width to be some set
  134. value and then centering the digit (by adjusting the left side bearing) within
  135. the new width.</TD>-->
  136. <TD>????????????????????????????????????????????????????????????????????????????&lsquo;tnum&rsquo; (????) ??????????????????????????????????? (??????????????) ???????????????????????????????????????</TD>
  137. <!-- <TD>These can be created with the <A HREF="charinfo.html">Element-&gt;Char
  138. Info</A>-&gt;Position command.</TD>-->
  139. <TD>???? <A HREF="charinfo.html"><CODE>?????(<U>L</U>)</CODE>?<CODE>?????(<U>I</U>)...</CODE></A>?<CODE>[??]</CODE> ?????????????????</TD>
  140. </TR>
  141. <TR>
  142. <TD>2</TD>
  143. <!-- <TD>pair adjustment</TD>-->
  144. <TD>????????</TD>
  145. <!-- <TD>This sub-table allows the font designer to change the metrics of a specific
  146. pair of glyph. The most common use of this is for kerning where the advance
  147. width of the first glyph is altered depending on which glyph follows it.
  148. But the table is more general than that and could support mark (accent, vowel)
  149. positioning over a base glyph (though that is more efficiently done with
  150. the mark to base subtable).</TD> -->
  151. <TD>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (????????) ??????????????????? (?????????????????????????????????????????????????)?
  152. </TD>
  153. <!-- <TD>'kern' feature s may be created from the <A HREF="metricsview.html">Metrics
  154. View</A>. 'vkrn' with
  155. <A HREF="metricsmenu.html#VKernFromHKern">Metrics-&gt;VKern From HKern</A>.</TD>-->
  156. <TD>&lsquo;kern&rsquo;???????????????????????&lsquo;vkrn&rsquo;? <A HREF="metricsmenu.html#VKernFromHKern"><CODE>?????(<U>M</U>)</CODE>?<CODE>?????????????</CODE></A>?????????????</TD>
  157. </TR>
  158. <TR>
  159. <TD>3</TD>
  160. <!-- <TD>cursive attachment</TD>-->
  161. <TD>??????</TD>
  162. <!-- <TD>This sub-table allows the font designer to force adjacent characters
  163. to join at specific points. It can be used to generate the slanted script
  164. style needed for Urdu.</TD> -->
  165. <!-- <TD>This sub-table allows the font designer to force adjacent glyphs to join
  166. at specific points. It can be used to generate the slanted script style needed
  167. for Urdu.</TD> -->
  168. <TD>?????????????????????????????????????????????????????????????????????????????????????????????????</TD>
  169. <!-- <TD>Only the 'curs' feature is supported for this sub-table. These may be
  170. created with the <A HREF="pointmenu.html#AddAnchor">Points-&gt;Add Anchor</A>
  171. command</TD>-->
  172. <TD>????????????????????&lsquo;curs&rsquo;???????????<A HREF="pointmenu.html#AddAnchor"><CODE>?(<U>P</U>)</CODE>?<CODE>???????(<U>A</U>)...</CODE></A> ???????????????
  173. </TR>
  174. <TR>
  175. <TD>4</TD>
  176. <!-- <TD>mark to base</TD>-->
  177. <TD>???????????</TD>
  178. <!-- <TD>This sub-table allows the font designer to specify how mark glyphs (accents,
  179. vowel signs, etc.) are positioned over base glyphs. Every glyph can have
  180. an attachment point and the mark's attachment point will be placed on the
  181. base's attachment point so the two join properly. See my
  182. on the base's attachment point so the two join properly. See my
  183. <A HREF="overview.html#Anchors">example</A> in the overview.</TD>-->
  184. <TD>?????????????????????????? (????????????) ????????????????????????????????????????????????????????????????????????????????????? ????????????????????????????<A HREF="overview.html#Anchors">?</A>????????</TD>
  185. <!-- <TD>These may be created with the
  186. <A HREF="pointmenu.html#AddAnchor">Points-&gt;Add Anchor</A> command</TD> -->
  187. <TD>???? <A HREF="pointmenu.html#AddAnchor"><CODE>?(<U>P</U>)</CODE>?<CODE>???????(<U>A</U>)...</CODE></A> ?????????????????</TD>
  188. </TR>
  189. <TR>
  190. <TD>5</TD>
  191. <!-- <TD>mark to ligature</TD>-->
  192. <TD>????????</TD>
  193. <!-- <TD>This sub-table is very similar to the previous one except that the base
  194. glyph is a ligature and may have several different points at which the same
  195. type of accent may be placed.</TD> -->
  196. <TD>?????????????????????????????????????????????????????????????????????????????????</TD>
  197. <!-- <TD>These may be created with the
  198. <A HREF="pointmenu.html#AddAnchor">Points-&gt;Add Anchor</A> command</TD> -->
  199. <TD>???? <A HREF="pointmenu.html#AddAnchor"><CODE>?(<U>P</U>)</CODE>?<CODE>???????(<U>A</U>)...</CODE></A> ?????????????????</TD>
  200. </TR>
  201. <TR>
  202. <TD>6</TD>
  203. <!-- <TD>mark to mark</TD>-->
  204. <TD>?????????</TD>
  205. <!-- <TD>This sub-table is very similar to the previous two except that the base
  206. glyph is itself a mark. This may be used when a glyph has two accents each
  207. of which would normally be placed at the same attachment point on a base
  208. glyph. The second accent will be place relative to the first accent rather
  209. than to the base glyph.</TD> -->
  210. <TD>??????????? 2 ??????????????????????????????????????????????????? 2 ???????????????????????????????????????????????????2 ?????????????????????????????????????????????????????</TD>
  211. <!-- <TD>These may be created with the
  212. <A HREF="pointmenu.html#AddAnchor">Points-&gt;Add Anchor</A> command</TD> -->
  213. <TD>???? <A HREF="pointmenu.html#AddAnchor"><CODE>?(<U>P</U>)</CODE>?<CODE>???????(<U>A</U>)...</CODE></A> ?????????????????</TD>
  214. </TR>
  215. <TR>
  216. <TD>7</TD>
  217. <!-- <TD>contextual positioning</TD>-->
  218. <TD>?????????</TD>
  219. <!-- <TD>This sub-table allows the font designer to control the positioning of
  220. glyphs when they occur within a specific string (or class of strings). For
  221. instance this table could say "when you see a digit followed by the string
  222. "th" then raise the "th" into a superscript position"</TD> -->
  223. <TD>????????????????????????????????????? (??????????) ??????????????????????????</TD>
  224. <!-- <TD>These may be created with the
  225. <A HREF="fontinfo.html#Contextual">Element-&gt;Font Info-&gt;Contextual
  226. </A>command</TD> -->
  227. <TD>???? <A HREF="fontinfo.html#Contextual"><CODE>?????(<U>L</U>)</CODE>?<CODE>??????(<U>F</U>)...</CODE>?<CODE>[????]</CODE></A> ?????????????????</TD>
  228. </TR>
  229. <TR>
  230. <TD>8</TD>
  231. <!-- <TD>chaining contextual positioning</TD>-->
  232. <TD>????????????</A>
  233. <!-- <TD>This is a slightly more complex version of the above, it doesn't really
  234. add new capabilities, but it does provide a more logical approach to the
  235. issue.</TD> -->
  236. <TD>?????????????????????????????????????????????????????????????????????????????</TD>
  237. <!-- <TD>These may be created with the
  238. <A HREF="fontinfo.html#Contextual">Element-&gt;Font Info-&gt;Contextual
  239. </A>command</TD> -->
  240. <TD>???? <A HREF="fontinfo.html#Contextual"><CODE>?????(<U>L</U>)</CODE>?<CODE>??????(<U>F</U>)...</CODE>?<CODE>[????]</CODE></A> ?????????????????</TD>
  241. </TR>
  242. <TR>
  243. <TD>9</TD>
  244. <!-- <TD>extension positioning</TD>-->
  245. <TD>??????</TD>
  246. <!-- <TD>This is used to allow for a GPOS table which is bigger than 64k. Its
  247. use should be quite invisible to the font designer</TD> -->
  248. <TD>????GPOS ????? 64K ???????????????????????????????????????????????????????????</TD>
  249. <!-- <TD>FontForge uses this sub-table when needed.</TD>-->
  250. <TD>FontForge ?????????????????????????</TD>
  251. </TR>
  252. <TR>
  253. <TD>10+</TD>
  254. <!-- <TD>reserved for future use</TD>-->
  255. <TD>???????????</TD>
  256. <TD></TD>
  257. <!-- <TD>FontForge does not support these sub-tables yet.<BR>
  258. (nor does anyone)</TD>-->
  259. <TD>FontForge ? (?????????) ??????????????????????</TD>
  260. </TR>
  261. </TABLE>
  262. <P>
  263. <!--
  264. FontForge also has built into it knowledge on how to provide default values
  265. for some features that use these tables. See
  266. <A HREF="elementmenu.html#DefaultATT">Element-&gt;Typo. Features-&gt;Default
  267. ATT</A> command for that. -->
  268. FontForge ????????????????????????????????????????????????????????????????????<A HREF="elementmenu.html#DefaultATT"><CODE>?????(<U>L</U>)</CODE>?<CODE>????(<U>Y</U>)</CODE>?<CODE>??????ATT(<U>D</U>)</CODE></A> ??????????????
  269. <P>
  270. <!--
  271. FontForge will retain the order of features in the GPOS table and when a
  272. font is generated the order should be the same as it was before. -->
  273. FontForge ? GPOS ???????????????????????????????????????????????
  274. <H3>
  275. <!-- The <B><CODE><A NAME="GSUB">GSUB</A></CODE></B> table-->
  276. <B><CODE><A NAME="GSUB">GSUB</A></CODE></B> ????
  277. </H3>
  278. <P>
  279. <!--
  280. FontForge will read the following sub tables of the GSUB table: -->
  281. FontForge ??????????? GSUB ????????????:
  282. <TABLE Border=1>
  283. <TR>
  284. <TH></TH>
  285. <TH>name</TH>
  286. <!-- <TH>Reading support</TH>-->
  287. <TH>????????</TH>
  288. <!-- <TH>Writing support</TH>-->
  289. <TH>????????</TH>
  290. </TR>
  291. <TR>
  292. <TD>1</TD>
  293. <!-- <TD>single substitution</TD>-->
  294. <TD>???? (????)</TD>
  295. <!-- <TD>This sub-table allows the font designer to change from one glyph to another,
  296. with a context provided by the feature tag. For example many scripts have
  297. letters which have a different form at the end of a word than they do within
  298. (this is true of every letter in arabic, several in hebrew, lower case sigma
  299. in greek, and the long-s/short-s pair in renaissance latin). So the 'fina'
  300. feature would map the normal form into the final form, and the word processing
  301. program would do a lookup at the end of each word to see if a transformation
  302. was needed.</TD> -->
  303. <TD>??????????????????????????????????????????????????????????????????????????????????????????????????????????????? (?????????????????????????????????????????????????????????????? s/?? s ????????????)???????&lsquo;fina&rsquo;????????????????????????????????????????????????????????????????????</TD>
  304. <!-- <TD>These can be created with the <A HREF="charinfo.html">Element-&gt;Char
  305. Info</A>-&gt;Substitution command.</TD> -->
  306. <TD>???? <A HREF="charinfo.html"><CODE>?????(<U>L</U>)</CODE>?<CODE>?????(<U>I</U>)...</CODE>?<CODE>[??]</CODE></A> ?????????????????</TD>
  307. </TR>
  308. <TR>
  309. <TD>2</TD>
  310. <!-- <TD>multiple substitution</TD>-->
  311. <TD>????</TD>
  312. <!-- <TD>This sub-table allows the font designer to replace one glyph by a series
  313. of others. This is generally used for rather technical layout issues.</TD>-->
  314. <TD>???????????????????????1 ?????????????????????????????????????????????????????????</TD>
  315. <!-- <TD>These can be created with the <A HREF="charinfo.html">Element-&gt;Char
  316. Info</A>-&gt;Multiple Substitution command.</TD> -->
  317. <TD>???? <A HREF="charinfo.html"><CODE>?????(<U>L</U>)</CODE>?<CODE>?????(<U>I</U>)...</CODE>?<CODE>[????]</CODE></A> ?????????????????</TD>
  318. </TR>
  319. <TR>
  320. <TD>3</TD>
  321. <!-- <TD>alternate substitution</TD>-->
  322. <TD>???????</TD>
  323. <!-- <TD>This sub-table allows the font designer to have a series of "alternates"
  324. for each glyph. One common example would be an italic font which had several
  325. swash variants for each capital letter. The word processing program would
  326. allow the user to choose which variant was appropriate</TD> -->
  327. <TD>????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????</TD>
  328. <!-- <TD>These can be created with the <A HREF="charinfo.html">Element-&gt;Char
  329. Info</A>-&gt;Alternate Substitution command.</TD> -->
  330. <TD>???? <A HREF="charinfo.html"><CODE>?????(<U>L</U>)</CODE>?<CODE>?????(<U>I</U>)...</CODE>?<CODE>[??????]</CODE></A> ?????????????????</TD>
  331. </TR>
  332. <TR>
  333. <TD>4</TD>
  334. <!-- <TD>ligature substitution</TD>-->
  335. <TD>????</TD>
  336. <!-- <TD>This sub-table allows the font designer to replace a string of glyphs
  337. with another glyph. A common example is a ligature where the string
  338. <IMG SRC="f+i.png" WIDTH="24" HEIGHT="25" ALIGN="Middle"> is replaced by
  339. the <IMG SRC="fi.png" WIDTH="20" HEIGHT="25" ALIGN="Middle"> ligature.</TD> -->
  340. <TD>??????????????????????????????????? 1 ?????????????????????????????<IMG SRC="../f+i.png" WIDTH="24" HEIGHT="25" ALIGN="Middle"> ???????????? <IMG SRC="../fi.png" WIDTH="20" HEIGHT="25" ALIGN="Middle"> ?????????????????????</TD>
  341. <!-- <TD>These can be created with the <A HREF="charinfo.html">Element-&gt;Char
  342. Info</A>-&gt;Ligature command.</TD> -->
  343. <TD>???? <A HREF="charinfo.html"><CODE>?????(<U>L</U>)</CODE>?<CODE>?????(<U>I</U>)...</CODE>?<CODE>[??]</CODE></A> ?????????????????</TD>
  344. </TR>
  345. <TR>
  346. <TD>5</TD>
  347. <!-- <TD>contextual substitution</TD>-->
  348. <TD>???????</TD>
  349. <!-- <TD>This subtable allows for a string of glyphs to replace another string
  350. of glyphs (or class of strings of glyphs)</TD> -->
  351. <TD>????????????????????????????? (?????????????) ?????????????
  352. <!-- <TD>These may be created with the
  353. <A HREF="fontinfo.html#Contextual">Element-&gt;Font Info-&gt;Contextual
  354. </A>command</TD>-->
  355. <TD>???? <A HREF="fontinfo.html#Contextual"><CODE>?????(<U>L</U>)</CODE>?<CODE>??????(<U>F</U>)...</CODE>?<CODE>[????]</CODE></A> ?????????????????</TD>
  356. </TR>
  357. <TR>
  358. <TD>6</TD>
  359. <!-- <TD>chaining contextual substitution</TD>-->
  360. <TD>?????????</TD>
  361. <!-- <TD>This is a slightly more complex version of the above, it doesn't really
  362. add new capabilities, but it does provide a more logical approach to the
  363. issue.</TD> -->
  364. <TD>?????????????????????????????????????????????????????????????????????????????</TD>
  365. <!-- <TD>These may be created with the
  366. <A HREF="fontinfo.html#Contextual">Element-&gt;Font Info-&gt;Contextual
  367. </A>command</TD> -->
  368. <TD>???? <A HREF="fontinfo.html#Contextual"><CODE>?????(<U>L</U>)</CODE>?<CODE>??????(<U>F</U>)...</CODE>?<CODE>[????]</CODE></A> ?????????????????</TD>
  369. </TR>
  370. <TR>
  371. <TD>7</TD>
  372. <!-- <TD>extension positioning</TD>-->
  373. <TD>????</TD>
  374. <!-- <TD>This is used to allow for a GSUB table which is bigger than 64k. Its
  375. use should be quite invisible to the font designer</TD> -->
  376. <TD>????GSUB ????? 64K ???????????????????????????????????????????????????????????</TD>
  377. <!-- <TD>FontForge uses this sub-table when needed.</TD>-->
  378. <TD>FontForge ?????????????????????????</TD>
  379. </TR>
  380. <TR>
  381. <TD>8</TD>
  382. <!-- <TD>reverse chaining contextual single substitution</TD>-->
  383. <TD>???????????????</TD>
  384. <!-- <TD>This allows glyph substitutions to happen in reverse order, and it a
  385. variant of the chaining contextual subtable.</TD> -->
  386. <TD>????????????????????????????????????????????????</TD>
  387. <!-- <TD>These may be created with the
  388. <A HREF="fontinfo.html#Contextual">Element-&gt;Font Info-&gt;Contextual
  389. </A>command</TD> -->
  390. <TD>???? <A HREF="fontinfo.html#Contextual"><CODE>?????(<U>L</U>)</CODE>?<CODE>??????(<U>F</U>)...</CODE>?<CODE>[????]</CODE></A> ?????????????????</TD>
  391. </TR>
  392. <TR>
  393. <TD>9+</TD>
  394. <!-- <TD>reserved for future use</TD>-->
  395. <TD>???????????</TD>
  396. <TD></TD>
  397. <!-- <TD>FontForge does not support these sub-tables yet.<BR>
  398. (nor does anyone)</TD>-->
  399. <TD>FontForge ? (?????????) ??????????????????????</TD>
  400. </TR>
  401. </TABLE>
  402. <P>
  403. <!--
  404. FontForge also has built into it knowledge on how to provide default values
  405. for some features that use these tables. See
  406. <A HREF="elementmenu.html#DefaultATT">Element-&gt;Default ATT</A> command
  407. for that. -->
  408. FontForge ???????????????????????????????????????????????????????????
  409. <P>
  410. <!--
  411. FontForge can produce some of these tables, but the text layout/word processing
  412. program used has to look up the tables and do the actual work of rearranging
  413. the glyphs. -->
  414. FontForge ???????????????????????????????????/???????????????????????????????????????????????????????????
  415. <P>
  416. <!--
  417. FontForge will retain the order of features in the GSUB table, and the user
  418. may adjust it with the <A HREF="fontinfo.html#Order">Element-&gt;Font Info</A>
  419. command. -->
  420. FontForge ? GSUB ?????????????????????????? <A HREF="fontinfo.html#Order"><CODE>?????(<U>L</U>)</CODE>?<CODE>??????(<U>F</U>)...</CODE></A> ??????????????????
  421. <H3>
  422. <!-- The <B><CODE><A NAME="GDEF">GDEF</A> </CODE></B>table-->
  423. <B><CODE><A NAME="GDEF">GDEF</A></CODE></B> ????
  424. </H3>
  425. <P>
  426. <!--
  427. FontForge will read ligature carets out of a GDEF table. -->
  428. FontForge ????????? GDEF ?????????????
  429. <P>
  430. <!--
  431. It will generate a GDEF table containing a glyph class definition sub-table
  432. (if needed) or a ligature caret sub-table (if needed). -->
  433. FontForge ???????????????? (?????) ?????????? (?????) ??? GDEF ???????????
  434. <H2>
  435. <!-- <A NAME="AAT">Apple</A> Advanced Typography-->
  436. <A NAME="AAT">Apple</A> ?????? (ATT)
  437. </H2>
  438. <P>
  439. <!--
  440. As above I do not go deeply into the abilities of these tables, for more
  441. information see Apple's docs: -->
  442. ??????????????????????????????????????????????? Apple ?????????????
  443. <UL>
  444. <LI>
  445. <!-- <A HREF="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6kern.html">The
  446. 'kern' table</A> -->
  447. <A HREF="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6kern.html">&lsquo;kern&rsquo;????</A>
  448. <LI>
  449. <!-- <A HREF="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6lcar.html">The
  450. 'lcar' (ligature caret) table</A> -->
  451. <A HREF="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6lcar.html">&lsquo;lcar&rsquo; (???????) ????</A>
  452. <LI>
  453. <!-- <A HREF="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6morx.html">The
  454. 'morx' (extended glyph metamorphosis) table</A>-->
  455. <A HREF="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6morx.html">&lsquo;morx&rsquo; (???????) ????</A>
  456. <UL>
  457. <LI>
  458. <!-- <A HREF="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6mort.html">The
  459. 'mort' (older version of 'morx') table</A>-->
  460. <A HREF="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6mort.html">&lsquo;mort&rsquo; (&lsquo;morx&rsquo; ???) ????</A>
  461. <LI>
  462. <!-- <A HREF="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6feat.html">The
  463. 'feat' (feature) table</A> -->
  464. <A HREF="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6feat.html">&lsquo;feat&rsquo; (??) ????</A>
  465. <LI>
  466. <!-- <A HREF="http://developer.apple.com/fonts/Registry/index.html">Apple's Font
  467. Feature registry</A> -->
  468. <A HREF="http://developer.apple.com/fonts/Registry/index.html">Apple ??????????</A>
  469. <LI>
  470. <!-- <A HREF="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6Tables.html">Description
  471. of the subtables of the 'mort'/'morx' tables</A> -->
  472. <A HREF="http://developer.apple.com/fonts/Registry/index.html">&lsquo;mort&rsquo;/&lsquo;morx&rsquo;??????????????</A>
  473. </UL>
  474. <LI>
  475. <!-- <A HREF="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6opbd.html">The
  476. &lsquo;opbd&rsquo;(optical bounds) table</A> -->
  477. <A HREF="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6opbd.html">&lsquo;opbd&rsquo; (??????) ????</A>
  478. <LI>
  479. <!-- <A HREF="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6prop.html">The
  480. 'prop' (glyph properties) table</A> -->
  481. <A HREF="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6prop.html">&lsquo;prop&rsquo; (?????) ????</A>
  482. </UL>
  483. <P>
  484. <!--
  485. FontForge will current read and produce (if Apple mode is set in font generation)
  486. the following tables: -->
  487. ???FontForge ?????????????? (Apple ????????????????????) ????:
  488. <TABLE BORDER CELLPADDING="2">
  489. <CAPTION>
  490. <!-- Apple tables corresponding vaguely to <A HREF="#GDEF">GDEF</A>-->
  491. <A HREF="#GDEF">GDEF</A> ??????? OpenType ?????
  492. </CAPTION>
  493. <TR>
  494. <TH>tag</TH>
  495. <TH>name</TH>
  496. <!-- <TH>Reading support</TH>-->
  497. <TH>????????</TH>
  498. <!-- <TH>Writing support</TH>-->
  499. <TH>????????</TH>
  500. </TR>
  501. <TR>
  502. <TD><CODE>'lcar'</CODE></TD>
  503. <!-- <TD>ligature caret table</TD>-->
  504. <TD>???????????</TD>
  505. <!-- <TD>FontForge will read ligature carets</TD>-->
  506. <TD>FontForge ???????????????</TD>
  507. <!-- <TD>FontForge will produce this table if the user has specified ligature
  508. carets</TD> -->
  509. <TD>FontForge ??????????????????????????????????</TD>
  510. </TR>
  511. <TR>
  512. <TD><CODE>'prop'</CODE></TD>
  513. <!-- <TD>glyph properties table</TD>-->
  514. <TD>?????????</TD>
  515. <!-- <TD>FontForge will read this table to figure out which glyphs are hebrew
  516. and arabic, and which have 'r2la' substitutions.</TD> -->
  517. <TD>FontForge ????????????????????&lsquo;r2la&rsquo;??????????????????????????????????????</TD>
  518. <!-- <TD>FontForge will generate this table if the font contains some right to
  519. left glyphs.</TD> -->
  520. <TD>FontForge ????????????????????????????????????????????</TD>
  521. </TR>
  522. </TABLE>
  523. <P>
  524. <TABLE BORDER CELLPADDING="2">
  525. <CAPTION>
  526. <!-- Apple tables corresponding vaguely to <A HREF="#GPOS">GPOS</A>-->
  527. <A HREF="#GPOS">GPOS</A> ??????? OpenType ?????
  528. </CAPTION>
  529. <TR>
  530. <TH>tag</TH>
  531. <TH>name</TH>
  532. <!-- <TH>Reading support</TH>-->
  533. <TH>????????</TH>
  534. <!-- <TH>Writing support</TH>-->
  535. <TH>????????</TH>
  536. </TR>
  537. <TR>
  538. <TD><CODE>'kern'</CODE></TD>
  539. <!-- <TD>kerning table</TD>-->
  540. <TD>?????????</TD>
  541. <!-- <TD>FontForge will read horizontal/vertical kerning pairs and classes. FontForge
  542. can read contextual kerning information too into a state machine.</TD> -->
  543. <TD>FontForge ????/???????????????????????????FontForge ???????????????????????????????</TD>
  544. <!-- <TD>FontForge will produce this if the font contains kerning data - - kerning
  545. pairs, kerning by classes, and kerning by state machine.</TD> -->
  546. <TD>FontForge ??????????????????????????????????????????????????????????????????????</TD>
  547. </TR>
  548. <TR>
  549. <TD><CODE>'opbd'</CODE></TD>
  550. <!-- <TD>Optical bounds table</TD>-->
  551. <TD>?????????</TD>
  552. <!-- <TD>FontForge will read optical bounds</TD>-->
  553. <TD>FontForge ?????????????</TD>
  554. <!-- <TD>FontForge will produce this table if the user has specified right and
  555. left bounds as simple positions ('lfbd' and 'rtbd').</TD> -->
  556. <TD>FontForge ???????????????????????? (&lsquo;lfbd&rsquo;?&lsquo;rtbd&rsquo;) ??????????????????????</TD>
  557. </TR>
  558. </TABLE>
  559. <P>
  560. <P>
  561. <!--
  562. FontForge has support for the <CODE>'mort'</CODE> and
  563. <CODE>'<A NAME="morx">morx</A>'</CODE> tables (Glyph metamorphosis and extended
  564. glyph metamorphosis tables). These correspond vaguely to the
  565. <A HREF="#GSUB">GSUB</A> table. Note: Any feature type/setting combinations
  566. which correspond directly to an open type feature will be converted to the
  567. opentype tag when read in. It will be converted back to a feature/setting
  568. when an apple font is generated (use
  569. <A HREF="prefs.html#Mac">File-&gt;Preferences</A> to extend FontForge's mapping
  570. from feature type/setting to opentype tags). -->
  571. FontFonge ?? <CODE>&lsquo;mort&rsquo;</CODE> (?????) ????? <CODE>&lsquo;<A NAME="morx">morx</A>&rsquo;</CODE> (???????) ?????????????????????????? <A HREF="#GSUB">GSUB</A> ???????????????: OpenType ??????????????????????/?????????????? OpenType ???????????????/??????????????Apple ?????????????? (FontForge ???/???? OpenType ???????????????<A HREF="prefs.html#Mac"><CODE>????(<U>F</U>)</CODE>?<CODE>????(<U>E</U>)...</CODE></A> ?????????)?
  572. <TABLE BORDER CELLPADDING="2">
  573. <CAPTION>
  574. <!-- Sub tables of <CODE>'mort'</CODE> or <CODE>'morx'</CODE>-->
  575. <CODE>&lsquo;mort&rsquo;</CODE> ??? <CODE>&lsquo;morx&rsquo;</CODE> ???????????
  576. </CAPTION>
  577. <TR>
  578. <TH></TH>
  579. <!-- <TH>name</TH>-->
  580. <TH>??</TH>
  581. <!-- <TH>Reading support</TH>-->
  582. <TH>????????</TH>
  583. <!-- <TH>Writing support</TH>-->
  584. <TH>????????</TH>
  585. </TR>
  586. <TR>
  587. <TD>0</TD>
  588. <!-- <TD>Indic style rearrangement</TD>-->
  589. <TD>???????????</TD>
  590. <!-- <TD>FontForge can read these and stores them as state machines (which can
  591. be edited with <A HREF="fontinfo.html#Mac-SM">Font Info</A>)</TD> -->
  592. <TD>FontForge ???????????????????????????? (???? <A HREF="fontinfo.html#Mac-SM">??????</A> ????????????)?</TD>
  593. <!-- <TD>Any indic state machines will be output in the generated font.</TD>-->
  594. <TD>??????????????????????????????????</TD>
  595. </TR>
  596. <TR>
  597. <TD>1</TD>
  598. <!-- <TD>contextual glyph substitution</TD>-->
  599. <TD>??????????</TD>
  600. <!-- <TD>FontForge can read these and stores them as state machines (which can
  601. be edited with <A HREF="fontinfo.html#Mac-SM">Font Info</A>)</TD> -->
  602. <TD>FontForge ???????????????????????????? (???? <A HREF="fontinfo.html#Mac-SM">??????</A> ????????????)?</TD>
  603. <!-- <TD>If the font contains any state machines they will be output here. If
  604. there are no state machines then the following conversions of opentype features
  605. will be done: -->
  606. <TD>?????????????????????????????????????????????????????????????? OpenType ?????????:
  607. <UL>
  608. <LI>
  609. <!-- FontForge will generate a <A NAME="cursive-connection">cursive connection
  610. </A>feature using this subtable type if the font contains 'init', 'medi',
  611. 'fina' or 'isol' simple substitutions. -->
  612. FontForge ???????&lsquo;init&rsquo;,&lsquo;medi&rsquo;,&lsquo;fina&rsquo;???&lsquo;isol&rsquo;????????????????????????????<A NAME="cursive-connection">??????</A>??????????
  613. <LI>
  614. <!-- In <A HREF="gposgsub.html#sometimes">some cases</A> FontForge is able to
  615. convert an OpenType Contextual/Chaining substitution table into an Apple
  616. contextual glyph substitution table. -->
  617. <A HREF="gposgsub.html#sometimes">??????????????</A>???FontForge ? OpenType ?????????/???????????? Apple ???????????????????????????
  618. </UL>
  619. </TD>
  620. </TR>
  621. <TR>
  622. <TD>2</TD>
  623. <!-- <TD>ligature substitution</TD>-->
  624. <TD>????</TD>
  625. <!-- <TD>FontForge can read the unconditional information from these and stores
  626. them as opentype ligatures (which can be edited with
  627. <A HREF="charinfo.html#features">Char Info</A>).</TD> -->
  628. <TD>FontForge ???????????????OpenType ????????????????? (???? <A HREF="charinfo.html#features">?????</A> ????????????)?</TD>
  629. <!-- <TD>If there are any ligatures with an apple feature/setting (or which have
  630. an opentype tag which can be converted to an apple feature/setting) then
  631. this table will be output.</TD>-->
  632. <TD>??????????????????? (??? Apple ???/???????? OpenType ????????) ??????????????</TD>
  633. </TR>
  634. <TR>
  635. <TD>4</TD>
  636. <!-- <TD>non-contextual glyph substitution</TD>-->
  637. <TD>???????????</TD>
  638. <!-- <TD>FontForge can read these and stores them as opentype simple substitutions
  639. (which can be edited with <A HREF="charinfo.html#features">Char Info</A>)</TD> -->
  640. <TD>FontForge ??????????OpenType ??????????????????? (???? <A HREF="charinfo.html#features">?????</A> ????????????)?</TD>
  641. <!-- <TD>If there are any substitutions with an apple feature/setting (or which
  642. have an opentype tag which can be converted to an apple feature/setting)
  643. then this table will be output.</TD> -->
  644. <TD>??????????????????? (??? Apple ???/???????? OpenType ????????) ??????????????</TD> </TR>
  645. <TR>
  646. <TD>5</TD>
  647. <!-- <TD>contextual glyph insertion</TD>-->
  648. <TD>??????????</TD>
  649. <!-- <TD>FontForge can read these and stores them as state machines (which can
  650. be edited with <A HREF="fontinfo.html#Mac-SM">Font Info</A>)</TD> -->
  651. <TD>FontForge ???????????????????????????? (???? <A HREF="fontinfo.html#Mac-SM">??????</A> ????????????)?</TD>
  652. <!-- <TD>Any glyph insertion state machines will be output in the generated font.</TD>-->
  653. <TD>????????????????????????????????</TD>
  654. </TR>
  655. </TABLE>
  656. <H3>
  657. <!-- What features can be <A NAME="Conversion">interconverted</A> between OpenType
  658. and AAT? -->
  659. OpenType ? AAT ??????????<A NAME="Conversion">????</A>????
  660. </H3>
  661. <P>
  662. <!--
  663. Some features have almost the same meaning in OpenType and AAT (although
  664. they are expressed quite differently), others are similar enough that they
  665. can sometimes be converted, and others have essentially no common ground. -->
  666. ???????? OpenType ? AAT ??????????????? (???????????????????)?????????????????????????????????????????????????????
  667. <P>
  668. <TABLE BORDER CELLPADDING="2">
  669. <TR>
  670. <!-- <TH>OT Table</TH>-->
  671. <TH>OpenType ????</TH>
  672. <!-- <TH>AAT Table</TH>-->
  673. <TH>AAT ????</TH>
  674. <TH><P ALIGN=Left>
  675. <!-- Description</TH>-->
  676. ??</TH>
  677. </TR>
  678. <TR>
  679. <TD VALIGN="Top"><P ALIGN=Center>
  680. GDEF</TD>
  681. <TD VALIGN="Top"><P ALIGN=Center>
  682. lcar</TD>
  683. <!-- <TD>The ligature caret information in both 'GDEF' and 'lcar' is essentially
  684. identical and FontForge has no trouble reading both and converting from one
  685. to the other.</TD> -->
  686. <TD>??????????&lsquo;GDEF&rsquo;?&lsquo;lcar&rsquo;?????????FontForge ?????????????????????????
  687. </TR>
  688. <TR>
  689. <TD><P ALIGN=Center>
  690. GPOS</TD>
  691. <TD><P ALIGN=Center>
  692. kern</TD>
  693. <!-- <TD>In most cases kerning information can be converted from one format to
  694. another. Both provide support for vertical kerning and right to left kerning.
  695. Both provide support for kerning by glyph pair and kerning by classes.-->
  696. <TD>??????????????????????????????????????????????????????????????????????????
  697. <P>
  698. <!-- OpenType allows kerning commands to be supplied via a contextual chaining
  699. feature, Apple allows them to be controled by a state machine. FontForge
  700. supports both, but does not interconvert.</TD> -->
  701. OpenType ?????????????????????????????Apple ??????????????????????FontForge ?????????????????????????</TD>
  702. </TR>
  703. <TR>
  704. <TD><P ALIGN=Center>
  705. GPOS</TD>
  706. <TD><P ALIGN=Center>
  707. opbd</TD>
  708. <!-- <TD>The GPOS features 'lfbd' and 'rtbd' provide the information needed to
  709. generate an Apple opbd table. If FontForge reads a font with an opbd table
  710. it will generate appropriate 'lfbd' and 'rtbd' features. If FontForge generates
  711. a font in apple mode that has these features it will create an opbd table.
  712. Similarly when FontForge reads an opbd table it will create 'lfbd' and 'rtbd'
  713. features.</TD> -->
  714. <TD>GPOS ??&lsquo;lfbd&rsquo;???&lsquo;rfbd&rsquo;? Apple ? opbd ???????????????????????????FontForge ? opbd ?????????????????????????&lsquo;lfbd&rsquo;???&lsquo;rtbd&rsquo;?????????FotnForge ? Apple ??????????????????????????????&lsquo;opbd&rsquo;???????????????FontForge ? opbd ????????????&lsquo;lfbd&rsquo;?&lsquo;rtbd&rsquo;?????????</TD>
  715. </TR>
  716. <TR>
  717. <TD><P ALIGN=Center>
  718. GPOS</TD>
  719. <TD>
  720. <HR>
  721. </TD>
  722. <!-- <TD>I am not aware of any way to convert other GPOS features to AAT.</TD> -->
  723. <TD>?????? GPOS ??? AAT ??????????????????</TD>
  724. </TR>
  725. <TR>
  726. <TD><P ALIGN=Center>
  727. GSUB</TD>
  728. <TD><P ALIGN=Center>
  729. morx</TD>
  730. <!-- <TD ROWSPAN=2>The 'mort' and 'morx' tables have the same capabilities ('mort'
  731. tables are an old format and Apple currently encourages that 'morx' tables
  732. be used instead). FontForge can read either one, but only generates 'morx'
  733. tables. Interconversion depends on specific feature types and the sub-table
  734. formats, see below</TD>-->
  735. <TD ROWSPAN=2>&lsquo;mort&rsquo;???&lsquo;morx&rsquo;???????????????? (&lsquo;mort&rsquo;???????????????Apple ??????????&lsquo;morx&rsquo;??????????????)?FontForge ??????????????????&lsquo;morx&rsquo;?????????????????????????????????????????????????????????????:
  736. </TR>
  737. <TR>
  738. <TD><P ALIGN=Center>
  739. GSUB</TD>
  740. <TD><P ALIGN=Center>
  741. mort</TD>
  742. </TR>
  743. </TABLE>
  744. <H4>
  745. <!-- An analysis of GSUB and morx sub-tables and feature tags-->
  746. GSUB ??? morx ??????????????
  747. </H4>
  748. <P>
  749. <!--
  750. OpenType uses a four character feature tag (like 'liga') while Apple uses
  751. two numbers to represent a feature setting (&lt;1,2&gt;). For FontForge to
  752. be able to inter-convert an OpenType feature into an Apple feature there
  753. must first be a correspondence between the two naming conventions. Sometimes
  754. there is an easy direct conversion (above 'liga' and &lt;1,2&gt; both represent
  755. "Common Ligatures") but far more often there is none. See
  756. <A HREF="gposgsub.html#OT-Mac-features">below</A> for a list of the tags
  757. and feature settings that FontForge considers similar enough to interconvert. -->
  758. OpenType ? 4 ??????? (&lsquo;liga&rsquo;??) ????????????Apple ???????? 2 ???? (&lt;1,2&gt; ??) ???????FontForge ??????OpenType ???? Apple ??????????????????????? 2 ??????????????????????????????????????????????????? (????&lsquo;liga&rsquo;? &lt;1,2&gt; ????????????????)?FontForge ??????????????????????????????????????<A HREF="gposgsub.html#OT-Mac-features">??</A>??????????
  759. <P>
  760. <!--
  761. GSUB tables have 7 sub-table formats, while morx tables have 5. -->
  762. GSUB ?????? 7 ???????????????????????morx ?????? 5 ????????
  763. <TABLE BORDER CELLPADDING="2">
  764. <TR>
  765. <!-- <TH>GSUB<BR>
  766. sub-<BR>
  767. table</TH>-->
  768. <TH>GSUB<BR>??<BR>????</TH>
  769. <!-- <TH>morx<BR>
  770. sub-<BR>
  771. table</TH>-->
  772. <TH>morx<BR>??<BR>????</TH>
  773. <TH><P ALIGN=Left>
  774. <!-- Description</TH>-->
  775. ??</TH>
  776. </TR>
  777. <TR>
  778. <TD VALIGN="Top"><P ALIGN=Center>
  779. <!-- Single</TD> -->
  780. ??</TD>
  781. <TD VALIGN="Top"><P ALIGN=Center>
  782. <!-- Non-<BR>
  783. Contextual<BR>
  784. Glyph</TD> -->
  785. ??<BR>???<BR>???</TD>
  786. <!-- <TD>These two sub-tables have almost exactly the same capabilities. Each
  787. allows one glyph to be substituted for another. The morx sub-table also allows
  788. a glyph to be deleted, while the GSUB sub-table does not.</TD> -->
  789. <TD>???? 2 ????????????????????????????????? 1 ???????? 1 ????????????????morx ?????????????????????????GSUB ???????????????????</TD>
  790. </TR>
  791. <TR>
  792. <TD VALIGN="Top"><P ALIGN=Center>
  793. <!-- Multiple</TD>-->
  794. ??</TD>
  795. <TD></TD>
  796. <!-- <TD>This GSUB subtable allows a single glyph to be replaced by multiple glyphs.
  797. It has some similarities to Apple's Glyph Insertion sub-table except:-->
  798. <TD>?? GSUB ????????1 ????????????????????????????????????????Apple ??????????????????????????:
  799. <UL>
  800. <LI>
  801. <!-- the 'morx' sub-table always leaves the current glyph in the glyph stream,
  802. while this sub-table need not -->
  803. &lsquo;morx&rsquo;??????????????????????????????????????????????????????
  804. <LI>
  805. <!-- the 'morx' sub-table is contextual while this sub-table is never. (But if
  806. this sub-table is wrapped inside a Context or Chaining Context subtable the
  807. result can be contextual). -->
  808. &lsquo;morx&rsquo;????????????????????????????????????? (??????????????????????????????????????????????????????????????)?
  809. </UL>
  810. </TD>
  811. </TR>
  812. <TR>
  813. <TD></TD>
  814. <TD VALIGN="Top"><P ALIGN=Center>
  815. <!-- Glyph<BR>
  816. Insertion</TD> -->
  817. ???<BR>??</TD>
  818. <!-- <TD>This morx subtable allows a string of glyphs to be inserted before or
  819. after the current glyph (the current glyph always remains). This sub-table
  820. is contextual (ie. the insertion can be restricted to certain contexts).
  821. It bears some similarities to the GSUB Multiple subtable above.</TD> -->
  822. <TD>?? morx ?????????????????????????????????????? (?????????????????)???????????????? (??????????????????????????????)?????? GPOS ???????????????????????</TD>
  823. </TR>
  824. <TR>
  825. <!-- <TD VALIGN="Top">Alternate</TD> -->
  826. <TD VALIGN="Top">???</TD>
  827. <TD></TD>
  828. <!-- <TD>This GSUB subtable allows a single glyph to be replaced by any one of
  829. several alternatives (presumably with help from a word processor's UI). An
  830. example of this would be a character which had several swash variants. There
  831. is nothing like this in the 'morx' table.</TD>-->
  832. <TD>?? GSUB ???????????1 ???????????????? (???????????????? UI ???????) ??? 1 ?????????????????????????????????????????&lsquo;morx&rsquo;???????????????????????</TD>
  833. </TR>
  834. <TR>
  835. <TD VALIGN="Top"><P ALIGN=Center>
  836. <!-- Ligature</TD> -->
  837. ??</TD>
  838. <TD VALIGN="Top"><P ALIGN=Center>
  839. <!-- Ligature</TD> -->
  840. ??</TD>
  841. <!-- <TD>Both formats have ligature sub-tables. The 'GSUB' version is unconditional
  842. (the ligature is always applied -- though a ligature substitution could be
  843. embedded in an OpenType contextual substitution to make it condtional). The
  844. 'morx' version can be contextual (though in fonts I have examined it is usually
  845. uncontextual). FontForge only supports unconditional ligatures. -->
  846. <TD>???????????????????????????&lsquo;GSUB&rsquo;?????????????? (?????????????????? OpenType ???????????????????????????????)?&lsquo;morx&rsquo;???????????????????? (??????????????????????????)?FontForge ??????????????????????
  847. <P>
  848. <!-- FontForge can read all the unconditional ligatures from a 'morx' sub-table.
  849. FontForge loses all contextual ligatures. -->
  850. FontForge ??????????????&lsquo;morx&rsquo;????????????????????FontForge ?????????????????????
  851. <P>
  852. <!-- In OpenType, contextual ligatures can be built by wrapping a ligature sub-table
  853. inside a Context or Chaining Context subtable.</TD> -->
  854. OpenType ???????????????????????????????????????????????????????????</TD>
  855. </TR>
  856. <TR>
  857. <TD></TD>
  858. <TD VALIGN="Top"><P ALIGN=Center>
  859. <!-- Contextual<BR>
  860. Glyph</TD> -->
  861. ?????<BR>???</TD>
  862. <!-- <TD>This morx subtable allows single glyph substitutions to be applied within
  863. certain contexts. At first glance it seems that this could be converted into
  864. an opentype Context subtable, <A HREF="gposgsub.html#sometimes">but this
  865. is rarely the case</A>.</TD>-->
  866. <TD>?? morx ??????????????????????????????????????????????? OpenType ???????????????????????????????<A HREF="gposgsub.html#sometimes">???????????????????????</TD>
  867. </TR>
  868. <TR>
  869. <TD><P ALIGN=Center>
  870. <!-- Context</TD> -->
  871. ????</TD>
  872. <TD></TD>
  873. <!-- <TD ROWSPAN="2" VALIGN="Top">These GSUB subtables allow any collection of
  874. other substitutions to be applied contextually. At first glance one might
  875. think that these (with appropriate nested substitutions) might be converted
  876. to 'morx' contextual glyph substitutions, contextual ligatures, or even glyph
  877. insertion. <A HREF="gposgsub.html#sometimes">Unfortunately this is rarely
  878. the case</A>.</TD> -->
  879. <TD ROWSPAN="2" VALIGN="Top">???? GSUB ??????????????????????????????????????????? (??????????????) ??????????&lsquo;morx&rsquo;???????????????????????????????????????????????????<A HREF="gposgsub.html#sometimes">???????????????????????</A>
  880. </TR>
  881. <TR>
  882. <TD><P ALIGN=Center>
  883. <!-- Chaining<BR>
  884. Context</TD> -->
  885. ???<BR>????</TD>
  886. <TD></TD>
  887. </TR>
  888. <TR VALIGN="Top">
  889. <TD><P ALIGN=Center>
  890. <!-- Reverse<BR>
  891. Chaining<BR>
  892. Context</TD> -->
  893. ???<BR>???<BR>????</TD>
  894. <TD></TD>
  895. <!-- <TD>This GSUB subtable is applied backwards to the stream of glyphs, it allows
  896. a single glyph substitution per contextual match. There is nothing like it
  897. in 'morx'.</TD> -->
  898. <TD>?? GSUB ????????????????????????????????????????????????????? 1 ???????????&lsquo;morx&rsquo;?????????????????</TD>
  899. </TR>
  900. <TR VALIGN="Top">
  901. <TD></TD>
  902. <TD><P ALIGN=Center>
  903. <!-- Indic<BR>
  904. Rearrange-<BR>
  905. ment</TD> -->
  906. ????<BR>???<BR>???</TD>
  907. <!-- <TD>This&lsquo;morx&rsquo;subtable allows for several glyphs to interchange their positions
  908. in the glyph stream. There is nothing like it in GSUB (or GPOS for that matter).</TD>-->
  909. <TD>??&lsquo;morx&rsquo;??????????????????????????????????????????????? GSUB ?? (??? GPOS ??) ???????????????</TD>
  910. </TR>
  911. </TABLE>
  912. <H4>
  913. <!-- Why do contextual glyph substitutions only <A NAME="sometimes">sometimes</A>
  914. get generated in AAT? -->
  915. ?????????????<A NAME="sometimes">???</A>?? AAT ??????????
  916. </H4>
  917. <P>
  918. <!--
  919. Sadly OpenType and AAT provide disjoint capabilities when it comes to contextual
  920. matching. AAT is more capable in some areas, OpenType more capable in others.
  921. FontForge is able to convert an OpenType contextual substitution into an
  922. AAT one if FontForge can detect that the OpenType substitution does not use
  923. capabilities beyond those of AAT. Currently this means: -->
  924. ?????????OpenType ? AAT ?????????????????????????????????????????? AAT ???????????????? OpenType ???????????FontForge ? OpenType ???????? AAT ??????????????????? OpenType ??? AAT ???????????????????? FontForge ??????????????????????????????????????????????:
  925. <UL>
  926. <LI>
  927. <!-- There is an apple feature which matches the otf tag-->
  928. ?? OTF ??????? Apple ????????
  929. <LI>
  930. <!-- And one of the following is true:-->
  931. ???????????? 1 ?????:
  932. <OL>
  933. <LI>
  934. <!-- Either -->
  935. ??????????????????:
  936. <UL>
  937. <LI>
  938. <!-- The sub-table is in coverage format -->
  939. ????????????????????????????
  940. <LI>
  941. <!-- The sub-table contains either exactly one nested single glyph replacement
  942. substitution, or<BR> -->
  943. ????????????? 1 ??????????????????????????<BR>
  944. <!-- it contains exactly two single glyph replacements and one of them refers
  945. to the last glyph matched (and the other does not) -->
  946. ???? 2 ??????????????????????? 1 ???????????????????? (?????? 1 ????????????)
  947. </UL>
  948. <LI>
  949. <!-- or -->
  950. ?????????
  951. <UL>
  952. <LI>
  953. <!-- The sub-table is in either glyph or class format -->
  954. ????????????????????????????????????
  955. <LI>
  956. <!-- If in class format then either the backtrack and lookahead classes must be
  957. the same as the main class, or they must not be used. -->
  958. ????????????????????????????????????????????????????????????????????????
  959. <LI>
  960. <!-- If a rule has a substitution at a given glyph position, then all rules which
  961. match the current rule up to that glyph position must also have a substitution
  962. at that position. -->
  963. ????????????????????????????????????????????????????????????????????????????????????
  964. <LI>
  965. <!-- A rule with exactly one substitution is acceptable<BR>
  966. A rule…

Large files files are truncated, but you can click here to view the full file