aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRod S <rsheeter@google.com>2022-03-25 21:32:00 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2022-03-25 21:32:00 +0000
commit3e24ea754b9aaf446aecac5449fa98f52c8da4c4 (patch)
tree98d81cb66669c50af608fd8a844e22039a00f5ae
parent30779c19f8be9dfa9485cc429239e81df929879a (diff)
parent0b59a54a78ee22be83fe249c724c19ebd7d26ede (diff)
downloadfonttools-3e24ea754b9aaf446aecac5449fa98f52c8da4c4.tar.gz
Update FontTools to 4.31.2 to gain access to iterSubTables. am: 0b59a54a78
Original change: https://android-review.googlesource.com/c/platform/external/fonttools/+/2043270 Change-Id: I7356025d6abf71ea3b4acd34b76c1d114f59c617 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--.github/workflows/test.yml12
-rw-r--r--.gitignore1
-rw-r--r--Doc/docs-requirements.txt7
-rw-r--r--Doc/source/cffLib/index.rst40
-rw-r--r--Doc/source/colorLib/index.rst6
-rw-r--r--Doc/source/conf.py11
-rw-r--r--Doc/source/designspaceLib/readme.rst4
-rw-r--r--Doc/source/developer.rst1
-rw-r--r--Doc/source/index.rst5
-rw-r--r--Doc/source/misc/index.rst1
-rw-r--r--Doc/source/misc/plistlib.rst3
-rw-r--r--Doc/source/misc/py23.rst8
-rw-r--r--Doc/source/optional.rst6
-rw-r--r--Doc/source/otlLib/index.rst73
-rw-r--r--Doc/source/pens/freetypePen.rst8
-rw-r--r--Doc/source/pens/index.rst1
-rw-r--r--Doc/source/tfmLib.rst8
-rw-r--r--Doc/source/ttLib/index.rst27
-rw-r--r--Doc/source/ttLib/tables.rst881
-rw-r--r--Doc/source/ttLib/tables/B_A_S_E_.rst8
-rw-r--r--Doc/source/ttLib/tables/C_B_D_T_.rst8
-rw-r--r--Doc/source/ttLib/tables/C_B_L_C_.rst8
-rw-r--r--Doc/source/ttLib/tables/C_F_F_.rst8
-rw-r--r--Doc/source/ttLib/tables/C_F_F__2.rst8
-rw-r--r--Doc/source/ttLib/tables/C_O_L_R_.rst7
-rw-r--r--Doc/source/ttLib/tables/C_P_A_L_.rst8
-rw-r--r--Doc/source/ttLib/tables/D_S_I_G_.rst8
-rw-r--r--Doc/source/ttLib/tables/E_B_D_T_.rst18
-rw-r--r--Doc/source/ttLib/tables/E_B_L_C_.rst18
-rw-r--r--Doc/source/ttLib/tables/F_F_T_M_.rst9
-rw-r--r--Doc/source/ttLib/tables/F__e_a_t.rst9
-rw-r--r--Doc/source/ttLib/tables/G_D_E_F_.rst8
-rw-r--r--Doc/source/ttLib/tables/G_M_A_P_.rst8
-rw-r--r--Doc/source/ttLib/tables/G_P_K_G_.rst8
-rw-r--r--Doc/source/ttLib/tables/G_P_O_S_.rst8
-rw-r--r--Doc/source/ttLib/tables/G_S_U_B_.rst8
-rw-r--r--Doc/source/ttLib/tables/G__l_a_t.rst8
-rw-r--r--Doc/source/ttLib/tables/G__l_o_c.rst8
-rw-r--r--Doc/source/ttLib/tables/H_V_A_R_.rst7
-rw-r--r--Doc/source/ttLib/tables/J_S_T_F_.rst7
-rw-r--r--Doc/source/ttLib/tables/L_T_S_H_.rst8
-rw-r--r--Doc/source/ttLib/tables/M_A_T_H_.rst7
-rw-r--r--Doc/source/ttLib/tables/M_E_T_A_.rst7
-rw-r--r--Doc/source/ttLib/tables/M_V_A_R_.rst7
-rw-r--r--Doc/source/ttLib/tables/O_S_2f_2.rst7
-rw-r--r--Doc/source/ttLib/tables/S_I_N_G_.rst7
-rw-r--r--Doc/source/ttLib/tables/S_T_A_T_.rst7
-rw-r--r--Doc/source/ttLib/tables/S_V_G_.rst8
-rw-r--r--Doc/source/ttLib/tables/S__i_l_f.rst7
-rw-r--r--Doc/source/ttLib/tables/S__i_l_l.rst7
-rw-r--r--Doc/source/ttLib/tables/T_T_F_A_.rst8
-rw-r--r--Doc/source/ttLib/tables/VTT_related.rst99
-rw-r--r--Doc/source/ttLib/tables/V_D_M_X_.rst7
-rw-r--r--Doc/source/ttLib/tables/V_O_R_G_.rst8
-rw-r--r--Doc/source/ttLib/tables/V_V_A_R_.rst8
-rw-r--r--Doc/source/ttLib/tables/_a_n_k_r.rst7
-rw-r--r--Doc/source/ttLib/tables/_a_v_a_r.rst8
-rw-r--r--Doc/source/ttLib/tables/_b_s_l_n.rst7
-rw-r--r--Doc/source/ttLib/tables/_c_i_d_g.rst7
-rw-r--r--Doc/source/ttLib/tables/_c_m_a_p.rst6
-rw-r--r--Doc/source/ttLib/tables/_c_v_a_r.rst17
-rw-r--r--Doc/source/ttLib/tables/_c_v_t.rst8
-rw-r--r--Doc/source/ttLib/tables/_f_e_a_t.rst7
-rw-r--r--Doc/source/ttLib/tables/_f_p_g_m.rst7
-rw-r--r--Doc/source/ttLib/tables/_f_v_a_r.rst8
-rw-r--r--Doc/source/ttLib/tables/_g_a_s_p.rst8
-rw-r--r--Doc/source/ttLib/tables/_g_c_i_d.rst7
-rw-r--r--Doc/source/ttLib/tables/_g_l_y_f.rst11
-rw-r--r--Doc/source/ttLib/tables/_g_v_a_r.rst16
-rw-r--r--Doc/source/ttLib/tables/_h_d_m_x.rst8
-rw-r--r--Doc/source/ttLib/tables/_h_e_a_d.rst8
-rw-r--r--Doc/source/ttLib/tables/_h_h_e_a.rst8
-rw-r--r--Doc/source/ttLib/tables/_h_m_t_x.rst8
-rw-r--r--Doc/source/ttLib/tables/_k_e_r_n.rst8
-rw-r--r--Doc/source/ttLib/tables/_l_c_a_r.rst8
-rw-r--r--Doc/source/ttLib/tables/_l_o_c_a.rst8
-rw-r--r--Doc/source/ttLib/tables/_l_t_a_g.rst8
-rw-r--r--Doc/source/ttLib/tables/_m_a_x_p.rst8
-rw-r--r--Doc/source/ttLib/tables/_m_e_t_a.rst8
-rw-r--r--Doc/source/ttLib/tables/_m_o_r_t.rst9
-rw-r--r--Doc/source/ttLib/tables/_m_o_r_x.rst8
-rw-r--r--Doc/source/ttLib/tables/_n_a_m_e.rst8
-rw-r--r--Doc/source/ttLib/tables/_o_p_b_d.rst8
-rw-r--r--Doc/source/ttLib/tables/_p_o_s_t.rst8
-rw-r--r--Doc/source/ttLib/tables/_p_r_e_p.rst9
-rw-r--r--Doc/source/ttLib/tables/_p_r_o_p.rst8
-rw-r--r--Doc/source/ttLib/tables/_s_b_i_x.rst25
-rw-r--r--Doc/source/ttLib/tables/_t_r_a_k.rst8
-rw-r--r--Doc/source/ttLib/tables/_v_h_e_a.rst8
-rw-r--r--Doc/source/ttLib/tables/_v_m_t_x.rst8
-rw-r--r--Doc/source/ttLib/ttFont.rst16
-rw-r--r--Doc/source/varLib/index.rst37
-rw-r--r--Doc/source/voltLib.rst13
-rw-r--r--Lib/fontTools/__init__.py2
-rw-r--r--Lib/fontTools/agl.py2
-rw-r--r--Lib/fontTools/cffLib/__init__.py111
-rw-r--r--Lib/fontTools/colorLib/builder.py207
-rw-r--r--Lib/fontTools/colorLib/geometry.py10
-rw-r--r--Lib/fontTools/colorLib/table_builder.py61
-rw-r--r--Lib/fontTools/colorLib/unbuilder.py16
-rw-r--r--Lib/fontTools/cu2qu/cli.py10
-rw-r--r--Lib/fontTools/designspaceLib/__init__.py38
-rw-r--r--Lib/fontTools/feaLib/__main__.py5
-rw-r--r--Lib/fontTools/feaLib/ast.py111
-rw-r--r--Lib/fontTools/feaLib/builder.py493
-rw-r--r--Lib/fontTools/feaLib/parser.py203
-rw-r--r--Lib/fontTools/feaLib/variableScalar.py97
-rw-r--r--Lib/fontTools/fontBuilder.py16
-rw-r--r--Lib/fontTools/help.py3
-rw-r--r--Lib/fontTools/merge.py1205
-rw-r--r--Lib/fontTools/merge/__init__.py200
-rw-r--r--Lib/fontTools/merge/__main__.py6
-rw-r--r--Lib/fontTools/merge/base.py76
-rw-r--r--Lib/fontTools/merge/cmap.py129
-rw-r--r--Lib/fontTools/merge/layout.py466
-rw-r--r--Lib/fontTools/merge/options.py85
-rw-r--r--Lib/fontTools/merge/tables.py311
-rw-r--r--Lib/fontTools/merge/unicode.py65
-rw-r--r--Lib/fontTools/merge/util.py131
-rw-r--r--Lib/fontTools/misc/arrayTools.py2
-rw-r--r--Lib/fontTools/misc/bezierTools.py22
-rw-r--r--Lib/fontTools/misc/eexec.py2
-rw-r--r--Lib/fontTools/misc/etree.py6
-rw-r--r--Lib/fontTools/misc/fixedTools.py36
-rw-r--r--Lib/fontTools/misc/intTools.py35
-rw-r--r--Lib/fontTools/misc/macCreatorType.py4
-rw-r--r--Lib/fontTools/misc/macRes.py2
-rw-r--r--Lib/fontTools/misc/plistlib/__init__.py4
-rw-r--r--Lib/fontTools/misc/psCharStrings.py2
-rw-r--r--Lib/fontTools/misc/psLib.py3
-rw-r--r--Lib/fontTools/misc/py23.py58
-rw-r--r--Lib/fontTools/misc/roundTools.py47
-rw-r--r--Lib/fontTools/misc/sstruct.py15
-rw-r--r--Lib/fontTools/misc/testTools.py17
-rw-r--r--Lib/fontTools/misc/textTools.py54
-rw-r--r--Lib/fontTools/misc/transform.py93
-rw-r--r--Lib/fontTools/misc/xmlReader.py11
-rw-r--r--Lib/fontTools/misc/xmlWriter.py4
-rw-r--r--Lib/fontTools/otlLib/builder.py129
-rw-r--r--Lib/fontTools/otlLib/optimize/__init__.py68
-rw-r--r--Lib/fontTools/otlLib/optimize/__main__.py6
-rw-r--r--Lib/fontTools/otlLib/optimize/gpos.py439
-rw-r--r--Lib/fontTools/pens/basePen.py14
-rw-r--r--Lib/fontTools/pens/boundsPen.py8
-rw-r--r--Lib/fontTools/pens/cu2quPen.py29
-rw-r--r--Lib/fontTools/pens/freetypePen.py458
-rw-r--r--Lib/fontTools/pens/pointPen.py89
-rw-r--r--Lib/fontTools/pens/recordingPen.py96
-rw-r--r--Lib/fontTools/pens/reportLabPen.py2
-rw-r--r--Lib/fontTools/pens/svgPathPen.py49
-rw-r--r--Lib/fontTools/pens/transformPen.py2
-rw-r--r--Lib/fontTools/pens/ttGlyphPen.py283
-rw-r--r--Lib/fontTools/subset/__init__.py890
-rw-r--r--Lib/fontTools/subset/cff.py146
-rw-r--r--Lib/fontTools/subset/svg.py248
-rw-r--r--Lib/fontTools/subset/util.py25
-rw-r--r--Lib/fontTools/svgLib/path/__init__.py3
-rw-r--r--Lib/fontTools/t1Lib/__init__.py219
-rw-r--r--Lib/fontTools/tfmLib.py460
-rw-r--r--Lib/fontTools/ttLib/__init__.py43
-rw-r--r--Lib/fontTools/ttLib/removeOverlaps.py68
-rw-r--r--Lib/fontTools/ttLib/sfnt.py9
-rw-r--r--Lib/fontTools/ttLib/tables/C_B_D_T_.py2
-rw-r--r--Lib/fontTools/ttLib/tables/C_O_L_R_.py6
-rw-r--r--Lib/fontTools/ttLib/tables/C_P_A_L_.py3
-rw-r--r--Lib/fontTools/ttLib/tables/D_S_I_G_.py3
-rw-r--r--Lib/fontTools/ttLib/tables/DefaultTable.py2
-rw-r--r--Lib/fontTools/ttLib/tables/E_B_D_T_.py3
-rw-r--r--Lib/fontTools/ttLib/tables/E_B_L_C_.py3
-rw-r--r--Lib/fontTools/ttLib/tables/F__e_a_t.py6
-rw-r--r--Lib/fontTools/ttLib/tables/G_M_A_P_.py3
-rw-r--r--Lib/fontTools/ttLib/tables/G_P_K_G_.py3
-rw-r--r--Lib/fontTools/ttLib/tables/M_E_T_A_.py3
-rw-r--r--Lib/fontTools/ttLib/tables/S_I_N_G_.py3
-rw-r--r--Lib/fontTools/ttLib/tables/S_V_G_.py311
-rw-r--r--Lib/fontTools/ttLib/tables/S__i_l_f.py3
-rw-r--r--Lib/fontTools/ttLib/tables/T_S_I_V_.py2
-rw-r--r--Lib/fontTools/ttLib/tables/T_S_I__1.py2
-rw-r--r--Lib/fontTools/ttLib/tables/TupleVariation.py351
-rw-r--r--Lib/fontTools/ttLib/tables/V_O_R_G_.py11
-rw-r--r--Lib/fontTools/ttLib/tables/_a_n_k_r.py15
-rw-r--r--Lib/fontTools/ttLib/tables/_a_v_a_r.py24
-rw-r--r--Lib/fontTools/ttLib/tables/_c_i_d_g.py25
-rw-r--r--Lib/fontTools/ttLib/tables/_c_m_a_p.py129
-rw-r--r--Lib/fontTools/ttLib/tables/_c_v_a_r.py4
-rw-r--r--Lib/fontTools/ttLib/tables/_f_e_a_t.py6
-rw-r--r--Lib/fontTools/ttLib/tables/_f_v_a_r.py3
-rw-r--r--Lib/fontTools/ttLib/tables/_g_l_y_f.py575
-rw-r--r--Lib/fontTools/ttLib/tables/_g_v_a_r.py23
-rw-r--r--Lib/fontTools/ttLib/tables/_h_d_m_x.py2
-rw-r--r--Lib/fontTools/ttLib/tables/_l_t_a_g.py3
-rw-r--r--Lib/fontTools/ttLib/tables/_m_e_t_a.py3
-rw-r--r--Lib/fontTools/ttLib/tables/_n_a_m_e.py41
-rw-r--r--Lib/fontTools/ttLib/tables/_p_o_s_t.py38
-rw-r--r--Lib/fontTools/ttLib/tables/_t_r_a_k.py3
-rw-r--r--Lib/fontTools/ttLib/tables/asciiTable.py2
-rw-r--r--Lib/fontTools/ttLib/tables/otBase.py215
-rw-r--r--Lib/fontTools/ttLib/tables/otConverters.py266
-rwxr-xr-xLib/fontTools/ttLib/tables/otData.py303
-rw-r--r--Lib/fontTools/ttLib/tables/otTables.py438
-rw-r--r--Lib/fontTools/ttLib/tables/ttProgram.py3
-rw-r--r--Lib/fontTools/ttLib/ttCollection.py18
-rw-r--r--Lib/fontTools/ttLib/ttFont.py318
-rw-r--r--Lib/fontTools/ttLib/woff2.py3
-rw-r--r--Lib/fontTools/ttx.py206
-rwxr-xr-xLib/fontTools/ufoLib/__init__.py4
-rw-r--r--Lib/fontTools/ufoLib/filenames.py92
-rwxr-xr-xLib/fontTools/ufoLib/glifLib.py155
-rw-r--r--Lib/fontTools/ufoLib/plistlib.py2
-rw-r--r--Lib/fontTools/unicodedata/Blocks.py778
-rw-r--r--Lib/fontTools/unicodedata/OTTags.py4
-rw-r--r--Lib/fontTools/unicodedata/ScriptExtensions.py58
-rw-r--r--Lib/fontTools/unicodedata/Scripts.py511
-rw-r--r--Lib/fontTools/unicodedata/__init__.py18
-rw-r--r--Lib/fontTools/varLib/__init__.py50
-rw-r--r--Lib/fontTools/varLib/builder.py71
-rw-r--r--Lib/fontTools/varLib/cff.py37
-rw-r--r--Lib/fontTools/varLib/errors.py34
-rw-r--r--Lib/fontTools/varLib/featureVars.py104
-rw-r--r--Lib/fontTools/varLib/instancer/__init__.py71
-rw-r--r--Lib/fontTools/varLib/merger.py78
-rw-r--r--Lib/fontTools/varLib/models.py938
-rw-r--r--Lib/fontTools/varLib/mutator.py10
-rw-r--r--Lib/fontTools/varLib/varStore.py31
-rw-r--r--METADATA12
-rw-r--r--NEWS.rst300
-rw-r--r--README.rst61
-rw-r--r--Snippets/README.md1
-rw-r--r--Snippets/checksum.py4
-rw-r--r--Snippets/compact_gpos.py144
-rwxr-xr-xSnippets/svg2glif.py2
-rw-r--r--Tests/colorLib/builder_test.py850
-rw-r--r--Tests/colorLib/unbuilder_test.py122
-rw-r--r--Tests/designspaceLib/designspace_test.py2
-rw-r--r--Tests/feaLib/builder_test.py531
-rw-r--r--Tests/feaLib/data/PairPosSubtable.fea4
-rw-r--r--Tests/feaLib/data/bug2276.fea11
-rw-r--r--Tests/feaLib/data/bug2276.ttx59
-rw-r--r--Tests/feaLib/data/delete_glyph.fea4
-rw-r--r--Tests/feaLib/data/delete_glyph.ttx15
-rw-r--r--Tests/feaLib/data/variable_conditionset.fea13
-rw-r--r--Tests/feaLib/data/variable_conditionset.ttx67
-rw-r--r--Tests/feaLib/data/variable_scalar_anchor.fea4
-rw-r--r--Tests/feaLib/data/variable_scalar_anchor.ttx101
-rw-r--r--Tests/feaLib/data/variable_scalar_valuerecord.fea5
-rw-r--r--Tests/feaLib/data/variable_scalar_valuerecord.ttx104
-rw-r--r--Tests/feaLib/lexer_test.py2
-rw-r--r--Tests/feaLib/parser_test.py944
-rw-r--r--Tests/merge/data/CFFFont1.ttx23445
-rw-r--r--Tests/merge/data/CFFFont2.ttx6682
-rw-r--r--Tests/merge/data/CFFFont_expected.ttx30063
-rw-r--r--Tests/merge/merge_test.py (renamed from Tests/merge_test.py)74
-rw-r--r--Tests/misc/bezierTools_test.py20
-rw-r--r--Tests/misc/plistlib_test.py2
-rw-r--r--Tests/misc/transform_test.py8
-rw-r--r--Tests/misc/xmlReader_test.py2
-rw-r--r--Tests/misc/xmlWriter_test.py19
-rw-r--r--Tests/mtiLib/mti_test.py6
-rw-r--r--Tests/otlLib/builder_test.py662
-rw-r--r--Tests/otlLib/optimize_test.py175
-rw-r--r--Tests/pens/data/test_even_odd_fill.pgmbin0 -> 2513 bytes
-rw-r--r--Tests/pens/data/test_non_zero_fill.pgmbin0 -> 2513 bytes
-rw-r--r--Tests/pens/data/test_rotate.pgmbin0 -> 1309 bytes
-rw-r--r--Tests/pens/data/test_skew.pgmbin0 -> 1263 bytes
-rw-r--r--Tests/pens/freetypePen_test.py235
-rw-r--r--Tests/pens/ttGlyphPen_test.py381
-rw-r--r--Tests/subset/data/BungeeColor-Regular.ttx438
-rw-r--r--Tests/subset/data/GPOS_SinglePos_no_value_issue_2312.subset.ttx234
-rw-r--r--Tests/subset/data/GPOS_SinglePos_no_value_issue_2312.ttx689
-rw-r--r--Tests/subset/subset_test.py223
-rw-r--r--Tests/subset/svg_test.py556
-rw-r--r--Tests/svgLib/path/path_test.py2
-rw-r--r--Tests/t1Lib/data/TestT1-ellipsis-hinted.pfa73
-rw-r--r--Tests/t1Lib/t1Lib_test.py94
-rw-r--r--Tests/tfmLib/data/cmex10.tfmbin0 -> 992 bytes
-rw-r--r--Tests/tfmLib/data/cmr10.tfmbin0 -> 1296 bytes
-rw-r--r--Tests/tfmLib/data/cmsy10.tfmbin0 -> 1124 bytes
-rw-r--r--Tests/tfmLib/data/dummy-space.tfmbin0 -> 152 bytes
-rw-r--r--Tests/tfmLib/tfmLib_test.py90
-rw-r--r--Tests/ttLib/data/TestVGID-Regular.otfbin0 -> 31992 bytes
-rw-r--r--Tests/ttLib/data/TestVGID-Regular.ttx18418
-rw-r--r--Tests/ttLib/removeOverlaps_test.py51
-rw-r--r--Tests/ttLib/tables/C_O_L_R_test.py441
-rw-r--r--Tests/ttLib/tables/M_V_A_R_test.py61
-rw-r--r--Tests/ttLib/tables/S_V_G__test.py131
-rw-r--r--Tests/ttLib/tables/T_S_I__1_test.py2
-rw-r--r--Tests/ttLib/tables/TupleVariation_test.py80
-rw-r--r--Tests/ttLib/tables/_g_l_y_f_test.py22
-rw-r--r--Tests/ttLib/tables/_l_t_a_g_test.py5
-rw-r--r--Tests/ttLib/tables/_m_o_r_x_test.py3
-rw-r--r--Tests/ttLib/tables/_n_a_m_e_test.py112
-rw-r--r--Tests/ttLib/tables/otTables_test.py254
-rw-r--r--Tests/ttLib/tables/tables_test.py2
-rw-r--r--Tests/ttLib/tables/ttProgram_test.py2
-rw-r--r--Tests/ttLib/ttCollection_test.py27
-rw-r--r--Tests/ttLib/ttFont_test.py166
-rw-r--r--Tests/ttLib/woff2_test.py2
-rw-r--r--Tests/ttx/ttx_test.py14
-rw-r--r--Tests/ufoLib/UFOZ_test.py2
-rw-r--r--Tests/ufoLib/filenames_test.py10
-rw-r--r--Tests/ufoLib/glifLib_test.py2
-rw-r--r--Tests/unicodedata_test.py6
-rw-r--r--Tests/varLib/builder_test.py23
-rw-r--r--Tests/varLib/instancer/data/PartialInstancerTest4-VF.ttx463
-rw-r--r--Tests/varLib/instancer/data/SinglePos.ttx249
-rw-r--r--Tests/varLib/instancer/data/test_results/SinglePos-VF-instance-280,18.ttx96
-rw-r--r--Tests/varLib/instancer/instancer_test.py45
-rw-r--r--Tests/varLib/interpolate_layout_test.py7
-rw-r--r--Tests/varLib/mutator_test.py7
-rw-r--r--Tests/varLib/varLib_test.py7
-rw-r--r--Tests/varLib/varStore_test.py82
-rw-r--r--mypy.ini2
-rw-r--r--requirements.txt17
-rw-r--r--setup.cfg9
-rwxr-xr-xsetup.py10
-rw-r--r--tox.ini4
316 files changed, 96998 insertions, 7931 deletions
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 89d668d0..fb314ef8 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -27,17 +27,17 @@ jobs:
if: "! contains(toJSON(github.event.commits.*.message), '[skip ci]')"
strategy:
matrix:
- python-version: [3.6, 3.7, 3.8, 3.9]
+ python-version: [3.7, 3.8, 3.9]
platform: [ubuntu-latest, macos-latest, windows-latest]
exclude: # Only test on the oldest and latest supported stable Python on macOS and Windows.
- platform: macos-latest
python-version: 3.7
- platform: macos-latest
- python-version: 3.8
+ python-version: 3.9
- platform: windows-latest
python-version: 3.7
- platform: windows-latest
- python-version: 3.8
+ python-version: 3.9
steps:
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
@@ -55,7 +55,7 @@ jobs:
coverage combine
coverage xml
- name: Upload coverage to Codecov
- uses: codecov/codecov-action@v1
+ uses: codecov/codecov-action@v2
with:
file: coverage.xml
flags: unittests
@@ -70,7 +70,7 @@ jobs:
- name: Set up Python 3.x
uses: actions/setup-python@v2
with:
- python-version: "3.x"
+ python-version: 3.9
- name: Install packages
run: pip install tox
- name: Run Tox
@@ -84,7 +84,7 @@ jobs:
- name: Set up Python pypy3
uses: actions/setup-python@v2
with:
- python-version: "pypy3"
+ python-version: "pypy-3.7"
- name: Install packages
run: pip install tox
- name: Run Tox
diff --git a/.gitignore b/.gitignore
index eba633ed..9c564fd5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,6 +14,7 @@ dist/
*.egg-info/
*.egg
MANIFEST
+.idea
# Installer logs
pip-log.txt
diff --git a/Doc/docs-requirements.txt b/Doc/docs-requirements.txt
index c62c8d1e..5016e340 100644
--- a/Doc/docs-requirements.txt
+++ b/Doc/docs-requirements.txt
@@ -1,3 +1,4 @@
-sphinx==3.3.1
-sphinx_rtd_theme==0.5.0
-reportlab==3.5.55
+sphinx==4.3.2
+sphinx_rtd_theme==1.0.0
+reportlab==3.6.5
+freetype-py==2.2.0
diff --git a/Doc/source/cffLib/index.rst b/Doc/source/cffLib/index.rst
index 281a0b12..4a40f92f 100644
--- a/Doc/source/cffLib/index.rst
+++ b/Doc/source/cffLib/index.rst
@@ -11,43 +11,3 @@ This package also contains two modules for manipulating CFF format glyphs:
specializer
width
-
-.. autoclass:: fontTools.cffLib.CFFFontSet
- :inherited-members:
- :members:
-
-.. autoclass:: fontTools.cffLib.TopDict
- :members:
-
-.. autoclass:: fontTools.cffLib.CharStrings
- :members:
-
-.. autoclass:: fontTools.cffLib.Index
- :members:
-
-.. autoclass:: fontTools.cffLib.GlobalSubrsIndex
- :members:
-
-.. autoclass:: fontTools.cffLib.TopDictIndex
- :members:
-
-.. autoclass:: fontTools.cffLib.CFFWriter
- :members:
-
-.. autoclass:: fontTools.cffLib.IndexCompiler
- :members:
-
-.. autoclass:: fontTools.cffLib.TopDictIndexCompiler
- :members:
-
-.. autoclass:: fontTools.cffLib.FDArrayIndexCompiler
- :members:
-
-.. autoclass:: fontTools.cffLib.GlobalSubrsCompiler
- :members:
-
-.. autoclass:: fontTools.cffLib.SubrsCompiler
- :members:
-
-.. autoclass:: fontTools.cffLib.CharStringsCompiler
- :members:
diff --git a/Doc/source/colorLib/index.rst b/Doc/source/colorLib/index.rst
index d4eb9f83..5a9bf8a1 100644
--- a/Doc/source/colorLib/index.rst
+++ b/Doc/source/colorLib/index.rst
@@ -3,9 +3,3 @@ colorLib.builder: Build COLR/CPAL tables from scratch
#####################################################
.. automodule:: fontTools.colorLib.builder
- :members: buildCPAL, buildCOLR, populateCOLRv0
-
-.. autoclass:: fontTools.colorLib.builder.ColorPaletteType
- :inherited-members:
- :members:
- :undoc-members:
diff --git a/Doc/source/conf.py b/Doc/source/conf.py
index 82a5d579..b95119db 100644
--- a/Doc/source/conf.py
+++ b/Doc/source/conf.py
@@ -30,9 +30,14 @@ needs_sphinx = "1.3"
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
-extensions = ["sphinx.ext.autodoc", "sphinx.ext.viewcode", "sphinx.ext.napoleon", "sphinx.ext.coverage"]
+extensions = ["sphinx.ext.autodoc", "sphinx.ext.viewcode", "sphinx.ext.napoleon", "sphinx.ext.coverage", "sphinx.ext.autosectionlabel"]
-autodoc_mock_imports = ["gtk"]
+autodoc_mock_imports = ["gtk", "reportlab"]
+
+autodoc_default_options = {
+ 'members': True,
+ 'inherited-members': True
+}
# Add any paths that contain templates here, relative to this directory.
templates_path = ["_templates"]
@@ -99,7 +104,7 @@ html_theme_options = {"display_version": False}
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = ["_static"]
+# html_static_path = ["_static"]
html_favicon = "assets/img/favicon.ico"
diff --git a/Doc/source/designspaceLib/readme.rst b/Doc/source/designspaceLib/readme.rst
index c5757a6e..b9ba85a6 100644
--- a/Doc/source/designspaceLib/readme.rst
+++ b/Doc/source/designspaceLib/readme.rst
@@ -95,7 +95,7 @@ Class Methods
-
+.. _source-descriptor-object:
SourceDescriptor object
=======================
@@ -883,7 +883,7 @@ Attributes
is not important for compiling variable fonts.
5.1.1 conditionset element
-=======================
+==========================
- Child element of ``rule``
- Contains one or more ``condition`` elements.
diff --git a/Doc/source/developer.rst b/Doc/source/developer.rst
index 3e259f0e..dc4d425c 100644
--- a/Doc/source/developer.rst
+++ b/Doc/source/developer.rst
@@ -1,3 +1,4 @@
+:orphan:
.. _developerinfo:
.. image:: ../../Icons/FontToolsIconGreenCircle.png
:width: 200px
diff --git a/Doc/source/index.rst b/Doc/source/index.rst
index 2162cc13..784834d8 100644
--- a/Doc/source/index.rst
+++ b/Doc/source/index.rst
@@ -61,7 +61,7 @@ Libraries
---------
The main library you will want to access when using fontTools for font
-engineering is likely to be :py:mod:`fontTools.ttLib`, which is the package
+engineering is likely to be :py:mod:`fontTools.ttLib.ttFont`, which is the module
for handling TrueType/OpenType fonts. However, there are many other
libraries in the fontTools suite:
@@ -79,6 +79,8 @@ libraries in the fontTools suite:
- :py:mod:`fontTools.subset`: OpenType font subsetting and optimization
- :py:mod:`fontTools.svgLib.path`: Library for drawing SVG paths onto glyphs
- :py:mod:`fontTools.t1Lib`: Tools for PostScript Type 1 fonts (Python2 only)
+- :py:mod:`fontTools.tfmLib`: Module for reading TFM files
+- :py:mod:`fontTools.ttLib`: Module for reading/writing OpenType and Truetype fonts
- :py:mod:`fontTools.ttx`: Module for converting between OTF and XML representation
- :py:mod:`fontTools.ufoLib`: Module for reading and writing UFO files
- :py:mod:`fontTools.unicodedata`: Convert between Unicode and OpenType script information
@@ -130,6 +132,7 @@ Table of Contents
subset/index
svgLib/index
t1Lib
+ tfmLib
ttLib/index
ttx
ufoLib/index
diff --git a/Doc/source/misc/index.rst b/Doc/source/misc/index.rst
index bd7db09e..003c48a5 100644
--- a/Doc/source/misc/index.rst
+++ b/Doc/source/misc/index.rst
@@ -25,7 +25,6 @@ utilities by fontTools, but some of which may be more generally useful.
psCharStrings
psLib
psOperators
- py23
sstruct
symfont
testTools
diff --git a/Doc/source/misc/plistlib.rst b/Doc/source/misc/plistlib.rst
index 68570967..7409aa22 100644
--- a/Doc/source/misc/plistlib.rst
+++ b/Doc/source/misc/plistlib.rst
@@ -4,6 +4,3 @@ plistlib: Tools for handling .plist files
.. automodule:: fontTools.misc.plistlib
:members: totree, fromtree, load, loads, dump, dumps
-
-.. autoclass:: fontTools.misc.plistlib.Data
- :members:
diff --git a/Doc/source/misc/py23.rst b/Doc/source/misc/py23.rst
deleted file mode 100644
index 49a76bf1..00000000
--- a/Doc/source/misc/py23.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-####
-py23
-####
-
-.. automodule:: fontTools.misc.py23
- :inherited-members:
- :members:
- :undoc-members:
diff --git a/Doc/source/optional.rst b/Doc/source/optional.rst
index 09376a26..0ac22bfd 100644
--- a/Doc/source/optional.rst
+++ b/Doc/source/optional.rst
@@ -1,3 +1,5 @@
+:orphan:
+
Optional Dependencies
=====================
@@ -57,8 +59,8 @@ with ``ttx`` we use the ``unicodedata`` module in the Standard Library.
The version included in there varies between different Python versions.
To use the latest available data, you can install:
-* `unicodedata2 <https://pypi.python.org/pypi/unicodedata2>`__: ``unicodedata`` backport for Python 2.7
- and 3.x updated to the latest Unicode version 12.0. Note this is not necessary if you use Python 3.8
+* `unicodedata2 <https://pypi.python.org/pypi/unicodedata2>`__: ``unicodedata`` backport for Python
+ 3.x updated to the latest Unicode version 14.0. Note this is not necessary if you use Python 3.11
as the latter already comes with an up-to-date ``unicodedata``.
*Extra:* ``unicode``
diff --git a/Doc/source/otlLib/index.rst b/Doc/source/otlLib/index.rst
index 1984914c..272db73a 100644
--- a/Doc/source/otlLib/index.rst
+++ b/Doc/source/otlLib/index.rst
@@ -11,16 +11,31 @@ lookups, coverage tables and so on.
High-level OpenType Layout Lookup Builders
------------------------------------------
-.. automodule:: fontTools.otlLib.builder
- :members: AlternateSubstBuilder, ChainContextPosBuilder, ChainContextSubstBuilder, LigatureSubstBuilder, MultipleSubstBuilder, CursivePosBuilder, MarkBasePosBuilder, MarkLigPosBuilder, MarkMarkPosBuilder, ReverseChainSingleSubstBuilder, SingleSubstBuilder, ClassPairPosSubtableBuilder, PairPosBuilder, SinglePosBuilder
- :member-order: bysource
+.. currentmodule:: fontTools.otlLib.builder
+
+.. autoclass:: AlternateSubstBuilder
+.. autoclass:: ChainContextPosBuilder
+.. autoclass:: ChainContextSubstBuilder
+.. autoclass:: LigatureSubstBuilder
+.. autoclass:: MultipleSubstBuilder
+.. autoclass:: CursivePosBuilder
+.. autoclass:: MarkBasePosBuilder
+.. autoclass:: MarkLigPosBuilder
+.. autoclass:: MarkMarkPosBuilder
+.. autoclass:: ReverseChainSingleSubstBuilder
+.. autoclass:: SingleSubstBuilder
+.. autoclass:: ClassPairPosSubtableBuilder
+.. autoclass:: PairPosBuilder
+.. autoclass:: SinglePosBuilder
--------------------------------------
Common OpenType Layout Data Structures
--------------------------------------
-.. automodule:: fontTools.otlLib.builder
- :members: buildCoverage, buildLookup
+.. currentmodule:: fontTools.otlLib.builder
+
+.. autofunction:: buildCoverage
+.. autofunction:: buildLookup
------------------------------------
Low-level GSUB Table Lookup Builders
@@ -29,8 +44,12 @@ Low-level GSUB Table Lookup Builders
These functions deal with the "simple" lookup types. See above for classes to
help build more complex lookups (contextual and chaining lookups).
-.. automodule:: fontTools.otlLib.builder
- :members: buildSingleSubstSubtable, buildMultipleSubstSubtable, buildAlternateSubstSubtable, buildLigatureSubstSubtable
+.. currentmodule:: fontTools.otlLib.builder
+
+.. autofunction:: buildSingleSubstSubtable
+.. autofunction:: buildMultipleSubstSubtable
+.. autofunction:: buildAlternateSubstSubtable
+.. autofunction:: buildLigatureSubstSubtable
--------------------------
GPOS Shared Table Builders
@@ -40,9 +59,13 @@ The functions help build the `GPOS shared tables <https://docs.microsoft.com/en-
as defined in the OpenType spec: value records, anchors, mark arrays and
mark record tables.
-.. automodule:: fontTools.otlLib.builder
- :members: buildValue, buildAnchor, buildMarkArray, buildDevice, buildBaseArray, buildComponentRecord, buildMarkArray, buildValue
- :member-order: bysource
+.. currentmodule:: fontTools.otlLib.builder
+.. autofunction:: buildValue
+.. autofunction:: buildAnchor
+.. autofunction:: buildMarkArray
+.. autofunction:: buildDevice
+.. autofunction:: buildBaseArray
+.. autofunction:: buildComponentRecord
------------------------------------
Low-level GPOS Table Lookup Builders
@@ -51,9 +74,19 @@ Low-level GPOS Table Lookup Builders
These functions deal with the "simple" lookup types. See above for classes to
help build more complex lookups (contextual and chaining lookups).
-.. automodule:: fontTools.otlLib.builder
- :members: buildCursivePosSubtable, buildLigatureArray, buildMarkBasePos, buildMarkBasePosSubtable, buildMarkLigPos, buildMarkLigPosSubtable, buildPairPosClassesSubtable, buildPairPosGlyphs, buildPairPosGlyphsSubtable, buildSinglePos, buildSinglePosSubtable
- :member-order: bysource
+.. currentmodule:: fontTools.otlLib.builder
+
+.. autofunction:: buildCursivePosSubtable
+.. autofunction:: buildLigatureArray
+.. autofunction:: buildMarkBasePos
+.. autofunction:: buildMarkBasePosSubtable
+.. autofunction:: buildMarkLigPos
+.. autofunction:: buildMarkLigPosSubtable
+.. autofunction:: buildPairPosClassesSubtable
+.. autofunction:: buildPairPosGlyphs
+.. autofunction:: buildPairPosGlyphsSubtable
+.. autofunction:: buildSinglePos
+.. autofunction:: buildSinglePosSubtable
----------------------------
GDEF Table Subtable Builders
@@ -61,14 +94,16 @@ GDEF Table Subtable Builders
These functions build subtables for elements of the ``GDEF`` table.
-.. automodule:: fontTools.otlLib.builder
- :members: buildAttachList, buildLigCaretList, buildMarkGlyphSetsDef
- :member-order: bysource
+.. currentmodule:: fontTools.otlLib.builder
+
+.. autofunction:: buildAttachList
+.. autofunction:: buildLigCaretList
+.. autofunction:: buildMarkGlyphSetsDef
------------------
STAT Table Builder
------------------
-.. automodule:: fontTools.otlLib.builder
- :members: buildStatTable
- :member-order: bysource
+.. currentmodule:: fontTools.otlLib.builder
+
+.. autofunction:: buildStatTable
diff --git a/Doc/source/pens/freetypePen.rst b/Doc/source/pens/freetypePen.rst
new file mode 100644
index 00000000..9b849a21
--- /dev/null
+++ b/Doc/source/pens/freetypePen.rst
@@ -0,0 +1,8 @@
+###########
+freetypePen
+###########
+
+.. automodule:: fontTools.pens.freetypePen
+ :inherited-members:
+ :members:
+ :undoc-members:
diff --git a/Doc/source/pens/index.rst b/Doc/source/pens/index.rst
index 91175cf7..0f76b723 100644
--- a/Doc/source/pens/index.rst
+++ b/Doc/source/pens/index.rst
@@ -11,6 +11,7 @@ pens
cocoaPen
cu2quPen
filterPen
+ freetypePen
momentsPen
perimeterPen
pointInsidePen
diff --git a/Doc/source/tfmLib.rst b/Doc/source/tfmLib.rst
new file mode 100644
index 00000000..daa4125c
--- /dev/null
+++ b/Doc/source/tfmLib.rst
@@ -0,0 +1,8 @@
+###########################################
+tfmLib: Read TeX Font Metrics files
+###########################################
+
+.. automodule:: fontTools.tfmLib
+
+.. autoclass:: fontTools.tfmLib.TFM
+ :members:
diff --git a/Doc/source/ttLib/index.rst b/Doc/source/ttLib/index.rst
index 4dfa2d66..7798238d 100644
--- a/Doc/source/ttLib/index.rst
+++ b/Doc/source/ttLib/index.rst
@@ -1,19 +1,24 @@
-#####
-ttLib
-#####
+#############################################
+ttLib: Read/write OpenType and TrueType fonts
+#############################################
+
+Most users of the fontTools library will be using it to generate or manipulate
+OpenType and TrueType fonts. (FontTools initially only supported TrueType fonts,
+gaining OpenType support in version 2.0, and so uses the ``tt`` prefix to refer to
+both kinds of font. Because of this we will refer to both as "TrueType fonts"
+unless we need to make a distinction.)
+
+The main entry point for such operations is the :py:mod:`fontTools.ttLib.ttFont`
+module, but other modules also provide useful functionality for handling OpenType
+fonts.
.. toctree::
- :maxdepth: 1
+ :maxdepth: 2
+ ttFont
+ ttCollection
macUtils
sfnt
standardGlyphOrder
tables
- ttCollection
- ttFont
woff2
-
-.. automodule:: fontTools.ttLib
- :inherited-members:
- :members:
- :undoc-members:
diff --git a/Doc/source/ttLib/tables.rst b/Doc/source/ttLib/tables.rst
index 45c76b8b..4f8df8d4 100644
--- a/Doc/source/ttLib/tables.rst
+++ b/Doc/source/ttLib/tables.rst
@@ -1,21 +1,94 @@
-######
-tables
-######
+###############################
+TrueType/OpenType Table Modules
+###############################
This folder is a subpackage of :py:mod:`fontTools.ttLib`. Each module here is a
specialized TT/OT table converter: they can convert raw data
to Python objects and vice versa. Usually you don't need to
use the modules directly: they are imported and used
-automatically when needed by :py:mod:`fontTools.ttLib`.
-
-If you are writing you own table converter the following is
-important.
-
-The modules here have pretty strange names: this is due to the
+automatically when needed by :py:mod:`fontTools.ttLib`. The tables currently
+supported are:
+
+.. toctree::
+ :maxdepth: 1
+
+ tables/_a_n_k_r
+ tables/_a_v_a_r
+ tables/B_A_S_E_
+ tables/_b_s_l_n
+ tables/C_B_D_T_
+ tables/C_B_L_C_
+ tables/C_F_F_
+ tables/C_F_F__2
+ tables/_c_i_d_g
+ tables/_c_m_a_p
+ tables/C_O_L_R_
+ tables/C_P_A_L_
+ tables/_c_v_a_r
+ tables/_c_v_t
+ tables/D_S_I_G_
+ tables/E_B_D_T_
+ tables/E_B_L_C_
+ tables/F__e_a_t
+ tables/_f_e_a_t
+ tables/F_F_T_M_
+ tables/_f_p_g_m
+ tables/_f_v_a_r
+ tables/_g_a_s_p
+ tables/_g_c_i_d
+ tables/G_D_E_F_
+ tables/G__l_a_t
+ tables/G__l_o_c
+ tables/_g_l_y_f
+ tables/G_M_A_P_
+ tables/G_P_K_G_
+ tables/G_P_O_S_
+ tables/G_S_U_B_
+ tables/_g_v_a_r
+ tables/_h_d_m_x
+ tables/_h_e_a_d
+ tables/_h_h_e_a
+ tables/_h_m_t_x
+ tables/H_V_A_R_
+ tables/J_S_T_F_
+ tables/_k_e_r_n
+ tables/_l_c_a_r
+ tables/_l_o_c_a
+ tables/_l_t_a_g
+ tables/L_T_S_H_
+ tables/M_A_T_H_
+ tables/_m_a_x_p
+ tables/M_E_T_A_
+ tables/_m_e_t_a
+ tables/_m_o_r_t
+ tables/_m_o_r_x
+ tables/M_V_A_R_
+ tables/_n_a_m_e
+ tables/_o_p_b_d
+ tables/O_S_2f_2
+ tables/_p_o_s_t
+ tables/_p_r_e_p
+ tables/_p_r_o_p
+ tables/_s_b_i_x
+ tables/S__i_l_f
+ tables/S__i_l_l
+ tables/S_I_N_G_
+ tables/S_T_A_T_
+ tables/S_V_G_
+ tables/_t_r_a_k
+ tables/T_T_F_A_
+ tables/V_D_M_X_
+ tables/_v_h_e_a
+ tables/_v_m_t_x
+ tables/V_O_R_G_
+ tables/VTT_related
+ tables/V_V_A_R_
+
+The Python modules representing the tables have pretty strange names: this is due to the
fact that we need to map TT table tags (which are case sensitive)
to filenames (which on Mac and Win aren't case sensitive) as well
as to Python identifiers. The latter means it can only contain
-[A-Za-z0-9_] and cannot start with a number.
+``[A-Za-z0-9_]`` and cannot start with a number.
:py:mod:`fontTools.ttLib` provides functions to expand a tag into the format used here::
@@ -46,13 +119,12 @@ Eg. the 'glyf' table converter lives in a Python file called::
_g_l_y_f.py
-The converter itself is a class, named "table_" + expandedtag. Eg::
+The converter itself is a class, named ``table_`` + expandedtag. Eg::
class table__g_l_y_f:
etc.
-
Note that if you _do_ need to use such modules or classes manually,
there are two convenient API functions that let you find them by tag::
@@ -62,9 +134,21 @@ there are two convenient API functions that let you find them by tag::
<class ttLib.tables._g_l_y_f.table__g_l_y_f at 645f400>
>>
-You must subclass from :py:mod:`fontTools.ttLib.tables.DefaultTable.DefaultTable`. It provides some default
-behavior, as well as a constructor method (__init__) that you don't need to
-override.
+ttProgram: TrueType bytecode assembler/disassembler
+---------------------------------------------------
+
+.. automodule:: fontTools.ttLib.tables.ttProgram
+ :inherited-members:
+ :members:
+ :undoc-members:
+
+Contributing your own table convertors
+--------------------------------------
+
+To add support for a new font table that fontTools does not currently implement,
+you must subclass from :py:mod:`fontTools.ttLib.tables.DefaultTable.DefaultTable`.
+It provides some default behavior, as well as a constructor method (``__init__``)
+that you don't need to override.
Your converter should minimally provide two methods::
@@ -92,774 +176,15 @@ If you want to support TTX import/export as well, you need to provide two
additional methods::
- def toXML(self, writer, ttFont):
- # XXX
-
- def fromXML(self, (name, attrs, content), ttFont):
- # XXX
-
+ def toXML(self, writer, ttFont):
+ # XXX
+ def fromXML(self, (name, attrs, content), ttFont):
+ # XXX
.. automodule:: fontTools.ttLib.tables
:inherited-members:
:members:
:undoc-members:
-_a_n_k_r
---------
-
-.. automodule:: fontTools.ttLib.tables._a_n_k_r
- :inherited-members:
- :members:
- :undoc-members:
-
-_a_v_a_r
---------
-
-.. automodule:: fontTools.ttLib.tables._a_v_a_r
- :inherited-members:
- :members:
- :undoc-members:
-
-_b_s_l_n
---------
-
-.. automodule:: fontTools.ttLib.tables._b_s_l_n
- :inherited-members:
- :members:
- :undoc-members:
-
-_c_i_d_g
---------
-
-.. automodule:: fontTools.ttLib.tables._c_i_d_g
- :inherited-members:
- :members:
- :undoc-members:
-
-_c_m_a_p
---------
-
-.. automodule:: fontTools.ttLib.tables._c_m_a_p
- :inherited-members:
- :members:
- :undoc-members:
-
-_c_v_a_r
---------
-
-.. automodule:: fontTools.ttLib.tables._c_v_a_r
- :inherited-members:
- :members:
- :undoc-members:
-
-_c_v_t
-------
-
-.. automodule:: fontTools.ttLib.tables._c_v_t
- :inherited-members:
- :members:
- :undoc-members:
-
-_f_e_a_t
---------
-
-.. automodule:: fontTools.ttLib.tables._f_e_a_t
- :inherited-members:
- :members:
- :undoc-members:
-
-_f_p_g_m
---------
-
-.. automodule:: fontTools.ttLib.tables._f_p_g_m
- :inherited-members:
- :members:
- :undoc-members:
-
-_f_v_a_r
---------
-
-.. automodule:: fontTools.ttLib.tables._f_v_a_r
- :inherited-members:
- :members:
- :undoc-members:
-
-_g_a_s_p
---------
-
-.. automodule:: fontTools.ttLib.tables._g_a_s_p
- :inherited-members:
- :members:
- :undoc-members:
-
-
-_g_c_i_d
---------
-
-.. automodule:: fontTools.ttLib.tables._g_c_i_d
- :inherited-members:
- :members:
- :undoc-members:
-
-_g_l_y_f
---------
-
-.. automodule:: fontTools.ttLib.tables._g_l_y_f
- :inherited-members:
- :members:
- :undoc-members:
-
-_g_v_a_r
---------
-
-.. automodule:: fontTools.ttLib.tables._g_v_a_r
- :inherited-members:
- :members:
- :undoc-members:
-
-_h_d_m_x
---------
-
-.. automodule:: fontTools.ttLib.tables._h_d_m_x
- :inherited-members:
- :members:
- :undoc-members:
-
-_h_e_a_d
---------
-
-.. automodule:: fontTools.ttLib.tables._h_e_a_d
- :inherited-members:
- :members:
- :undoc-members:
-
-_h_h_e_a
---------
-
-.. automodule:: fontTools.ttLib.tables._h_h_e_a
- :inherited-members:
- :members:
- :undoc-members:
-
-_h_m_t_x
---------
-
-.. automodule:: fontTools.ttLib.tables._h_m_t_x
- :inherited-members:
- :members:
- :undoc-members:
-
-_k_e_r_n
---------
-
-.. automodule:: fontTools.ttLib.tables._k_e_r_n
- :inherited-members:
- :members:
- :undoc-members:
-
-_l_c_a_r
---------
-
-.. automodule:: fontTools.ttLib.tables._l_c_a_r
- :inherited-members:
- :members:
- :undoc-members:
-
-_l_o_c_a
---------
-
-.. automodule:: fontTools.ttLib.tables._l_o_c_a
- :inherited-members:
- :members:
- :undoc-members:
-
-_l_t_a_g
---------
-
-.. automodule:: fontTools.ttLib.tables._l_t_a_g
- :inherited-members:
- :members:
- :undoc-members:
-
-_m_a_x_p
---------
-
-.. automodule:: fontTools.ttLib.tables._m_a_x_p
- :inherited-members:
- :members:
- :undoc-members:
-
-_m_e_t_a
---------
-
-.. automodule:: fontTools.ttLib.tables._m_e_t_a
- :inherited-members:
- :members:
- :undoc-members:
-
-_m_o_r_t
---------
-
-.. automodule:: fontTools.ttLib.tables._m_o_r_t
- :inherited-members:
- :members:
- :undoc-members:
-
-
-_m_o_r_x
---------
-
-.. automodule:: fontTools.ttLib.tables._m_o_r_x
- :inherited-members:
- :members:
- :undoc-members:
-
-_n_a_m_e
---------
-
-.. automodule:: fontTools.ttLib.tables._n_a_m_e
- :inherited-members:
- :members:
- :undoc-members:
-
-_o_p_b_d
---------
-
-.. automodule:: fontTools.ttLib.tables._o_p_b_d
- :inherited-members:
- :members:
- :undoc-members:
-
-_p_o_s_t
---------
-
-.. automodule:: fontTools.ttLib.tables._p_o_s_t
- :inherited-members:
- :members:
- :undoc-members:
-
-_p_r_e_p
---------
-
-.. automodule:: fontTools.ttLib.tables._p_r_e_p
- :inherited-members:
- :members:
- :undoc-members:
-
-
-_p_r_o_p
---------
-
-.. automodule:: fontTools.ttLib.tables._p_r_o_p
- :inherited-members:
- :members:
- :undoc-members:
-
-_s_b_i_x
---------
-
-.. automodule:: fontTools.ttLib.tables._s_b_i_x
- :inherited-members:
- :members:
- :undoc-members:
-
-_t_r_a_k
---------
-
-.. automodule:: fontTools.ttLib.tables._t_r_a_k
- :inherited-members:
- :members:
- :undoc-members:
-
-_v_h_e_a
---------
-
-.. automodule:: fontTools.ttLib.tables._v_h_e_a
- :inherited-members:
- :members:
- :undoc-members:
-
-_v_m_t_x
---------
-
-.. automodule:: fontTools.ttLib.tables._v_m_t_x
- :inherited-members:
- :members:
- :undoc-members:
-
-asciiTable
-----------
-
-.. automodule:: fontTools.ttLib.tables.asciiTable
- :inherited-members:
- :members:
- :undoc-members:
-
-B_A_S_E_
---------
-
-.. automodule:: fontTools.ttLib.tables.B_A_S_E_
- :inherited-members:
- :members:
- :undoc-members:
-
-BitmapGlyphMetrics
-------------------
-
-.. automodule:: fontTools.ttLib.tables.BitmapGlyphMetrics
- :inherited-members:
- :members:
- :undoc-members:
-
-C_B_D_T_
---------
-
-.. automodule:: fontTools.ttLib.tables.C_B_D_T_
- :inherited-members:
- :members:
- :undoc-members:
-
-C_B_L_C_
---------
-
-.. automodule:: fontTools.ttLib.tables.C_B_L_C_
- :inherited-members:
- :members:
- :undoc-members:
-
-C_F_F_
-------
-
-.. automodule:: fontTools.ttLib.tables.C_F_F_
- :inherited-members:
- :members:
- :undoc-members:
-
-C_F_F__2
---------
-
-.. automodule:: fontTools.ttLib.tables.C_F_F__2
- :inherited-members:
- :members:
- :undoc-members:
-
-C_O_L_R_
---------
-
-.. automodule:: fontTools.ttLib.tables.C_O_L_R_
- :inherited-members:
- :members:
- :undoc-members:
-
-C_P_A_L_
---------
-
-.. automodule:: fontTools.ttLib.tables.C_P_A_L_
- :inherited-members:
- :members:
- :undoc-members:
-
-D_S_I_G_
---------
-
-.. automodule:: fontTools.ttLib.tables.D_S_I_G_
- :inherited-members:
- :members:
- :undoc-members:
-
-DefaultTable
-------------
-
-.. automodule:: fontTools.ttLib.tables.DefaultTable
- :inherited-members:
- :members:
- :undoc-members:
-
-E_B_D_T_
---------
-
-.. automodule:: fontTools.ttLib.tables.E_B_D_T_
- :inherited-members:
- :members:
- :undoc-members:
-
-E_B_L_C_
---------
-
-.. automodule:: fontTools.ttLib.tables.E_B_L_C_
- :inherited-members:
- :members:
- :undoc-members:
-
-F__e_a_t
---------
-
-.. automodule:: fontTools.ttLib.tables.F__e_a_t
- :inherited-members:
- :members:
- :undoc-members:
-
-
-F_F_T_M_
---------
-
-.. automodule:: fontTools.ttLib.tables.F_F_T_M_
- :inherited-members:
- :members:
- :undoc-members:
-
-
-G__l_a_t
---------
-
-.. automodule:: fontTools.ttLib.tables.G__l_a_t
- :inherited-members:
- :members:
- :undoc-members:
-
-G__l_o_c
---------
-
-.. automodule:: fontTools.ttLib.tables.G__l_o_c
- :inherited-members:
- :members:
- :undoc-members:
-
-G_D_E_F_
---------
-
-.. automodule:: fontTools.ttLib.tables.G_D_E_F_
- :inherited-members:
- :members:
- :undoc-members:
-
-G_M_A_P_
---------
-
-.. automodule:: fontTools.ttLib.tables.G_M_A_P_
- :inherited-members:
- :members:
- :undoc-members:
-
-G_P_K_G_
---------
-
-.. automodule:: fontTools.ttLib.tables.G_P_K_G_
- :inherited-members:
- :members:
- :undoc-members:
-
-G_P_O_S_
---------
-
-.. automodule:: fontTools.ttLib.tables.G_P_O_S_
- :inherited-members:
- :members:
- :undoc-members:
-
-G_S_U_B_
---------
-
-.. automodule:: fontTools.ttLib.tables.G_S_U_B_
- :inherited-members:
- :members:
- :undoc-members:
-
-grUtils
--------
-
-.. automodule:: fontTools.ttLib.tables.grUtils
- :inherited-members:
- :members:
- :undoc-members:
-
-H_V_A_R_
---------
-
-.. automodule:: fontTools.ttLib.tables.H_V_A_R_
- :inherited-members:
- :members:
- :undoc-members:
-
-J_S_T_F_
---------
-
-.. automodule:: fontTools.ttLib.tables.J_S_T_F_
- :inherited-members:
- :members:
- :undoc-members:
-
-L_T_S_H_
---------
-
-.. automodule:: fontTools.ttLib.tables.L_T_S_H_
- :inherited-members:
- :members:
- :undoc-members:
-
-M_A_T_H_
---------
-
-.. automodule:: fontTools.ttLib.tables.M_A_T_H_
- :inherited-members:
- :members:
- :undoc-members:
-
-M_E_T_A_
---------
-
-.. automodule:: fontTools.ttLib.tables.M_E_T_A_
- :inherited-members:
- :members:
- :undoc-members:
-
-M_V_A_R_
---------
-
-.. automodule:: fontTools.ttLib.tables.M_V_A_R_
- :inherited-members:
- :members:
- :undoc-members:
-
-O_S_2f_2
---------
-
-.. automodule:: fontTools.ttLib.tables.O_S_2f_2
- :inherited-members:
- :members:
- :undoc-members:
-
-otBase
-------
-
-.. automodule:: fontTools.ttLib.tables.otBase
- :inherited-members:
- :members:
- :undoc-members:
-
-otConverters
-------------
-
-.. automodule:: fontTools.ttLib.tables.otConverters
- :inherited-members:
- :members:
- :undoc-members:
-
-otData
-------
-
-.. automodule:: fontTools.ttLib.tables.otData
- :inherited-members:
- :members:
- :undoc-members:
-
-otTables
---------
-
-.. automodule:: fontTools.ttLib.tables.otTables
- :inherited-members:
- :members:
- :undoc-members:
-
-S__i_l_f
---------
-
-.. automodule:: fontTools.ttLib.tables.S__i_l_f
- :inherited-members:
- :members:
- :undoc-members:
-
-S__i_l_l
---------
-
-.. automodule:: fontTools.ttLib.tables.S__i_l_l
- :inherited-members:
- :members:
- :undoc-members:
-
-S_I_N_G_
---------
-
-.. automodule:: fontTools.ttLib.tables.S_I_N_G_
- :inherited-members:
- :members:
- :undoc-members:
-
-S_T_A_T_
---------
-
-.. automodule:: fontTools.ttLib.tables.S_T_A_T_
- :inherited-members:
- :members:
- :undoc-members:
-
-S_V_G_
-------
-
-.. automodule:: fontTools.ttLib.tables.S_V_G_
- :inherited-members:
- :members:
- :undoc-members:
-
-sbixGlyph
----------
-
-.. automodule:: fontTools.ttLib.tables.sbixGlyph
- :inherited-members:
- :members:
- :undoc-members:
-
-sbixStrike
-----------
-
-.. automodule:: fontTools.ttLib.tables.sbixStrike
- :inherited-members:
- :members:
- :undoc-members:
-
-T_S_I__0
---------
-
-.. automodule:: fontTools.ttLib.tables.T_S_I__0
- :inherited-members:
- :members:
- :undoc-members:
-
-T_S_I__1
---------
-
-.. automodule:: fontTools.ttLib.tables.T_S_I__1
- :inherited-members:
- :members:
- :undoc-members:
-
-T_S_I__2
---------
-
-.. automodule:: fontTools.ttLib.tables.T_S_I__2
- :inherited-members:
- :members:
- :undoc-members:
-
-T_S_I__3
---------
-
-.. automodule:: fontTools.ttLib.tables.T_S_I__3
- :inherited-members:
- :members:
- :undoc-members:
-
-T_S_I__5
---------
-
-.. automodule:: fontTools.ttLib.tables.T_S_I__5
- :inherited-members:
- :members:
- :undoc-members:
-
-T_S_I_B_
---------
-
-.. automodule:: fontTools.ttLib.tables.T_S_I_B_
- :inherited-members:
- :members:
- :undoc-members:
-
-T_S_I_C_
---------
-
-.. automodule:: fontTools.ttLib.tables.T_S_I_C_
- :inherited-members:
- :members:
- :undoc-members:
-
-T_S_I_D_
---------
-
-.. automodule:: fontTools.ttLib.tables.T_S_I_D_
- :inherited-members:
- :members:
- :undoc-members:
-
-T_S_I_J_
---------
-
-.. automodule:: fontTools.ttLib.tables.T_S_I_J_
- :inherited-members:
- :members:
- :undoc-members:
-
-T_S_I_P_
---------
-
-.. automodule:: fontTools.ttLib.tables.T_S_I_P_
- :inherited-members:
- :members:
- :undoc-members:
-
-T_S_I_S_
---------
-
-.. automodule:: fontTools.ttLib.tables.T_S_I_S_
- :inherited-members:
- :members:
- :undoc-members:
-
-T_S_I_V_
---------
-
-.. automodule:: fontTools.ttLib.tables.T_S_I_V_
- :inherited-members:
- :members:
- :undoc-members:
-
-T_T_F_A_
---------
-
-.. automodule:: fontTools.ttLib.tables.T_T_F_A_
- :inherited-members:
- :members:
- :undoc-members:
-
-ttProgram
----------
-
-.. automodule:: fontTools.ttLib.tables.ttProgram
- :inherited-members:
- :members:
- :undoc-members:
-
-TupleVariation
---------------
-
-.. automodule:: fontTools.ttLib.tables.TupleVariation
- :inherited-members:
- :members:
- :undoc-members:
-
-V_D_M_X_
---------
-
-.. automodule:: fontTools.ttLib.tables.V_D_M_X_
- :inherited-members:
- :members:
- :undoc-members:
-
-V_O_R_G_
---------
-
-.. automodule:: fontTools.ttLib.tables.V_O_R_G_
- :inherited-members:
- :members:
- :undoc-members:
-
-V_V_A_R_
---------
-
-.. automodule:: fontTools.ttLib.tables.V_V_A_R_
- :inherited-members:
- :members:
- :undoc-members:
-
diff --git a/Doc/source/ttLib/tables/B_A_S_E_.rst b/Doc/source/ttLib/tables/B_A_S_E_.rst
new file mode 100644
index 00000000..bc0c132a
--- /dev/null
+++ b/Doc/source/ttLib/tables/B_A_S_E_.rst
@@ -0,0 +1,8 @@
+``BASE``: Baseline Table
+------------------------
+
+.. automodule:: fontTools.ttLib.tables.B_A_S_E_
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/C_B_D_T_.rst b/Doc/source/ttLib/tables/C_B_D_T_.rst
new file mode 100644
index 00000000..602ffb6f
--- /dev/null
+++ b/Doc/source/ttLib/tables/C_B_D_T_.rst
@@ -0,0 +1,8 @@
+``CBDT``: Color Bitmap Data Table
+---------------------------------
+
+.. automodule:: fontTools.ttLib.tables.C_B_D_T_
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/C_B_L_C_.rst b/Doc/source/ttLib/tables/C_B_L_C_.rst
new file mode 100644
index 00000000..00c5ac40
--- /dev/null
+++ b/Doc/source/ttLib/tables/C_B_L_C_.rst
@@ -0,0 +1,8 @@
+``CBLC``: Color Bitmap Location Table
+-------------------------------------
+
+.. automodule:: fontTools.ttLib.tables.C_B_L_C_
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/C_F_F_.rst b/Doc/source/ttLib/tables/C_F_F_.rst
new file mode 100644
index 00000000..92c2e5bb
--- /dev/null
+++ b/Doc/source/ttLib/tables/C_F_F_.rst
@@ -0,0 +1,8 @@
+``CFF``: Compact Font Format Table
+----------------------------------
+
+.. automodule:: fontTools.ttLib.tables.C_F_F_
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/C_F_F__2.rst b/Doc/source/ttLib/tables/C_F_F__2.rst
new file mode 100644
index 00000000..946c246a
--- /dev/null
+++ b/Doc/source/ttLib/tables/C_F_F__2.rst
@@ -0,0 +1,8 @@
+``CFF2``: Compact Font Format (CFF) Version 2
+---------------------------------------------
+
+.. automodule:: fontTools.ttLib.tables.C_F_F__2
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/C_O_L_R_.rst b/Doc/source/ttLib/tables/C_O_L_R_.rst
new file mode 100644
index 00000000..11c30d53
--- /dev/null
+++ b/Doc/source/ttLib/tables/C_O_L_R_.rst
@@ -0,0 +1,7 @@
+``COLR``: Color Table
+---------------------
+
+.. automodule:: fontTools.ttLib.tables.C_O_L_R_
+ :inherited-members:
+ :members:
+ :undoc-members:
diff --git a/Doc/source/ttLib/tables/C_P_A_L_.rst b/Doc/source/ttLib/tables/C_P_A_L_.rst
new file mode 100644
index 00000000..4ade11a7
--- /dev/null
+++ b/Doc/source/ttLib/tables/C_P_A_L_.rst
@@ -0,0 +1,8 @@
+``CPAL``: Color Palette Table
+-----------------------------
+
+.. automodule:: fontTools.ttLib.tables.C_P_A_L_
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/D_S_I_G_.rst b/Doc/source/ttLib/tables/D_S_I_G_.rst
new file mode 100644
index 00000000..a3256bb0
--- /dev/null
+++ b/Doc/source/ttLib/tables/D_S_I_G_.rst
@@ -0,0 +1,8 @@
+``DSIG``: Digital Signature Table
+---------------------------------
+
+.. automodule:: fontTools.ttLib.tables.D_S_I_G_
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/E_B_D_T_.rst b/Doc/source/ttLib/tables/E_B_D_T_.rst
new file mode 100644
index 00000000..8cd6e8d4
--- /dev/null
+++ b/Doc/source/ttLib/tables/E_B_D_T_.rst
@@ -0,0 +1,18 @@
+``EBDT``: Embedded Bitmap Data Table
+------------------------------------
+
+.. automodule:: fontTools.ttLib.tables.E_B_D_T_
+ :inherited-members:
+ :members:
+ :undoc-members:
+
+
+BitmapGlyphMetrics
+^^^^^^^^^^^^^^^^^^
+
+.. automodule:: fontTools.ttLib.tables.BitmapGlyphMetrics
+ :noindex:
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/E_B_L_C_.rst b/Doc/source/ttLib/tables/E_B_L_C_.rst
new file mode 100644
index 00000000..aa8a7401
--- /dev/null
+++ b/Doc/source/ttLib/tables/E_B_L_C_.rst
@@ -0,0 +1,18 @@
+``EBLC``: Embedded Bitmap Location Table
+----------------------------------------
+
+.. automodule:: fontTools.ttLib.tables.E_B_L_C_
+ :inherited-members:
+ :members:
+ :undoc-members:
+
+
+BitmapGlyphMetrics
+^^^^^^^^^^^^^^^^^^
+
+.. automodule:: fontTools.ttLib.tables.BitmapGlyphMetrics
+ :noindex:
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/F_F_T_M_.rst b/Doc/source/ttLib/tables/F_F_T_M_.rst
new file mode 100644
index 00000000..901ac50e
--- /dev/null
+++ b/Doc/source/ttLib/tables/F_F_T_M_.rst
@@ -0,0 +1,9 @@
+``FFTM``: FontForge Time Stamp Table
+------------------------------------
+
+.. automodule:: fontTools.ttLib.tables.F_F_T_M_
+ :inherited-members:
+ :members:
+ :undoc-members:
+
+
diff --git a/Doc/source/ttLib/tables/F__e_a_t.rst b/Doc/source/ttLib/tables/F__e_a_t.rst
new file mode 100644
index 00000000..7c53026c
--- /dev/null
+++ b/Doc/source/ttLib/tables/F__e_a_t.rst
@@ -0,0 +1,9 @@
+``Feat``: Graphite Feature Table
+--------------------------------
+
+.. automodule:: fontTools.ttLib.tables.F__e_a_t
+ :inherited-members:
+ :members:
+ :undoc-members:
+
+
diff --git a/Doc/source/ttLib/tables/G_D_E_F_.rst b/Doc/source/ttLib/tables/G_D_E_F_.rst
new file mode 100644
index 00000000..b0e95be5
--- /dev/null
+++ b/Doc/source/ttLib/tables/G_D_E_F_.rst
@@ -0,0 +1,8 @@
+``GDEF``: Glyph Definition Table
+--------------------------------
+
+.. automodule:: fontTools.ttLib.tables.G_D_E_F_
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/G_M_A_P_.rst b/Doc/source/ttLib/tables/G_M_A_P_.rst
new file mode 100644
index 00000000..4d1ec5b5
--- /dev/null
+++ b/Doc/source/ttLib/tables/G_M_A_P_.rst
@@ -0,0 +1,8 @@
+``GMAP``: SING Glyphlet Summary Table
+-------------------------------------
+
+.. automodule:: fontTools.ttLib.tables.G_M_A_P_
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/G_P_K_G_.rst b/Doc/source/ttLib/tables/G_P_K_G_.rst
new file mode 100644
index 00000000..1cf66c85
--- /dev/null
+++ b/Doc/source/ttLib/tables/G_P_K_G_.rst
@@ -0,0 +1,8 @@
+``GPKG``: SING Glyphlet Wrapper Table
+-------------------------------------
+
+.. automodule:: fontTools.ttLib.tables.G_P_K_G_
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/G_P_O_S_.rst b/Doc/source/ttLib/tables/G_P_O_S_.rst
new file mode 100644
index 00000000..a36c5b32
--- /dev/null
+++ b/Doc/source/ttLib/tables/G_P_O_S_.rst
@@ -0,0 +1,8 @@
+``GPOS``: Glyph Positioning Table
+---------------------------------
+
+.. automodule:: fontTools.ttLib.tables.G_P_O_S_
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/G_S_U_B_.rst b/Doc/source/ttLib/tables/G_S_U_B_.rst
new file mode 100644
index 00000000..f9ac6c7b
--- /dev/null
+++ b/Doc/source/ttLib/tables/G_S_U_B_.rst
@@ -0,0 +1,8 @@
+``GSUB``: Glyph Substitution Table
+----------------------------------
+
+.. automodule:: fontTools.ttLib.tables.G_S_U_B_
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/G__l_a_t.rst b/Doc/source/ttLib/tables/G__l_a_t.rst
new file mode 100644
index 00000000..dc3d04d4
--- /dev/null
+++ b/Doc/source/ttLib/tables/G__l_a_t.rst
@@ -0,0 +1,8 @@
+``Glat``: Graphite Glyph Attributes Table
+-----------------------------------------
+
+.. automodule:: fontTools.ttLib.tables.G__l_a_t
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/G__l_o_c.rst b/Doc/source/ttLib/tables/G__l_o_c.rst
new file mode 100644
index 00000000..cb43e100
--- /dev/null
+++ b/Doc/source/ttLib/tables/G__l_o_c.rst
@@ -0,0 +1,8 @@
+``Gloc``: Graphite index to glyph attributes table
+--------------------------------------------------
+
+.. automodule:: fontTools.ttLib.tables.G__l_o_c
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/H_V_A_R_.rst b/Doc/source/ttLib/tables/H_V_A_R_.rst
new file mode 100644
index 00000000..14fb2734
--- /dev/null
+++ b/Doc/source/ttLib/tables/H_V_A_R_.rst
@@ -0,0 +1,7 @@
+``HVAR``:Horizontal Metrics Variations Table
+--------------------------------------------
+
+.. automodule:: fontTools.ttLib.tables.H_V_A_R_
+ :inherited-members:
+ :members:
+ :undoc-members:
diff --git a/Doc/source/ttLib/tables/J_S_T_F_.rst b/Doc/source/ttLib/tables/J_S_T_F_.rst
new file mode 100644
index 00000000..912a0bef
--- /dev/null
+++ b/Doc/source/ttLib/tables/J_S_T_F_.rst
@@ -0,0 +1,7 @@
+``JSTF``: Justification Table
+-----------------------------
+
+.. automodule:: fontTools.ttLib.tables.J_S_T_F_
+ :inherited-members:
+ :members:
+ :undoc-members:
diff --git a/Doc/source/ttLib/tables/L_T_S_H_.rst b/Doc/source/ttLib/tables/L_T_S_H_.rst
new file mode 100644
index 00000000..1f4c32f1
--- /dev/null
+++ b/Doc/source/ttLib/tables/L_T_S_H_.rst
@@ -0,0 +1,8 @@
+``LTSH``: Linear Threshold
+--------------------------
+
+.. automodule:: fontTools.ttLib.tables.L_T_S_H_
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/M_A_T_H_.rst b/Doc/source/ttLib/tables/M_A_T_H_.rst
new file mode 100644
index 00000000..1aa2ea2e
--- /dev/null
+++ b/Doc/source/ttLib/tables/M_A_T_H_.rst
@@ -0,0 +1,7 @@
+``MATH``: Mathematical Typesetting Table
+----------------------------------------
+
+.. automodule:: fontTools.ttLib.tables.M_A_T_H_
+ :inherited-members:
+ :members:
+ :undoc-members:
diff --git a/Doc/source/ttLib/tables/M_E_T_A_.rst b/Doc/source/ttLib/tables/M_E_T_A_.rst
new file mode 100644
index 00000000..f2840eae
--- /dev/null
+++ b/Doc/source/ttLib/tables/M_E_T_A_.rst
@@ -0,0 +1,7 @@
+``META``: SING Glyphlet Metadata Table
+--------------------------------------
+
+.. automodule:: fontTools.ttLib.tables.M_E_T_A_
+ :inherited-members:
+ :members:
+ :undoc-members:
diff --git a/Doc/source/ttLib/tables/M_V_A_R_.rst b/Doc/source/ttLib/tables/M_V_A_R_.rst
new file mode 100644
index 00000000..2f5ce673
--- /dev/null
+++ b/Doc/source/ttLib/tables/M_V_A_R_.rst
@@ -0,0 +1,7 @@
+``MVAR``: Metrics Variations Table
+----------------------------------
+
+.. automodule:: fontTools.ttLib.tables.M_V_A_R_
+ :inherited-members:
+ :members:
+ :undoc-members:
diff --git a/Doc/source/ttLib/tables/O_S_2f_2.rst b/Doc/source/ttLib/tables/O_S_2f_2.rst
new file mode 100644
index 00000000..703502bb
--- /dev/null
+++ b/Doc/source/ttLib/tables/O_S_2f_2.rst
@@ -0,0 +1,7 @@
+``OS/2``: OS/2 and Windows Metrics Table
+----------------------------------------
+
+.. automodule:: fontTools.ttLib.tables.O_S_2f_2
+ :inherited-members:
+ :members:
+ :undoc-members:
diff --git a/Doc/source/ttLib/tables/S_I_N_G_.rst b/Doc/source/ttLib/tables/S_I_N_G_.rst
new file mode 100644
index 00000000..f7060120
--- /dev/null
+++ b/Doc/source/ttLib/tables/S_I_N_G_.rst
@@ -0,0 +1,7 @@
+``SING``: SING Glyphlet Basic Information Table
+-----------------------------------------------
+
+.. automodule:: fontTools.ttLib.tables.S_I_N_G_
+ :inherited-members:
+ :members:
+ :undoc-members:
diff --git a/Doc/source/ttLib/tables/S_T_A_T_.rst b/Doc/source/ttLib/tables/S_T_A_T_.rst
new file mode 100644
index 00000000..6aa96f84
--- /dev/null
+++ b/Doc/source/ttLib/tables/S_T_A_T_.rst
@@ -0,0 +1,7 @@
+``STAT``: Style Attributes Table
+--------------------------------
+
+.. automodule:: fontTools.ttLib.tables.S_T_A_T_
+ :inherited-members:
+ :members:
+ :undoc-members:
diff --git a/Doc/source/ttLib/tables/S_V_G_.rst b/Doc/source/ttLib/tables/S_V_G_.rst
new file mode 100644
index 00000000..bd96f15f
--- /dev/null
+++ b/Doc/source/ttLib/tables/S_V_G_.rst
@@ -0,0 +1,8 @@
+``SVG``: SVG (Scalable Vector Graphics) Table
+---------------------------------------------
+
+.. automodule:: fontTools.ttLib.tables.S_V_G_
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/S__i_l_f.rst b/Doc/source/ttLib/tables/S__i_l_f.rst
new file mode 100644
index 00000000..cccda725
--- /dev/null
+++ b/Doc/source/ttLib/tables/S__i_l_f.rst
@@ -0,0 +1,7 @@
+``Silf``: Graphite Rules Table
+------------------------------
+
+.. automodule:: fontTools.ttLib.tables.S__i_l_f
+ :inherited-members:
+ :members:
+ :undoc-members:
diff --git a/Doc/source/ttLib/tables/S__i_l_l.rst b/Doc/source/ttLib/tables/S__i_l_l.rst
new file mode 100644
index 00000000..997ebf70
--- /dev/null
+++ b/Doc/source/ttLib/tables/S__i_l_l.rst
@@ -0,0 +1,7 @@
+``Sill``: Graphite Languages Table
+----------------------------------
+
+.. automodule:: fontTools.ttLib.tables.S__i_l_l
+ :inherited-members:
+ :members:
+ :undoc-members:
diff --git a/Doc/source/ttLib/tables/T_T_F_A_.rst b/Doc/source/ttLib/tables/T_T_F_A_.rst
new file mode 100644
index 00000000..94a2d260
--- /dev/null
+++ b/Doc/source/ttLib/tables/T_T_F_A_.rst
@@ -0,0 +1,8 @@
+``TTFA``: ``ttfautohint`` Parameter Table
+-----------------------------------------
+
+.. automodule:: fontTools.ttLib.tables.T_T_F_A_
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/VTT_related.rst b/Doc/source/ttLib/tables/VTT_related.rst
new file mode 100644
index 00000000..4265acdd
--- /dev/null
+++ b/Doc/source/ttLib/tables/VTT_related.rst
@@ -0,0 +1,99 @@
+Visual TrueType Private Tables
+==============================
+
+``TSI0``: Glyph Program Text Indices
+------------------------------------
+
+.. automodule:: fontTools.ttLib.tables.T_S_I__0
+ :inherited-members:
+ :members:
+ :undoc-members:
+
+``TSI1``: Glyph Program Text UTF-8 Text Dump
+--------------------------------------------
+
+.. automodule:: fontTools.ttLib.tables.T_S_I__1
+ :inherited-members:
+ :members:
+ :undoc-members:
+
+``TSI2``: VTT Talk Text Indices
+-------------------------------
+
+.. automodule:: fontTools.ttLib.tables.T_S_I__2
+ :inherited-members:
+ :members:
+ :undoc-members:
+
+``TSI3``: VTT Talk UTF-8 Text Dump
+----------------------------------
+
+.. automodule:: fontTools.ttLib.tables.T_S_I__3
+ :inherited-members:
+ :members:
+ :undoc-members:
+
+``TSI5``: VTT Character Group Flag
+----------------------------------
+
+.. automodule:: fontTools.ttLib.tables.T_S_I__5
+ :inherited-members:
+ :members:
+ :undoc-members:
+
+``TSIB``
+--------
+
+.. automodule:: fontTools.ttLib.tables.T_S_I_B_
+ :inherited-members:
+ :members:
+ :undoc-members:
+
+``TSIC``: VTT Variation CVT Window Source
+-----------------------------------------
+
+.. automodule:: fontTools.ttLib.tables.T_S_I_C_
+ :inherited-members:
+ :members:
+ :undoc-members:
+
+``TSID``: VTT GDEF Table Text Source
+------------------------------------
+
+.. automodule:: fontTools.ttLib.tables.T_S_I_D_
+ :inherited-members:
+ :members:
+ :undoc-members:
+
+``TSIJ``: VTT JSTF Table Text Source
+------------------------------------
+
+.. automodule:: fontTools.ttLib.tables.T_S_I_J_
+ :inherited-members:
+ :members:
+ :undoc-members:
+
+``TSIP``: VTT GPOS Table Text Source
+------------------------------------
+
+.. automodule:: fontTools.ttLib.tables.T_S_I_P_
+ :inherited-members:
+ :members:
+ :undoc-members:
+
+``TSIS``: VTT GSUB Table Text Source
+------------------------------------
+
+.. automodule:: fontTools.ttLib.tables.T_S_I_S_
+ :inherited-members:
+ :members:
+ :undoc-members:
+
+``TSIV``
+--------
+
+.. automodule:: fontTools.ttLib.tables.T_S_I_V_
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/V_D_M_X_.rst b/Doc/source/ttLib/tables/V_D_M_X_.rst
new file mode 100644
index 00000000..bf5fd67b
--- /dev/null
+++ b/Doc/source/ttLib/tables/V_D_M_X_.rst
@@ -0,0 +1,7 @@
+``VDMX``: Vertical Device Metrics
+---------------------------------
+
+.. automodule:: fontTools.ttLib.tables.V_D_M_X_
+ :inherited-members:
+ :members:
+ :undoc-members:
diff --git a/Doc/source/ttLib/tables/V_O_R_G_.rst b/Doc/source/ttLib/tables/V_O_R_G_.rst
new file mode 100644
index 00000000..0b8958aa
--- /dev/null
+++ b/Doc/source/ttLib/tables/V_O_R_G_.rst
@@ -0,0 +1,8 @@
+``VORG``: Vertical Origin Table
+-------------------------------
+
+.. automodule:: fontTools.ttLib.tables.V_O_R_G_
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/V_V_A_R_.rst b/Doc/source/ttLib/tables/V_V_A_R_.rst
new file mode 100644
index 00000000..fce88317
--- /dev/null
+++ b/Doc/source/ttLib/tables/V_V_A_R_.rst
@@ -0,0 +1,8 @@
+``VVAR``: Vertical Metrics Variations Table
+-------------------------------------------
+
+.. automodule:: fontTools.ttLib.tables.V_V_A_R_
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/_a_n_k_r.rst b/Doc/source/ttLib/tables/_a_n_k_r.rst
new file mode 100644
index 00000000..5541ac48
--- /dev/null
+++ b/Doc/source/ttLib/tables/_a_n_k_r.rst
@@ -0,0 +1,7 @@
+``ankr``: Anchor Point Table
+----------------------------
+
+.. automodule:: fontTools.ttLib.tables._a_n_k_r
+ :inherited-members:
+ :members:
+ :undoc-members:
diff --git a/Doc/source/ttLib/tables/_a_v_a_r.rst b/Doc/source/ttLib/tables/_a_v_a_r.rst
new file mode 100644
index 00000000..81f2b31c
--- /dev/null
+++ b/Doc/source/ttLib/tables/_a_v_a_r.rst
@@ -0,0 +1,8 @@
+``avar``: Axis Variations Table
+-------------------------------
+
+.. automodule:: fontTools.ttLib.tables._a_v_a_r
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/_b_s_l_n.rst b/Doc/source/ttLib/tables/_b_s_l_n.rst
new file mode 100644
index 00000000..a18fb82e
--- /dev/null
+++ b/Doc/source/ttLib/tables/_b_s_l_n.rst
@@ -0,0 +1,7 @@
+``bsln``: Baseline
+------------------
+
+.. automodule:: fontTools.ttLib.tables._b_s_l_n
+ :inherited-members:
+ :members:
+ :undoc-members:
diff --git a/Doc/source/ttLib/tables/_c_i_d_g.rst b/Doc/source/ttLib/tables/_c_i_d_g.rst
new file mode 100644
index 00000000..f507ebd9
--- /dev/null
+++ b/Doc/source/ttLib/tables/_c_i_d_g.rst
@@ -0,0 +1,7 @@
+``cidg``: CID to Glyph ID table
+-------------------------------
+
+.. automodule:: fontTools.ttLib.tables._c_i_d_g
+ :inherited-members:
+ :members:
+ :undoc-members:
diff --git a/Doc/source/ttLib/tables/_c_m_a_p.rst b/Doc/source/ttLib/tables/_c_m_a_p.rst
new file mode 100644
index 00000000..43248154
--- /dev/null
+++ b/Doc/source/ttLib/tables/_c_m_a_p.rst
@@ -0,0 +1,6 @@
+``cmap``: Character to Glyph Index Mapping Table
+------------------------------------------------
+
+.. autoclass:: fontTools.ttLib.tables._c_m_a_p.table__c_m_a_p
+
+.. autoclass:: fontTools.ttLib.tables._c_m_a_p.CmapSubtable
diff --git a/Doc/source/ttLib/tables/_c_v_a_r.rst b/Doc/source/ttLib/tables/_c_v_a_r.rst
new file mode 100644
index 00000000..6ae1b0d2
--- /dev/null
+++ b/Doc/source/ttLib/tables/_c_v_a_r.rst
@@ -0,0 +1,17 @@
+``cvar``: CVT Variations Table
+------------------------------
+
+.. automodule:: fontTools.ttLib.tables._c_v_a_r
+ :inherited-members:
+ :members:
+ :undoc-members:
+
+
+TupleVariation
+^^^^^^^^^^^^^^
+
+.. automodule:: fontTools.ttLib.tables.TupleVariation
+ :noindex:
+ :inherited-members:
+ :members:
+ :undoc-members:
diff --git a/Doc/source/ttLib/tables/_c_v_t.rst b/Doc/source/ttLib/tables/_c_v_t.rst
new file mode 100644
index 00000000..ce02c563
--- /dev/null
+++ b/Doc/source/ttLib/tables/_c_v_t.rst
@@ -0,0 +1,8 @@
+``cvt``: Control Value Table
+-----------------------------
+
+.. automodule:: fontTools.ttLib.tables._c_v_t
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/_f_e_a_t.rst b/Doc/source/ttLib/tables/_f_e_a_t.rst
new file mode 100644
index 00000000..e32d36c0
--- /dev/null
+++ b/Doc/source/ttLib/tables/_f_e_a_t.rst
@@ -0,0 +1,7 @@
+``feat``: Feature name table
+----------------------------
+
+.. automodule:: fontTools.ttLib.tables._f_e_a_t
+ :inherited-members:
+ :members:
+ :undoc-members:
diff --git a/Doc/source/ttLib/tables/_f_p_g_m.rst b/Doc/source/ttLib/tables/_f_p_g_m.rst
new file mode 100644
index 00000000..165cb4ca
--- /dev/null
+++ b/Doc/source/ttLib/tables/_f_p_g_m.rst
@@ -0,0 +1,7 @@
+``fpgm``: Font Program
+----------------------
+
+.. automodule:: fontTools.ttLib.tables._f_p_g_m
+ :inherited-members:
+ :members:
+ :undoc-members:
diff --git a/Doc/source/ttLib/tables/_f_v_a_r.rst b/Doc/source/ttLib/tables/_f_v_a_r.rst
new file mode 100644
index 00000000..af83b3e2
--- /dev/null
+++ b/Doc/source/ttLib/tables/_f_v_a_r.rst
@@ -0,0 +1,8 @@
+``fvar``: Font Variations Table
+-------------------------------
+
+.. automodule:: fontTools.ttLib.tables._f_v_a_r
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/_g_a_s_p.rst b/Doc/source/ttLib/tables/_g_a_s_p.rst
new file mode 100644
index 00000000..628d155c
--- /dev/null
+++ b/Doc/source/ttLib/tables/_g_a_s_p.rst
@@ -0,0 +1,8 @@
+``gasp``: Grid-fitting and Scan-conversion Procedure Table
+----------------------------------------------------------
+
+.. automodule:: fontTools.ttLib.tables._g_a_s_p
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/_g_c_i_d.rst b/Doc/source/ttLib/tables/_g_c_i_d.rst
new file mode 100644
index 00000000..d7cbcf51
--- /dev/null
+++ b/Doc/source/ttLib/tables/_g_c_i_d.rst
@@ -0,0 +1,7 @@
+``gcid``: Glyph ID to CID table
+-------------------------------
+
+.. automodule:: fontTools.ttLib.tables._g_c_i_d
+ :inherited-members:
+ :members:
+ :undoc-members:
diff --git a/Doc/source/ttLib/tables/_g_l_y_f.rst b/Doc/source/ttLib/tables/_g_l_y_f.rst
new file mode 100644
index 00000000..e3099cbf
--- /dev/null
+++ b/Doc/source/ttLib/tables/_g_l_y_f.rst
@@ -0,0 +1,11 @@
+``glyf``: Glyph Data
+--------------------
+
+.. autoclass:: fontTools.ttLib.tables._g_l_y_f.table__g_l_y_f
+ :members:
+.. autoclass:: fontTools.ttLib.tables._g_l_y_f.Glyph
+ :members:
+.. autoclass:: fontTools.ttLib.tables._g_l_y_f.GlyphComponent
+ :members:
+.. autoclass:: fontTools.ttLib.tables._g_l_y_f.GlyphCoordinates
+ :members: array, zeros, copy, __len__, __getitem__, __setitem__, __delitem__, append, extend, toInt, relativeToAbsolute, absoluteToRelative, translate, scale, transform, __pos__, __neg__, __iadd__, __isub__, __imul__, __itruediv__, __bool__
diff --git a/Doc/source/ttLib/tables/_g_v_a_r.rst b/Doc/source/ttLib/tables/_g_v_a_r.rst
new file mode 100644
index 00000000..d7918a91
--- /dev/null
+++ b/Doc/source/ttLib/tables/_g_v_a_r.rst
@@ -0,0 +1,16 @@
+``gvar``: Glyph Variations Table
+---------------------------------
+
+.. automodule:: fontTools.ttLib.tables._g_v_a_r
+ :inherited-members:
+ :members:
+ :undoc-members:
+
+
+TupleVariation
+^^^^^^^^^^^^^^
+
+.. automodule:: fontTools.ttLib.tables.TupleVariation
+ :inherited-members:
+ :members:
+ :undoc-members:
diff --git a/Doc/source/ttLib/tables/_h_d_m_x.rst b/Doc/source/ttLib/tables/_h_d_m_x.rst
new file mode 100644
index 00000000..d18e1621
--- /dev/null
+++ b/Doc/source/ttLib/tables/_h_d_m_x.rst
@@ -0,0 +1,8 @@
+``hdmx``: Horizontal Device Metrics
+-----------------------------------
+
+.. automodule:: fontTools.ttLib.tables._h_d_m_x
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/_h_e_a_d.rst b/Doc/source/ttLib/tables/_h_e_a_d.rst
new file mode 100644
index 00000000..daacebd4
--- /dev/null
+++ b/Doc/source/ttLib/tables/_h_e_a_d.rst
@@ -0,0 +1,8 @@
+``head``: Font Header Table
+---------------------------
+
+.. automodule:: fontTools.ttLib.tables._h_e_a_d
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/_h_h_e_a.rst b/Doc/source/ttLib/tables/_h_h_e_a.rst
new file mode 100644
index 00000000..76ba0360
--- /dev/null
+++ b/Doc/source/ttLib/tables/_h_h_e_a.rst
@@ -0,0 +1,8 @@
+``hhea``: Horizontal Header Table
+---------------------------------
+
+.. automodule:: fontTools.ttLib.tables._h_h_e_a
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/_h_m_t_x.rst b/Doc/source/ttLib/tables/_h_m_t_x.rst
new file mode 100644
index 00000000..523480fe
--- /dev/null
+++ b/Doc/source/ttLib/tables/_h_m_t_x.rst
@@ -0,0 +1,8 @@
+``hmtx``: Horizontal Metrics Table
+----------------------------------
+
+.. automodule:: fontTools.ttLib.tables._h_m_t_x
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/_k_e_r_n.rst b/Doc/source/ttLib/tables/_k_e_r_n.rst
new file mode 100644
index 00000000..87dae97d
--- /dev/null
+++ b/Doc/source/ttLib/tables/_k_e_r_n.rst
@@ -0,0 +1,8 @@
+``kern``: Kerning
+-----------------
+
+.. automodule:: fontTools.ttLib.tables._k_e_r_n
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/_l_c_a_r.rst b/Doc/source/ttLib/tables/_l_c_a_r.rst
new file mode 100644
index 00000000..d918b921
--- /dev/null
+++ b/Doc/source/ttLib/tables/_l_c_a_r.rst
@@ -0,0 +1,8 @@
+``lcar``: Ligature Caret Table
+------------------------------
+
+.. automodule:: fontTools.ttLib.tables._l_c_a_r
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/_l_o_c_a.rst b/Doc/source/ttLib/tables/_l_o_c_a.rst
new file mode 100644
index 00000000..cbff5d31
--- /dev/null
+++ b/Doc/source/ttLib/tables/_l_o_c_a.rst
@@ -0,0 +1,8 @@
+``loca``: Index to Location
+---------------------------
+
+.. automodule:: fontTools.ttLib.tables._l_o_c_a
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/_l_t_a_g.rst b/Doc/source/ttLib/tables/_l_t_a_g.rst
new file mode 100644
index 00000000..955aaebe
--- /dev/null
+++ b/Doc/source/ttLib/tables/_l_t_a_g.rst
@@ -0,0 +1,8 @@
+``ltag``: Language Tag
+----------------------
+
+.. automodule:: fontTools.ttLib.tables._l_t_a_g
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/_m_a_x_p.rst b/Doc/source/ttLib/tables/_m_a_x_p.rst
new file mode 100644
index 00000000..1825d011
--- /dev/null
+++ b/Doc/source/ttLib/tables/_m_a_x_p.rst
@@ -0,0 +1,8 @@
+``maxp``: Maximum Profile
+-------------------------
+
+.. automodule:: fontTools.ttLib.tables._m_a_x_p
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/_m_e_t_a.rst b/Doc/source/ttLib/tables/_m_e_t_a.rst
new file mode 100644
index 00000000..61f8f47f
--- /dev/null
+++ b/Doc/source/ttLib/tables/_m_e_t_a.rst
@@ -0,0 +1,8 @@
+``meta``: Metadata Table
+------------------------
+
+.. automodule:: fontTools.ttLib.tables._m_e_t_a
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/_m_o_r_t.rst b/Doc/source/ttLib/tables/_m_o_r_t.rst
new file mode 100644
index 00000000..34ce57e9
--- /dev/null
+++ b/Doc/source/ttLib/tables/_m_o_r_t.rst
@@ -0,0 +1,9 @@
+``mort``: Glyph Metamorphosis Table
+-----------------------------------
+
+.. automodule:: fontTools.ttLib.tables._m_o_r_t
+ :inherited-members:
+ :members:
+ :undoc-members:
+
+
diff --git a/Doc/source/ttLib/tables/_m_o_r_x.rst b/Doc/source/ttLib/tables/_m_o_r_x.rst
new file mode 100644
index 00000000..197ba16c
--- /dev/null
+++ b/Doc/source/ttLib/tables/_m_o_r_x.rst
@@ -0,0 +1,8 @@
+``morx``: Extended Glyph Metamorphosis Table
+--------------------------------------------
+
+.. automodule:: fontTools.ttLib.tables._m_o_r_x
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/_n_a_m_e.rst b/Doc/source/ttLib/tables/_n_a_m_e.rst
new file mode 100644
index 00000000..b500a461
--- /dev/null
+++ b/Doc/source/ttLib/tables/_n_a_m_e.rst
@@ -0,0 +1,8 @@
+``name``: Naming Table
+----------------------
+
+.. automodule:: fontTools.ttLib.tables._n_a_m_e
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/_o_p_b_d.rst b/Doc/source/ttLib/tables/_o_p_b_d.rst
new file mode 100644
index 00000000..39d947b3
--- /dev/null
+++ b/Doc/source/ttLib/tables/_o_p_b_d.rst
@@ -0,0 +1,8 @@
+``opbd``: Optical Bounds Table
+------------------------------
+
+.. automodule:: fontTools.ttLib.tables._o_p_b_d
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/_p_o_s_t.rst b/Doc/source/ttLib/tables/_p_o_s_t.rst
new file mode 100644
index 00000000..5035980e
--- /dev/null
+++ b/Doc/source/ttLib/tables/_p_o_s_t.rst
@@ -0,0 +1,8 @@
+``post``: PostScript Table
+--------------------------
+
+.. automodule:: fontTools.ttLib.tables._p_o_s_t
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/_p_r_e_p.rst b/Doc/source/ttLib/tables/_p_r_e_p.rst
new file mode 100644
index 00000000..1a538c5a
--- /dev/null
+++ b/Doc/source/ttLib/tables/_p_r_e_p.rst
@@ -0,0 +1,9 @@
+``prep``: Control Value Program
+-------------------------------
+
+.. automodule:: fontTools.ttLib.tables._p_r_e_p
+ :inherited-members:
+ :members:
+ :undoc-members:
+
+
diff --git a/Doc/source/ttLib/tables/_p_r_o_p.rst b/Doc/source/ttLib/tables/_p_r_o_p.rst
new file mode 100644
index 00000000..638ba350
--- /dev/null
+++ b/Doc/source/ttLib/tables/_p_r_o_p.rst
@@ -0,0 +1,8 @@
+``prop``: Glyph Properties Table
+--------------------------------
+
+.. automodule:: fontTools.ttLib.tables._p_r_o_p
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/_s_b_i_x.rst b/Doc/source/ttLib/tables/_s_b_i_x.rst
new file mode 100644
index 00000000..389cd532
--- /dev/null
+++ b/Doc/source/ttLib/tables/_s_b_i_x.rst
@@ -0,0 +1,25 @@
+``sbix``: Standard Bitmap Graphics Table
+----------------------------------------
+
+.. automodule:: fontTools.ttLib.tables._s_b_i_x
+ :inherited-members:
+ :members:
+ :undoc-members:
+
+
+
+sbixGlyph
+^^^^^^^^^
+
+.. automodule:: fontTools.ttLib.tables.sbixGlyph
+ :inherited-members:
+ :members:
+ :undoc-members:
+
+sbixStrike
+^^^^^^^^^^
+
+.. automodule:: fontTools.ttLib.tables.sbixStrike
+ :inherited-members:
+ :members:
+ :undoc-members:
diff --git a/Doc/source/ttLib/tables/_t_r_a_k.rst b/Doc/source/ttLib/tables/_t_r_a_k.rst
new file mode 100644
index 00000000..34b45462
--- /dev/null
+++ b/Doc/source/ttLib/tables/_t_r_a_k.rst
@@ -0,0 +1,8 @@
+``trak``: Tracking table
+------------------------
+
+.. automodule:: fontTools.ttLib.tables._t_r_a_k
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/_v_h_e_a.rst b/Doc/source/ttLib/tables/_v_h_e_a.rst
new file mode 100644
index 00000000..d45d2261
--- /dev/null
+++ b/Doc/source/ttLib/tables/_v_h_e_a.rst
@@ -0,0 +1,8 @@
+``vhea``: Vertical Header Table
+-------------------------------
+
+.. automodule:: fontTools.ttLib.tables._v_h_e_a
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/tables/_v_m_t_x.rst b/Doc/source/ttLib/tables/_v_m_t_x.rst
new file mode 100644
index 00000000..21adb80c
--- /dev/null
+++ b/Doc/source/ttLib/tables/_v_m_t_x.rst
@@ -0,0 +1,8 @@
+``vmtx``: Vertical Metrics Table
+--------------------------------
+
+.. automodule:: fontTools.ttLib.tables._v_m_t_x
+ :inherited-members:
+ :members:
+ :undoc-members:
+
diff --git a/Doc/source/ttLib/ttFont.rst b/Doc/source/ttLib/ttFont.rst
index a571050c..a3b4c9d0 100644
--- a/Doc/source/ttLib/ttFont.rst
+++ b/Doc/source/ttLib/ttFont.rst
@@ -1,9 +1,17 @@
-######
-ttFont
-######
+##############################################
+ttFont: Read/write OpenType and TrueType fonts
+##############################################
-.. automodule:: fontTools.ttLib.ttFont
+.. autoclass:: fontTools.ttLib.ttFont.TTFont
+ :inherited-members:
+ :members:
+
+.. autoclass:: fontTools.ttLib.ttFont.GlyphOrder
:inherited-members:
:members:
:undoc-members:
:private-members:
+
+.. automodule:: fontTools.ttLib.ttFont
+ :members: getTableModule, registerCustomTableClass, unregisterCustomTableClass, getCustomTableClass, getClassTag, newTable, tagToIdentifier, identifierToTag, tagToXML, xmlToTag, sortedTagList, reorderFontTables
+
diff --git a/Doc/source/varLib/index.rst b/Doc/source/varLib/index.rst
index 7b224967..1ae4a1b5 100644
--- a/Doc/source/varLib/index.rst
+++ b/Doc/source/varLib/index.rst
@@ -2,6 +2,25 @@
varLib: OpenType Variation Support
##################################
+
+.. toctree::
+ :maxdepth: 2
+
+ builder
+ cff
+ errors
+ featureVars
+ instancer
+ interpolatable
+ interpolate_layout
+ iup
+ merger
+ models
+ mutator
+ mvar
+ plot
+ varStore
+
The ``fontTools.varLib`` package contains a number of classes and routines
for handling, building and interpolating variable font data. These routines
rely on a common set of concepts, many of which are equivalent to concepts
@@ -90,24 +109,6 @@ support scalar
0 below its minimum or above its maximum.
-.. toctree::
- :maxdepth: 2
-
- builder
- cff
- errors
- featureVars
- instancer
- interpolatable
- interpolate_layout
- iup
- merger
- models
- mutator
- mvar
- plot
- varStore
-
.. automodule:: fontTools.varLib
:inherited-members:
:members:
diff --git a/Doc/source/voltLib.rst b/Doc/source/voltLib.rst
index 7695db7b..be9e8024 100644
--- a/Doc/source/voltLib.rst
+++ b/Doc/source/voltLib.rst
@@ -3,38 +3,27 @@ voltLib
#######
.. automodule:: fontTools.voltLib
- :inherited-members:
- :members:
- :undoc-members:
ast
---
.. automodule:: fontTools.voltLib.ast
- :inherited-members:
- :members:
:undoc-members:
error
-----
-.. automodule:: fontTools.voltLib.parser
- :inherited-members:
- :members:
+.. automodule:: fontTools.voltLib.error
:undoc-members:
lexer
-----
.. automodule:: fontTools.voltLib.lexer
- :inherited-members:
- :members:
:undoc-members:
parser
------
.. automodule:: fontTools.voltLib.parser
- :inherited-members:
- :members:
:undoc-members:
diff --git a/Lib/fontTools/__init__.py b/Lib/fontTools/__init__.py
index 82da9b70..7fa7b304 100644
--- a/Lib/fontTools/__init__.py
+++ b/Lib/fontTools/__init__.py
@@ -3,6 +3,6 @@ from fontTools.misc.loggingTools import configLogger
log = logging.getLogger(__name__)
-version = __version__ = "4.22.0"
+version = __version__ = "4.31.2"
__all__ = ["version", "log", "configLogger"]
diff --git a/Lib/fontTools/agl.py b/Lib/fontTools/agl.py
index 4f7ff920..cc286e42 100644
--- a/Lib/fontTools/agl.py
+++ b/Lib/fontTools/agl.py
@@ -26,7 +26,7 @@ This is used by fontTools when it has to construct glyph names for a font which
doesn't include any (e.g. format 3.0 post tables).
"""
-from fontTools.misc.py23 import tostr
+from fontTools.misc.textTools import tostr
import re
diff --git a/Lib/fontTools/cffLib/__init__.py b/Lib/fontTools/cffLib/__init__.py
index d4cd7a17..07d0d513 100644
--- a/Lib/fontTools/cffLib/__init__.py
+++ b/Lib/fontTools/cffLib/__init__.py
@@ -11,11 +11,10 @@ the demands of variable fonts. This module parses both original CFF and CFF2.
"""
-from fontTools.misc.py23 import bytechr, byteord, bytesjoin, tobytes, tostr
from fontTools.misc import sstruct
from fontTools.misc import psCharStrings
from fontTools.misc.arrayTools import unionRect, intRect
-from fontTools.misc.textTools import safeEval
+from fontTools.misc.textTools import bytechr, byteord, bytesjoin, tobytes, tostr, safeEval
from fontTools.ttLib import TTFont
from fontTools.ttLib.tables.otBase import OTTableWriter
from fontTools.ttLib.tables.otBase import OTTableReader
@@ -39,6 +38,85 @@ maxStackLimit = 513
# maxstack operator has been deprecated. max stack is now always 513.
+class StopHintCountEvent(Exception):
+ pass
+
+
+class _DesubroutinizingT2Decompiler(psCharStrings.SimpleT2Decompiler):
+ stop_hintcount_ops = ("op_hintmask", "op_cntrmask", "op_rmoveto", "op_hmoveto",
+ "op_vmoveto")
+
+ def __init__(self, localSubrs, globalSubrs, private=None):
+ psCharStrings.SimpleT2Decompiler.__init__(self, localSubrs, globalSubrs,
+ private)
+
+ def execute(self, charString):
+ self.need_hintcount = True # until proven otherwise
+ for op_name in self.stop_hintcount_ops:
+ setattr(self, op_name, self.stop_hint_count)
+
+ if hasattr(charString, '_desubroutinized'):
+ # If a charstring has already been desubroutinized, we will still
+ # need to execute it if we need to count hints in order to
+ # compute the byte length for mask arguments, and haven't finished
+ # counting hints pairs.
+ if self.need_hintcount and self.callingStack:
+ try:
+ psCharStrings.SimpleT2Decompiler.execute(self, charString)
+ except StopHintCountEvent:
+ del self.callingStack[-1]
+ return
+
+ charString._patches = []
+ psCharStrings.SimpleT2Decompiler.execute(self, charString)
+ desubroutinized = charString.program[:]
+ for idx, expansion in reversed(charString._patches):
+ assert idx >= 2
+ assert desubroutinized[idx - 1] in ['callsubr', 'callgsubr'], desubroutinized[idx - 1]
+ assert type(desubroutinized[idx - 2]) == int
+ if expansion[-1] == 'return':
+ expansion = expansion[:-1]
+ desubroutinized[idx-2:idx] = expansion
+ if not self.private.in_cff2:
+ if 'endchar' in desubroutinized:
+ # Cut off after first endchar
+ desubroutinized = desubroutinized[:desubroutinized.index('endchar') + 1]
+ else:
+ if not len(desubroutinized) or desubroutinized[-1] != 'return':
+ desubroutinized.append('return')
+
+ charString._desubroutinized = desubroutinized
+ del charString._patches
+
+ def op_callsubr(self, index):
+ subr = self.localSubrs[self.operandStack[-1]+self.localBias]
+ psCharStrings.SimpleT2Decompiler.op_callsubr(self, index)
+ self.processSubr(index, subr)
+
+ def op_callgsubr(self, index):
+ subr = self.globalSubrs[self.operandStack[-1]+self.globalBias]
+ psCharStrings.SimpleT2Decompiler.op_callgsubr(self, index)
+ self.processSubr(index, subr)
+
+ def stop_hint_count(self, *args):
+ self.need_hintcount = False
+ for op_name in self.stop_hintcount_ops:
+ setattr(self, op_name, None)
+ cs = self.callingStack[-1]
+ if hasattr(cs, '_desubroutinized'):
+ raise StopHintCountEvent()
+
+ def op_hintmask(self, index):
+ psCharStrings.SimpleT2Decompiler.op_hintmask(self, index)
+ if self.need_hintcount:
+ self.stop_hint_count()
+
+ def processSubr(self, index, subr):
+ cs = self.callingStack[-1]
+ if not hasattr(cs, '_desubroutinized'):
+ cs._patches.append((index, subr._desubroutinized))
+
+
class CFFFontSet(object):
"""A CFF font "file" can contain more than one font, although this is
extremely rare (and not allowed within OpenType fonts).
@@ -369,6 +447,35 @@ class CFFFontSet(object):
file.seek(0)
self.decompile(file, otFont, isCFF2=True)
+ def desubroutinize(self):
+ for fontName in self.fontNames:
+ font = self[fontName]
+ cs = font.CharStrings
+ for g in font.charset:
+ c, _ = cs.getItemAndSelector(g)
+ c.decompile()
+ subrs = getattr(c.private, "Subrs", [])
+ decompiler = _DesubroutinizingT2Decompiler(subrs, c.globalSubrs, c.private)
+ decompiler.execute(c)
+ c.program = c._desubroutinized
+ del c._desubroutinized
+ # Delete all the local subrs
+ if hasattr(font, 'FDArray'):
+ for fd in font.FDArray:
+ pd = fd.Private
+ if hasattr(pd, 'Subrs'):
+ del pd.Subrs
+ if 'Subrs' in pd.rawDict:
+ del pd.rawDict['Subrs']
+ else:
+ pd = font.Private
+ if hasattr(pd, 'Subrs'):
+ del pd.Subrs
+ if 'Subrs' in pd.rawDict:
+ del pd.rawDict['Subrs']
+ # as well as the global subrs
+ self.GlobalSubrs.clear()
+
class CFFWriter(object):
"""Helper class for serializing CFF data to binary. Used by
diff --git a/Lib/fontTools/colorLib/builder.py b/Lib/fontTools/colorLib/builder.py
index 821244af..2577fa76 100644
--- a/Lib/fontTools/colorLib/builder.py
+++ b/Lib/fontTools/colorLib/builder.py
@@ -21,25 +21,16 @@ from typing import (
TypeVar,
Union,
)
+from fontTools.misc.arrayTools import intRect
from fontTools.misc.fixedTools import fixedToFloat
from fontTools.ttLib.tables import C_O_L_R_
from fontTools.ttLib.tables import C_P_A_L_
from fontTools.ttLib.tables import _n_a_m_e
from fontTools.ttLib.tables import otTables as ot
-from fontTools.ttLib.tables.otTables import (
- ExtendMode,
- CompositeMode,
- VariableValue,
- VariableFloat,
- VariableInt,
-)
+from fontTools.ttLib.tables.otTables import ExtendMode, CompositeMode
from .errors import ColorLibError
from .geometry import round_start_circle_stable_containment
-from .table_builder import (
- convertTupleClass,
- BuildCallback,
- TableBuilder,
-)
+from .table_builder import BuildCallback, TableBuilder
# TODO move type aliases to colorLib.types?
@@ -49,56 +40,54 @@ _PaintInput = Union[int, _Kwargs, ot.Paint, Tuple[str, "_PaintInput"]]
_PaintInputList = Sequence[_PaintInput]
_ColorGlyphsDict = Dict[str, Union[_PaintInputList, _PaintInput]]
_ColorGlyphsV0Dict = Dict[str, Sequence[Tuple[str, int]]]
+_ClipBoxInput = Union[
+ Tuple[int, int, int, int, int], # format 1, variable
+ Tuple[int, int, int, int], # format 0, non-variable
+ ot.ClipBox,
+]
MAX_PAINT_COLR_LAYER_COUNT = 255
-_DEFAULT_ALPHA = VariableFloat(1.0)
+_DEFAULT_ALPHA = 1.0
_MAX_REUSE_LEN = 32
-def _beforeBuildPaintVarRadialGradient(paint, source, srcMapFn=lambda v: v):
- # normalize input types (which may or may not specify a varIdx)
- x0 = convertTupleClass(VariableFloat, source["x0"])
- y0 = convertTupleClass(VariableFloat, source["y0"])
- r0 = convertTupleClass(VariableFloat, source["r0"])
- x1 = convertTupleClass(VariableFloat, source["x1"])
- y1 = convertTupleClass(VariableFloat, source["y1"])
- r1 = convertTupleClass(VariableFloat, source["r1"])
+def _beforeBuildPaintRadialGradient(paint, source):
+ x0 = source["x0"]
+ y0 = source["y0"]
+ r0 = source["r0"]
+ x1 = source["x1"]
+ y1 = source["y1"]
+ r1 = source["r1"]
# TODO apparently no builder_test confirms this works (?)
# avoid abrupt change after rounding when c0 is near c1's perimeter
- c = round_start_circle_stable_containment(
- (x0.value, y0.value), r0.value, (x1.value, y1.value), r1.value
- )
- x0, y0 = x0._replace(value=c.centre[0]), y0._replace(value=c.centre[1])
- r0 = r0._replace(value=c.radius)
+ c = round_start_circle_stable_containment((x0, y0), r0, (x1, y1), r1)
+ x0, y0 = c.centre
+ r0 = c.radius
# update source to ensure paint is built with corrected values
- source["x0"] = srcMapFn(x0)
- source["y0"] = srcMapFn(y0)
- source["r0"] = srcMapFn(r0)
- source["x1"] = srcMapFn(x1)
- source["y1"] = srcMapFn(y1)
- source["r1"] = srcMapFn(r1)
+ source["x0"] = x0
+ source["y0"] = y0
+ source["r0"] = r0
+ source["x1"] = x1
+ source["y1"] = y1
+ source["r1"] = r1
return paint, source
-def _beforeBuildPaintRadialGradient(paint, source):
- return _beforeBuildPaintVarRadialGradient(paint, source, lambda v: v.value)
-
-
-def _defaultColorIndex():
- colorIndex = ot.ColorIndex()
- colorIndex.Alpha = _DEFAULT_ALPHA.value
- return colorIndex
+def _defaultColorStop():
+ colorStop = ot.ColorStop()
+ colorStop.Alpha = _DEFAULT_ALPHA
+ return colorStop
-def _defaultVarColorIndex():
- colorIndex = ot.VarColorIndex()
- colorIndex.Alpha = _DEFAULT_ALPHA
- return colorIndex
+def _defaultVarColorStop():
+ colorStop = ot.VarColorStop()
+ colorStop.Alpha = _DEFAULT_ALPHA
+ return colorStop
def _defaultColorLine():
@@ -113,6 +102,12 @@ def _defaultVarColorLine():
return colorLine
+def _defaultPaintSolid():
+ paint = ot.Paint()
+ paint.Alpha = _DEFAULT_ALPHA
+ return paint
+
+
def _buildPaintCallbacks():
return {
(
@@ -124,11 +119,21 @@ def _buildPaintCallbacks():
BuildCallback.BEFORE_BUILD,
ot.Paint,
ot.PaintFormat.PaintVarRadialGradient,
- ): _beforeBuildPaintVarRadialGradient,
- (BuildCallback.CREATE_DEFAULT, ot.ColorIndex): _defaultColorIndex,
- (BuildCallback.CREATE_DEFAULT, ot.VarColorIndex): _defaultVarColorIndex,
+ ): _beforeBuildPaintRadialGradient,
+ (BuildCallback.CREATE_DEFAULT, ot.ColorStop): _defaultColorStop,
+ (BuildCallback.CREATE_DEFAULT, ot.VarColorStop): _defaultVarColorStop,
(BuildCallback.CREATE_DEFAULT, ot.ColorLine): _defaultColorLine,
(BuildCallback.CREATE_DEFAULT, ot.VarColorLine): _defaultVarColorLine,
+ (
+ BuildCallback.CREATE_DEFAULT,
+ ot.Paint,
+ ot.PaintFormat.PaintSolid,
+ ): _defaultPaintSolid,
+ (
+ BuildCallback.CREATE_DEFAULT,
+ ot.Paint,
+ ot.PaintFormat.PaintVarSolid,
+ ): _defaultPaintSolid,
}
@@ -140,11 +145,11 @@ def populateCOLRv0(
"""Build v0 color layers and add to existing COLR table.
Args:
- table: a raw otTables.COLR() object (not ttLib's table_C_O_L_R_).
+ table: a raw ``otTables.COLR()`` object (not ttLib's ``table_C_O_L_R_``).
colorGlyphsV0: map of base glyph names to lists of (layer glyph names,
- color palette index) tuples.
+ color palette index) tuples. Can be empty.
glyphMap: a map from glyph names to glyph indices, as returned from
- TTFont.getReverseGlyphMap(), to optionally sort base records by GID.
+ ``TTFont.getReverseGlyphMap()``, to optionally sort base records by GID.
"""
if glyphMap is not None:
colorGlyphItems = sorted(
@@ -167,11 +172,14 @@ def populateCOLRv0(
layerRec.PaletteIndex = paletteIndex
layerRecords.append(layerRec)
+ table.BaseGlyphRecordArray = table.LayerRecordArray = None
+ if baseGlyphRecords:
+ table.BaseGlyphRecordArray = ot.BaseGlyphRecordArray()
+ table.BaseGlyphRecordArray.BaseGlyphRecord = baseGlyphRecords
+ if layerRecords:
+ table.LayerRecordArray = ot.LayerRecordArray()
+ table.LayerRecordArray.LayerRecord = layerRecords
table.BaseGlyphRecordCount = len(baseGlyphRecords)
- table.BaseGlyphRecordArray = ot.BaseGlyphRecordArray()
- table.BaseGlyphRecordArray.BaseGlyphRecord = baseGlyphRecords
- table.LayerRecordArray = ot.LayerRecordArray()
- table.LayerRecordArray.LayerRecord = layerRecords
table.LayerRecordCount = len(layerRecords)
@@ -180,12 +188,16 @@ def buildCOLR(
version: Optional[int] = None,
glyphMap: Optional[Mapping[str, int]] = None,
varStore: Optional[ot.VarStore] = None,
+ varIndexMap: Optional[ot.DeltaSetIndexMap] = None,
+ clipBoxes: Optional[Dict[str, _ClipBoxInput]] = None,
) -> C_O_L_R_.table_C_O_L_R_:
"""Build COLR table from color layers mapping.
+
Args:
+
colorGlyphs: map of base glyph name to, either list of (layer glyph name,
- color palette index) tuples for COLRv0; or a single Paint (dict) or
- list of Paint for COLRv1.
+ color palette index) tuples for COLRv0; or a single ``Paint`` (dict) or
+ list of ``Paint`` for COLRv1.
version: the version of COLR table. If None, the version is determined
by the presence of COLRv1 paints or variation data (varStore), which
require version 1; otherwise, if all base glyphs use only simple color
@@ -193,7 +205,11 @@ def buildCOLR(
glyphMap: a map from glyph names to glyph indices, as returned from
TTFont.getReverseGlyphMap(), to optionally sort base records by GID.
varStore: Optional ItemVarationStore for deltas associated with v1 layer.
- Return:
+ varIndexMap: Optional DeltaSetIndexMap for deltas associated with v1 layer.
+ clipBoxes: Optional map of base glyph name to clip box 4- or 5-tuples:
+ (xMin, yMin, xMax, yMax) or (xMin, yMin, xMax, yMax, varIndexBase).
+
+ Returns:
A new COLR table.
"""
self = C_O_L_R_.table_C_O_L_R_()
@@ -209,18 +225,13 @@ def buildCOLR(
else:
# unless explicitly requested for v1 or have variations, in which case
# we encode all color glyph as v1
- colorGlyphsV0, colorGlyphsV1 = None, colorGlyphs
+ colorGlyphsV0, colorGlyphsV1 = {}, colorGlyphs
colr = ot.COLR()
- if colorGlyphsV0:
- populateCOLRv0(colr, colorGlyphsV0, glyphMap)
- else:
- colr.BaseGlyphRecordCount = colr.LayerRecordCount = 0
- colr.BaseGlyphRecordArray = colr.LayerRecordArray = None
+ populateCOLRv0(colr, colorGlyphsV0, glyphMap)
- if colorGlyphsV1:
- colr.LayerV1List, colr.BaseGlyphV1List = buildColrV1(colorGlyphsV1, glyphMap)
+ colr.LayerList, colr.BaseGlyphList = buildColrV1(colorGlyphsV1, glyphMap)
if version is None:
version = 1 if (varStore or colorGlyphsV1) else 0
@@ -231,12 +242,38 @@ def buildCOLR(
if version == 0:
self.ColorLayers = self._decompileColorLayersV0(colr)
else:
+ clipBoxes = {
+ name: clipBoxes[name] for name in clipBoxes or {} if name in colorGlyphsV1
+ }
+ colr.ClipList = buildClipList(clipBoxes) if clipBoxes else None
+ colr.VarIndexMap = varIndexMap
colr.VarStore = varStore
self.table = colr
return self
+def buildClipList(clipBoxes: Dict[str, _ClipBoxInput]) -> ot.ClipList:
+ clipList = ot.ClipList()
+ clipList.Format = 1
+ clipList.clips = {name: buildClipBox(box) for name, box in clipBoxes.items()}
+ return clipList
+
+
+def buildClipBox(clipBox: _ClipBoxInput) -> ot.ClipBox:
+ if isinstance(clipBox, ot.ClipBox):
+ return clipBox
+ n = len(clipBox)
+ clip = ot.ClipBox()
+ if n not in (4, 5):
+ raise ValueError(f"Invalid ClipBox: expected 4 or 5 values, found {n}")
+ clip.xMin, clip.yMin, clip.xMax, clip.yMax = intRect(clipBox[:4])
+ clip.Format = int(n == 5) + 1
+ if n == 5:
+ clip.VarIndexBase = int(clipBox[4])
+ return clip
+
+
class ColorPaletteType(enum.IntFlag):
USABLE_WITH_LIGHT_BACKGROUND = 0x0001
USABLE_WITH_DARK_BACKGROUND = 0x0002
@@ -406,15 +443,13 @@ def _reuse_ranges(num_layers: int) -> Generator[Tuple[int, int], None, None]:
yield (lbound, ubound)
-class LayerV1ListBuilder:
- slices: List[ot.Paint]
+class LayerListBuilder:
layers: List[ot.Paint]
reusePool: Mapping[Tuple[Any, ...], int]
tuples: Mapping[int, Tuple[Any, ...]]
keepAlive: List[ot.Paint] # we need id to remain valid
def __init__(self):
- self.slices = []
self.layers = []
self.reusePool = {}
self.tuples = {}
@@ -459,10 +494,6 @@ class LayerV1ListBuilder:
# COLR layers is unusual in that it modifies shared state
# so we need a callback into an object
def _beforeBuildPaintColrLayers(self, dest, source):
- paint = ot.Paint()
- paint.Format = int(ot.PaintFormat.PaintColrLayers)
- self.slices.append(paint)
-
# Sketchy gymnastics: a sequence input will have dropped it's layers
# into NumLayers; get it back
if isinstance(source.get("NumLayers", None), collections.abc.Sequence):
@@ -520,6 +551,12 @@ class LayerV1ListBuilder:
layers = [listToColrLayers(l) for l in layers]
+ # No reason to have a colr layers with just one entry
+ if len(layers) == 1:
+ return layers[0], {}
+
+ paint = ot.Paint()
+ paint.Format = int(ot.PaintFormat.PaintColrLayers)
paint.NumLayers = len(layers)
paint.FirstLayerIndex = len(self.layers)
self.layers.extend(layers)
@@ -538,17 +575,19 @@ class LayerV1ListBuilder:
def buildPaint(self, paint: _PaintInput) -> ot.Paint:
return self.tableBuilder.build(ot.Paint, paint)
- def build(self) -> ot.LayerV1List:
- layers = ot.LayerV1List()
+ def build(self) -> Optional[ot.LayerList]:
+ if not self.layers:
+ return None
+ layers = ot.LayerList()
layers.LayerCount = len(self.layers)
layers.Paint = self.layers
return layers
-def buildBaseGlyphV1Record(
- baseGlyph: str, layerBuilder: LayerV1ListBuilder, paint: _PaintInput
-) -> ot.BaseGlyphV1List:
- self = ot.BaseGlyphV1Record()
+def buildBaseGlyphPaintRecord(
+ baseGlyph: str, layerBuilder: LayerListBuilder, paint: _PaintInput
+) -> ot.BaseGlyphList:
+ self = ot.BaseGlyphPaintRecord()
self.BaseGlyph = baseGlyph
self.Paint = layerBuilder.buildPaint(paint)
return self
@@ -564,7 +603,7 @@ def _format_glyph_errors(errors: Mapping[str, Exception]) -> str:
def buildColrV1(
colorGlyphs: _ColorGlyphsDict,
glyphMap: Optional[Mapping[str, int]] = None,
-) -> Tuple[ot.LayerV1List, ot.BaseGlyphV1List]:
+) -> Tuple[Optional[ot.LayerList], ot.BaseGlyphList]:
if glyphMap is not None:
colorGlyphItems = sorted(
colorGlyphs.items(), key=lambda item: glyphMap[item[0]]
@@ -574,24 +613,24 @@ def buildColrV1(
errors = {}
baseGlyphs = []
- layerBuilder = LayerV1ListBuilder()
+ layerBuilder = LayerListBuilder()
for baseGlyph, paint in colorGlyphItems:
try:
- baseGlyphs.append(buildBaseGlyphV1Record(baseGlyph, layerBuilder, paint))
+ baseGlyphs.append(buildBaseGlyphPaintRecord(baseGlyph, layerBuilder, paint))
except (ColorLibError, OverflowError, ValueError, TypeError) as e:
errors[baseGlyph] = e
if errors:
failed_glyphs = _format_glyph_errors(errors)
- exc = ColorLibError(f"Failed to build BaseGlyphV1List:\n{failed_glyphs}")
+ exc = ColorLibError(f"Failed to build BaseGlyphList:\n{failed_glyphs}")
exc.errors = errors
raise exc from next(iter(errors.values()))
layers = layerBuilder.build()
- glyphs = ot.BaseGlyphV1List()
+ glyphs = ot.BaseGlyphList()
glyphs.BaseGlyphCount = len(baseGlyphs)
- glyphs.BaseGlyphV1Record = baseGlyphs
+ glyphs.BaseGlyphPaintRecord = baseGlyphs
return (layers, glyphs)
diff --git a/Lib/fontTools/colorLib/geometry.py b/Lib/fontTools/colorLib/geometry.py
index e62aead1..1ce161bf 100644
--- a/Lib/fontTools/colorLib/geometry.py
+++ b/Lib/fontTools/colorLib/geometry.py
@@ -1,6 +1,6 @@
"""Helpers for manipulating 2D points and vectors in COLR table."""
-from math import copysign, cos, hypot, pi
+from math import copysign, cos, hypot, isclose, pi
from fontTools.misc.roundTools import otRound
@@ -19,9 +19,7 @@ def _unit_vector(vec):
return (vec[0] / length, vec[1] / length)
-# This is the same tolerance used by Skia's SkTwoPointConicalGradient.cpp to detect
-# when a radial gradient's focal point lies on the end circle.
-_NEARLY_ZERO = 1 / (1 << 12) # 0.000244140625
+_CIRCLE_INSIDE_TOLERANCE = 1e-4
# The unit vector's X and Y components are respectively
@@ -64,10 +62,10 @@ class Circle:
def round(self):
return Circle(_round_point(self.centre), otRound(self.radius))
- def inside(self, outer_circle):
+ def inside(self, outer_circle, tolerance=_CIRCLE_INSIDE_TOLERANCE):
dist = self.radius + hypot(*_vector_between(self.centre, outer_circle.centre))
return (
- abs(outer_circle.radius - dist) <= _NEARLY_ZERO
+ isclose(outer_circle.radius, dist, rel_tol=_CIRCLE_INSIDE_TOLERANCE)
or outer_circle.radius > dist
)
diff --git a/Lib/fontTools/colorLib/table_builder.py b/Lib/fontTools/colorLib/table_builder.py
index 6fba6b0f..763115b9 100644
--- a/Lib/fontTools/colorLib/table_builder.py
+++ b/Lib/fontTools/colorLib/table_builder.py
@@ -17,10 +17,9 @@ from fontTools.ttLib.tables.otConverters import (
Short,
UInt8,
UShort,
- VarInt16,
- VarUInt16,
IntValue,
FloatValue,
+ OptionalValue,
)
from fontTools.misc.roundTools import otRound
@@ -39,7 +38,7 @@ class BuildCallback(enum.Enum):
"""
AFTER_BUILD = enum.auto()
- """Keyed on (CREATE_DEFAULT, class).
+ """Keyed on (CREATE_DEFAULT, class[, Format if available]).
Receives no arguments.
Should return a new instance of class.
"""
@@ -50,37 +49,29 @@ def _assignable(convertersByName):
return {k: v for k, v in convertersByName.items() if not isinstance(v, ComputedInt)}
-def convertTupleClass(tupleClass, value):
- if isinstance(value, tupleClass):
- return value
- if isinstance(value, tuple):
- return tupleClass(*value)
- return tupleClass(value)
-
-
def _isNonStrSequence(value):
return isinstance(value, collections.abc.Sequence) and not isinstance(value, str)
-def _set_format(dest, source):
+def _split_format(cls, source):
if _isNonStrSequence(source):
- assert len(source) > 0, f"{type(dest)} needs at least format from {source}"
- dest.Format = source[0]
- source = source[1:]
+ assert len(source) > 0, f"{cls} needs at least format from {source}"
+ fmt, remainder = source[0], source[1:]
elif isinstance(source, collections.abc.Mapping):
- assert "Format" in source, f"{type(dest)} needs at least Format from {source}"
- dest.Format = source["Format"]
+ assert "Format" in source, f"{cls} needs at least Format from {source}"
+ remainder = source.copy()
+ fmt = remainder.pop("Format")
else:
- raise ValueError(f"Not sure how to populate {type(dest)} from {source}")
+ raise ValueError(f"Not sure how to populate {cls} from {source}")
assert isinstance(
- dest.Format, collections.abc.Hashable
- ), f"{type(dest)} Format is not hashable: {dest.Format}"
+ fmt, collections.abc.Hashable
+ ), f"{cls} Format is not hashable: {fmt!r}"
assert (
- dest.Format in dest.convertersByName
- ), f"{dest.Format} invalid Format of {cls}"
+ fmt in cls.convertersByName
+ ), f"{cls} invalid Format: {fmt!r}"
- return source
+ return fmt, remainder
class TableBuilder:
@@ -97,13 +88,9 @@ class TableBuilder:
self._callbackTable = callbackTable
def _convert(self, dest, field, converter, value):
- tupleClass = getattr(converter, "tupleClass", None)
enumClass = getattr(converter, "enumClass", None)
- if tupleClass:
- value = convertTupleClass(tupleClass, value)
-
- elif enumClass:
+ if enumClass:
if isinstance(value, enumClass):
pass
elif isinstance(value, str):
@@ -140,6 +127,11 @@ class TableBuilder:
return source
callbackKey = (cls,)
+ fmt = None
+ if issubclass(cls, FormatSwitchingBaseTable):
+ fmt, source = _split_format(cls, source)
+ callbackKey = (cls, fmt)
+
dest = self._callbackTable.get(
(BuildCallback.CREATE_DEFAULT,) + callbackKey, lambda: cls()
)()
@@ -150,11 +142,9 @@ class TableBuilder:
# For format switchers we need to resolve converters based on format
if issubclass(cls, FormatSwitchingBaseTable):
- source = _set_format(dest, source)
-
+ dest.Format = fmt
convByName = _assignable(convByName[dest.Format])
skippedFields.add("Format")
- callbackKey = (cls, dest.Format)
# Convert sequence => mapping so before thunk only has to handle one format
if _isNonStrSequence(source):
@@ -182,6 +172,10 @@ class TableBuilder:
# let's try as a 1-tuple
dest = self.build(cls, (source,))
+ for field, conv in convByName.items():
+ if not hasattr(dest, field) and isinstance(conv, OptionalValue):
+ setattr(dest, field, conv.DEFAULT)
+
dest = self._callbackTable.get(
(BuildCallback.AFTER_BUILD,) + callbackKey, lambda d: d
)(dest)
@@ -210,11 +204,8 @@ class TableUnbuilder:
continue
value = getattr(table, converter.name)
- tupleClass = getattr(converter, "tupleClass", None)
enumClass = getattr(converter, "enumClass", None)
- if tupleClass:
- source[converter.name] = tuple(value)
- elif enumClass:
+ if enumClass:
source[converter.name] = value.name.lower()
elif isinstance(converter, Struct):
if converter.repeat:
diff --git a/Lib/fontTools/colorLib/unbuilder.py b/Lib/fontTools/colorLib/unbuilder.py
index 43582bde..03458907 100644
--- a/Lib/fontTools/colorLib/unbuilder.py
+++ b/Lib/fontTools/colorLib/unbuilder.py
@@ -2,11 +2,14 @@ from fontTools.ttLib.tables import otTables as ot
from .table_builder import TableUnbuilder
-def unbuildColrV1(layerV1List, baseGlyphV1List):
- unbuilder = LayerV1ListUnbuilder(layerV1List.Paint)
+def unbuildColrV1(layerList, baseGlyphList):
+ layers = []
+ if layerList:
+ layers = layerList.Paint
+ unbuilder = LayerListUnbuilder(layers)
return {
rec.BaseGlyph: unbuilder.unbuildPaint(rec.Paint)
- for rec in baseGlyphV1List.BaseGlyphV1Record
+ for rec in baseGlyphList.BaseGlyphPaintRecord
}
@@ -18,7 +21,7 @@ def _flatten(lst):
yield el
-class LayerV1ListUnbuilder:
+class LayerListUnbuilder:
def __init__(self, layers):
self.layers = layers
@@ -71,9 +74,8 @@ if __name__ == "__main__":
sys.exit(f"error: No COLR table version=1 found in {fontfile}")
colorGlyphs = unbuildColrV1(
- colr.table.LayerV1List,
- colr.table.BaseGlyphV1List,
- ignoreVarIdx=not colr.table.VarStore,
+ colr.table.LayerList,
+ colr.table.BaseGlyphList,
)
pprint(colorGlyphs)
diff --git a/Lib/fontTools/cu2qu/cli.py b/Lib/fontTools/cu2qu/cli.py
index d4e83b88..34520fc0 100644
--- a/Lib/fontTools/cu2qu/cli.py
+++ b/Lib/fontTools/cu2qu/cli.py
@@ -29,8 +29,14 @@ def _cpu_count():
return 1
+def open_ufo(path):
+ if hasattr(ufo_module.Font, "open"): # ufoLib2
+ return ufo_module.Font.open(path)
+ return ufo_module.Font(path) # defcon
+
+
def _font_to_quadratic(input_path, output_path=None, **kwargs):
- ufo = ufo_module.Font(input_path)
+ ufo = open_ufo(input_path)
logger.info('Converting curves for %s', input_path)
if font_to_quadratic(ufo, **kwargs):
logger.info("Saving %s", output_path)
@@ -152,7 +158,7 @@ def main(args=None):
if options.interpolatable:
logger.info('Converting curves compatibly')
- ufos = [ufo_module.Font(infile) for infile in options.infiles]
+ ufos = [open_ufo(infile) for infile in options.infiles]
if fonts_to_quadratic(ufos, **kwargs):
for ufo, output_path in zip(ufos, output_paths):
logger.info("Saving %s", output_path)
diff --git a/Lib/fontTools/designspaceLib/__init__.py b/Lib/fontTools/designspaceLib/__init__.py
index 9ea22fe6..4b706827 100644
--- a/Lib/fontTools/designspaceLib/__init__.py
+++ b/Lib/fontTools/designspaceLib/__init__.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
-from fontTools.misc.py23 import tobytes, tostr
from fontTools.misc.loggingTools import LogMixin
+from fontTools.misc.textTools import tobytes, tostr
import collections
from io import BytesIO, StringIO
import os
@@ -33,6 +33,9 @@ def posix(path):
if path.startswith('/'):
# The above transformation loses absolute paths
new_path = '/' + new_path
+ elif path.startswith(r'\\'):
+ # The above transformation loses leading slashes of UNC path mounts
+ new_path = '//' + new_path
return new_path
@@ -157,18 +160,22 @@ class SourceDescriptor(SimpleDescriptor):
class RuleDescriptor(SimpleDescriptor):
- """<!-- optional: list of substitution rules -->
- <rules>
- <rule name="vertical.bars">
- <conditionset>
- <condition minimum="250.000000" maximum="750.000000" name="weight"/>
- <condition minimum="100" name="width"/>
- <condition minimum="10" maximum="40" name="optical"/>
- </conditionset>
- <sub name="cent" with="cent.alt"/>
- <sub name="dollar" with="dollar.alt"/>
- </rule>
- </rules>
+ """Represents the rule descriptor element
+
+ .. code-block:: xml
+
+ <!-- optional: list of substitution rules -->
+ <rules>
+ <rule name="vertical.bars">
+ <conditionset>
+ <condition minimum="250.000000" maximum="750.000000" name="weight"/>
+ <condition minimum="100" name="width"/>
+ <condition minimum="10" maximum="40" name="optical"/>
+ </conditionset>
+ <sub name="cent" with="cent.alt"/>
+ <sub name="dollar" with="dollar.alt"/>
+ </rule>
+ </rules>
"""
_attrs = ['name', 'conditionSets', 'subs'] # what do we need here
@@ -993,7 +1000,10 @@ class BaseDocReader(LogMixin):
def readGlyphElement(self, glyphElement, instanceObject):
"""
- Read the glyph element.
+ Read the glyph element:
+
+ .. code-block:: xml
+
<glyph name="b" unicode="0x62"/>
<glyph name="b"/>
<glyph name="b">
diff --git a/Lib/fontTools/feaLib/__main__.py b/Lib/fontTools/feaLib/__main__.py
index 99c64231..a45230e8 100644
--- a/Lib/fontTools/feaLib/__main__.py
+++ b/Lib/fontTools/feaLib/__main__.py
@@ -12,7 +12,7 @@ log = logging.getLogger("fontTools.feaLib")
def main(args=None):
- """Add features from a feature file (.fea) into a OTF font"""
+ """Add features from a feature file (.fea) into an OTF font"""
parser = argparse.ArgumentParser(
description="Use fontTools to compile OpenType feature files (*.fea)."
)
@@ -46,7 +46,7 @@ def main(args=None):
parser.add_argument(
"-v",
"--verbose",
- help="increase the logger verbosity. Multiple -v " "options are allowed.",
+ help="Increase the logger verbosity. Multiple -v " "options are allowed.",
action="count",
default=0,
)
@@ -70,6 +70,7 @@ def main(args=None):
if options.traceback:
raise
log.error(e)
+ sys.exit(1)
font.save(output_font)
diff --git a/Lib/fontTools/feaLib/ast.py b/Lib/fontTools/feaLib/ast.py
index 763d0d2c..1273343d 100644
--- a/Lib/fontTools/feaLib/ast.py
+++ b/Lib/fontTools/feaLib/ast.py
@@ -1,7 +1,7 @@
-from fontTools.misc.py23 import byteord, tobytes
from fontTools.feaLib.error import FeatureLibError
from fontTools.feaLib.location import FeatureLibLocation
from fontTools.misc.encodingTools import getEncoding
+from fontTools.misc.textTools import byteord, tobytes
from collections import OrderedDict
import itertools
@@ -34,6 +34,7 @@ __all__ = [
"ChainContextPosStatement",
"ChainContextSubstStatement",
"CharacterStatement",
+ "ConditionsetStatement",
"CursivePosStatement",
"ElidedFallbackName",
"ElidedFallbackNameID",
@@ -700,7 +701,7 @@ class AttachStatement(Statement):
class ChainContextPosStatement(Statement):
- """A chained contextual positioning statement.
+ r"""A chained contextual positioning statement.
``prefix``, ``glyphs``, and ``suffix`` should be lists of
`glyph-containing objects`_ .
@@ -758,7 +759,7 @@ class ChainContextPosStatement(Statement):
class ChainContextSubstStatement(Statement):
- """A chained contextual substitution statement.
+ r"""A chained contextual substitution statement.
``prefix``, ``glyphs``, and ``suffix`` should be lists of
`glyph-containing objects`_ .
@@ -1258,9 +1259,25 @@ class MultipleSubstStatement(Statement):
"""Calls the builder object's ``add_multiple_subst`` callback."""
prefix = [p.glyphSet() for p in self.prefix]
suffix = [s.glyphSet() for s in self.suffix]
- builder.add_multiple_subst(
- self.location, prefix, self.glyph, suffix, self.replacement, self.forceChain
- )
+ if not self.replacement and hasattr(self.glyph, "glyphSet"):
+ for glyph in self.glyph.glyphSet():
+ builder.add_multiple_subst(
+ self.location,
+ prefix,
+ glyph,
+ suffix,
+ self.replacement,
+ self.forceChain,
+ )
+ else:
+ builder.add_multiple_subst(
+ self.location,
+ prefix,
+ self.glyph,
+ suffix,
+ self.replacement,
+ self.forceChain,
+ )
def asFea(self, indent=""):
res = "sub "
@@ -1314,10 +1331,16 @@ class PairPosStatement(Statement):
"""
if self.enumerated:
g = [self.glyphs1.glyphSet(), self.glyphs2.glyphSet()]
+ seen_pair = False
for glyph1, glyph2 in itertools.product(*g):
+ seen_pair = True
builder.add_specific_pair_pos(
self.location, glyph1, self.valuerecord1, glyph2, self.valuerecord2
)
+ if not seen_pair:
+ raise FeatureLibError(
+ "Empty glyph class in positioning rule", self.location
+ )
return
is_specific = isinstance(self.glyphs1, GlyphName) and isinstance(
@@ -2027,3 +2050,79 @@ class AxisValueLocationStatement(Statement):
res += f"location {self.tag} "
res += f"{' '.join(str(i) for i in self.values)};\n"
return res
+
+
+class ConditionsetStatement(Statement):
+ """
+ A variable layout conditionset
+
+ Args:
+ name (str): the name of this conditionset
+ conditions (dict): a dictionary mapping axis tags to a
+ tuple of (min,max) userspace coordinates.
+ """
+
+ def __init__(self, name, conditions, location=None):
+ Statement.__init__(self, location)
+ self.name = name
+ self.conditions = conditions
+
+ def build(self, builder):
+ builder.add_conditionset(self.name, self.conditions)
+
+ def asFea(self, res="", indent=""):
+ res += indent + f"conditionset {self.name} " + "{\n"
+ for tag, (minvalue, maxvalue) in self.conditions.items():
+ res += indent + SHIFT + f"{tag} {minvalue} {maxvalue};\n"
+ res += indent + "}" + f" {self.name};\n"
+ return res
+
+
+class VariationBlock(Block):
+ """A variation feature block, applicable in a given set of conditions."""
+
+ def __init__(self, name, conditionset, use_extension=False, location=None):
+ Block.__init__(self, location)
+ self.name, self.conditionset, self.use_extension = (
+ name,
+ conditionset,
+ use_extension,
+ )
+
+ def build(self, builder):
+ """Call the ``start_feature`` callback on the builder object, visit
+ all the statements in this feature, and then call ``end_feature``."""
+ builder.start_feature(self.location, self.name)
+ if (
+ self.conditionset != "NULL"
+ and self.conditionset not in builder.conditionsets_
+ ):
+ raise FeatureLibError(
+ f"variation block used undefined conditionset {self.conditionset}",
+ self.location,
+ )
+
+ # language exclude_dflt statements modify builder.features_
+ # limit them to this block with temporary builder.features_
+ features = builder.features_
+ builder.features_ = {}
+ Block.build(self, builder)
+ for key, value in builder.features_.items():
+ items = builder.feature_variations_.setdefault(key, {}).setdefault(
+ self.conditionset, []
+ )
+ items.extend(value)
+ if key not in features:
+ features[key] = [] # Ensure we make a feature record
+ builder.features_ = features
+ builder.end_feature()
+
+ def asFea(self, indent=""):
+ res = indent + "variation %s " % self.name.strip()
+ res += self.conditionset + " "
+ if self.use_extension:
+ res += "useExtension "
+ res += "{\n"
+ res += Block.asFea(self, indent=indent)
+ res += indent + "} %s;\n" % self.name.strip()
+ return res
diff --git a/Lib/fontTools/feaLib/builder.py b/Lib/fontTools/feaLib/builder.py
index 4a7d9575..a1644875 100644
--- a/Lib/fontTools/feaLib/builder.py
+++ b/Lib/fontTools/feaLib/builder.py
@@ -1,6 +1,5 @@
-from fontTools.misc.py23 import Tag, tostr
from fontTools.misc import sstruct
-from fontTools.misc.textTools import binary2num, safeEval
+from fontTools.misc.textTools import Tag, tostr, binary2num, safeEval
from fontTools.feaLib.error import FeatureLibError
from fontTools.feaLib.lookupDebugInfo import (
LookupDebugInfo,
@@ -9,6 +8,7 @@ from fontTools.feaLib.lookupDebugInfo import (
)
from fontTools.feaLib.parser import Parser
from fontTools.feaLib.ast import FeatureFile
+from fontTools.feaLib.variableScalar import VariableScalar
from fontTools.otlLib import builder as otl
from fontTools.otlLib.maxContextCalc import maxCtxFont
from fontTools.ttLib import newTable, getTableModule
@@ -31,6 +31,10 @@ from fontTools.otlLib.builder import (
ChainContextualRule,
)
from fontTools.otlLib.error import OpenTypeLibError
+from fontTools.varLib.varStore import OnlineVarStoreBuilder
+from fontTools.varLib.builder import buildVarDevTable
+from fontTools.varLib.featureVars import addFeatureVariationsRaw
+from fontTools.varLib.models import normalizeValue
from collections import defaultdict
import itertools
from io import StringIO
@@ -112,6 +116,12 @@ class Builder(object):
else:
self.parseTree, self.file = None, featurefile
self.glyphMap = font.getReverseGlyphMap()
+ self.varstorebuilder = None
+ if "fvar" in font:
+ self.axes = font["fvar"].axes
+ self.varstorebuilder = OnlineVarStoreBuilder(
+ [ax.axisTag for ax in self.axes]
+ )
self.default_language_systems_ = set()
self.script_ = None
self.lookupflag_ = 0
@@ -126,6 +136,7 @@ class Builder(object):
self.lookup_locations = {"GSUB": {}, "GPOS": {}}
self.features_ = {} # ('latn', 'DEU ', 'smcp') --> [LookupBuilder*]
self.required_features_ = {} # ('latn', 'DEU ') --> 'scmp'
+ self.feature_variations_ = {}
# for feature 'aalt'
self.aalt_features_ = [] # [(location, featureName)*], for 'aalt'
self.aalt_location_ = None
@@ -163,6 +174,8 @@ class Builder(object):
self.vhea_ = {}
# for table 'STAT'
self.stat_ = {}
+ # for conditionsets
+ self.conditionsets_ = {}
def build(self, tables=None, debug=False):
if self.parseTree is None:
@@ -198,6 +211,8 @@ class Builder(object):
if tag not in tables:
continue
table = self.makeTable(tag)
+ if self.feature_variations_:
+ self.makeFeatureVariations(table, tag)
if (
table.ScriptList.ScriptCount > 0
or table.FeatureList.FeatureCount > 0
@@ -215,6 +230,8 @@ class Builder(object):
self.font["GDEF"] = gdef
elif "GDEF" in self.font:
del self.font["GDEF"]
+ elif self.varstorebuilder:
+ raise FeatureLibError("Must save GDEF when compiling a variable font")
if "BASE" in tables:
base = self.buildBASE()
if base:
@@ -745,6 +762,16 @@ class Builder(object):
gdef.MarkAttachClassDef = self.buildGDEFMarkAttachClassDef_()
gdef.MarkGlyphSetsDef = self.buildGDEFMarkGlyphSetsDef_()
gdef.Version = 0x00010002 if gdef.MarkGlyphSetsDef else 0x00010000
+ if self.varstorebuilder:
+ store = self.varstorebuilder.finish()
+ if store.VarData:
+ gdef.Version = 0x00010003
+ gdef.VarStore = store
+ varidx_map = store.optimize()
+
+ gdef.remap_device_varidxes(varidx_map)
+ if 'GPOS' in self.font:
+ self.font['GPOS'].table.remap_device_varidxes(varidx_map)
if any(
(
gdef.GlyphClassDef,
@@ -753,7 +780,7 @@ class Builder(object):
gdef.MarkAttachClassDef,
gdef.MarkGlyphSetsDef,
)
- ):
+ ) or hasattr(gdef, "VarStore"):
result = newTable("GDEF")
result.table = gdef
return result
@@ -849,7 +876,8 @@ class Builder(object):
)
size_feature = tag == "GPOS" and feature_tag == "size"
- if len(lookup_indices) == 0 and not size_feature:
+ force_feature = self.any_feature_variations(feature_tag, tag)
+ if len(lookup_indices) == 0 and not size_feature and not force_feature:
continue
for ix in lookup_indices:
@@ -915,6 +943,42 @@ class Builder(object):
table.LookupList.LookupCount = len(table.LookupList.Lookup)
return table
+ def makeFeatureVariations(self, table, table_tag):
+ feature_vars = {}
+ has_any_variations = False
+ # Sort out which lookups to build, gather their indices
+ for (
+ script_,
+ language,
+ feature_tag,
+ ), variations in self.feature_variations_.items():
+ feature_vars[feature_tag] = []
+ for conditionset, builders in variations.items():
+ raw_conditionset = self.conditionsets_[conditionset]
+ indices = []
+ for b in builders:
+ if b.table != table_tag:
+ continue
+ assert b.lookup_index is not None
+ indices.append(b.lookup_index)
+ has_any_variations = True
+ feature_vars[feature_tag].append((raw_conditionset, indices))
+
+ if has_any_variations:
+ for feature_tag, conditions_and_lookups in feature_vars.items():
+ addFeatureVariationsRaw(
+ self.font, table, conditions_and_lookups, feature_tag
+ )
+
+ def any_feature_variations(self, feature_tag, table_tag):
+ for (_, _, feature), variations in self.feature_variations_.items():
+ if feature != feature_tag:
+ continue
+ for conditionset, builders in variations.items():
+ if any(b.table == table_tag for b in builders):
+ return True
+ return False
+
def get_lookup_name_(self, lookup):
rev = {v: k for k, v in self.named_lookups_.items()}
if lookup in rev:
@@ -1005,7 +1069,8 @@ class Builder(object):
assert lookup_name in self.named_lookups_, lookup_name
self.cur_lookup_ = None
lookup = self.named_lookups_[lookup_name]
- self.add_lookup_to_feature_(lookup, self.cur_feature_name_)
+ if lookup is not None: # skip empty named lookup
+ self.add_lookup_to_feature_(lookup, self.cur_feature_name_)
def set_font_revision(self, location, revision):
self.fontRevision_ = revision
@@ -1130,39 +1195,6 @@ class Builder(object):
for glyph in glyphs:
self.attachPoints_.setdefault(glyph, set()).update(contourPoints)
- def add_chain_context_pos(self, location, prefix, glyphs, suffix, lookups):
- lookup = self.get_lookup_(location, ChainContextPosBuilder)
- lookup.rules.append(
- ChainContextualRule(
- prefix, glyphs, suffix, self.find_lookup_builders_(lookups)
- )
- )
-
- def add_chain_context_subst(self, location, prefix, glyphs, suffix, lookups):
- lookup = self.get_lookup_(location, ChainContextSubstBuilder)
- lookup.rules.append(
- ChainContextualRule(
- prefix, glyphs, suffix, self.find_lookup_builders_(lookups)
- )
- )
-
- def add_alternate_subst(self, location, prefix, glyph, suffix, replacement):
- if self.cur_feature_name_ == "aalt":
- alts = self.aalt_alternates_.setdefault(glyph, set())
- alts.update(replacement)
- return
- if prefix or suffix:
- chain = self.get_lookup_(location, ChainContextSubstBuilder)
- lookup = self.get_chained_lookup_(location, AlternateSubstBuilder)
- chain.rules.append(ChainContextualRule(prefix, [{glyph}], suffix, [lookup]))
- else:
- lookup = self.get_lookup_(location, AlternateSubstBuilder)
- if glyph in lookup.alternates:
- raise FeatureLibError(
- 'Already defined alternates for glyph "%s"' % glyph, location
- )
- lookup.alternates[glyph] = replacement
-
def add_feature_reference(self, location, featureName):
if self.cur_feature_name_ != "aalt":
raise FeatureLibError(
@@ -1207,24 +1239,38 @@ class Builder(object):
key = (script, lang, self.cur_feature_name_)
self.features_.setdefault(key, [])
- def add_ligature_subst(
- self, location, prefix, glyphs, suffix, replacement, forceChain
- ):
- if prefix or suffix or forceChain:
- chain = self.get_lookup_(location, ChainContextSubstBuilder)
- lookup = self.get_chained_lookup_(location, LigatureSubstBuilder)
- chain.rules.append(ChainContextualRule(prefix, glyphs, suffix, [lookup]))
- else:
- lookup = self.get_lookup_(location, LigatureSubstBuilder)
+ # GSUB rules
- # OpenType feature file syntax, section 5.d, "Ligature substitution":
- # "Since the OpenType specification does not allow ligature
- # substitutions to be specified on target sequences that contain
- # glyph classes, the implementation software will enumerate
- # all specific glyph sequences if glyph classes are detected"
- for g in sorted(itertools.product(*glyphs)):
- lookup.ligatures[g] = replacement
+ # GSUB 1
+ def add_single_subst(self, location, prefix, suffix, mapping, forceChain):
+ if self.cur_feature_name_ == "aalt":
+ for (from_glyph, to_glyph) in mapping.items():
+ alts = self.aalt_alternates_.setdefault(from_glyph, set())
+ alts.add(to_glyph)
+ return
+ if prefix or suffix or forceChain:
+ self.add_single_subst_chained_(location, prefix, suffix, mapping)
+ return
+ lookup = self.get_lookup_(location, SingleSubstBuilder)
+ for (from_glyph, to_glyph) in mapping.items():
+ if from_glyph in lookup.mapping:
+ if to_glyph == lookup.mapping[from_glyph]:
+ log.info(
+ "Removing duplicate single substitution from glyph"
+ ' "%s" to "%s" at %s',
+ from_glyph,
+ to_glyph,
+ location,
+ )
+ else:
+ raise FeatureLibError(
+ 'Already defined rule for replacing glyph "%s" by "%s"'
+ % (from_glyph, lookup.mapping[from_glyph]),
+ location,
+ )
+ lookup.mapping[from_glyph] = to_glyph
+ # GSUB 2
def add_multiple_subst(
self, location, prefix, glyph, suffix, replacements, forceChain=False
):
@@ -1250,39 +1296,61 @@ class Builder(object):
)
lookup.mapping[glyph] = replacements
- def add_reverse_chain_single_subst(self, location, old_prefix, old_suffix, mapping):
- lookup = self.get_lookup_(location, ReverseChainSingleSubstBuilder)
- lookup.rules.append((old_prefix, old_suffix, mapping))
-
- def add_single_subst(self, location, prefix, suffix, mapping, forceChain):
+ # GSUB 3
+ def add_alternate_subst(self, location, prefix, glyph, suffix, replacement):
if self.cur_feature_name_ == "aalt":
- for (from_glyph, to_glyph) in mapping.items():
- alts = self.aalt_alternates_.setdefault(from_glyph, set())
- alts.add(to_glyph)
+ alts = self.aalt_alternates_.setdefault(glyph, set())
+ alts.update(replacement)
return
+ if prefix or suffix:
+ chain = self.get_lookup_(location, ChainContextSubstBuilder)
+ lookup = self.get_chained_lookup_(location, AlternateSubstBuilder)
+ chain.rules.append(ChainContextualRule(prefix, [{glyph}], suffix, [lookup]))
+ else:
+ lookup = self.get_lookup_(location, AlternateSubstBuilder)
+ if glyph in lookup.alternates:
+ raise FeatureLibError(
+ 'Already defined alternates for glyph "%s"' % glyph, location
+ )
+ # We allow empty replacement glyphs here.
+ lookup.alternates[glyph] = replacement
+
+ # GSUB 4
+ def add_ligature_subst(
+ self, location, prefix, glyphs, suffix, replacement, forceChain
+ ):
if prefix or suffix or forceChain:
- self.add_single_subst_chained_(location, prefix, suffix, mapping)
- return
- lookup = self.get_lookup_(location, SingleSubstBuilder)
- for (from_glyph, to_glyph) in mapping.items():
- if from_glyph in lookup.mapping:
- if to_glyph == lookup.mapping[from_glyph]:
- log.info(
- "Removing duplicate single substitution from glyph"
- ' "%s" to "%s" at %s',
- from_glyph,
- to_glyph,
- location,
- )
- else:
- raise FeatureLibError(
- 'Already defined rule for replacing glyph "%s" by "%s"'
- % (from_glyph, lookup.mapping[from_glyph]),
- location,
- )
- lookup.mapping[from_glyph] = to_glyph
+ chain = self.get_lookup_(location, ChainContextSubstBuilder)
+ lookup = self.get_chained_lookup_(location, LigatureSubstBuilder)
+ chain.rules.append(ChainContextualRule(prefix, glyphs, suffix, [lookup]))
+ else:
+ lookup = self.get_lookup_(location, LigatureSubstBuilder)
+
+ if not all(glyphs):
+ raise FeatureLibError("Empty glyph class in substitution", location)
+
+ # OpenType feature file syntax, section 5.d, "Ligature substitution":
+ # "Since the OpenType specification does not allow ligature
+ # substitutions to be specified on target sequences that contain
+ # glyph classes, the implementation software will enumerate
+ # all specific glyph sequences if glyph classes are detected"
+ for g in sorted(itertools.product(*glyphs)):
+ lookup.ligatures[g] = replacement
+
+ # GSUB 5/6
+ def add_chain_context_subst(self, location, prefix, glyphs, suffix, lookups):
+ if not all(glyphs) or not all(prefix) or not all(suffix):
+ raise FeatureLibError("Empty glyph class in contextual substitution", location)
+ lookup = self.get_lookup_(location, ChainContextSubstBuilder)
+ lookup.rules.append(
+ ChainContextualRule(
+ prefix, glyphs, suffix, self.find_lookup_builders_(lookups)
+ )
+ )
def add_single_subst_chained_(self, location, prefix, suffix, mapping):
+ if not mapping or not all(prefix) or not all(suffix):
+ raise FeatureLibError("Empty glyph class in contextual substitution", location)
# https://github.com/fonttools/fonttools/issues/512
chain = self.get_lookup_(location, ChainContextSubstBuilder)
sub = chain.find_chainable_single_subst(set(mapping.keys()))
@@ -1293,91 +1361,115 @@ class Builder(object):
ChainContextualRule(prefix, [list(mapping.keys())], suffix, [sub])
)
+ # GSUB 8
+ def add_reverse_chain_single_subst(self, location, old_prefix, old_suffix, mapping):
+ if not mapping:
+ raise FeatureLibError("Empty glyph class in substitution", location)
+ lookup = self.get_lookup_(location, ReverseChainSingleSubstBuilder)
+ lookup.rules.append((old_prefix, old_suffix, mapping))
+
+ # GPOS rules
+
+ # GPOS 1
+ def add_single_pos(self, location, prefix, suffix, pos, forceChain):
+ if prefix or suffix or forceChain:
+ self.add_single_pos_chained_(location, prefix, suffix, pos)
+ else:
+ lookup = self.get_lookup_(location, SinglePosBuilder)
+ for glyphs, value in pos:
+ if not glyphs:
+ raise FeatureLibError("Empty glyph class in positioning rule", location)
+ otValueRecord = self.makeOpenTypeValueRecord(location, value, pairPosContext=False)
+ for glyph in glyphs:
+ try:
+ lookup.add_pos(location, glyph, otValueRecord)
+ except OpenTypeLibError as e:
+ raise FeatureLibError(str(e), e.location) from e
+
+ # GPOS 2
+ def add_class_pair_pos(self, location, glyphclass1, value1, glyphclass2, value2):
+ if not glyphclass1 or not glyphclass2:
+ raise FeatureLibError(
+ "Empty glyph class in positioning rule", location
+ )
+ lookup = self.get_lookup_(location, PairPosBuilder)
+ v1 = self.makeOpenTypeValueRecord(location, value1, pairPosContext=True)
+ v2 = self.makeOpenTypeValueRecord(location, value2, pairPosContext=True)
+ lookup.addClassPair(location, glyphclass1, v1, glyphclass2, v2)
+
+ def add_specific_pair_pos(self, location, glyph1, value1, glyph2, value2):
+ if not glyph1 or not glyph2:
+ raise FeatureLibError("Empty glyph class in positioning rule", location)
+ lookup = self.get_lookup_(location, PairPosBuilder)
+ v1 = self.makeOpenTypeValueRecord(location, value1, pairPosContext=True)
+ v2 = self.makeOpenTypeValueRecord(location, value2, pairPosContext=True)
+ lookup.addGlyphPair(location, glyph1, v1, glyph2, v2)
+
+ # GPOS 3
def add_cursive_pos(self, location, glyphclass, entryAnchor, exitAnchor):
+ if not glyphclass:
+ raise FeatureLibError("Empty glyph class in positioning rule", location)
lookup = self.get_lookup_(location, CursivePosBuilder)
lookup.add_attachment(
location,
glyphclass,
- makeOpenTypeAnchor(entryAnchor),
- makeOpenTypeAnchor(exitAnchor),
+ self.makeOpenTypeAnchor(location, entryAnchor),
+ self.makeOpenTypeAnchor(location, exitAnchor),
)
- def add_marks_(self, location, lookupBuilder, marks):
- """Helper for add_mark_{base,liga,mark}_pos."""
- for _, markClass in marks:
- for markClassDef in markClass.definitions:
- for mark in markClassDef.glyphs.glyphSet():
- if mark not in lookupBuilder.marks:
- otMarkAnchor = makeOpenTypeAnchor(markClassDef.anchor)
- lookupBuilder.marks[mark] = (markClass.name, otMarkAnchor)
- else:
- existingMarkClass = lookupBuilder.marks[mark][0]
- if markClass.name != existingMarkClass:
- raise FeatureLibError(
- "Glyph %s cannot be in both @%s and @%s"
- % (mark, existingMarkClass, markClass.name),
- location,
- )
-
+ # GPOS 4
def add_mark_base_pos(self, location, bases, marks):
builder = self.get_lookup_(location, MarkBasePosBuilder)
self.add_marks_(location, builder, marks)
+ if not bases:
+ raise FeatureLibError("Empty glyph class in positioning rule", location)
for baseAnchor, markClass in marks:
- otBaseAnchor = makeOpenTypeAnchor(baseAnchor)
+ otBaseAnchor = self.makeOpenTypeAnchor(location, baseAnchor)
for base in bases:
builder.bases.setdefault(base, {})[markClass.name] = otBaseAnchor
+ # GPOS 5
def add_mark_lig_pos(self, location, ligatures, components):
builder = self.get_lookup_(location, MarkLigPosBuilder)
componentAnchors = []
+ if not ligatures:
+ raise FeatureLibError("Empty glyph class in positioning rule", location)
for marks in components:
anchors = {}
self.add_marks_(location, builder, marks)
for ligAnchor, markClass in marks:
- anchors[markClass.name] = makeOpenTypeAnchor(ligAnchor)
+ anchors[markClass.name] = self.makeOpenTypeAnchor(location, ligAnchor)
componentAnchors.append(anchors)
for glyph in ligatures:
builder.ligatures[glyph] = componentAnchors
+ # GPOS 6
def add_mark_mark_pos(self, location, baseMarks, marks):
builder = self.get_lookup_(location, MarkMarkPosBuilder)
self.add_marks_(location, builder, marks)
+ if not baseMarks:
+ raise FeatureLibError("Empty glyph class in positioning rule", location)
for baseAnchor, markClass in marks:
- otBaseAnchor = makeOpenTypeAnchor(baseAnchor)
+ otBaseAnchor = self.makeOpenTypeAnchor(location, baseAnchor)
for baseMark in baseMarks:
builder.baseMarks.setdefault(baseMark, {})[
markClass.name
] = otBaseAnchor
- def add_class_pair_pos(self, location, glyphclass1, value1, glyphclass2, value2):
- lookup = self.get_lookup_(location, PairPosBuilder)
- v1 = makeOpenTypeValueRecord(value1, pairPosContext=True)
- v2 = makeOpenTypeValueRecord(value2, pairPosContext=True)
- lookup.addClassPair(location, glyphclass1, v1, glyphclass2, v2)
-
- def add_subtable_break(self, location):
- self.cur_lookup_.add_subtable_break(location)
-
- def add_specific_pair_pos(self, location, glyph1, value1, glyph2, value2):
- lookup = self.get_lookup_(location, PairPosBuilder)
- v1 = makeOpenTypeValueRecord(value1, pairPosContext=True)
- v2 = makeOpenTypeValueRecord(value2, pairPosContext=True)
- lookup.addGlyphPair(location, glyph1, v1, glyph2, v2)
-
- def add_single_pos(self, location, prefix, suffix, pos, forceChain):
- if prefix or suffix or forceChain:
- self.add_single_pos_chained_(location, prefix, suffix, pos)
- else:
- lookup = self.get_lookup_(location, SinglePosBuilder)
- for glyphs, value in pos:
- otValueRecord = makeOpenTypeValueRecord(value, pairPosContext=False)
- for glyph in glyphs:
- try:
- lookup.add_pos(location, glyph, otValueRecord)
- except OpenTypeLibError as e:
- raise FeatureLibError(str(e), e.location) from e
+ # GPOS 7/8
+ def add_chain_context_pos(self, location, prefix, glyphs, suffix, lookups):
+ if not all(glyphs) or not all(prefix) or not all(suffix):
+ raise FeatureLibError("Empty glyph class in contextual positioning rule", location)
+ lookup = self.get_lookup_(location, ChainContextPosBuilder)
+ lookup.rules.append(
+ ChainContextualRule(
+ prefix, glyphs, suffix, self.find_lookup_builders_(lookups)
+ )
+ )
def add_single_pos_chained_(self, location, prefix, suffix, pos):
+ if not pos or not all(prefix) or not all(suffix):
+ raise FeatureLibError("Empty glyph class in contextual positioning rule", location)
# https://github.com/fonttools/fonttools/issues/514
chain = self.get_lookup_(location, ChainContextPosBuilder)
targets = []
@@ -1388,7 +1480,7 @@ class Builder(object):
if value is None:
subs.append(None)
continue
- otValue = makeOpenTypeValueRecord(value, pairPosContext=False)
+ otValue = self.makeOpenTypeValueRecord(location, value, pairPosContext=False)
sub = chain.find_chainable_single_pos(targets, glyphs, otValue)
if sub is None:
sub = self.get_chained_lookup_(location, SinglePosBuilder)
@@ -1401,6 +1493,26 @@ class Builder(object):
ChainContextualRule(prefix, [g for g, v in pos], suffix, subs)
)
+ def add_marks_(self, location, lookupBuilder, marks):
+ """Helper for add_mark_{base,liga,mark}_pos."""
+ for _, markClass in marks:
+ for markClassDef in markClass.definitions:
+ for mark in markClassDef.glyphs.glyphSet():
+ if mark not in lookupBuilder.marks:
+ otMarkAnchor = self.makeOpenTypeAnchor(location, markClassDef.anchor)
+ lookupBuilder.marks[mark] = (markClass.name, otMarkAnchor)
+ else:
+ existingMarkClass = lookupBuilder.marks[mark][0]
+ if markClass.name != existingMarkClass:
+ raise FeatureLibError(
+ "Glyph %s cannot be in both @%s and @%s"
+ % (mark, existingMarkClass, markClass.name),
+ location,
+ )
+
+ def add_subtable_break(self, location):
+ self.cur_lookup_.add_subtable_break(location)
+
def setGlyphClass_(self, location, glyph, glyphClass):
oldClass, oldLocation = self.glyphClassDefs_.get(glyph, (None, None))
if oldClass and oldClass != glyphClass:
@@ -1445,37 +1557,98 @@ class Builder(object):
def add_vhea_field(self, key, value):
self.vhea_[key] = value
+ def add_conditionset(self, key, value):
+ if not "fvar" in self.font:
+ raise FeatureLibError(
+ "Cannot add feature variations to a font without an 'fvar' table"
+ )
+
+ # Normalize
+ axisMap = {
+ axis.axisTag: (axis.minValue, axis.defaultValue, axis.maxValue)
+ for axis in self.axes
+ }
-def makeOpenTypeAnchor(anchor):
- """ast.Anchor --> otTables.Anchor"""
- if anchor is None:
- return None
- deviceX, deviceY = None, None
- if anchor.xDeviceTable is not None:
- deviceX = otl.buildDevice(dict(anchor.xDeviceTable))
- if anchor.yDeviceTable is not None:
- deviceY = otl.buildDevice(dict(anchor.yDeviceTable))
- return otl.buildAnchor(anchor.x, anchor.y, anchor.contourpoint, deviceX, deviceY)
+ value = {
+ tag: (
+ normalizeValue(bottom, axisMap[tag]),
+ normalizeValue(top, axisMap[tag]),
+ )
+ for tag, (bottom, top) in value.items()
+ }
+
+ self.conditionsets_[key] = value
+
+ def makeOpenTypeAnchor(self, location, anchor):
+ """ast.Anchor --> otTables.Anchor"""
+ if anchor is None:
+ return None
+ variable = False
+ deviceX, deviceY = None, None
+ if anchor.xDeviceTable is not None:
+ deviceX = otl.buildDevice(dict(anchor.xDeviceTable))
+ if anchor.yDeviceTable is not None:
+ deviceY = otl.buildDevice(dict(anchor.yDeviceTable))
+ for dim in ("x", "y"):
+ if not isinstance(getattr(anchor, dim), VariableScalar):
+ continue
+ if getattr(anchor, dim+"DeviceTable") is not None:
+ raise FeatureLibError("Can't define a device coordinate and variable scalar", location)
+ if not self.varstorebuilder:
+ raise FeatureLibError("Can't define a variable scalar in a non-variable font", location)
+ varscalar = getattr(anchor,dim)
+ varscalar.axes = self.axes
+ default, index = varscalar.add_to_variation_store(self.varstorebuilder)
+ setattr(anchor, dim, default)
+ if index is not None and index != 0xFFFFFFFF:
+ if dim == "x":
+ deviceX = buildVarDevTable(index)
+ else:
+ deviceY = buildVarDevTable(index)
+ variable = True
+ otlanchor = otl.buildAnchor(anchor.x, anchor.y, anchor.contourpoint, deviceX, deviceY)
+ if variable:
+ otlanchor.Format = 3
+ return otlanchor
-_VALUEREC_ATTRS = {
- name[0].lower() + name[1:]: (name, isDevice)
- for _, name, isDevice, _ in otBase.valueRecordFormat
- if not name.startswith("Reserved")
-}
+ _VALUEREC_ATTRS = {
+ name[0].lower() + name[1:]: (name, isDevice)
+ for _, name, isDevice, _ in otBase.valueRecordFormat
+ if not name.startswith("Reserved")
+ }
-def makeOpenTypeValueRecord(v, pairPosContext):
- """ast.ValueRecord --> otBase.ValueRecord"""
- if not v:
- return None
+ def makeOpenTypeValueRecord(self, location, v, pairPosContext):
+ """ast.ValueRecord --> otBase.ValueRecord"""
+ if not v:
+ return None
+
+ vr = {}
+ variable = False
+ for astName, (otName, isDevice) in self._VALUEREC_ATTRS.items():
+ val = getattr(v, astName, None)
+ if not val:
+ continue
+ if isDevice:
+ vr[otName] = otl.buildDevice(dict(val))
+ elif isinstance(val, VariableScalar):
+ otDeviceName = otName[0:4] + "Device"
+ feaDeviceName = otDeviceName[0].lower() + otDeviceName[1:]
+ if getattr(v, feaDeviceName):
+ raise FeatureLibError("Can't define a device coordinate and variable scalar", location)
+ if not self.varstorebuilder:
+ raise FeatureLibError("Can't define a variable scalar in a non-variable font", location)
+ val.axes = self.axes
+ default, index = val.add_to_variation_store(self.varstorebuilder)
+ vr[otName] = default
+ if index is not None and index != 0xFFFFFFFF:
+ vr[otDeviceName] = buildVarDevTable(index)
+ variable = True
+ else:
+ vr[otName] = val
- vr = {}
- for astName, (otName, isDevice) in _VALUEREC_ATTRS.items():
- val = getattr(v, astName, None)
- if val:
- vr[otName] = otl.buildDevice(dict(val)) if isDevice else val
- if pairPosContext and not vr:
- vr = {"YAdvance": 0} if v.vertical else {"XAdvance": 0}
- valRec = otl.buildValue(vr)
- return valRec
+ if pairPosContext and not vr:
+ vr = {"YAdvance": 0} if v.vertical else {"XAdvance": 0}
+ valRec = otl.buildValue(vr)
+ return valRec
diff --git a/Lib/fontTools/feaLib/parser.py b/Lib/fontTools/feaLib/parser.py
index 804cba9f..fd53573d 100644
--- a/Lib/fontTools/feaLib/parser.py
+++ b/Lib/fontTools/feaLib/parser.py
@@ -1,7 +1,8 @@
from fontTools.feaLib.error import FeatureLibError
from fontTools.feaLib.lexer import Lexer, IncludingLexer, NonIncludingLexer
+from fontTools.feaLib.variableScalar import VariableScalar
from fontTools.misc.encodingTools import getEncoding
-from fontTools.misc.py23 import bytechr, tobytes, tostr
+from fontTools.misc.textTools import bytechr, tobytes, tostr
import fontTools.feaLib.ast as ast
import logging
import os
@@ -101,6 +102,10 @@ class Parser(object):
statements.append(self.parse_markClass_())
elif self.is_cur_keyword_("feature"):
statements.append(self.parse_feature_block_())
+ elif self.is_cur_keyword_("conditionset"):
+ statements.append(self.parse_conditionset_())
+ elif self.is_cur_keyword_("variation"):
+ statements.append(self.parse_feature_block_(variation=True))
elif self.is_cur_keyword_("table"):
statements.append(self.parse_table_())
elif self.is_cur_keyword_("valueRecordDef"):
@@ -152,7 +157,7 @@ class Parser(object):
location=location,
)
- x, y = self.expect_number_(), self.expect_number_()
+ x, y = self.expect_number_(variable=True), self.expect_number_(variable=True)
contourpoint = None
if self.next_token_ == "contourpoint": # Format B
@@ -380,8 +385,7 @@ class Parser(object):
self.expect_symbol_("-")
range_end = self.expect_cid_()
self.check_glyph_name_in_glyph_set(
- f"cid{range_start:05d}",
- f"cid{range_end:05d}",
+ f"cid{range_start:05d}", f"cid{range_end:05d}",
)
glyphs.add_cid_range(
range_start,
@@ -473,14 +477,38 @@ class Parser(object):
assert lookups == []
return ([], prefix, [None] * len(prefix), values, [], hasMarks)
else:
- assert not any(values[: len(prefix)]), values
- format1 = values[len(prefix) :][: len(glyphs)]
- format2 = values[(len(prefix) + len(glyphs)) :][: len(suffix)]
- values = (
- format2
- if format2 and isinstance(format2[0], self.ast.ValueRecord)
- else format1
- )
+ if any(values[: len(prefix)]):
+ raise FeatureLibError(
+ "Positioning cannot be applied in the bactrack glyph sequence, "
+ "before the marked glyph sequence.",
+ self.cur_token_location_,
+ )
+ marked_values = values[len(prefix) : len(prefix) + len(glyphs)]
+ if any(marked_values):
+ if any(values[len(prefix) + len(glyphs) :]):
+ raise FeatureLibError(
+ "Positioning values are allowed only in the marked glyph "
+ "sequence, or after the final glyph node when only one glyph "
+ "node is marked.",
+ self.cur_token_location_,
+ )
+ values = marked_values
+ elif values and values[-1]:
+ if len(glyphs) > 1 or any(values[:-1]):
+ raise FeatureLibError(
+ "Positioning values are allowed only in the marked glyph "
+ "sequence, or after the final glyph node when only one glyph "
+ "node is marked.",
+ self.cur_token_location_,
+ )
+ values = values[-1:]
+ elif any(values):
+ raise FeatureLibError(
+ "Positioning values are allowed only in the marked glyph "
+ "sequence, or after the final glyph node when only one glyph "
+ "node is marked.",
+ self.cur_token_location_,
+ )
return (prefix, glyphs, lookups, values, suffix, hasMarks)
def parse_chain_context_(self):
@@ -656,6 +684,8 @@ class Parser(object):
assert self.is_cur_keyword_("markClass")
location = self.cur_token_location_
glyphs = self.parse_glyphclass_(accept_glyphname=True)
+ if not glyphs.glyphSet():
+ raise FeatureLibError("Empty glyph class in mark class definition", location)
anchor = self.parse_anchor_()
name = self.expect_class_name_()
self.expect_symbol_(";")
@@ -844,7 +874,7 @@ class Parser(object):
num_lookups = len([l for l in lookups if l is not None])
is_deletion = False
- if len(new) == 1 and len(new[0].glyphSet()) == 0:
+ if len(new) == 1 and isinstance(new[0], ast.NullGlyph):
new = [] # Deletion
is_deletion = True
@@ -868,18 +898,31 @@ class Parser(object):
old, new, old_prefix, old_suffix, forceChain=hasMarks, location=location
)
+ # Glyph deletion, built as GSUB lookup type 2: Multiple substitution
+ # with empty replacement.
+ if is_deletion and len(old) == 1 and num_lookups == 0:
+ return self.ast.MultipleSubstStatement(
+ old_prefix,
+ old[0],
+ old_suffix,
+ (),
+ forceChain=hasMarks,
+ location=location,
+ )
+
# GSUB lookup type 2: Multiple substitution.
# Format: "substitute f_f_i by f f i;"
if (
not reverse
and len(old) == 1
and len(old[0].glyphSet()) == 1
- and (
- (len(new) > 1 and max([len(n.glyphSet()) for n in new]) == 1)
- or len(new) == 0
- )
+ and len(new) > 1
+ and max([len(n.glyphSet()) for n in new]) == 1
and num_lookups == 0
):
+ for n in new:
+ if not list(n.glyphSet()):
+ raise FeatureLibError("Empty class in replacement", location)
return self.ast.MultipleSubstStatement(
old_prefix,
tuple(old[0].glyphSet())[0],
@@ -971,8 +1014,8 @@ class Parser(object):
location = self.cur_token_location_
DesignSize = self.expect_decipoint_()
SubfamilyID = self.expect_number_()
- RangeStart = 0.
- RangeEnd = 0.
+ RangeStart = 0.0
+ RangeEnd = 0.0
if self.next_token_type_ in (Lexer.NUMBER, Lexer.FLOAT) or SubfamilyID != 0:
RangeStart = self.expect_decipoint_()
RangeEnd = self.expect_decipoint_()
@@ -1551,11 +1594,20 @@ class Parser(object):
return result
def is_next_value_(self):
- return self.next_token_type_ is Lexer.NUMBER or self.next_token_ == "<"
+ return (
+ self.next_token_type_ is Lexer.NUMBER
+ or self.next_token_ == "<"
+ or self.next_token_ == "("
+ )
def parse_valuerecord_(self, vertical):
- if self.next_token_type_ is Lexer.NUMBER:
- number, location = self.expect_number_(), self.cur_token_location_
+ if (
+ self.next_token_type_ is Lexer.SYMBOL and self.next_token_ == "("
+ ) or self.next_token_type_ is Lexer.NUMBER:
+ number, location = (
+ self.expect_number_(variable=True),
+ self.cur_token_location_,
+ )
if vertical:
val = self.ast.ValueRecord(
yAdvance=number, vertical=vertical, location=location
@@ -1582,10 +1634,10 @@ class Parser(object):
xAdvance, yAdvance = (value.xAdvance, value.yAdvance)
else:
xPlacement, yPlacement, xAdvance, yAdvance = (
- self.expect_number_(),
- self.expect_number_(),
- self.expect_number_(),
- self.expect_number_(),
+ self.expect_number_(variable=True),
+ self.expect_number_(variable=True),
+ self.expect_number_(variable=True),
+ self.expect_number_(variable=True),
)
if self.next_token_ == "<":
@@ -1645,8 +1697,11 @@ class Parser(object):
self.expect_symbol_(";")
return self.ast.LanguageSystemStatement(script, language, location=location)
- def parse_feature_block_(self):
- assert self.cur_token_ == "feature"
+ def parse_feature_block_(self, variation=False):
+ if variation:
+ assert self.cur_token_ == "variation"
+ else:
+ assert self.cur_token_ == "feature"
location = self.cur_token_location_
tag = self.expect_tag_()
vertical = tag in {"vkrn", "vpal", "vhal", "valt"}
@@ -1661,14 +1716,22 @@ class Parser(object):
elif tag == "size":
size_feature = True
+ if variation:
+ conditionset = self.expect_name_()
+
use_extension = False
if self.next_token_ == "useExtension":
self.expect_keyword_("useExtension")
use_extension = True
- block = self.ast.FeatureBlock(
- tag, use_extension=use_extension, location=location
- )
+ if variation:
+ block = self.ast.VariationBlock(
+ tag, conditionset, use_extension=use_extension, location=location
+ )
+ else:
+ block = self.ast.FeatureBlock(
+ tag, use_extension=use_extension, location=location
+ )
self.parse_block_(block, vertical, stylisticset, size_feature, cv_feature)
return block
@@ -1816,6 +1879,43 @@ class Parser(object):
raise FeatureLibError("Font revision numbers must be positive", location)
return self.ast.FontRevisionStatement(version, location=location)
+ def parse_conditionset_(self):
+ name = self.expect_name_()
+
+ conditions = {}
+ self.expect_symbol_("{")
+
+ while self.next_token_ != "}":
+ self.advance_lexer_()
+ if self.cur_token_type_ is not Lexer.NAME:
+ raise FeatureLibError("Expected an axis name", self.cur_token_location_)
+
+ axis = self.cur_token_
+ if axis in conditions:
+ raise FeatureLibError(
+ f"Repeated condition for axis {axis}", self.cur_token_location_
+ )
+
+ if self.next_token_type_ is Lexer.FLOAT:
+ min_value = self.expect_float_()
+ elif self.next_token_type_ is Lexer.NUMBER:
+ min_value = self.expect_number_(variable=False)
+
+ if self.next_token_type_ is Lexer.FLOAT:
+ max_value = self.expect_float_()
+ elif self.next_token_type_ is Lexer.NUMBER:
+ max_value = self.expect_number_(variable=False)
+ self.expect_symbol_(";")
+
+ conditions[axis] = (min_value, max_value)
+
+ self.expect_symbol_("}")
+
+ finalname = self.expect_name_()
+ if finalname != name:
+ raise FeatureLibError('Expected "%s"' % name, self.cur_token_location_)
+ return self.ast.ConditionsetStatement(name, conditions)
+
def parse_block_(
self, block, vertical, stylisticset=None, size_feature=False, cv_feature=None
):
@@ -2046,12 +2146,51 @@ class Parser(object):
return self.cur_token_
raise FeatureLibError("Expected a name", self.cur_token_location_)
- def expect_number_(self):
+ def expect_number_(self, variable=False):
self.advance_lexer_()
if self.cur_token_type_ is Lexer.NUMBER:
return self.cur_token_
+ if variable and self.cur_token_type_ is Lexer.SYMBOL and self.cur_token_ == "(":
+ return self.expect_variable_scalar_()
raise FeatureLibError("Expected a number", self.cur_token_location_)
+ def expect_variable_scalar_(self):
+ self.advance_lexer_() # "("
+ scalar = VariableScalar()
+ while True:
+ if self.cur_token_type_ == Lexer.SYMBOL and self.cur_token_ == ")":
+ break
+ location, value = self.expect_master_()
+ scalar.add_value(location, value)
+ return scalar
+
+ def expect_master_(self):
+ location = {}
+ while True:
+ if self.cur_token_type_ is not Lexer.NAME:
+ raise FeatureLibError("Expected an axis name", self.cur_token_location_)
+ axis = self.cur_token_
+ self.advance_lexer_()
+ if not (self.cur_token_type_ is Lexer.SYMBOL and self.cur_token_ == "="):
+ raise FeatureLibError(
+ "Expected an equals sign", self.cur_token_location_
+ )
+ value = self.expect_number_()
+ location[axis] = value
+ if self.next_token_type_ is Lexer.NAME and self.next_token_[0] == ":":
+ # Lexer has just read the value as a glyph name. We'll correct it later
+ break
+ self.advance_lexer_()
+ if not (self.cur_token_type_ is Lexer.SYMBOL and self.cur_token_ == ","):
+ raise FeatureLibError(
+ "Expected an comma or an equals sign", self.cur_token_location_
+ )
+ self.advance_lexer_()
+ self.advance_lexer_()
+ value = int(self.cur_token_[1:])
+ self.advance_lexer_()
+ return location, value
+
def expect_any_number_(self):
self.advance_lexer_()
if self.cur_token_type_ in Lexer.NUMBERS:
diff --git a/Lib/fontTools/feaLib/variableScalar.py b/Lib/fontTools/feaLib/variableScalar.py
new file mode 100644
index 00000000..a286568e
--- /dev/null
+++ b/Lib/fontTools/feaLib/variableScalar.py
@@ -0,0 +1,97 @@
+from fontTools.varLib.models import VariationModel, normalizeValue
+
+
+def Location(loc):
+ return tuple(sorted(loc.items()))
+
+
+class VariableScalar:
+ """A scalar with different values at different points in the designspace."""
+
+ def __init__(self, location_value={}):
+ self.values = {}
+ self.axes = {}
+ for location, value in location_value.items():
+ self.add_value(location, value)
+
+ def __repr__(self):
+ items = []
+ for location, value in self.values.items():
+ loc = ",".join(["%s=%i" % (ax, loc) for ax, loc in location])
+ items.append("%s:%i" % (loc, value))
+ return "(" + (" ".join(items)) + ")"
+
+ @property
+ def does_vary(self):
+ values = list(self.values.values())
+ return any(v != values[0] for v in values[1:])
+
+ @property
+ def axes_dict(self):
+ if not self.axes:
+ raise ValueError(
+ ".axes must be defined on variable scalar before interpolating"
+ )
+ return {ax.axisTag: ax for ax in self.axes}
+
+ def _normalized_location(self, location):
+ location = self.fix_location(location)
+ normalized_location = {}
+ for axtag in location.keys():
+ if axtag not in self.axes_dict:
+ raise ValueError("Unknown axis %s in %s" % (axtag, location))
+ axis = self.axes_dict[axtag]
+ normalized_location[axtag] = normalizeValue(
+ location[axtag], (axis.minValue, axis.defaultValue, axis.maxValue)
+ )
+
+ return Location(normalized_location)
+
+ def fix_location(self, location):
+ location = dict(location)
+ for tag, axis in self.axes_dict.items():
+ if tag not in location:
+ location[tag] = axis.defaultValue
+ return location
+
+ def add_value(self, location, value):
+ if self.axes:
+ location = self.fix_location(location)
+
+ self.values[Location(location)] = value
+
+ def fix_all_locations(self):
+ self.values = {
+ Location(self.fix_location(l)): v for l, v in self.values.items()
+ }
+
+ @property
+ def default(self):
+ self.fix_all_locations()
+ key = Location({ax.axisTag: ax.defaultValue for ax in self.axes})
+ if key not in self.values:
+ raise ValueError("Default value could not be found")
+ # I *guess* we could interpolate one, but I don't know how.
+ return self.values[key]
+
+ def value_at_location(self, location):
+ loc = location
+ if loc in self.values.keys():
+ return self.values[loc]
+ values = list(self.values.values())
+ return self.model.interpolateFromMasters(loc, values)
+
+ @property
+ def model(self):
+ locations = [dict(self._normalized_location(k)) for k in self.values.keys()]
+ return VariationModel(locations)
+
+ def get_deltas_and_supports(self):
+ values = list(self.values.values())
+ return self.model.getDeltasAndSupports(values)
+
+ def add_to_variation_store(self, store_builder):
+ deltas, supports = self.get_deltas_and_supports()
+ store_builder.setSupports(supports)
+ index = store_builder.storeDeltas(deltas)
+ return int(self.default), index
diff --git a/Lib/fontTools/fontBuilder.py b/Lib/fontTools/fontBuilder.py
index e2824084..bf3b31b7 100644
--- a/Lib/fontTools/fontBuilder.py
+++ b/Lib/fontTools/fontBuilder.py
@@ -834,7 +834,14 @@ class FontBuilder(object):
self.font, conditionalSubstitutions, featureTag=featureTag
)
- def setupCOLR(self, colorLayers, version=None, varStore=None):
+ def setupCOLR(
+ self,
+ colorLayers,
+ version=None,
+ varStore=None,
+ varIndexMap=None,
+ clipBoxes=None,
+ ):
"""Build new COLR table using color layers dictionary.
Cf. `fontTools.colorLib.builder.buildCOLR`.
@@ -843,7 +850,12 @@ class FontBuilder(object):
glyphMap = self.font.getReverseGlyphMap()
self.font["COLR"] = buildCOLR(
- colorLayers, version=version, glyphMap=glyphMap, varStore=varStore
+ colorLayers,
+ version=version,
+ glyphMap=glyphMap,
+ varStore=varStore,
+ varIndexMap=varIndexMap,
+ clipBoxes=clipBoxes,
)
def setupCPAL(
diff --git a/Lib/fontTools/help.py b/Lib/fontTools/help.py
index ff8048d5..4334e500 100644
--- a/Lib/fontTools/help.py
+++ b/Lib/fontTools/help.py
@@ -22,7 +22,8 @@ def main():
description = imports.main.__doc__
if description:
pkg = pkg.replace("fontTools.", "").replace(".__main__", "")
- descriptions[pkg] = description
+ # show the docstring's first line only
+ descriptions[pkg] = description.splitlines()[0]
except AttributeError as e:
pass
for pkg, description in descriptions.items():
diff --git a/Lib/fontTools/merge.py b/Lib/fontTools/merge.py
deleted file mode 100644
index 2df22a8d..00000000
--- a/Lib/fontTools/merge.py
+++ /dev/null
@@ -1,1205 +0,0 @@
-# Copyright 2013 Google, Inc. All Rights Reserved.
-#
-# Google Author(s): Behdad Esfahbod, Roozbeh Pournader
-
-from fontTools.misc.timeTools import timestampNow
-from fontTools import ttLib, cffLib
-from fontTools.ttLib.tables import otTables, _h_e_a_d
-from fontTools.ttLib.tables.DefaultTable import DefaultTable
-from fontTools.misc.loggingTools import Timer
-from fontTools.pens.recordingPen import DecomposingRecordingPen
-from functools import reduce
-import sys
-import time
-import operator
-import logging
-
-
-log = logging.getLogger("fontTools.merge")
-timer = Timer(logger=logging.getLogger(__name__+".timer"), level=logging.INFO)
-
-
-def _add_method(*clazzes, **kwargs):
- """Returns a decorator function that adds a new method to one or
- more classes."""
- allowDefault = kwargs.get('allowDefaultTable', False)
- def wrapper(method):
- done = []
- for clazz in clazzes:
- if clazz in done: continue # Support multiple names of a clazz
- done.append(clazz)
- assert allowDefault or clazz != DefaultTable, 'Oops, table class not found.'
- assert method.__name__ not in clazz.__dict__, \
- "Oops, class '%s' has method '%s'." % (clazz.__name__, method.__name__)
- setattr(clazz, method.__name__, method)
- return None
- return wrapper
-
-# General utility functions for merging values from different fonts
-
-def equal(lst):
- lst = list(lst)
- t = iter(lst)
- first = next(t)
- assert all(item == first for item in t), "Expected all items to be equal: %s" % lst
- return first
-
-def first(lst):
- return next(iter(lst))
-
-def recalculate(lst):
- return NotImplemented
-
-def current_time(lst):
- return timestampNow()
-
-def bitwise_and(lst):
- return reduce(operator.and_, lst)
-
-def bitwise_or(lst):
- return reduce(operator.or_, lst)
-
-def avg_int(lst):
- lst = list(lst)
- return sum(lst) // len(lst)
-
-def onlyExisting(func):
- """Returns a filter func that when called with a list,
- only calls func on the non-NotImplemented items of the list,
- and only so if there's at least one item remaining.
- Otherwise returns NotImplemented."""
-
- def wrapper(lst):
- items = [item for item in lst if item is not NotImplemented]
- return func(items) if items else NotImplemented
-
- return wrapper
-
-def sumLists(lst):
- l = []
- for item in lst:
- l.extend(item)
- return l
-
-def sumDicts(lst):
- d = {}
- for item in lst:
- d.update(item)
- return d
-
-def mergeObjects(lst):
- lst = [item for item in lst if item is not NotImplemented]
- if not lst:
- return NotImplemented
- lst = [item for item in lst if item is not None]
- if not lst:
- return None
-
- clazz = lst[0].__class__
- assert all(type(item) == clazz for item in lst), lst
-
- logic = clazz.mergeMap
- returnTable = clazz()
- returnDict = {}
-
- allKeys = set.union(set(), *(vars(table).keys() for table in lst))
- for key in allKeys:
- try:
- mergeLogic = logic[key]
- except KeyError:
- try:
- mergeLogic = logic['*']
- except KeyError:
- raise Exception("Don't know how to merge key %s of class %s" %
- (key, clazz.__name__))
- if mergeLogic is NotImplemented:
- continue
- value = mergeLogic(getattr(table, key, NotImplemented) for table in lst)
- if value is not NotImplemented:
- returnDict[key] = value
-
- returnTable.__dict__ = returnDict
-
- return returnTable
-
-def mergeBits(bitmap):
-
- def wrapper(lst):
- lst = list(lst)
- returnValue = 0
- for bitNumber in range(bitmap['size']):
- try:
- mergeLogic = bitmap[bitNumber]
- except KeyError:
- try:
- mergeLogic = bitmap['*']
- except KeyError:
- raise Exception("Don't know how to merge bit %s" % bitNumber)
- shiftedBit = 1 << bitNumber
- mergedValue = mergeLogic(bool(item & shiftedBit) for item in lst)
- returnValue |= mergedValue << bitNumber
- return returnValue
-
- return wrapper
-
-
-@_add_method(DefaultTable, allowDefaultTable=True)
-def merge(self, m, tables):
- if not hasattr(self, 'mergeMap'):
- log.info("Don't know how to merge '%s'.", self.tableTag)
- return NotImplemented
-
- logic = self.mergeMap
-
- if isinstance(logic, dict):
- return m.mergeObjects(self, self.mergeMap, tables)
- else:
- return logic(tables)
-
-
-ttLib.getTableClass('maxp').mergeMap = {
- '*': max,
- 'tableTag': equal,
- 'tableVersion': equal,
- 'numGlyphs': sum,
- 'maxStorage': first,
- 'maxFunctionDefs': first,
- 'maxInstructionDefs': first,
- # TODO When we correctly merge hinting data, update these values:
- # maxFunctionDefs, maxInstructionDefs, maxSizeOfInstructions
-}
-
-headFlagsMergeBitMap = {
- 'size': 16,
- '*': bitwise_or,
- 1: bitwise_and, # Baseline at y = 0
- 2: bitwise_and, # lsb at x = 0
- 3: bitwise_and, # Force ppem to integer values. FIXME?
- 5: bitwise_and, # Font is vertical
- 6: lambda bit: 0, # Always set to zero
- 11: bitwise_and, # Font data is 'lossless'
- 13: bitwise_and, # Optimized for ClearType
- 14: bitwise_and, # Last resort font. FIXME? equal or first may be better
- 15: lambda bit: 0, # Always set to zero
-}
-
-ttLib.getTableClass('head').mergeMap = {
- 'tableTag': equal,
- 'tableVersion': max,
- 'fontRevision': max,
- 'checkSumAdjustment': lambda lst: 0, # We need *something* here
- 'magicNumber': equal,
- 'flags': mergeBits(headFlagsMergeBitMap),
- 'unitsPerEm': equal,
- 'created': current_time,
- 'modified': current_time,
- 'xMin': min,
- 'yMin': min,
- 'xMax': max,
- 'yMax': max,
- 'macStyle': first,
- 'lowestRecPPEM': max,
- 'fontDirectionHint': lambda lst: 2,
- 'indexToLocFormat': recalculate,
- 'glyphDataFormat': equal,
-}
-
-ttLib.getTableClass('hhea').mergeMap = {
- '*': equal,
- 'tableTag': equal,
- 'tableVersion': max,
- 'ascent': max,
- 'descent': min,
- 'lineGap': max,
- 'advanceWidthMax': max,
- 'minLeftSideBearing': min,
- 'minRightSideBearing': min,
- 'xMaxExtent': max,
- 'caretSlopeRise': first,
- 'caretSlopeRun': first,
- 'caretOffset': first,
- 'numberOfHMetrics': recalculate,
-}
-
-ttLib.getTableClass('vhea').mergeMap = {
- '*': equal,
- 'tableTag': equal,
- 'tableVersion': max,
- 'ascent': max,
- 'descent': min,
- 'lineGap': max,
- 'advanceHeightMax': max,
- 'minTopSideBearing': min,
- 'minBottomSideBearing': min,
- 'yMaxExtent': max,
- 'caretSlopeRise': first,
- 'caretSlopeRun': first,
- 'caretOffset': first,
- 'numberOfVMetrics': recalculate,
-}
-
-os2FsTypeMergeBitMap = {
- 'size': 16,
- '*': lambda bit: 0,
- 1: bitwise_or, # no embedding permitted
- 2: bitwise_and, # allow previewing and printing documents
- 3: bitwise_and, # allow editing documents
- 8: bitwise_or, # no subsetting permitted
- 9: bitwise_or, # no embedding of outlines permitted
-}
-
-def mergeOs2FsType(lst):
- lst = list(lst)
- if all(item == 0 for item in lst):
- return 0
-
- # Compute least restrictive logic for each fsType value
- for i in range(len(lst)):
- # unset bit 1 (no embedding permitted) if either bit 2 or 3 is set
- if lst[i] & 0x000C:
- lst[i] &= ~0x0002
- # set bit 2 (allow previewing) if bit 3 is set (allow editing)
- elif lst[i] & 0x0008:
- lst[i] |= 0x0004
- # set bits 2 and 3 if everything is allowed
- elif lst[i] == 0:
- lst[i] = 0x000C
-
- fsType = mergeBits(os2FsTypeMergeBitMap)(lst)
- # unset bits 2 and 3 if bit 1 is set (some font is "no embedding")
- if fsType & 0x0002:
- fsType &= ~0x000C
- return fsType
-
-
-ttLib.getTableClass('OS/2').mergeMap = {
- '*': first,
- 'tableTag': equal,
- 'version': max,
- 'xAvgCharWidth': avg_int, # Apparently fontTools doesn't recalc this
- 'fsType': mergeOs2FsType, # Will be overwritten
- 'panose': first, # FIXME: should really be the first Latin font
- 'ulUnicodeRange1': bitwise_or,
- 'ulUnicodeRange2': bitwise_or,
- 'ulUnicodeRange3': bitwise_or,
- 'ulUnicodeRange4': bitwise_or,
- 'fsFirstCharIndex': min,
- 'fsLastCharIndex': max,
- 'sTypoAscender': max,
- 'sTypoDescender': min,
- 'sTypoLineGap': max,
- 'usWinAscent': max,
- 'usWinDescent': max,
- # Version 1
- 'ulCodePageRange1': onlyExisting(bitwise_or),
- 'ulCodePageRange2': onlyExisting(bitwise_or),
- # Version 2, 3, 4
- 'sxHeight': onlyExisting(max),
- 'sCapHeight': onlyExisting(max),
- 'usDefaultChar': onlyExisting(first),
- 'usBreakChar': onlyExisting(first),
- 'usMaxContext': onlyExisting(max),
- # version 5
- 'usLowerOpticalPointSize': onlyExisting(min),
- 'usUpperOpticalPointSize': onlyExisting(max),
-}
-
-@_add_method(ttLib.getTableClass('OS/2'))
-def merge(self, m, tables):
- DefaultTable.merge(self, m, tables)
- if self.version < 2:
- # bits 8 and 9 are reserved and should be set to zero
- self.fsType &= ~0x0300
- if self.version >= 3:
- # Only one of bits 1, 2, and 3 may be set. We already take
- # care of bit 1 implications in mergeOs2FsType. So unset
- # bit 2 if bit 3 is already set.
- if self.fsType & 0x0008:
- self.fsType &= ~0x0004
- return self
-
-ttLib.getTableClass('post').mergeMap = {
- '*': first,
- 'tableTag': equal,
- 'formatType': max,
- 'isFixedPitch': min,
- 'minMemType42': max,
- 'maxMemType42': lambda lst: 0,
- 'minMemType1': max,
- 'maxMemType1': lambda lst: 0,
- 'mapping': onlyExisting(sumDicts),
- 'extraNames': lambda lst: [],
-}
-
-ttLib.getTableClass('vmtx').mergeMap = ttLib.getTableClass('hmtx').mergeMap = {
- 'tableTag': equal,
- 'metrics': sumDicts,
-}
-
-ttLib.getTableClass('name').mergeMap = {
- 'tableTag': equal,
- 'names': first, # FIXME? Does mixing name records make sense?
-}
-
-ttLib.getTableClass('loca').mergeMap = {
- '*': recalculate,
- 'tableTag': equal,
-}
-
-ttLib.getTableClass('glyf').mergeMap = {
- 'tableTag': equal,
- 'glyphs': sumDicts,
- 'glyphOrder': sumLists,
-}
-
-@_add_method(ttLib.getTableClass('glyf'))
-def merge(self, m, tables):
- for i,table in enumerate(tables):
- for g in table.glyphs.values():
- if i:
- # Drop hints for all but first font, since
- # we don't map functions / CVT values.
- g.removeHinting()
- # Expand composite glyphs to load their
- # composite glyph names.
- if g.isComposite():
- g.expand(table)
- return DefaultTable.merge(self, m, tables)
-
-ttLib.getTableClass('prep').mergeMap = lambda self, lst: first(lst)
-ttLib.getTableClass('fpgm').mergeMap = lambda self, lst: first(lst)
-ttLib.getTableClass('cvt ').mergeMap = lambda self, lst: first(lst)
-ttLib.getTableClass('gasp').mergeMap = lambda self, lst: first(lst) # FIXME? Appears irreconcilable
-
-def _glyphsAreSame(glyphSet1, glyphSet2, glyph1, glyph2):
- pen1 = DecomposingRecordingPen(glyphSet1)
- pen2 = DecomposingRecordingPen(glyphSet2)
- g1 = glyphSet1[glyph1]
- g2 = glyphSet2[glyph2]
- g1.draw(pen1)
- g2.draw(pen2)
- return (pen1.value == pen2.value and
- g1.width == g2.width and
- (not hasattr(g1, 'height') or g1.height == g2.height))
-
-# Valid (format, platformID, platEncID) triplets for cmap subtables containing
-# Unicode BMP-only and Unicode Full Repertoire semantics.
-# Cf. OpenType spec for "Platform specific encodings":
-# https://docs.microsoft.com/en-us/typography/opentype/spec/name
-class CmapUnicodePlatEncodings:
- BMP = {(4, 3, 1), (4, 0, 3), (4, 0, 4), (4, 0, 6)}
- FullRepertoire = {(12, 3, 10), (12, 0, 4), (12, 0, 6)}
-
-@_add_method(ttLib.getTableClass('cmap'))
-def merge(self, m, tables):
- # TODO Handle format=14.
- # Only merge format 4 and 12 Unicode subtables, ignores all other subtables
- # If there is a format 12 table for the same font, ignore the format 4 table
- cmapTables = []
- for fontIdx,table in enumerate(tables):
- format4 = None
- format12 = None
- for subtable in table.tables:
- properties = (subtable.format, subtable.platformID, subtable.platEncID)
- if properties in CmapUnicodePlatEncodings.BMP:
- format4 = subtable
- elif properties in CmapUnicodePlatEncodings.FullRepertoire:
- format12 = subtable
- else:
- log.warning(
- "Dropped cmap subtable from font [%s]:\t"
- "format %2s, platformID %2s, platEncID %2s",
- fontIdx, subtable.format, subtable.platformID, subtable.platEncID
- )
- if format12 is not None:
- cmapTables.append((format12, fontIdx))
- elif format4 is not None:
- cmapTables.append((format4, fontIdx))
-
- # Build a unicode mapping, then decide which format is needed to store it.
- cmap = {}
- fontIndexForGlyph = {}
- glyphSets = [None for f in m.fonts] if hasattr(m, 'fonts') else None
- for table,fontIdx in cmapTables:
- # handle duplicates
- for uni,gid in table.cmap.items():
- oldgid = cmap.get(uni, None)
- if oldgid is None:
- cmap[uni] = gid
- fontIndexForGlyph[gid] = fontIdx
- elif oldgid != gid:
- # Char previously mapped to oldgid, now to gid.
- # Record, to fix up in GSUB 'locl' later.
- if m.duplicateGlyphsPerFont[fontIdx].get(oldgid) is None:
- if glyphSets is not None:
- oldFontIdx = fontIndexForGlyph[oldgid]
- for idx in (fontIdx, oldFontIdx):
- if glyphSets[idx] is None:
- glyphSets[idx] = m.fonts[idx].getGlyphSet()
- if _glyphsAreSame(glyphSets[oldFontIdx], glyphSets[fontIdx], oldgid, gid):
- continue
- m.duplicateGlyphsPerFont[fontIdx][oldgid] = gid
- elif m.duplicateGlyphsPerFont[fontIdx][oldgid] != gid:
- # Char previously mapped to oldgid but oldgid is already remapped to a different
- # gid, because of another Unicode character.
- # TODO: Try harder to do something about these.
- log.warning("Dropped mapping from codepoint %#06X to glyphId '%s'", uni, gid)
-
- cmapBmpOnly = {uni: gid for uni,gid in cmap.items() if uni <= 0xFFFF}
- self.tables = []
- module = ttLib.getTableModule('cmap')
- if len(cmapBmpOnly) != len(cmap):
- # format-12 required.
- cmapTable = module.cmap_classes[12](12)
- cmapTable.platformID = 3
- cmapTable.platEncID = 10
- cmapTable.language = 0
- cmapTable.cmap = cmap
- self.tables.append(cmapTable)
- # always create format-4
- cmapTable = module.cmap_classes[4](4)
- cmapTable.platformID = 3
- cmapTable.platEncID = 1
- cmapTable.language = 0
- cmapTable.cmap = cmapBmpOnly
- # ordered by platform then encoding
- self.tables.insert(0, cmapTable)
- self.tableVersion = 0
- self.numSubTables = len(self.tables)
- return self
-
-
-def mergeLookupLists(lst):
- # TODO Do smarter merge.
- return sumLists(lst)
-
-def mergeFeatures(lst):
- assert lst
- self = otTables.Feature()
- self.FeatureParams = None
- self.LookupListIndex = mergeLookupLists([l.LookupListIndex for l in lst if l.LookupListIndex])
- self.LookupCount = len(self.LookupListIndex)
- return self
-
-def mergeFeatureLists(lst):
- d = {}
- for l in lst:
- for f in l:
- tag = f.FeatureTag
- if tag not in d:
- d[tag] = []
- d[tag].append(f.Feature)
- ret = []
- for tag in sorted(d.keys()):
- rec = otTables.FeatureRecord()
- rec.FeatureTag = tag
- rec.Feature = mergeFeatures(d[tag])
- ret.append(rec)
- return ret
-
-def mergeLangSyses(lst):
- assert lst
-
- # TODO Support merging ReqFeatureIndex
- assert all(l.ReqFeatureIndex == 0xFFFF for l in lst)
-
- self = otTables.LangSys()
- self.LookupOrder = None
- self.ReqFeatureIndex = 0xFFFF
- self.FeatureIndex = mergeFeatureLists([l.FeatureIndex for l in lst if l.FeatureIndex])
- self.FeatureCount = len(self.FeatureIndex)
- return self
-
-def mergeScripts(lst):
- assert lst
-
- if len(lst) == 1:
- return lst[0]
- langSyses = {}
- for sr in lst:
- for lsr in sr.LangSysRecord:
- if lsr.LangSysTag not in langSyses:
- langSyses[lsr.LangSysTag] = []
- langSyses[lsr.LangSysTag].append(lsr.LangSys)
- lsrecords = []
- for tag, langSys_list in sorted(langSyses.items()):
- lsr = otTables.LangSysRecord()
- lsr.LangSys = mergeLangSyses(langSys_list)
- lsr.LangSysTag = tag
- lsrecords.append(lsr)
-
- self = otTables.Script()
- self.LangSysRecord = lsrecords
- self.LangSysCount = len(lsrecords)
- dfltLangSyses = [s.DefaultLangSys for s in lst if s.DefaultLangSys]
- if dfltLangSyses:
- self.DefaultLangSys = mergeLangSyses(dfltLangSyses)
- else:
- self.DefaultLangSys = None
- return self
-
-def mergeScriptRecords(lst):
- d = {}
- for l in lst:
- for s in l:
- tag = s.ScriptTag
- if tag not in d:
- d[tag] = []
- d[tag].append(s.Script)
- ret = []
- for tag in sorted(d.keys()):
- rec = otTables.ScriptRecord()
- rec.ScriptTag = tag
- rec.Script = mergeScripts(d[tag])
- ret.append(rec)
- return ret
-
-otTables.ScriptList.mergeMap = {
- 'ScriptCount': lambda lst: None, # TODO
- 'ScriptRecord': mergeScriptRecords,
-}
-otTables.BaseScriptList.mergeMap = {
- 'BaseScriptCount': lambda lst: None, # TODO
- # TODO: Merge duplicate entries
- 'BaseScriptRecord': lambda lst: sorted(sumLists(lst), key=lambda s: s.BaseScriptTag),
-}
-
-otTables.FeatureList.mergeMap = {
- 'FeatureCount': sum,
- 'FeatureRecord': lambda lst: sorted(sumLists(lst), key=lambda s: s.FeatureTag),
-}
-
-otTables.LookupList.mergeMap = {
- 'LookupCount': sum,
- 'Lookup': sumLists,
-}
-
-otTables.Coverage.mergeMap = {
- 'Format': min,
- 'glyphs': sumLists,
-}
-
-otTables.ClassDef.mergeMap = {
- 'Format': min,
- 'classDefs': sumDicts,
-}
-
-otTables.LigCaretList.mergeMap = {
- 'Coverage': mergeObjects,
- 'LigGlyphCount': sum,
- 'LigGlyph': sumLists,
-}
-
-otTables.AttachList.mergeMap = {
- 'Coverage': mergeObjects,
- 'GlyphCount': sum,
- 'AttachPoint': sumLists,
-}
-
-# XXX Renumber MarkFilterSets of lookups
-otTables.MarkGlyphSetsDef.mergeMap = {
- 'MarkSetTableFormat': equal,
- 'MarkSetCount': sum,
- 'Coverage': sumLists,
-}
-
-otTables.Axis.mergeMap = {
- '*': mergeObjects,
-}
-
-# XXX Fix BASE table merging
-otTables.BaseTagList.mergeMap = {
- 'BaseTagCount': sum,
- 'BaselineTag': sumLists,
-}
-
-otTables.GDEF.mergeMap = \
-otTables.GSUB.mergeMap = \
-otTables.GPOS.mergeMap = \
-otTables.BASE.mergeMap = \
-otTables.JSTF.mergeMap = \
-otTables.MATH.mergeMap = \
-{
- '*': mergeObjects,
- 'Version': max,
-}
-
-ttLib.getTableClass('GDEF').mergeMap = \
-ttLib.getTableClass('GSUB').mergeMap = \
-ttLib.getTableClass('GPOS').mergeMap = \
-ttLib.getTableClass('BASE').mergeMap = \
-ttLib.getTableClass('JSTF').mergeMap = \
-ttLib.getTableClass('MATH').mergeMap = \
-{
- 'tableTag': onlyExisting(equal), # XXX clean me up
- 'table': mergeObjects,
-}
-
-@_add_method(ttLib.getTableClass('GSUB'))
-def merge(self, m, tables):
-
- assert len(tables) == len(m.duplicateGlyphsPerFont)
- for i,(table,dups) in enumerate(zip(tables, m.duplicateGlyphsPerFont)):
- if not dups: continue
- assert (table is not None and table is not NotImplemented), "Have duplicates to resolve for font %d but no GSUB: %s" % (i + 1, dups)
- synthFeature = None
- synthLookup = None
- for script in table.table.ScriptList.ScriptRecord:
- if script.ScriptTag == 'DFLT': continue # XXX
- for langsys in [script.Script.DefaultLangSys] + [l.LangSys for l in script.Script.LangSysRecord]:
- if langsys is None: continue # XXX Create!
- feature = [v for v in langsys.FeatureIndex if v.FeatureTag == 'locl']
- assert len(feature) <= 1
- if feature:
- feature = feature[0]
- else:
- if not synthFeature:
- synthFeature = otTables.FeatureRecord()
- synthFeature.FeatureTag = 'locl'
- f = synthFeature.Feature = otTables.Feature()
- f.FeatureParams = None
- f.LookupCount = 0
- f.LookupListIndex = []
- langsys.FeatureIndex.append(synthFeature)
- langsys.FeatureIndex.sort(key=lambda v: v.FeatureTag)
- table.table.FeatureList.FeatureRecord.append(synthFeature)
- table.table.FeatureList.FeatureCount += 1
- feature = synthFeature
-
- if not synthLookup:
- subtable = otTables.SingleSubst()
- subtable.mapping = dups
- synthLookup = otTables.Lookup()
- synthLookup.LookupFlag = 0
- synthLookup.LookupType = 1
- synthLookup.SubTableCount = 1
- synthLookup.SubTable = [subtable]
- if table.table.LookupList is None:
- # mtiLib uses None as default value for LookupList,
- # while feaLib points to an empty array with count 0
- # TODO: make them do the same
- table.table.LookupList = otTables.LookupList()
- table.table.LookupList.Lookup = []
- table.table.LookupList.LookupCount = 0
- table.table.LookupList.Lookup.append(synthLookup)
- table.table.LookupList.LookupCount += 1
-
- feature.Feature.LookupListIndex[:0] = [synthLookup]
- feature.Feature.LookupCount += 1
-
- DefaultTable.merge(self, m, tables)
- return self
-
-@_add_method(otTables.SingleSubst,
- otTables.MultipleSubst,
- otTables.AlternateSubst,
- otTables.LigatureSubst,
- otTables.ReverseChainSingleSubst,
- otTables.SinglePos,
- otTables.PairPos,
- otTables.CursivePos,
- otTables.MarkBasePos,
- otTables.MarkLigPos,
- otTables.MarkMarkPos)
-def mapLookups(self, lookupMap):
- pass
-
-# Copied and trimmed down from subset.py
-@_add_method(otTables.ContextSubst,
- otTables.ChainContextSubst,
- otTables.ContextPos,
- otTables.ChainContextPos)
-def __merge_classify_context(self):
-
- class ContextHelper(object):
- def __init__(self, klass, Format):
- if klass.__name__.endswith('Subst'):
- Typ = 'Sub'
- Type = 'Subst'
- else:
- Typ = 'Pos'
- Type = 'Pos'
- if klass.__name__.startswith('Chain'):
- Chain = 'Chain'
- else:
- Chain = ''
- ChainTyp = Chain+Typ
-
- self.Typ = Typ
- self.Type = Type
- self.Chain = Chain
- self.ChainTyp = ChainTyp
-
- self.LookupRecord = Type+'LookupRecord'
-
- if Format == 1:
- self.Rule = ChainTyp+'Rule'
- self.RuleSet = ChainTyp+'RuleSet'
- elif Format == 2:
- self.Rule = ChainTyp+'ClassRule'
- self.RuleSet = ChainTyp+'ClassSet'
-
- if self.Format not in [1, 2, 3]:
- return None # Don't shoot the messenger; let it go
- if not hasattr(self.__class__, "_merge__ContextHelpers"):
- self.__class__._merge__ContextHelpers = {}
- if self.Format not in self.__class__._merge__ContextHelpers:
- helper = ContextHelper(self.__class__, self.Format)
- self.__class__._merge__ContextHelpers[self.Format] = helper
- return self.__class__._merge__ContextHelpers[self.Format]
-
-
-@_add_method(otTables.ContextSubst,
- otTables.ChainContextSubst,
- otTables.ContextPos,
- otTables.ChainContextPos)
-def mapLookups(self, lookupMap):
- c = self.__merge_classify_context()
-
- if self.Format in [1, 2]:
- for rs in getattr(self, c.RuleSet):
- if not rs: continue
- for r in getattr(rs, c.Rule):
- if not r: continue
- for ll in getattr(r, c.LookupRecord):
- if not ll: continue
- ll.LookupListIndex = lookupMap[ll.LookupListIndex]
- elif self.Format == 3:
- for ll in getattr(self, c.LookupRecord):
- if not ll: continue
- ll.LookupListIndex = lookupMap[ll.LookupListIndex]
- else:
- assert 0, "unknown format: %s" % self.Format
-
-@_add_method(otTables.ExtensionSubst,
- otTables.ExtensionPos)
-def mapLookups(self, lookupMap):
- if self.Format == 1:
- self.ExtSubTable.mapLookups(lookupMap)
- else:
- assert 0, "unknown format: %s" % self.Format
-
-@_add_method(otTables.Lookup)
-def mapLookups(self, lookupMap):
- for st in self.SubTable:
- if not st: continue
- st.mapLookups(lookupMap)
-
-@_add_method(otTables.LookupList)
-def mapLookups(self, lookupMap):
- for l in self.Lookup:
- if not l: continue
- l.mapLookups(lookupMap)
-
-@_add_method(otTables.Feature)
-def mapLookups(self, lookupMap):
- self.LookupListIndex = [lookupMap[i] for i in self.LookupListIndex]
-
-@_add_method(otTables.FeatureList)
-def mapLookups(self, lookupMap):
- for f in self.FeatureRecord:
- if not f or not f.Feature: continue
- f.Feature.mapLookups(lookupMap)
-
-@_add_method(otTables.DefaultLangSys,
- otTables.LangSys)
-def mapFeatures(self, featureMap):
- self.FeatureIndex = [featureMap[i] for i in self.FeatureIndex]
- if self.ReqFeatureIndex != 65535:
- self.ReqFeatureIndex = featureMap[self.ReqFeatureIndex]
-
-@_add_method(otTables.Script)
-def mapFeatures(self, featureMap):
- if self.DefaultLangSys:
- self.DefaultLangSys.mapFeatures(featureMap)
- for l in self.LangSysRecord:
- if not l or not l.LangSys: continue
- l.LangSys.mapFeatures(featureMap)
-
-@_add_method(otTables.ScriptList)
-def mapFeatures(self, featureMap):
- for s in self.ScriptRecord:
- if not s or not s.Script: continue
- s.Script.mapFeatures(featureMap)
-
-
-class Options(object):
-
- class UnknownOptionError(Exception):
- pass
-
- def __init__(self, **kwargs):
-
- self.verbose = False
- self.timing = False
-
- self.set(**kwargs)
-
- def set(self, **kwargs):
- for k,v in kwargs.items():
- if not hasattr(self, k):
- raise self.UnknownOptionError("Unknown option '%s'" % k)
- setattr(self, k, v)
-
- def parse_opts(self, argv, ignore_unknown=[]):
- ret = []
- opts = {}
- for a in argv:
- orig_a = a
- if not a.startswith('--'):
- ret.append(a)
- continue
- a = a[2:]
- i = a.find('=')
- op = '='
- if i == -1:
- if a.startswith("no-"):
- k = a[3:]
- v = False
- else:
- k = a
- v = True
- else:
- k = a[:i]
- if k[-1] in "-+":
- op = k[-1]+'=' # Ops is '-=' or '+=' now.
- k = k[:-1]
- v = a[i+1:]
- k = k.replace('-', '_')
- if not hasattr(self, k):
- if ignore_unknown is True or k in ignore_unknown:
- ret.append(orig_a)
- continue
- else:
- raise self.UnknownOptionError("Unknown option '%s'" % a)
-
- ov = getattr(self, k)
- if isinstance(ov, bool):
- v = bool(v)
- elif isinstance(ov, int):
- v = int(v)
- elif isinstance(ov, list):
- vv = v.split(',')
- if vv == ['']:
- vv = []
- vv = [int(x, 0) if len(x) and x[0] in "0123456789" else x for x in vv]
- if op == '=':
- v = vv
- elif op == '+=':
- v = ov
- v.extend(vv)
- elif op == '-=':
- v = ov
- for x in vv:
- if x in v:
- v.remove(x)
- else:
- assert 0
-
- opts[k] = v
- self.set(**opts)
-
- return ret
-
-class _AttendanceRecordingIdentityDict(object):
- """A dictionary-like object that records indices of items actually accessed
- from a list."""
-
- def __init__(self, lst):
- self.l = lst
- self.d = {id(v):i for i,v in enumerate(lst)}
- self.s = set()
-
- def __getitem__(self, v):
- self.s.add(self.d[id(v)])
- return v
-
-class _GregariousIdentityDict(object):
- """A dictionary-like object that welcomes guests without reservations and
- adds them to the end of the guest list."""
-
- def __init__(self, lst):
- self.l = lst
- self.s = set(id(v) for v in lst)
-
- def __getitem__(self, v):
- if id(v) not in self.s:
- self.s.add(id(v))
- self.l.append(v)
- return v
-
-class _NonhashableDict(object):
- """A dictionary-like object mapping objects to values."""
-
- def __init__(self, keys, values=None):
- if values is None:
- self.d = {id(v):i for i,v in enumerate(keys)}
- else:
- self.d = {id(k):v for k,v in zip(keys, values)}
-
- def __getitem__(self, k):
- return self.d[id(k)]
-
- def __setitem__(self, k, v):
- self.d[id(k)] = v
-
- def __delitem__(self, k):
- del self.d[id(k)]
-
-class Merger(object):
- """Font merger.
-
- This class merges multiple files into a single OpenType font, taking into
- account complexities such as OpenType layout (``GSUB``/``GPOS``) tables and
- cross-font metrics (e.g. ``hhea.ascent`` is set to the maximum value across
- all the fonts).
-
- If multiple glyphs map to the same Unicode value, and the glyphs are considered
- sufficiently different (that is, they differ in any of paths, widths, or
- height), then subsequent glyphs are renamed and a lookup in the ``locl``
- feature will be created to disambiguate them. For example, if the arguments
- are an Arabic font and a Latin font and both contain a set of parentheses,
- the Latin glyphs will be renamed to ``parenleft#1`` and ``parenright#1``,
- and a lookup will be inserted into the to ``locl`` feature (creating it if
- necessary) under the ``latn`` script to substitute ``parenleft`` with
- ``parenleft#1`` etc.
-
- Restrictions:
-
- - All fonts must currently have TrueType outlines (``glyf`` table).
- Merging fonts with CFF outlines is not supported.
- - All fonts must have the same units per em.
- - If duplicate glyph disambiguation takes place as described above then the
- fonts must have a ``GSUB`` table.
-
- Attributes:
- options: Currently unused.
- """
-
- def __init__(self, options=None):
-
- if not options:
- options = Options()
-
- self.options = options
-
- def merge(self, fontfiles):
- """Merges fonts together.
-
- Args:
- fontfiles: A list of file names to be merged
-
- Returns:
- A :class:`fontTools.ttLib.TTFont` object. Call the ``save`` method on
- this to write it out to an OTF file.
- """
- mega = ttLib.TTFont()
-
- #
- # Settle on a mega glyph order.
- #
- fonts = [ttLib.TTFont(fontfile) for fontfile in fontfiles]
- glyphOrders = [font.getGlyphOrder() for font in fonts]
- megaGlyphOrder = self._mergeGlyphOrders(glyphOrders)
- # Reload fonts and set new glyph names on them.
- # TODO Is it necessary to reload font? I think it is. At least
- # it's safer, in case tables were loaded to provide glyph names.
- fonts = [ttLib.TTFont(fontfile) for fontfile in fontfiles]
- for font,glyphOrder in zip(fonts, glyphOrders):
- font.setGlyphOrder(glyphOrder)
- mega.setGlyphOrder(megaGlyphOrder)
-
- for font in fonts:
- self._preMerge(font)
-
- self.fonts = fonts
- self.duplicateGlyphsPerFont = [{} for _ in fonts]
-
- allTags = reduce(set.union, (list(font.keys()) for font in fonts), set())
- allTags.remove('GlyphOrder')
-
- # Make sure we process cmap before GSUB as we have a dependency there.
- if 'GSUB' in allTags:
- allTags.remove('GSUB')
- allTags = ['GSUB'] + list(allTags)
- if 'cmap' in allTags:
- allTags.remove('cmap')
- allTags = ['cmap'] + list(allTags)
-
- for tag in allTags:
- with timer("merge '%s'" % tag):
- tables = [font.get(tag, NotImplemented) for font in fonts]
-
- log.info("Merging '%s'.", tag)
- clazz = ttLib.getTableClass(tag)
- table = clazz(tag).merge(self, tables)
- # XXX Clean this up and use: table = mergeObjects(tables)
-
- if table is not NotImplemented and table is not False:
- mega[tag] = table
- log.info("Merged '%s'.", tag)
- else:
- log.info("Dropped '%s'.", tag)
-
- del self.duplicateGlyphsPerFont
- del self.fonts
-
- self._postMerge(mega)
-
- return mega
-
- def _mergeGlyphOrders(self, glyphOrders):
- """Modifies passed-in glyphOrders to reflect new glyph names.
- Returns glyphOrder for the merged font."""
- mega = {}
- for glyphOrder in glyphOrders:
- for i,glyphName in enumerate(glyphOrder):
- if glyphName in mega:
- n = mega[glyphName]
- while (glyphName + "#" + repr(n)) in mega:
- n += 1
- mega[glyphName] = n
- glyphName += "#" + repr(n)
- glyphOrder[i] = glyphName
- mega[glyphName] = 1
- return list(mega.keys())
-
- def mergeObjects(self, returnTable, logic, tables):
- # Right now we don't use self at all. Will use in the future
- # for options and logging.
-
- allKeys = set.union(set(), *(vars(table).keys() for table in tables if table is not NotImplemented))
- for key in allKeys:
- try:
- mergeLogic = logic[key]
- except KeyError:
- try:
- mergeLogic = logic['*']
- except KeyError:
- raise Exception("Don't know how to merge key %s of class %s" %
- (key, returnTable.__class__.__name__))
- if mergeLogic is NotImplemented:
- continue
- value = mergeLogic(getattr(table, key, NotImplemented) for table in tables)
- if value is not NotImplemented:
- setattr(returnTable, key, value)
-
- return returnTable
-
- def _preMerge(self, font):
-
- # Map indices to references
-
- GDEF = font.get('GDEF')
- GSUB = font.get('GSUB')
- GPOS = font.get('GPOS')
-
- for t in [GSUB, GPOS]:
- if not t: continue
-
- if t.table.LookupList:
- lookupMap = {i:v for i,v in enumerate(t.table.LookupList.Lookup)}
- t.table.LookupList.mapLookups(lookupMap)
- t.table.FeatureList.mapLookups(lookupMap)
-
- if t.table.FeatureList and t.table.ScriptList:
- featureMap = {i:v for i,v in enumerate(t.table.FeatureList.FeatureRecord)}
- t.table.ScriptList.mapFeatures(featureMap)
-
- # TODO GDEF/Lookup MarkFilteringSets
- # TODO FeatureParams nameIDs
-
- def _postMerge(self, font):
-
- # Map references back to indices
-
- GDEF = font.get('GDEF')
- GSUB = font.get('GSUB')
- GPOS = font.get('GPOS')
-
- for t in [GSUB, GPOS]:
- if not t: continue
-
- if t.table.FeatureList and t.table.ScriptList:
-
- # Collect unregistered (new) features.
- featureMap = _GregariousIdentityDict(t.table.FeatureList.FeatureRecord)
- t.table.ScriptList.mapFeatures(featureMap)
-
- # Record used features.
- featureMap = _AttendanceRecordingIdentityDict(t.table.FeatureList.FeatureRecord)
- t.table.ScriptList.mapFeatures(featureMap)
- usedIndices = featureMap.s
-
- # Remove unused features
- t.table.FeatureList.FeatureRecord = [f for i,f in enumerate(t.table.FeatureList.FeatureRecord) if i in usedIndices]
-
- # Map back to indices.
- featureMap = _NonhashableDict(t.table.FeatureList.FeatureRecord)
- t.table.ScriptList.mapFeatures(featureMap)
-
- t.table.FeatureList.FeatureCount = len(t.table.FeatureList.FeatureRecord)
-
- if t.table.LookupList:
-
- # Collect unregistered (new) lookups.
- lookupMap = _GregariousIdentityDict(t.table.LookupList.Lookup)
- t.table.FeatureList.mapLookups(lookupMap)
- t.table.LookupList.mapLookups(lookupMap)
-
- # Record used lookups.
- lookupMap = _AttendanceRecordingIdentityDict(t.table.LookupList.Lookup)
- t.table.FeatureList.mapLookups(lookupMap)
- t.table.LookupList.mapLookups(lookupMap)
- usedIndices = lookupMap.s
-
- # Remove unused lookups
- t.table.LookupList.Lookup = [l for i,l in enumerate(t.table.LookupList.Lookup) if i in usedIndices]
-
- # Map back to indices.
- lookupMap = _NonhashableDict(t.table.LookupList.Lookup)
- t.table.FeatureList.mapLookups(lookupMap)
- t.table.LookupList.mapLookups(lookupMap)
-
- t.table.LookupList.LookupCount = len(t.table.LookupList.Lookup)
-
- # TODO GDEF/Lookup MarkFilteringSets
- # TODO FeatureParams nameIDs
-
-
-__all__ = [
- 'Options',
- 'Merger',
- 'main'
-]
-
-@timer("make one with everything (TOTAL TIME)")
-def main(args=None):
- """Merge multiple fonts into one"""
- from fontTools import configLogger
-
- if args is None:
- args = sys.argv[1:]
-
- options = Options()
- args = options.parse_opts(args)
-
- if len(args) < 1:
- print("usage: pyftmerge font...", file=sys.stderr)
- return 1
-
- configLogger(level=logging.INFO if options.verbose else logging.WARNING)
- if options.timing:
- timer.logger.setLevel(logging.DEBUG)
- else:
- timer.logger.disabled = True
-
- merger = Merger(options=options)
- font = merger.merge(args)
- outfile = 'merged.ttf'
- with timer("compile and save font"):
- font.save(outfile)
-
-
-if __name__ == "__main__":
- sys.exit(main())
diff --git a/Lib/fontTools/merge/__init__.py b/Lib/fontTools/merge/__init__.py
new file mode 100644
index 00000000..152bf079
--- /dev/null
+++ b/Lib/fontTools/merge/__init__.py
@@ -0,0 +1,200 @@
+# Copyright 2013 Google, Inc. All Rights Reserved.
+#
+# Google Author(s): Behdad Esfahbod, Roozbeh Pournader
+
+from fontTools import ttLib
+import fontTools.merge.base
+from fontTools.merge.cmap import computeMegaGlyphOrder, computeMegaCmap, renameCFFCharStrings
+from fontTools.merge.layout import layoutPreMerge, layoutPostMerge
+from fontTools.merge.options import Options
+import fontTools.merge.tables
+from fontTools.misc.loggingTools import Timer
+from functools import reduce
+import sys
+import logging
+
+
+log = logging.getLogger("fontTools.merge")
+timer = Timer(logger=logging.getLogger(__name__+".timer"), level=logging.INFO)
+
+
+class Merger(object):
+ """Font merger.
+
+ This class merges multiple files into a single OpenType font, taking into
+ account complexities such as OpenType layout (``GSUB``/``GPOS``) tables and
+ cross-font metrics (e.g. ``hhea.ascent`` is set to the maximum value across
+ all the fonts).
+
+ If multiple glyphs map to the same Unicode value, and the glyphs are considered
+ sufficiently different (that is, they differ in any of paths, widths, or
+ height), then subsequent glyphs are renamed and a lookup in the ``locl``
+ feature will be created to disambiguate them. For example, if the arguments
+ are an Arabic font and a Latin font and both contain a set of parentheses,
+ the Latin glyphs will be renamed to ``parenleft#1`` and ``parenright#1``,
+ and a lookup will be inserted into the to ``locl`` feature (creating it if
+ necessary) under the ``latn`` script to substitute ``parenleft`` with
+ ``parenleft#1`` etc.
+
+ Restrictions:
+
+ - All fonts must have the same units per em.
+ - If duplicate glyph disambiguation takes place as described above then the
+ fonts must have a ``GSUB`` table.
+
+ Attributes:
+ options: Currently unused.
+ """
+
+ def __init__(self, options=None):
+
+ if not options:
+ options = Options()
+
+ self.options = options
+
+ def _openFonts(self, fontfiles):
+ fonts = [ttLib.TTFont(fontfile) for fontfile in fontfiles]
+ for font,fontfile in zip(fonts, fontfiles):
+ font._merger__fontfile = fontfile
+ font._merger__name = font['name'].getDebugName(4)
+ return fonts
+
+ def merge(self, fontfiles):
+ """Merges fonts together.
+
+ Args:
+ fontfiles: A list of file names to be merged
+
+ Returns:
+ A :class:`fontTools.ttLib.TTFont` object. Call the ``save`` method on
+ this to write it out to an OTF file.
+ """
+ #
+ # Settle on a mega glyph order.
+ #
+ fonts = self._openFonts(fontfiles)
+ glyphOrders = [list(font.getGlyphOrder()) for font in fonts]
+ computeMegaGlyphOrder(self, glyphOrders)
+
+ # Take first input file sfntVersion
+ sfntVersion = fonts[0].sfntVersion
+
+ # Reload fonts and set new glyph names on them.
+ fonts = self._openFonts(fontfiles)
+ for font,glyphOrder in zip(fonts, glyphOrders):
+ font.setGlyphOrder(glyphOrder)
+ if 'CFF ' in font:
+ renameCFFCharStrings(self, glyphOrder, font['CFF '])
+
+ cmaps = [font['cmap'] for font in fonts]
+ self.duplicateGlyphsPerFont = [{} for _ in fonts]
+ computeMegaCmap(self, cmaps)
+
+ mega = ttLib.TTFont(sfntVersion=sfntVersion)
+ mega.setGlyphOrder(self.glyphOrder)
+
+ for font in fonts:
+ self._preMerge(font)
+
+ self.fonts = fonts
+
+ allTags = reduce(set.union, (list(font.keys()) for font in fonts), set())
+ allTags.remove('GlyphOrder')
+
+ for tag in allTags:
+ if tag in self.options.drop_tables:
+ continue
+
+ with timer("merge '%s'" % tag):
+ tables = [font.get(tag, NotImplemented) for font in fonts]
+
+ log.info("Merging '%s'.", tag)
+ clazz = ttLib.getTableClass(tag)
+ table = clazz(tag).merge(self, tables)
+ # XXX Clean this up and use: table = mergeObjects(tables)
+
+ if table is not NotImplemented and table is not False:
+ mega[tag] = table
+ log.info("Merged '%s'.", tag)
+ else:
+ log.info("Dropped '%s'.", tag)
+
+ del self.duplicateGlyphsPerFont
+ del self.fonts
+
+ self._postMerge(mega)
+
+ return mega
+
+ def mergeObjects(self, returnTable, logic, tables):
+ # Right now we don't use self at all. Will use in the future
+ # for options and logging.
+
+ allKeys = set.union(set(), *(vars(table).keys() for table in tables if table is not NotImplemented))
+ for key in allKeys:
+ try:
+ mergeLogic = logic[key]
+ except KeyError:
+ try:
+ mergeLogic = logic['*']
+ except KeyError:
+ raise Exception("Don't know how to merge key %s of class %s" %
+ (key, returnTable.__class__.__name__))
+ if mergeLogic is NotImplemented:
+ continue
+ value = mergeLogic(getattr(table, key, NotImplemented) for table in tables)
+ if value is not NotImplemented:
+ setattr(returnTable, key, value)
+
+ return returnTable
+
+ def _preMerge(self, font):
+ layoutPreMerge(font)
+
+ def _postMerge(self, font):
+ layoutPostMerge(font)
+
+
+__all__ = [
+ 'Options',
+ 'Merger',
+ 'main'
+]
+
+@timer("make one with everything (TOTAL TIME)")
+def main(args=None):
+ """Merge multiple fonts into one"""
+ from fontTools import configLogger
+
+ if args is None:
+ args = sys.argv[1:]
+
+ options = Options()
+ args = options.parse_opts(args, ignore_unknown=['output-file'])
+ outfile = 'merged.ttf'
+ fontfiles = []
+ for g in args:
+ if g.startswith('--output-file='):
+ outfile = g[14:]
+ continue
+ fontfiles.append(g)
+
+ if len(args) < 1:
+ print("usage: pyftmerge font...", file=sys.stderr)
+ return 1
+
+ configLogger(level=logging.INFO if options.verbose else logging.WARNING)
+ if options.timing:
+ timer.logger.setLevel(logging.DEBUG)
+ else:
+ timer.logger.disabled = True
+
+ merger = Merger(options=options)
+ font = merger.merge(fontfiles)
+ with timer("compile and save font"):
+ font.save(outfile)
+
+
+if __name__ == "__main__":
+ sys.exit(main())
diff --git a/Lib/fontTools/merge/__main__.py b/Lib/fontTools/merge/__main__.py
new file mode 100644
index 00000000..623ca7d2
--- /dev/null
+++ b/Lib/fontTools/merge/__main__.py
@@ -0,0 +1,6 @@
+import sys
+from fontTools.merge import main
+
+
+if __name__ == '__main__':
+ sys.exit(main())
diff --git a/Lib/fontTools/merge/base.py b/Lib/fontTools/merge/base.py
new file mode 100644
index 00000000..868b51a4
--- /dev/null
+++ b/Lib/fontTools/merge/base.py
@@ -0,0 +1,76 @@
+# Copyright 2013 Google, Inc. All Rights Reserved.
+#
+# Google Author(s): Behdad Esfahbod, Roozbeh Pournader
+
+from fontTools.ttLib.tables.DefaultTable import DefaultTable
+import logging
+
+
+log = logging.getLogger("fontTools.merge")
+
+
+def add_method(*clazzes, **kwargs):
+ """Returns a decorator function that adds a new method to one or
+ more classes."""
+ allowDefault = kwargs.get('allowDefaultTable', False)
+ def wrapper(method):
+ done = []
+ for clazz in clazzes:
+ if clazz in done: continue # Support multiple names of a clazz
+ done.append(clazz)
+ assert allowDefault or clazz != DefaultTable, 'Oops, table class not found.'
+ assert method.__name__ not in clazz.__dict__, \
+ "Oops, class '%s' has method '%s'." % (clazz.__name__, method.__name__)
+ setattr(clazz, method.__name__, method)
+ return None
+ return wrapper
+
+def mergeObjects(lst):
+ lst = [item for item in lst if item is not NotImplemented]
+ if not lst:
+ return NotImplemented
+ lst = [item for item in lst if item is not None]
+ if not lst:
+ return None
+
+ clazz = lst[0].__class__
+ assert all(type(item) == clazz for item in lst), lst
+
+ logic = clazz.mergeMap
+ returnTable = clazz()
+ returnDict = {}
+
+ allKeys = set.union(set(), *(vars(table).keys() for table in lst))
+ for key in allKeys:
+ try:
+ mergeLogic = logic[key]
+ except KeyError:
+ try:
+ mergeLogic = logic['*']
+ except KeyError:
+ raise Exception("Don't know how to merge key %s of class %s" %
+ (key, clazz.__name__))
+ if mergeLogic is NotImplemented:
+ continue
+ value = mergeLogic(getattr(table, key, NotImplemented) for table in lst)
+ if value is not NotImplemented:
+ returnDict[key] = value
+
+ returnTable.__dict__ = returnDict
+
+ return returnTable
+
+@add_method(DefaultTable, allowDefaultTable=True)
+def merge(self, m, tables):
+ if not hasattr(self, 'mergeMap'):
+ log.info("Don't know how to merge '%s'.", self.tableTag)
+ return NotImplemented
+
+ logic = self.mergeMap
+
+ if isinstance(logic, dict):
+ return m.mergeObjects(self, self.mergeMap, tables)
+ else:
+ return logic(tables)
+
+
diff --git a/Lib/fontTools/merge/cmap.py b/Lib/fontTools/merge/cmap.py
new file mode 100644
index 00000000..7ade4ac9
--- /dev/null
+++ b/Lib/fontTools/merge/cmap.py
@@ -0,0 +1,129 @@
+# Copyright 2013 Google, Inc. All Rights Reserved.
+#
+# Google Author(s): Behdad Esfahbod, Roozbeh Pournader
+
+from fontTools.merge.unicode import is_Default_Ignorable
+from fontTools.pens.recordingPen import DecomposingRecordingPen
+import logging
+
+
+log = logging.getLogger("fontTools.merge")
+
+
+def computeMegaGlyphOrder(merger, glyphOrders):
+ """Modifies passed-in glyphOrders to reflect new glyph names.
+ Stores merger.glyphOrder."""
+ megaOrder = {}
+ for glyphOrder in glyphOrders:
+ for i,glyphName in enumerate(glyphOrder):
+ if glyphName in megaOrder:
+ n = megaOrder[glyphName]
+ while (glyphName + "#" + repr(n)) in megaOrder:
+ n += 1
+ megaOrder[glyphName] = n
+ glyphName += "#" + repr(n)
+ glyphOrder[i] = glyphName
+ megaOrder[glyphName] = 1
+ merger.glyphOrder = megaOrder = list(megaOrder.keys())
+
+
+def _glyphsAreSame(glyphSet1, glyphSet2, glyph1, glyph2,
+ advanceTolerance=.05,
+ advanceToleranceEmpty=.20):
+ pen1 = DecomposingRecordingPen(glyphSet1)
+ pen2 = DecomposingRecordingPen(glyphSet2)
+ g1 = glyphSet1[glyph1]
+ g2 = glyphSet2[glyph2]
+ g1.draw(pen1)
+ g2.draw(pen2)
+ if pen1.value != pen2.value:
+ return False
+ # Allow more width tolerance for glyphs with no ink
+ tolerance = advanceTolerance if pen1.value else advanceToleranceEmpty
+ # TODO Warn if advances not the same but within tolerance.
+ if abs(g1.width - g2.width) > g1.width * tolerance:
+ return False
+ if hasattr(g1, 'height') and g1.height is not None:
+ if abs(g1.height - g2.height) > g1.height * tolerance:
+ return False
+ return True
+
+# Valid (format, platformID, platEncID) triplets for cmap subtables containing
+# Unicode BMP-only and Unicode Full Repertoire semantics.
+# Cf. OpenType spec for "Platform specific encodings":
+# https://docs.microsoft.com/en-us/typography/opentype/spec/name
+class _CmapUnicodePlatEncodings:
+ BMP = {(4, 3, 1), (4, 0, 3), (4, 0, 4), (4, 0, 6)}
+ FullRepertoire = {(12, 3, 10), (12, 0, 4), (12, 0, 6)}
+
+def computeMegaCmap(merger, cmapTables):
+ """Sets merger.cmap and merger.glyphOrder."""
+
+ # TODO Handle format=14.
+ # Only merge format 4 and 12 Unicode subtables, ignores all other subtables
+ # If there is a format 12 table for a font, ignore the format 4 table of it
+ chosenCmapTables = []
+ for fontIdx,table in enumerate(cmapTables):
+ format4 = None
+ format12 = None
+ for subtable in table.tables:
+ properties = (subtable.format, subtable.platformID, subtable.platEncID)
+ if properties in _CmapUnicodePlatEncodings.BMP:
+ format4 = subtable
+ elif properties in _CmapUnicodePlatEncodings.FullRepertoire:
+ format12 = subtable
+ else:
+ log.warning(
+ "Dropped cmap subtable from font '%s':\t"
+ "format %2s, platformID %2s, platEncID %2s",
+ fontIdx, subtable.format, subtable.platformID, subtable.platEncID
+ )
+ if format12 is not None:
+ chosenCmapTables.append((format12, fontIdx))
+ elif format4 is not None:
+ chosenCmapTables.append((format4, fontIdx))
+
+ # Build the unicode mapping
+ merger.cmap = cmap = {}
+ fontIndexForGlyph = {}
+ glyphSets = [None for f in merger.fonts] if hasattr(merger, 'fonts') else None
+
+ for table,fontIdx in chosenCmapTables:
+ # handle duplicates
+ for uni,gid in table.cmap.items():
+ oldgid = cmap.get(uni, None)
+ if oldgid is None:
+ cmap[uni] = gid
+ fontIndexForGlyph[gid] = fontIdx
+ elif is_Default_Ignorable(uni) or uni in (0x25CC,): # U+25CC DOTTED CIRCLE
+ continue
+ elif oldgid != gid:
+ # Char previously mapped to oldgid, now to gid.
+ # Record, to fix up in GSUB 'locl' later.
+ if merger.duplicateGlyphsPerFont[fontIdx].get(oldgid) is None:
+ if glyphSets is not None:
+ oldFontIdx = fontIndexForGlyph[oldgid]
+ for idx in (fontIdx, oldFontIdx):
+ if glyphSets[idx] is None:
+ glyphSets[idx] = merger.fonts[idx].getGlyphSet()
+ #if _glyphsAreSame(glyphSets[oldFontIdx], glyphSets[fontIdx], oldgid, gid):
+ # continue
+ merger.duplicateGlyphsPerFont[fontIdx][oldgid] = gid
+ elif merger.duplicateGlyphsPerFont[fontIdx][oldgid] != gid:
+ # Char previously mapped to oldgid but oldgid is already remapped to a different
+ # gid, because of another Unicode character.
+ # TODO: Try harder to do something about these.
+ log.warning("Dropped mapping from codepoint %#06X to glyphId '%s'", uni, gid)
+
+
+def renameCFFCharStrings(merger, glyphOrder, cffTable):
+ """Rename topDictIndex charStrings based on glyphOrder."""
+ td = cffTable.cff.topDictIndex[0]
+
+ charStrings = {}
+ for i, v in enumerate(td.CharStrings.charStrings.values()):
+ glyphName = glyphOrder[i]
+ charStrings[glyphName] = v
+ td.CharStrings.charStrings = charStrings
+
+ td.charset = list(glyphOrder)
diff --git a/Lib/fontTools/merge/layout.py b/Lib/fontTools/merge/layout.py
new file mode 100644
index 00000000..4bf01c37
--- /dev/null
+++ b/Lib/fontTools/merge/layout.py
@@ -0,0 +1,466 @@
+# Copyright 2013 Google, Inc. All Rights Reserved.
+#
+# Google Author(s): Behdad Esfahbod, Roozbeh Pournader
+
+from fontTools import ttLib
+from fontTools.ttLib.tables.DefaultTable import DefaultTable
+from fontTools.ttLib.tables import otTables
+from fontTools.merge.base import add_method, mergeObjects
+from fontTools.merge.util import *
+import logging
+
+
+log = logging.getLogger("fontTools.merge")
+
+
+def mergeLookupLists(lst):
+ # TODO Do smarter merge.
+ return sumLists(lst)
+
+def mergeFeatures(lst):
+ assert lst
+ self = otTables.Feature()
+ self.FeatureParams = None
+ self.LookupListIndex = mergeLookupLists([l.LookupListIndex for l in lst if l.LookupListIndex])
+ self.LookupCount = len(self.LookupListIndex)
+ return self
+
+def mergeFeatureLists(lst):
+ d = {}
+ for l in lst:
+ for f in l:
+ tag = f.FeatureTag
+ if tag not in d:
+ d[tag] = []
+ d[tag].append(f.Feature)
+ ret = []
+ for tag in sorted(d.keys()):
+ rec = otTables.FeatureRecord()
+ rec.FeatureTag = tag
+ rec.Feature = mergeFeatures(d[tag])
+ ret.append(rec)
+ return ret
+
+def mergeLangSyses(lst):
+ assert lst
+
+ # TODO Support merging ReqFeatureIndex
+ assert all(l.ReqFeatureIndex == 0xFFFF for l in lst)
+
+ self = otTables.LangSys()
+ self.LookupOrder = None
+ self.ReqFeatureIndex = 0xFFFF
+ self.FeatureIndex = mergeFeatureLists([l.FeatureIndex for l in lst if l.FeatureIndex])
+ self.FeatureCount = len(self.FeatureIndex)
+ return self
+
+def mergeScripts(lst):
+ assert lst
+
+ if len(lst) == 1:
+ return lst[0]
+ langSyses = {}
+ for sr in lst:
+ for lsr in sr.LangSysRecord:
+ if lsr.LangSysTag not in langSyses:
+ langSyses[lsr.LangSysTag] = []
+ langSyses[lsr.LangSysTag].append(lsr.LangSys)
+ lsrecords = []
+ for tag, langSys_list in sorted(langSyses.items()):
+ lsr = otTables.LangSysRecord()
+ lsr.LangSys = mergeLangSyses(langSys_list)
+ lsr.LangSysTag = tag
+ lsrecords.append(lsr)
+
+ self = otTables.Script()
+ self.LangSysRecord = lsrecords
+ self.LangSysCount = len(lsrecords)
+ dfltLangSyses = [s.DefaultLangSys for s in lst if s.DefaultLangSys]
+ if dfltLangSyses:
+ self.DefaultLangSys = mergeLangSyses(dfltLangSyses)
+ else:
+ self.DefaultLangSys = None
+ return self
+
+def mergeScriptRecords(lst):
+ d = {}
+ for l in lst:
+ for s in l:
+ tag = s.ScriptTag
+ if tag not in d:
+ d[tag] = []
+ d[tag].append(s.Script)
+ ret = []
+ for tag in sorted(d.keys()):
+ rec = otTables.ScriptRecord()
+ rec.ScriptTag = tag
+ rec.Script = mergeScripts(d[tag])
+ ret.append(rec)
+ return ret
+
+otTables.ScriptList.mergeMap = {
+ 'ScriptCount': lambda lst: None, # TODO
+ 'ScriptRecord': mergeScriptRecords,
+}
+otTables.BaseScriptList.mergeMap = {
+ 'BaseScriptCount': lambda lst: None, # TODO
+ # TODO: Merge duplicate entries
+ 'BaseScriptRecord': lambda lst: sorted(sumLists(lst), key=lambda s: s.BaseScriptTag),
+}
+
+otTables.FeatureList.mergeMap = {
+ 'FeatureCount': sum,
+ 'FeatureRecord': lambda lst: sorted(sumLists(lst), key=lambda s: s.FeatureTag),
+}
+
+otTables.LookupList.mergeMap = {
+ 'LookupCount': sum,
+ 'Lookup': sumLists,
+}
+
+otTables.Coverage.mergeMap = {
+ 'Format': min,
+ 'glyphs': sumLists,
+}
+
+otTables.ClassDef.mergeMap = {
+ 'Format': min,
+ 'classDefs': sumDicts,
+}
+
+otTables.LigCaretList.mergeMap = {
+ 'Coverage': mergeObjects,
+ 'LigGlyphCount': sum,
+ 'LigGlyph': sumLists,
+}
+
+otTables.AttachList.mergeMap = {
+ 'Coverage': mergeObjects,
+ 'GlyphCount': sum,
+ 'AttachPoint': sumLists,
+}
+
+# XXX Renumber MarkFilterSets of lookups
+otTables.MarkGlyphSetsDef.mergeMap = {
+ 'MarkSetTableFormat': equal,
+ 'MarkSetCount': sum,
+ 'Coverage': sumLists,
+}
+
+otTables.Axis.mergeMap = {
+ '*': mergeObjects,
+}
+
+# XXX Fix BASE table merging
+otTables.BaseTagList.mergeMap = {
+ 'BaseTagCount': sum,
+ 'BaselineTag': sumLists,
+}
+
+otTables.GDEF.mergeMap = \
+otTables.GSUB.mergeMap = \
+otTables.GPOS.mergeMap = \
+otTables.BASE.mergeMap = \
+otTables.JSTF.mergeMap = \
+otTables.MATH.mergeMap = \
+{
+ '*': mergeObjects,
+ 'Version': max,
+}
+
+ttLib.getTableClass('GDEF').mergeMap = \
+ttLib.getTableClass('GSUB').mergeMap = \
+ttLib.getTableClass('GPOS').mergeMap = \
+ttLib.getTableClass('BASE').mergeMap = \
+ttLib.getTableClass('JSTF').mergeMap = \
+ttLib.getTableClass('MATH').mergeMap = \
+{
+ 'tableTag': onlyExisting(equal), # XXX clean me up
+ 'table': mergeObjects,
+}
+
+@add_method(ttLib.getTableClass('GSUB'))
+def merge(self, m, tables):
+
+ assert len(tables) == len(m.duplicateGlyphsPerFont)
+ for i,(table,dups) in enumerate(zip(tables, m.duplicateGlyphsPerFont)):
+ if not dups: continue
+ if table is None or table is NotImplemented:
+ log.warning("Have non-identical duplicates to resolve for '%s' but no GSUB. Are duplicates intended?: %s", m.fonts[i]._merger__name, dups)
+ continue
+
+ synthFeature = None
+ synthLookup = None
+ for script in table.table.ScriptList.ScriptRecord:
+ if script.ScriptTag == 'DFLT': continue # XXX
+ for langsys in [script.Script.DefaultLangSys] + [l.LangSys for l in script.Script.LangSysRecord]:
+ if langsys is None: continue # XXX Create!
+ feature = [v for v in langsys.FeatureIndex if v.FeatureTag == 'locl']
+ assert len(feature) <= 1
+ if feature:
+ feature = feature[0]
+ else:
+ if not synthFeature:
+ synthFeature = otTables.FeatureRecord()
+ synthFeature.FeatureTag = 'locl'
+ f = synthFeature.Feature = otTables.Feature()
+ f.FeatureParams = None
+ f.LookupCount = 0
+ f.LookupListIndex = []
+ table.table.FeatureList.FeatureRecord.append(synthFeature)
+ table.table.FeatureList.FeatureCount += 1
+ feature = synthFeature
+ langsys.FeatureIndex.append(feature)
+ langsys.FeatureIndex.sort(key=lambda v: v.FeatureTag)
+
+ if not synthLookup:
+ subtable = otTables.SingleSubst()
+ subtable.mapping = dups
+ synthLookup = otTables.Lookup()
+ synthLookup.LookupFlag = 0
+ synthLookup.LookupType = 1
+ synthLookup.SubTableCount = 1
+ synthLookup.SubTable = [subtable]
+ if table.table.LookupList is None:
+ # mtiLib uses None as default value for LookupList,
+ # while feaLib points to an empty array with count 0
+ # TODO: make them do the same
+ table.table.LookupList = otTables.LookupList()
+ table.table.LookupList.Lookup = []
+ table.table.LookupList.LookupCount = 0
+ table.table.LookupList.Lookup.append(synthLookup)
+ table.table.LookupList.LookupCount += 1
+
+ if feature.Feature.LookupListIndex[:1] != [synthLookup]:
+ feature.Feature.LookupListIndex[:0] = [synthLookup]
+ feature.Feature.LookupCount += 1
+
+ DefaultTable.merge(self, m, tables)
+ return self
+
+@add_method(otTables.SingleSubst,
+ otTables.MultipleSubst,
+ otTables.AlternateSubst,
+ otTables.LigatureSubst,
+ otTables.ReverseChainSingleSubst,
+ otTables.SinglePos,
+ otTables.PairPos,
+ otTables.CursivePos,
+ otTables.MarkBasePos,
+ otTables.MarkLigPos,
+ otTables.MarkMarkPos)
+def mapLookups(self, lookupMap):
+ pass
+
+# Copied and trimmed down from subset.py
+@add_method(otTables.ContextSubst,
+ otTables.ChainContextSubst,
+ otTables.ContextPos,
+ otTables.ChainContextPos)
+def __merge_classify_context(self):
+
+ class ContextHelper(object):
+ def __init__(self, klass, Format):
+ if klass.__name__.endswith('Subst'):
+ Typ = 'Sub'
+ Type = 'Subst'
+ else:
+ Typ = 'Pos'
+ Type = 'Pos'
+ if klass.__name__.startswith('Chain'):
+ Chain = 'Chain'
+ else:
+ Chain = ''
+ ChainTyp = Chain+Typ
+
+ self.Typ = Typ
+ self.Type = Type
+ self.Chain = Chain
+ self.ChainTyp = ChainTyp
+
+ self.LookupRecord = Type+'LookupRecord'
+
+ if Format == 1:
+ self.Rule = ChainTyp+'Rule'
+ self.RuleSet = ChainTyp+'RuleSet'
+ elif Format == 2:
+ self.Rule = ChainTyp+'ClassRule'
+ self.RuleSet = ChainTyp+'ClassSet'
+
+ if self.Format not in [1, 2, 3]:
+ return None # Don't shoot the messenger; let it go
+ if not hasattr(self.__class__, "_merge__ContextHelpers"):
+ self.__class__._merge__ContextHelpers = {}
+ if self.Format not in self.__class__._merge__ContextHelpers:
+ helper = ContextHelper(self.__class__, self.Format)
+ self.__class__._merge__ContextHelpers[self.Format] = helper
+ return self.__class__._merge__ContextHelpers[self.Format]
+
+
+@add_method(otTables.ContextSubst,
+ otTables.ChainContextSubst,
+ otTables.ContextPos,
+ otTables.ChainContextPos)
+def mapLookups(self, lookupMap):
+ c = self.__merge_classify_context()
+
+ if self.Format in [1, 2]:
+ for rs in getattr(self, c.RuleSet):
+ if not rs: continue
+ for r in getattr(rs, c.Rule):
+ if not r: continue
+ for ll in getattr(r, c.LookupRecord):
+ if not ll: continue
+ ll.LookupListIndex = lookupMap[ll.LookupListIndex]
+ elif self.Format == 3:
+ for ll in getattr(self, c.LookupRecord):
+ if not ll: continue
+ ll.LookupListIndex = lookupMap[ll.LookupListIndex]
+ else:
+ assert 0, "unknown format: %s" % self.Format
+
+@add_method(otTables.ExtensionSubst,
+ otTables.ExtensionPos)
+def mapLookups(self, lookupMap):
+ if self.Format == 1:
+ self.ExtSubTable.mapLookups(lookupMap)
+ else:
+ assert 0, "unknown format: %s" % self.Format
+
+@add_method(otTables.Lookup)
+def mapLookups(self, lookupMap):
+ for st in self.SubTable:
+ if not st: continue
+ st.mapLookups(lookupMap)
+
+@add_method(otTables.LookupList)
+def mapLookups(self, lookupMap):
+ for l in self.Lookup:
+ if not l: continue
+ l.mapLookups(lookupMap)
+
+@add_method(otTables.Lookup)
+def mapMarkFilteringSets(self, markFilteringSetMap):
+ if self.LookupFlag & 0x0010:
+ self.MarkFilteringSet = markFilteringSetMap[self.MarkFilteringSet]
+
+@add_method(otTables.LookupList)
+def mapMarkFilteringSets(self, markFilteringSetMap):
+ for l in self.Lookup:
+ if not l: continue
+ l.mapMarkFilteringSets(markFilteringSetMap)
+
+@add_method(otTables.Feature)
+def mapLookups(self, lookupMap):
+ self.LookupListIndex = [lookupMap[i] for i in self.LookupListIndex]
+
+@add_method(otTables.FeatureList)
+def mapLookups(self, lookupMap):
+ for f in self.FeatureRecord:
+ if not f or not f.Feature: continue
+ f.Feature.mapLookups(lookupMap)
+
+@add_method(otTables.DefaultLangSys,
+ otTables.LangSys)
+def mapFeatures(self, featureMap):
+ self.FeatureIndex = [featureMap[i] for i in self.FeatureIndex]
+ if self.ReqFeatureIndex != 65535:
+ self.ReqFeatureIndex = featureMap[self.ReqFeatureIndex]
+
+@add_method(otTables.Script)
+def mapFeatures(self, featureMap):
+ if self.DefaultLangSys:
+ self.DefaultLangSys.mapFeatures(featureMap)
+ for l in self.LangSysRecord:
+ if not l or not l.LangSys: continue
+ l.LangSys.mapFeatures(featureMap)
+
+@add_method(otTables.ScriptList)
+def mapFeatures(self, featureMap):
+ for s in self.ScriptRecord:
+ if not s or not s.Script: continue
+ s.Script.mapFeatures(featureMap)
+
+def layoutPreMerge(font):
+ # Map indices to references
+
+ GDEF = font.get('GDEF')
+ GSUB = font.get('GSUB')
+ GPOS = font.get('GPOS')
+
+ for t in [GSUB, GPOS]:
+ if not t: continue
+
+ if t.table.LookupList:
+ lookupMap = {i:v for i,v in enumerate(t.table.LookupList.Lookup)}
+ t.table.LookupList.mapLookups(lookupMap)
+ t.table.FeatureList.mapLookups(lookupMap)
+
+ if GDEF and GDEF.table.Version >= 0x00010002:
+ markFilteringSetMap = {i:v for i,v in enumerate(GDEF.table.MarkGlyphSetsDef.Coverage)}
+ t.table.LookupList.mapMarkFilteringSets(markFilteringSetMap)
+
+ if t.table.FeatureList and t.table.ScriptList:
+ featureMap = {i:v for i,v in enumerate(t.table.FeatureList.FeatureRecord)}
+ t.table.ScriptList.mapFeatures(featureMap)
+
+ # TODO FeatureParams nameIDs
+
+def layoutPostMerge(font):
+ # Map references back to indices
+
+ GDEF = font.get('GDEF')
+ GSUB = font.get('GSUB')
+ GPOS = font.get('GPOS')
+
+ for t in [GSUB, GPOS]:
+ if not t: continue
+
+ if t.table.FeatureList and t.table.ScriptList:
+
+ # Collect unregistered (new) features.
+ featureMap = GregariousIdentityDict(t.table.FeatureList.FeatureRecord)
+ t.table.ScriptList.mapFeatures(featureMap)
+
+ # Record used features.
+ featureMap = AttendanceRecordingIdentityDict(t.table.FeatureList.FeatureRecord)
+ t.table.ScriptList.mapFeatures(featureMap)
+ usedIndices = featureMap.s
+
+ # Remove unused features
+ t.table.FeatureList.FeatureRecord = [f for i,f in enumerate(t.table.FeatureList.FeatureRecord) if i in usedIndices]
+
+ # Map back to indices.
+ featureMap = NonhashableDict(t.table.FeatureList.FeatureRecord)
+ t.table.ScriptList.mapFeatures(featureMap)
+
+ t.table.FeatureList.FeatureCount = len(t.table.FeatureList.FeatureRecord)
+
+ if t.table.LookupList:
+
+ # Collect unregistered (new) lookups.
+ lookupMap = GregariousIdentityDict(t.table.LookupList.Lookup)
+ t.table.FeatureList.mapLookups(lookupMap)
+ t.table.LookupList.mapLookups(lookupMap)
+
+ # Record used lookups.
+ lookupMap = AttendanceRecordingIdentityDict(t.table.LookupList.Lookup)
+ t.table.FeatureList.mapLookups(lookupMap)
+ t.table.LookupList.mapLookups(lookupMap)
+ usedIndices = lookupMap.s
+
+ # Remove unused lookups
+ t.table.LookupList.Lookup = [l for i,l in enumerate(t.table.LookupList.Lookup) if i in usedIndices]
+
+ # Map back to indices.
+ lookupMap = NonhashableDict(t.table.LookupList.Lookup)
+ t.table.FeatureList.mapLookups(lookupMap)
+ t.table.LookupList.mapLookups(lookupMap)
+
+ t.table.LookupList.LookupCount = len(t.table.LookupList.Lookup)
+
+ if GDEF and GDEF.table.Version >= 0x00010002:
+ markFilteringSetMap = NonhashableDict(GDEF.table.MarkGlyphSetsDef.Coverage)
+ t.table.LookupList.mapMarkFilteringSets(markFilteringSetMap)
+
+ # TODO FeatureParams nameIDs
diff --git a/Lib/fontTools/merge/options.py b/Lib/fontTools/merge/options.py
new file mode 100644
index 00000000..02dcf4b7
--- /dev/null
+++ b/Lib/fontTools/merge/options.py
@@ -0,0 +1,85 @@
+# Copyright 2013 Google, Inc. All Rights Reserved.
+#
+# Google Author(s): Behdad Esfahbod, Roozbeh Pournader
+
+
+class Options(object):
+
+ class UnknownOptionError(Exception):
+ pass
+
+ def __init__(self, **kwargs):
+
+ self.verbose = False
+ self.timing = False
+ self.drop_tables = []
+
+ self.set(**kwargs)
+
+ def set(self, **kwargs):
+ for k,v in kwargs.items():
+ if not hasattr(self, k):
+ raise self.UnknownOptionError("Unknown option '%s'" % k)
+ setattr(self, k, v)
+
+ def parse_opts(self, argv, ignore_unknown=[]):
+ ret = []
+ opts = {}
+ for a in argv:
+ orig_a = a
+ if not a.startswith('--'):
+ ret.append(a)
+ continue
+ a = a[2:]
+ i = a.find('=')
+ op = '='
+ if i == -1:
+ if a.startswith("no-"):
+ k = a[3:]
+ v = False
+ else:
+ k = a
+ v = True
+ else:
+ k = a[:i]
+ if k[-1] in "-+":
+ op = k[-1]+'=' # Ops is '-=' or '+=' now.
+ k = k[:-1]
+ v = a[i+1:]
+ ok = k
+ k = k.replace('-', '_')
+ if not hasattr(self, k):
+ if ignore_unknown is True or ok in ignore_unknown:
+ ret.append(orig_a)
+ continue
+ else:
+ raise self.UnknownOptionError("Unknown option '%s'" % a)
+
+ ov = getattr(self, k)
+ if isinstance(ov, bool):
+ v = bool(v)
+ elif isinstance(ov, int):
+ v = int(v)
+ elif isinstance(ov, list):
+ vv = v.split(',')
+ if vv == ['']:
+ vv = []
+ vv = [int(x, 0) if len(x) and x[0] in "0123456789" else x for x in vv]
+ if op == '=':
+ v = vv
+ elif op == '+=':
+ v = ov
+ v.extend(vv)
+ elif op == '-=':
+ v = ov
+ for x in vv:
+ if x in v:
+ v.remove(x)
+ else:
+ assert 0
+
+ opts[k] = v
+ self.set(**opts)
+
+ return ret
+
diff --git a/Lib/fontTools/merge/tables.py b/Lib/fontTools/merge/tables.py
new file mode 100644
index 00000000..b266f7a9
--- /dev/null
+++ b/Lib/fontTools/merge/tables.py
@@ -0,0 +1,311 @@
+# Copyright 2013 Google, Inc. All Rights Reserved.
+#
+# Google Author(s): Behdad Esfahbod, Roozbeh Pournader
+
+from fontTools import ttLib, cffLib
+from fontTools.ttLib.tables.DefaultTable import DefaultTable
+from fontTools.merge.base import add_method, mergeObjects
+from fontTools.merge.cmap import computeMegaCmap
+from fontTools.merge.util import *
+import logging
+
+
+log = logging.getLogger("fontTools.merge")
+
+
+ttLib.getTableClass('maxp').mergeMap = {
+ '*': max,
+ 'tableTag': equal,
+ 'tableVersion': equal,
+ 'numGlyphs': sum,
+ 'maxStorage': first,
+ 'maxFunctionDefs': first,
+ 'maxInstructionDefs': first,
+ # TODO When we correctly merge hinting data, update these values:
+ # maxFunctionDefs, maxInstructionDefs, maxSizeOfInstructions
+}
+
+headFlagsMergeBitMap = {
+ 'size': 16,
+ '*': bitwise_or,
+ 1: bitwise_and, # Baseline at y = 0
+ 2: bitwise_and, # lsb at x = 0
+ 3: bitwise_and, # Force ppem to integer values. FIXME?
+ 5: bitwise_and, # Font is vertical
+ 6: lambda bit: 0, # Always set to zero
+ 11: bitwise_and, # Font data is 'lossless'
+ 13: bitwise_and, # Optimized for ClearType
+ 14: bitwise_and, # Last resort font. FIXME? equal or first may be better
+ 15: lambda bit: 0, # Always set to zero
+}
+
+ttLib.getTableClass('head').mergeMap = {
+ 'tableTag': equal,
+ 'tableVersion': max,
+ 'fontRevision': max,
+ 'checkSumAdjustment': lambda lst: 0, # We need *something* here
+ 'magicNumber': equal,
+ 'flags': mergeBits(headFlagsMergeBitMap),
+ 'unitsPerEm': equal,
+ 'created': current_time,
+ 'modified': current_time,
+ 'xMin': min,
+ 'yMin': min,
+ 'xMax': max,
+ 'yMax': max,
+ 'macStyle': first,
+ 'lowestRecPPEM': max,
+ 'fontDirectionHint': lambda lst: 2,
+ 'indexToLocFormat': first,
+ 'glyphDataFormat': equal,
+}
+
+ttLib.getTableClass('hhea').mergeMap = {
+ '*': equal,
+ 'tableTag': equal,
+ 'tableVersion': max,
+ 'ascent': max,
+ 'descent': min,
+ 'lineGap': max,
+ 'advanceWidthMax': max,
+ 'minLeftSideBearing': min,
+ 'minRightSideBearing': min,
+ 'xMaxExtent': max,
+ 'caretSlopeRise': first,
+ 'caretSlopeRun': first,
+ 'caretOffset': first,
+ 'numberOfHMetrics': recalculate,
+}
+
+ttLib.getTableClass('vhea').mergeMap = {
+ '*': equal,
+ 'tableTag': equal,
+ 'tableVersion': max,
+ 'ascent': max,
+ 'descent': min,
+ 'lineGap': max,
+ 'advanceHeightMax': max,
+ 'minTopSideBearing': min,
+ 'minBottomSideBearing': min,
+ 'yMaxExtent': max,
+ 'caretSlopeRise': first,
+ 'caretSlopeRun': first,
+ 'caretOffset': first,
+ 'numberOfVMetrics': recalculate,
+}
+
+os2FsTypeMergeBitMap = {
+ 'size': 16,
+ '*': lambda bit: 0,
+ 1: bitwise_or, # no embedding permitted
+ 2: bitwise_and, # allow previewing and printing documents
+ 3: bitwise_and, # allow editing documents
+ 8: bitwise_or, # no subsetting permitted
+ 9: bitwise_or, # no embedding of outlines permitted
+}
+
+def mergeOs2FsType(lst):
+ lst = list(lst)
+ if all(item == 0 for item in lst):
+ return 0
+
+ # Compute least restrictive logic for each fsType value
+ for i in range(len(lst)):
+ # unset bit 1 (no embedding permitted) if either bit 2 or 3 is set
+ if lst[i] & 0x000C:
+ lst[i] &= ~0x0002
+ # set bit 2 (allow previewing) if bit 3 is set (allow editing)
+ elif lst[i] & 0x0008:
+ lst[i] |= 0x0004
+ # set bits 2 and 3 if everything is allowed
+ elif lst[i] == 0:
+ lst[i] = 0x000C
+
+ fsType = mergeBits(os2FsTypeMergeBitMap)(lst)
+ # unset bits 2 and 3 if bit 1 is set (some font is "no embedding")
+ if fsType & 0x0002:
+ fsType &= ~0x000C
+ return fsType
+
+
+ttLib.getTableClass('OS/2').mergeMap = {
+ '*': first,
+ 'tableTag': equal,
+ 'version': max,
+ 'xAvgCharWidth': avg_int, # Apparently fontTools doesn't recalc this
+ 'fsType': mergeOs2FsType, # Will be overwritten
+ 'panose': first, # FIXME: should really be the first Latin font
+ 'ulUnicodeRange1': bitwise_or,
+ 'ulUnicodeRange2': bitwise_or,
+ 'ulUnicodeRange3': bitwise_or,
+ 'ulUnicodeRange4': bitwise_or,
+ 'fsFirstCharIndex': min,
+ 'fsLastCharIndex': max,
+ 'sTypoAscender': max,
+ 'sTypoDescender': min,
+ 'sTypoLineGap': max,
+ 'usWinAscent': max,
+ 'usWinDescent': max,
+ # Version 1
+ 'ulCodePageRange1': onlyExisting(bitwise_or),
+ 'ulCodePageRange2': onlyExisting(bitwise_or),
+ # Version 2, 3, 4
+ 'sxHeight': onlyExisting(max),
+ 'sCapHeight': onlyExisting(max),
+ 'usDefaultChar': onlyExisting(first),
+ 'usBreakChar': onlyExisting(first),
+ 'usMaxContext': onlyExisting(max),
+ # version 5
+ 'usLowerOpticalPointSize': onlyExisting(min),
+ 'usUpperOpticalPointSize': onlyExisting(max),
+}
+
+@add_method(ttLib.getTableClass('OS/2'))
+def merge(self, m, tables):
+ DefaultTable.merge(self, m, tables)
+ if self.version < 2:
+ # bits 8 and 9 are reserved and should be set to zero
+ self.fsType &= ~0x0300
+ if self.version >= 3:
+ # Only one of bits 1, 2, and 3 may be set. We already take
+ # care of bit 1 implications in mergeOs2FsType. So unset
+ # bit 2 if bit 3 is already set.
+ if self.fsType & 0x0008:
+ self.fsType &= ~0x0004
+ return self
+
+ttLib.getTableClass('post').mergeMap = {
+ '*': first,
+ 'tableTag': equal,
+ 'formatType': max,
+ 'isFixedPitch': min,
+ 'minMemType42': max,
+ 'maxMemType42': lambda lst: 0,
+ 'minMemType1': max,
+ 'maxMemType1': lambda lst: 0,
+ 'mapping': onlyExisting(sumDicts),
+ 'extraNames': lambda lst: [],
+}
+
+ttLib.getTableClass('vmtx').mergeMap = ttLib.getTableClass('hmtx').mergeMap = {
+ 'tableTag': equal,
+ 'metrics': sumDicts,
+}
+
+ttLib.getTableClass('name').mergeMap = {
+ 'tableTag': equal,
+ 'names': first, # FIXME? Does mixing name records make sense?
+}
+
+ttLib.getTableClass('loca').mergeMap = {
+ '*': recalculate,
+ 'tableTag': equal,
+}
+
+ttLib.getTableClass('glyf').mergeMap = {
+ 'tableTag': equal,
+ 'glyphs': sumDicts,
+ 'glyphOrder': sumLists,
+}
+
+@add_method(ttLib.getTableClass('glyf'))
+def merge(self, m, tables):
+ for i,table in enumerate(tables):
+ for g in table.glyphs.values():
+ if i:
+ # Drop hints for all but first font, since
+ # we don't map functions / CVT values.
+ g.removeHinting()
+ # Expand composite glyphs to load their
+ # composite glyph names.
+ if g.isComposite():
+ g.expand(table)
+ return DefaultTable.merge(self, m, tables)
+
+ttLib.getTableClass('prep').mergeMap = lambda self, lst: first(lst)
+ttLib.getTableClass('fpgm').mergeMap = lambda self, lst: first(lst)
+ttLib.getTableClass('cvt ').mergeMap = lambda self, lst: first(lst)
+ttLib.getTableClass('gasp').mergeMap = lambda self, lst: first(lst) # FIXME? Appears irreconcilable
+
+@add_method(ttLib.getTableClass('CFF '))
+def merge(self, m, tables):
+
+ if any(hasattr(table, "FDSelect") for table in tables):
+ raise NotImplementedError(
+ "Merging CID-keyed CFF tables is not supported yet"
+ )
+
+ for table in tables:
+ table.cff.desubroutinize()
+
+ newcff = tables[0]
+ newfont = newcff.cff[0]
+ private = newfont.Private
+ storedNamesStrings = []
+ glyphOrderStrings = []
+ glyphOrder = set(newfont.getGlyphOrder())
+
+ for name in newfont.strings.strings:
+ if name not in glyphOrder:
+ storedNamesStrings.append(name)
+ else:
+ glyphOrderStrings.append(name)
+
+ chrset = list(newfont.charset)
+ newcs = newfont.CharStrings
+ log.debug("FONT 0 CharStrings: %d.", len(newcs))
+
+ for i, table in enumerate(tables[1:], start=1):
+ font = table.cff[0]
+ font.Private = private
+ fontGlyphOrder = set(font.getGlyphOrder())
+ for name in font.strings.strings:
+ if name in fontGlyphOrder:
+ glyphOrderStrings.append(name)
+ cs = font.CharStrings
+ gs = table.cff.GlobalSubrs
+ log.debug("Font %d CharStrings: %d.", i, len(cs))
+ chrset.extend(font.charset)
+ if newcs.charStringsAreIndexed:
+ for i, name in enumerate(cs.charStrings, start=len(newcs)):
+ newcs.charStrings[name] = i
+ newcs.charStringsIndex.items.append(None)
+ for name in cs.charStrings:
+ newcs[name] = cs[name]
+
+ newfont.charset = chrset
+ newfont.numGlyphs = len(chrset)
+ newfont.strings.strings = glyphOrderStrings + storedNamesStrings
+
+ return newcff
+
+@add_method(ttLib.getTableClass('cmap'))
+def merge(self, m, tables):
+
+ # TODO Handle format=14.
+ if not hasattr(m, 'cmap'):
+ computeMegaCmap(m, tables)
+ cmap = m.cmap
+
+ cmapBmpOnly = {uni: gid for uni,gid in cmap.items() if uni <= 0xFFFF}
+ self.tables = []
+ module = ttLib.getTableModule('cmap')
+ if len(cmapBmpOnly) != len(cmap):
+ # format-12 required.
+ cmapTable = module.cmap_classes[12](12)
+ cmapTable.platformID = 3
+ cmapTable.platEncID = 10
+ cmapTable.language = 0
+ cmapTable.cmap = cmap
+ self.tables.append(cmapTable)
+ # always create format-4
+ cmapTable = module.cmap_classes[4](4)
+ cmapTable.platformID = 3
+ cmapTable.platEncID = 1
+ cmapTable.language = 0
+ cmapTable.cmap = cmapBmpOnly
+ # ordered by platform then encoding
+ self.tables.insert(0, cmapTable)
+ self.tableVersion = 0
+ self.numSubTables = len(self.tables)
+ return self
diff --git a/Lib/fontTools/merge/unicode.py b/Lib/fontTools/merge/unicode.py
new file mode 100644
index 00000000..f91baee8
--- /dev/null
+++ b/Lib/fontTools/merge/unicode.py
@@ -0,0 +1,65 @@
+# Copyright 2021 Behdad Esfahbod. All Rights Reserved.
+
+def is_Default_Ignorable(u):
+ # http://www.unicode.org/reports/tr44/#Default_Ignorable_Code_Point
+ #
+ # TODO Move me to unicodedata module and autogenerate.
+ #
+ # Unicode 14.0:
+ # $ grep '; Default_Ignorable_Code_Point ' DerivedCoreProperties.txt | sed 's/;.*#/#/'
+ # 00AD # Cf SOFT HYPHEN
+ # 034F # Mn COMBINING GRAPHEME JOINER
+ # 061C # Cf ARABIC LETTER MARK
+ # 115F..1160 # Lo [2] HANGUL CHOSEONG FILLER..HANGUL JUNGSEONG FILLER
+ # 17B4..17B5 # Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
+ # 180B..180D # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
+ # 180E # Cf MONGOLIAN VOWEL SEPARATOR
+ # 180F # Mn MONGOLIAN FREE VARIATION SELECTOR FOUR
+ # 200B..200F # Cf [5] ZERO WIDTH SPACE..RIGHT-TO-LEFT MARK
+ # 202A..202E # Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE
+ # 2060..2064 # Cf [5] WORD JOINER..INVISIBLE PLUS
+ # 2065 # Cn <reserved-2065>
+ # 2066..206F # Cf [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES
+ # 3164 # Lo HANGUL FILLER
+ # FE00..FE0F # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
+ # FEFF # Cf ZERO WIDTH NO-BREAK SPACE
+ # FFA0 # Lo HALFWIDTH HANGUL FILLER
+ # FFF0..FFF8 # Cn [9] <reserved-FFF0>..<reserved-FFF8>
+ # 1BCA0..1BCA3 # Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP
+ # 1D173..1D17A # Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE
+ # E0000 # Cn <reserved-E0000>
+ # E0001 # Cf LANGUAGE TAG
+ # E0002..E001F # Cn [30] <reserved-E0002>..<reserved-E001F>
+ # E0020..E007F # Cf [96] TAG SPACE..CANCEL TAG
+ # E0080..E00FF # Cn [128] <reserved-E0080>..<reserved-E00FF>
+ # E0100..E01EF # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
+ # E01F0..E0FFF # Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
+ return (
+ u == 0x00AD or # Cf SOFT HYPHEN
+ u == 0x034F or # Mn COMBINING GRAPHEME JOINER
+ u == 0x061C or # Cf ARABIC LETTER MARK
+ 0x115F <= u <= 0x1160 or # Lo [2] HANGUL CHOSEONG FILLER..HANGUL JUNGSEONG FILLER
+ 0x17B4 <= u <= 0x17B5 or # Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
+ 0x180B <= u <= 0x180D or # Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
+ u == 0x180E or # Cf MONGOLIAN VOWEL SEPARATOR
+ u == 0x180F or # Mn MONGOLIAN FREE VARIATION SELECTOR FOUR
+ 0x200B <= u <= 0x200F or # Cf [5] ZERO WIDTH SPACE..RIGHT-TO-LEFT MARK
+ 0x202A <= u <= 0x202E or # Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE
+ 0x2060 <= u <= 0x2064 or # Cf [5] WORD JOINER..INVISIBLE PLUS
+ u == 0x2065 or # Cn <reserved-2065>
+ 0x2066 <= u <= 0x206F or # Cf [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES
+ u == 0x3164 or # Lo HANGUL FILLER
+ 0xFE00 <= u <= 0xFE0F or # Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
+ u == 0xFEFF or # Cf ZERO WIDTH NO-BREAK SPACE
+ u == 0xFFA0 or # Lo HALFWIDTH HANGUL FILLER
+ 0xFFF0 <= u <= 0xFFF8 or # Cn [9] <reserved-FFF0>..<reserved-FFF8>
+ 0x1BCA0 <= u <= 0x1BCA3 or # Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP
+ 0x1D173 <= u <= 0x1D17A or # Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE
+ u == 0xE0000 or # Cn <reserved-E0000>
+ u == 0xE0001 or # Cf LANGUAGE TAG
+ 0xE0002 <= u <= 0xE001F or # Cn [30] <reserved-E0002>..<reserved-E001F>
+ 0xE0020 <= u <= 0xE007F or # Cf [96] TAG SPACE..CANCEL TAG
+ 0xE0080 <= u <= 0xE00FF or # Cn [128] <reserved-E0080>..<reserved-E00FF>
+ 0xE0100 <= u <= 0xE01EF or # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
+ 0xE01F0 <= u <= 0xE0FFF or # Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
+ False)
diff --git a/Lib/fontTools/merge/util.py b/Lib/fontTools/merge/util.py
new file mode 100644
index 00000000..66cea4d5
--- /dev/null
+++ b/Lib/fontTools/merge/util.py
@@ -0,0 +1,131 @@
+# Copyright 2013 Google, Inc. All Rights Reserved.
+#
+# Google Author(s): Behdad Esfahbod, Roozbeh Pournader
+
+from fontTools.misc.timeTools import timestampNow
+from fontTools.ttLib.tables.DefaultTable import DefaultTable
+from functools import reduce
+import operator
+import logging
+
+
+log = logging.getLogger("fontTools.merge")
+
+
+# General utility functions for merging values from different fonts
+
+def equal(lst):
+ lst = list(lst)
+ t = iter(lst)
+ first = next(t)
+ assert all(item == first for item in t), "Expected all items to be equal: %s" % lst
+ return first
+
+def first(lst):
+ return next(iter(lst))
+
+def recalculate(lst):
+ return NotImplemented
+
+def current_time(lst):
+ return timestampNow()
+
+def bitwise_and(lst):
+ return reduce(operator.and_, lst)
+
+def bitwise_or(lst):
+ return reduce(operator.or_, lst)
+
+def avg_int(lst):
+ lst = list(lst)
+ return sum(lst) // len(lst)
+
+def onlyExisting(func):
+ """Returns a filter func that when called with a list,
+ only calls func on the non-NotImplemented items of the list,
+ and only so if there's at least one item remaining.
+ Otherwise returns NotImplemented."""
+
+ def wrapper(lst):
+ items = [item for item in lst if item is not NotImplemented]
+ return func(items) if items else NotImplemented
+
+ return wrapper
+
+def sumLists(lst):
+ l = []
+ for item in lst:
+ l.extend(item)
+ return l
+
+def sumDicts(lst):
+ d = {}
+ for item in lst:
+ d.update(item)
+ return d
+
+def mergeBits(bitmap):
+
+ def wrapper(lst):
+ lst = list(lst)
+ returnValue = 0
+ for bitNumber in range(bitmap['size']):
+ try:
+ mergeLogic = bitmap[bitNumber]
+ except KeyError:
+ try:
+ mergeLogic = bitmap['*']
+ except KeyError:
+ raise Exception("Don't know how to merge bit %s" % bitNumber)
+ shiftedBit = 1 << bitNumber
+ mergedValue = mergeLogic(bool(item & shiftedBit) for item in lst)
+ returnValue |= mergedValue << bitNumber
+ return returnValue
+
+ return wrapper
+
+
+class AttendanceRecordingIdentityDict(object):
+ """A dictionary-like object that records indices of items actually accessed
+ from a list."""
+
+ def __init__(self, lst):
+ self.l = lst
+ self.d = {id(v):i for i,v in enumerate(lst)}
+ self.s = set()
+
+ def __getitem__(self, v):
+ self.s.add(self.d[id(v)])
+ return v
+
+class GregariousIdentityDict(object):
+ """A dictionary-like object that welcomes guests without reservations and
+ adds them to the end of the guest list."""
+
+ def __init__(self, lst):
+ self.l = lst
+ self.s = set(id(v) for v in lst)
+
+ def __getitem__(self, v):
+ if id(v) not in self.s:
+ self.s.add(id(v))
+ self.l.append(v)
+ return v
+
+class NonhashableDict(object):
+ """A dictionary-like object mapping objects to values."""
+
+ def __init__(self, keys, values=None):
+ if values is None:
+ self.d = {id(v):i for i,v in enumerate(keys)}
+ else:
+ self.d = {id(k):v for k,v in zip(keys, values)}
+
+ def __getitem__(self, k):
+ return self.d[id(k)]
+
+ def __setitem__(self, k, v):
+ self.d[id(k)] = v
+
+ def __delitem__(self, k):
+ del self.d[id(k)]
diff --git a/Lib/fontTools/misc/arrayTools.py b/Lib/fontTools/misc/arrayTools.py
index c20a9eda..01ccbe82 100644
--- a/Lib/fontTools/misc/arrayTools.py
+++ b/Lib/fontTools/misc/arrayTools.py
@@ -17,7 +17,7 @@ def calcBounds(array):
Returns:
A four-item tuple representing the bounding rectangle ``(xMin, yMin, xMax, yMax)``.
"""
- if len(array) == 0:
+ if not array:
return 0, 0, 0, 0
xs = [x for x, y in array]
ys = [y for x, y in array]
diff --git a/Lib/fontTools/misc/bezierTools.py b/Lib/fontTools/misc/bezierTools.py
index 2cf2640c..25e5c548 100644
--- a/Lib/fontTools/misc/bezierTools.py
+++ b/Lib/fontTools/misc/bezierTools.py
@@ -879,12 +879,14 @@ def _line_t_of_pt(s, e, pt):
sx, sy = s
ex, ey = e
px, py = pt
- if not math.isclose(sx, ex):
+ if abs(sx - ex) < epsilon and abs(sy - ey) < epsilon:
+ # Line is a point!
+ return -1
+ # Use the largest
+ if abs(sx - ex) > abs(sy - ey):
return (px - sx) / (ex - sx)
- if not math.isclose(sy, ey):
+ else:
return (py - sy) / (ey - sy)
- # Line is a point!
- return -1
def _both_points_are_on_same_side_of_origin(a, b, origin):
@@ -914,7 +916,7 @@ def lineLineIntersections(s1, e1, s2, e2):
>>> intersection.pt
(374.44882952482897, 313.73458370177315)
>>> (intersection.t1, intersection.t2)
- (0.45069111555824454, 0.5408153767394238)
+ (0.45069111555824465, 0.5408153767394238)
"""
s1x, s1y = s1
e1x, e1y = e1
@@ -1013,7 +1015,7 @@ def curveLineIntersections(curve, line):
>>> len(intersections)
3
>>> intersections[0].pt
- (84.90010344084885, 189.87306176459828)
+ (84.9000930760723, 189.87306176459828)
"""
if len(curve) == 3:
pointFinder = quadraticPointAtT
@@ -1024,7 +1026,11 @@ def curveLineIntersections(curve, line):
intersections = []
for t in _curve_line_intersections_t(curve, line):
pt = pointFinder(*curve, t)
- intersections.append(Intersection(pt=pt, t1=t, t2=_line_t_of_pt(*line, pt)))
+ # Back-project the point onto the line, to avoid problems with
+ # numerical accuracy in the case of vertical and horizontal lines
+ line_t = _line_t_of_pt(*line, pt)
+ pt = linePointAtT(*line, line_t)
+ intersections.append(Intersection(pt=pt, t1=t, t2=line_t))
return intersections
@@ -1169,7 +1175,7 @@ def segmentSegmentIntersections(seg1, seg2):
>>> len(intersections)
3
>>> intersections[0].pt
- (84.90010344084885, 189.87306176459828)
+ (84.9000930760723, 189.87306176459828)
"""
# Arrange by degree
diff --git a/Lib/fontTools/misc/eexec.py b/Lib/fontTools/misc/eexec.py
index 71f733c1..d1d4bb6a 100644
--- a/Lib/fontTools/misc/eexec.py
+++ b/Lib/fontTools/misc/eexec.py
@@ -12,7 +12,7 @@ the new key at the end of the operation.
"""
-from fontTools.misc.py23 import bytechr, bytesjoin, byteord
+from fontTools.misc.textTools import bytechr, bytesjoin, byteord
def _decryptChar(cipher, R):
diff --git a/Lib/fontTools/misc/etree.py b/Lib/fontTools/misc/etree.py
index 6e943e4b..cd4df365 100644
--- a/Lib/fontTools/misc/etree.py
+++ b/Lib/fontTools/misc/etree.py
@@ -11,7 +11,7 @@ or subclasses built-in ElementTree classes to add features that are
only availble in lxml, like OrderedDict for attributes, pretty_print and
iterwalk.
"""
-from fontTools.misc.py23 import unicode, tostr
+from fontTools.misc.textTools import tostr
XML_DECLARATION = """<?xml version='1.0' encoding='%s'?>"""
@@ -150,9 +150,7 @@ except ImportError:
)
return
- if encoding is unicode or (
- encoding is not None and encoding.lower() == "unicode"
- ):
+ if encoding is not None and encoding.lower() == "unicode":
if xml_declaration:
raise ValueError(
"Serialisation to unicode must not request an XML declaration"
diff --git a/Lib/fontTools/misc/fixedTools.py b/Lib/fontTools/misc/fixedTools.py
index f0474abf..6ec7d06e 100644
--- a/Lib/fontTools/misc/fixedTools.py
+++ b/Lib/fontTools/misc/fixedTools.py
@@ -17,7 +17,7 @@ functions for converting between fixed-point, float and string representations.
The maximum value that can still fit in an F2Dot14. (1.99993896484375)
"""
-from .roundTools import otRound
+from .roundTools import otRound, nearestMultipleShortestRepr
import logging
log = logging.getLogger(__name__)
@@ -125,6 +125,7 @@ def fixedToStr(value, precisionBits):
This is pretty slow compared to the simple division used in ``fixedToFloat``.
Use sporadically when you need to serialize or print the fixed-point number in
a human-readable form.
+ It uses nearestMultipleShortestRepr under the hood.
Args:
value (int): The fixed-point value to convert.
@@ -133,27 +134,8 @@ def fixedToStr(value, precisionBits):
Returns:
str: A string representation of the value.
"""
- if not value: return "0.0"
-
scale = 1 << precisionBits
- value /= scale
- eps = .5 / scale
- lo = value - eps
- hi = value + eps
- # If the range of valid choices spans an integer, return the integer.
- if int(lo) != int(hi):
- return str(float(round(value)))
- fmt = "%.8f"
- lo = fmt % lo
- hi = fmt % hi
- assert len(lo) == len(hi) and lo != hi
- for i in range(len(lo)):
- if lo[i] != hi[i]:
- break
- period = lo.find('.')
- assert period < i
- fmt = "%%.%df" % (i - period)
- return fmt % value
+ return nearestMultipleShortestRepr(value/scale, factor=1.0/scale)
def strToFixed(string, precisionBits):
@@ -168,9 +150,9 @@ def strToFixed(string, precisionBits):
Examples::
- >>> ## to convert a float string to a 2.14 fixed-point number:
- >>> strToFixed('-0.61884', precisionBits=14)
- -10139
+ >>> ## to convert a float string to a 2.14 fixed-point number:
+ >>> strToFixed('-0.61884', precisionBits=14)
+ -10139
"""
value = float(string)
return otRound(value * (1 << precisionBits))
@@ -214,7 +196,7 @@ def floatToFixedToStr(value, precisionBits):
This uses the shortest decimal representation (ie. the least
number of fractional decimal digits) to represent the equivalent
fixed-point number with ``precisionBits`` fractional binary digits.
- It uses fixedToStr under the hood.
+ It uses nearestMultipleShortestRepr under the hood.
>>> floatToFixedToStr(-0.61883544921875, precisionBits=14)
'-0.61884'
@@ -227,8 +209,8 @@ def floatToFixedToStr(value, precisionBits):
str: A string representation of the value.
"""
- fixed = otRound(value * (1 << precisionBits))
- return fixedToStr(fixed, precisionBits)
+ scale = 1 << precisionBits
+ return nearestMultipleShortestRepr(value, factor=1.0/scale)
def ensureVersionIsLong(value):
diff --git a/Lib/fontTools/misc/intTools.py b/Lib/fontTools/misc/intTools.py
index 448e1627..6ba03e16 100644
--- a/Lib/fontTools/misc/intTools.py
+++ b/Lib/fontTools/misc/intTools.py
@@ -1,28 +1,25 @@
-__all__ = ['popCount']
+__all__ = ["popCount"]
-def popCount(v):
- """Return number of 1 bits (population count) of an integer.
+try:
+ bit_count = int.bit_count
+except AttributeError:
- If the integer is negative, the number of 1 bits in the
- twos-complement representation of the integer is returned. i.e.
- ``popCount(-30) == 28`` because -30 is::
+ def bit_count(v):
+ return bin(v).count("1")
- 1111 1111 1111 1111 1111 1111 1110 0010
- Uses the algorithm from `HAKMEM item 169 <https://www.inwap.com/pdp10/hbaker/hakmem/hacks.html#item169>`_.
+"""Return number of 1 bits (population count) of the absolute value of an integer.
- Args:
- v (int): Value to count.
+See https://docs.python.org/3.10/library/stdtypes.html#int.bit_count
+"""
+popCount = bit_count
- Returns:
- Number of 1 bits in the binary representation of ``v``.
- """
- if v > 0xFFFFFFFF:
- return popCount(v >> 32) + popCount(v & 0xFFFFFFFF)
+def bit_indices(v):
+ """Return list of indices where bits are set, 0 being the index of the least significant bit.
- # HACKMEM 169
- y = (v >> 1) & 0xDB6DB6DB
- y = v - y - ((y >> 1) & 0xDB6DB6DB)
- return (((y + (y >> 3)) & 0xC71C71C7) % 0x3F)
+ >>> bit_indices(0b101)
+ [0, 2]
+ """
+ return [i for i, b in enumerate(bin(v)[::-1]) if b == "1"]
diff --git a/Lib/fontTools/misc/macCreatorType.py b/Lib/fontTools/misc/macCreatorType.py
index fb237200..6b191054 100644
--- a/Lib/fontTools/misc/macCreatorType.py
+++ b/Lib/fontTools/misc/macCreatorType.py
@@ -1,4 +1,4 @@
-from fontTools.misc.py23 import Tag, bytesjoin, strjoin
+from fontTools.misc.textTools import Tag, bytesjoin, strjoin
try:
import xattr
except ImportError:
@@ -18,7 +18,7 @@ def getMacCreatorAndType(path):
path (str): A file path.
Returns:
- A tuple of two :py:class:`fontTools.py23.Tag` objects, the first
+ A tuple of two :py:class:`fontTools.textTools.Tag` objects, the first
representing the file creator and the second representing the
file type.
"""
diff --git a/Lib/fontTools/misc/macRes.py b/Lib/fontTools/misc/macRes.py
index 2c15b347..895ca1b8 100644
--- a/Lib/fontTools/misc/macRes.py
+++ b/Lib/fontTools/misc/macRes.py
@@ -1,7 +1,7 @@
-from fontTools.misc.py23 import bytesjoin, tostr
from io import BytesIO
import struct
from fontTools.misc import sstruct
+from fontTools.misc.textTools import bytesjoin, tostr
from collections import OrderedDict
from collections.abc import MutableMapping
diff --git a/Lib/fontTools/misc/plistlib/__init__.py b/Lib/fontTools/misc/plistlib/__init__.py
index 84dc4183..eb4b5259 100644
--- a/Lib/fontTools/misc/plistlib/__init__.py
+++ b/Lib/fontTools/misc/plistlib/__init__.py
@@ -23,7 +23,7 @@ from functools import singledispatch
from fontTools.misc import etree
-from fontTools.misc.py23 import tostr
+from fontTools.misc.textTools import tostr
# By default, we
@@ -151,7 +151,7 @@ PlistEncodable = Union[
Data,
datetime,
float,
- int,
+ Integral,
Mapping[str, Any],
Sequence[Any],
str,
diff --git a/Lib/fontTools/misc/psCharStrings.py b/Lib/fontTools/misc/psCharStrings.py
index cb675050..29c2d365 100644
--- a/Lib/fontTools/misc/psCharStrings.py
+++ b/Lib/fontTools/misc/psCharStrings.py
@@ -2,10 +2,10 @@
CFF dictionary data and Type1/Type2 CharStrings.
"""
-from fontTools.misc.py23 import bytechr, byteord, bytesjoin, strjoin
from fontTools.misc.fixedTools import (
fixedToFloat, floatToFixed, floatToFixedToStr, strToFixedToFloat,
)
+from fontTools.misc.textTools import bytechr, byteord, bytesjoin, strjoin
from fontTools.pens.boundsPen import BoundsPen
import struct
import logging
diff --git a/Lib/fontTools/misc/psLib.py b/Lib/fontTools/misc/psLib.py
index 916755ce..a6c8b8b5 100644
--- a/Lib/fontTools/misc/psLib.py
+++ b/Lib/fontTools/misc/psLib.py
@@ -1,4 +1,4 @@
-from fontTools.misc.py23 import bytechr, byteord, bytesjoin, tobytes, tostr
+from fontTools.misc.textTools import bytechr, byteord, bytesjoin, tobytes, tostr
from fontTools.misc import eexec
from .psOperators import (
PSOperators,
@@ -365,6 +365,7 @@ def suckfont(data, encoding="ascii"):
m = re.search(br"/FontName\s+/([^ \t\n\r]+)\s+def", data)
if m:
fontName = m.group(1)
+ fontName = fontName.decode()
else:
fontName = None
interpreter = PSInterpreter(encoding=encoding)
diff --git a/Lib/fontTools/misc/py23.py b/Lib/fontTools/misc/py23.py
index 9096e2ef..29f634d6 100644
--- a/Lib/fontTools/misc/py23.py
+++ b/Lib/fontTools/misc/py23.py
@@ -8,6 +8,8 @@ from io import BytesIO
from io import StringIO as UnicodeIO
from types import SimpleNamespace
+from .textTools import Tag, bytechr, byteord, bytesjoin, strjoin, tobytes, tostr
+
warnings.warn(
"The py23 module has been deprecated and will be removed in a future release. "
"Please update your code.",
@@ -57,61 +59,7 @@ unichr = chr
unicode = str
zip = zip
-
-def bytechr(n):
- return bytes([n])
-
-
-def byteord(c):
- return c if isinstance(c, int) else ord(c)
-
-
-def strjoin(iterable, joiner=""):
- return tostr(joiner).join(iterable)
-
-
-def tobytes(s, encoding="ascii", errors="strict"):
- if not isinstance(s, bytes):
- return s.encode(encoding, errors)
- else:
- return s
-
-
-def tounicode(s, encoding="ascii", errors="strict"):
- if not isinstance(s, unicode):
- return s.decode(encoding, errors)
- else:
- return s
-
-
-tostr = tounicode
-
-
-class Tag(str):
- @staticmethod
- def transcode(blob):
- if isinstance(blob, bytes):
- blob = blob.decode("latin-1")
- return blob
-
- def __new__(self, content):
- return str.__new__(self, self.transcode(content))
-
- def __ne__(self, other):
- return not self.__eq__(other)
-
- def __eq__(self, other):
- return str.__eq__(self, self.transcode(other))
-
- def __hash__(self):
- return str.__hash__(self)
-
- def tobytes(self):
- return self.encode("latin-1")
-
-
-def bytesjoin(iterable, joiner=b""):
- return tobytes(joiner).join(tobytes(item) for item in iterable)
+tounicode = tostr
def xrange(*args, **kwargs):
diff --git a/Lib/fontTools/misc/roundTools.py b/Lib/fontTools/misc/roundTools.py
index c1d546f1..6f4aa634 100644
--- a/Lib/fontTools/misc/roundTools.py
+++ b/Lib/fontTools/misc/roundTools.py
@@ -56,3 +56,50 @@ def roundFunc(tolerance, round=otRound):
return round
return functools.partial(maybeRound, tolerance=tolerance, round=round)
+
+
+def nearestMultipleShortestRepr(value: float, factor: float) -> str:
+ """Round to nearest multiple of factor and return shortest decimal representation.
+
+ This chooses the float that is closer to a multiple of the given factor while
+ having the shortest decimal representation (the least number of fractional decimal
+ digits).
+
+ For example, given the following:
+
+ >>> nearestMultipleShortestRepr(-0.61883544921875, 1.0/(1<<14))
+ '-0.61884'
+
+ Useful when you need to serialize or print a fixed-point number (or multiples
+ thereof, such as F2Dot14 fractions of 180 degrees in COLRv1 PaintRotate) in
+ a human-readable form.
+
+ Args:
+ value (value): The value to be rounded and serialized.
+ factor (float): The value which the result is a close multiple of.
+
+ Returns:
+ str: A compact string representation of the value.
+ """
+ if not value:
+ return "0.0"
+
+ value = otRound(value / factor) * factor
+ eps = .5 * factor
+ lo = value - eps
+ hi = value + eps
+ # If the range of valid choices spans an integer, return the integer.
+ if int(lo) != int(hi):
+ return str(float(round(value)))
+
+ fmt = "%.8f"
+ lo = fmt % lo
+ hi = fmt % hi
+ assert len(lo) == len(hi) and lo != hi
+ for i in range(len(lo)):
+ if lo[i] != hi[i]:
+ break
+ period = lo.find('.')
+ assert period < i
+ fmt = "%%.%df" % (i - period)
+ return fmt % value
diff --git a/Lib/fontTools/misc/sstruct.py b/Lib/fontTools/misc/sstruct.py
index ba1f8788..6db8b515 100644
--- a/Lib/fontTools/misc/sstruct.py
+++ b/Lib/fontTools/misc/sstruct.py
@@ -46,8 +46,8 @@ calcsize(fmt)
it returns the size of the data in bytes.
"""
-from fontTools.misc.py23 import tobytes, tostr
from fontTools.misc.fixedTools import fixedToFloat as fi2fl, floatToFixed as fl2fi
+from fontTools.misc.textTools import tobytes, tostr
import struct
import re
@@ -59,7 +59,7 @@ class Error(Exception):
pass
def pack(fmt, obj):
- formatstring, names, fixes = getformat(fmt)
+ formatstring, names, fixes = getformat(fmt, keep_pad_byte=True)
elements = []
if not isinstance(obj, dict):
obj = obj.__dict__
@@ -112,7 +112,8 @@ _elementRE = re.compile(
r"\s*" # whitespace
r"([A-Za-z_][A-Za-z_0-9]*)" # name (python identifier)
r"\s*:\s*" # whitespace : whitespace
- r"([cbBhHiIlLqQfd]|[0-9]+[ps]|" # formatchar...
+ r"([xcbB?hHiIlLqQfd]|" # formatchar...
+ r"[0-9]+[ps]|" # ...formatchar...
r"([0-9]+)\.([0-9]+)(F))" # ...formatchar
r"\s*" # whitespace
r"(#.*)?$" # [comment] + end of string
@@ -131,7 +132,7 @@ _fixedpointmappings = {
_formatcache = {}
-def getformat(fmt):
+def getformat(fmt, keep_pad_byte=False):
fmt = tostr(fmt, encoding="ascii")
try:
formatstring, names, fixes = _formatcache[fmt]
@@ -153,8 +154,9 @@ def getformat(fmt):
if not m:
raise Error("syntax error in fmt: '%s'" % line)
name = m.group(1)
- names.append(name)
formatchar = m.group(2)
+ if keep_pad_byte or formatchar != "x":
+ names.append(name)
if m.group(3):
# fixed point
before = int(m.group(3))
@@ -182,6 +184,8 @@ def _test():
astr: 5s
afloat: f; adouble: d # multiple "statements" are allowed
afixed: 16.16F
+ abool: ?
+ apad: x
"""
print('size:', calcsize(fmt))
@@ -199,6 +203,7 @@ def _test():
i.afloat = 0.5
i.adouble = 0.5
i.afixed = 1.5
+ i.abool = True
data = pack(fmt, i)
print('data:', repr(data))
diff --git a/Lib/fontTools/misc/testTools.py b/Lib/fontTools/misc/testTools.py
index 1b258e37..db316a82 100644
--- a/Lib/fontTools/misc/testTools.py
+++ b/Lib/fontTools/misc/testTools.py
@@ -7,7 +7,7 @@ import shutil
import sys
import tempfile
from unittest import TestCase as _TestCase
-from fontTools.misc.py23 import tobytes
+from fontTools.misc.textTools import tobytes
from fontTools.misc.xmlWriter import XMLWriter
@@ -38,6 +38,14 @@ def parseXML(xmlSnippet):
return reader.root[2]
+def parseXmlInto(font, parseInto, xmlSnippet):
+ parsed_xml = [e for e in parseXML(xmlSnippet.strip()) if not isinstance(e, str)]
+ for name, attrs, content in parsed_xml:
+ parseInto.fromXML(name, attrs, content, font)
+ parseInto.populateDefaults()
+ return parseInto
+
+
class FakeFont:
def __init__(self, glyphs):
self.glyphOrder_ = glyphs
@@ -57,11 +65,16 @@ class FakeFont:
def getGlyphID(self, name):
return self.reverseGlyphOrderDict_[name]
+ def getGlyphIDMany(self, lst):
+ return [self.getGlyphID(gid) for gid in lst]
+
def getGlyphName(self, glyphID):
if glyphID < len(self.glyphOrder_):
return self.glyphOrder_[glyphID]
else:
return "glyph%.5d" % glyphID
+ def getGlyphNameMany(self, lst):
+ return [self.getGlyphName(gid) for gid in lst]
def getGlyphOrder(self):
return self.glyphOrder_
@@ -136,7 +149,7 @@ class MockFont(object):
self._reverseGlyphOrder = AllocatingDict({'.notdef': 0})
self.lazy = False
- def getGlyphID(self, glyph, requireReal=None):
+ def getGlyphID(self, glyph):
gid = self._reverseGlyphOrder[glyph]
return gid
diff --git a/Lib/fontTools/misc/textTools.py b/Lib/fontTools/misc/textTools.py
index 072976af..bf75bcbd 100644
--- a/Lib/fontTools/misc/textTools.py
+++ b/Lib/fontTools/misc/textTools.py
@@ -1,7 +1,6 @@
"""fontTools.misc.textTools.py -- miscellaneous routines."""
-from fontTools.misc.py23 import bytechr, byteord, bytesjoin, strjoin, tobytes
import ast
import string
@@ -10,6 +9,29 @@ import string
safeEval = ast.literal_eval
+class Tag(str):
+ @staticmethod
+ def transcode(blob):
+ if isinstance(blob, bytes):
+ blob = blob.decode("latin-1")
+ return blob
+
+ def __new__(self, content):
+ return str.__new__(self, self.transcode(content))
+
+ def __ne__(self, other):
+ return not self.__eq__(other)
+
+ def __eq__(self, other):
+ return str.__eq__(self, self.transcode(other))
+
+ def __hash__(self):
+ return str.__hash__(self)
+
+ def tobytes(self):
+ return self.encode("latin-1")
+
+
def readHex(content):
"""Convert a list of hex strings to binary data."""
return deHexStr(strjoin(chunk for chunk in content if isinstance(chunk, str)))
@@ -97,6 +119,36 @@ def pad(data, size):
return data
+def tostr(s, encoding="ascii", errors="strict"):
+ if not isinstance(s, str):
+ return s.decode(encoding, errors)
+ else:
+ return s
+
+
+def tobytes(s, encoding="ascii", errors="strict"):
+ if isinstance(s, str):
+ return s.encode(encoding, errors)
+ else:
+ return bytes(s)
+
+
+def bytechr(n):
+ return bytes([n])
+
+
+def byteord(c):
+ return c if isinstance(c, int) else ord(c)
+
+
+def strjoin(iterable, joiner=""):
+ return tostr(joiner).join(iterable)
+
+
+def bytesjoin(iterable, joiner=b""):
+ return tobytes(joiner).join(tobytes(item) for item in iterable)
+
+
if __name__ == "__main__":
import doctest, sys
sys.exit(doctest.testmod().failed)
diff --git a/Lib/fontTools/misc/transform.py b/Lib/fontTools/misc/transform.py
index 997598f5..94e1f622 100644
--- a/Lib/fontTools/misc/transform.py
+++ b/Lib/fontTools/misc/transform.py
@@ -10,12 +10,16 @@ used as dictionary keys.
This module exports the following symbols:
- Transform -- this is the main class
- Identity -- Transform instance set to the identity transformation
- Offset -- Convenience function that returns a translating transformation
- Scale -- Convenience function that returns a scaling transformation
+Transform
+ this is the main class
+Identity
+ Transform instance set to the identity transformation
+Offset
+ Convenience function that returns a translating transformation
+Scale
+ Convenience function that returns a scaling transformation
-Examples:
+:Example:
>>> t = Transform(2, 0, 0, 3, 0, 0)
>>> t.transformPoint((100, 100))
@@ -72,7 +76,8 @@ class Transform(NamedTuple):
Transform instances are immutable: all transforming methods, eg.
rotate(), return a new Transform instance.
- Examples:
+ :Example:
+
>>> t = Transform()
>>> t
<Transform [1 0 0 1 0 0]>
@@ -85,7 +90,8 @@ class Transform(NamedTuple):
(200, 300)
Transform's constructor takes six arguments, all of which are
- optional, and can be used as keyword arguments:
+ optional, and can be used as keyword arguments::
+
>>> Transform(12)
<Transform [12 0 0 1 0 0]>
>>> Transform(dx=12)
@@ -93,7 +99,8 @@ class Transform(NamedTuple):
>>> Transform(yx=12)
<Transform [1 0 12 1 0 0]>
- Transform instances also behave like sequences of length 6:
+ Transform instances also behave like sequences of length 6::
+
>>> len(Identity)
6
>>> list(Identity)
@@ -101,13 +108,15 @@ class Transform(NamedTuple):
>>> tuple(Identity)
(1, 0, 0, 1, 0, 0)
- Transform instances are comparable:
+ Transform instances are comparable::
+
>>> t1 = Identity.scale(2, 3).translate(4, 6)
>>> t2 = Identity.translate(8, 18).scale(2, 3)
>>> t1 == t2
1
- But beware of floating point rounding errors:
+ But beware of floating point rounding errors::
+
>>> t1 = Identity.scale(0.2, 0.3).translate(0.4, 0.6)
>>> t2 = Identity.translate(0.08, 0.18).scale(0.2, 0.3)
>>> t1
@@ -118,12 +127,14 @@ class Transform(NamedTuple):
0
Transform instances are hashable, meaning you can use them as
- keys in dictionaries:
+ keys in dictionaries::
+
>>> d = {Scale(12, 13): None}
>>> d
{<Transform [12 0 0 13 0 0]>: None}
- But again, beware of floating point rounding errors:
+ But again, beware of floating point rounding errors::
+
>>> t1 = Identity.scale(0.2, 0.3).translate(0.4, 0.6)
>>> t2 = Identity.translate(0.08, 0.18).scale(0.2, 0.3)
>>> t1
@@ -149,7 +160,8 @@ class Transform(NamedTuple):
def transformPoint(self, p):
"""Transform a point.
- Example:
+ :Example:
+
>>> t = Transform()
>>> t = t.scale(2.5, 5.5)
>>> t.transformPoint((100, 100))
@@ -162,7 +174,8 @@ class Transform(NamedTuple):
def transformPoints(self, points):
"""Transform a list of points.
- Example:
+ :Example:
+
>>> t = Scale(2, 3)
>>> t.transformPoints([(0, 0), (0, 100), (100, 100), (100, 0)])
[(0, 0), (0, 300), (200, 300), (200, 0)]
@@ -171,10 +184,36 @@ class Transform(NamedTuple):
xx, xy, yx, yy, dx, dy = self
return [(xx*x + yx*y + dx, xy*x + yy*y + dy) for x, y in points]
+ def transformVector(self, v):
+ """Transform an (dx, dy) vector, treating translation as zero.
+
+ :Example:
+
+ >>> t = Transform(2, 0, 0, 2, 10, 20)
+ >>> t.transformVector((3, -4))
+ (6, -8)
+ >>>
+ """
+ (dx, dy) = v
+ xx, xy, yx, yy = self[:4]
+ return (xx*dx + yx*dy, xy*dx + yy*dy)
+
+ def transformVectors(self, vectors):
+ """Transform a list of (dx, dy) vector, treating translation as zero.
+
+ :Example:
+ >>> t = Transform(2, 0, 0, 2, 10, 20)
+ >>> t.transformVectors([(3, -4), (5, -6)])
+ [(6, -8), (10, -12)]
+ >>>
+ """
+ xx, xy, yx, yy = self[:4]
+ return [(xx*dx + yx*dy, xy*dx + yy*dy) for dx, dy in vectors]
+
def translate(self, x=0, y=0):
"""Return a new transformation, translated (offset) by x, y.
- Example:
+ :Example:
>>> t = Transform()
>>> t.translate(20, 30)
<Transform [1 0 0 1 20 30]>
@@ -186,7 +225,7 @@ class Transform(NamedTuple):
"""Return a new transformation, scaled by x, y. The 'y' argument
may be None, which implies to use the x value for y as well.
- Example:
+ :Example:
>>> t = Transform()
>>> t.scale(5)
<Transform [5 0 0 5 0 0]>
@@ -201,7 +240,7 @@ class Transform(NamedTuple):
def rotate(self, angle):
"""Return a new transformation, rotated by 'angle' (radians).
- Example:
+ :Example:
>>> import math
>>> t = Transform()
>>> t.rotate(math.pi / 2)
@@ -216,7 +255,7 @@ class Transform(NamedTuple):
def skew(self, x=0, y=0):
"""Return a new transformation, skewed by x and y.
- Example:
+ :Example:
>>> import math
>>> t = Transform()
>>> t.skew(math.pi / 4)
@@ -230,7 +269,7 @@ class Transform(NamedTuple):
"""Return a new transformation, transformed by another
transformation.
- Example:
+ :Example:
>>> t = Transform(2, 0, 0, 3, 1, 6)
>>> t.transform((4, 3, 2, 1, 5, 6))
<Transform [8 9 4 3 11 24]>
@@ -251,7 +290,7 @@ class Transform(NamedTuple):
transformed by self. self.reverseTransform(other) is equivalent to
other.transform(self).
- Example:
+ :Example:
>>> t = Transform(2, 0, 0, 3, 1, 6)
>>> t.reverseTransform((4, 3, 2, 1, 5, 6))
<Transform [8 6 6 3 21 15]>
@@ -272,7 +311,7 @@ class Transform(NamedTuple):
def inverse(self):
"""Return the inverse transformation.
- Example:
+ :Example:
>>> t = Identity.translate(2, 3).scale(4, 5)
>>> t.transformPoint((10, 20))
(42, 103)
@@ -290,7 +329,10 @@ class Transform(NamedTuple):
return self.__class__(xx, xy, yx, yy, dx, dy)
def toPS(self):
- """Return a PostScript representation:
+ """Return a PostScript representation
+
+ :Example:
+
>>> t = Identity.scale(2, 3).translate(4, 5)
>>> t.toPS()
'[2 0 0 3 8 15]'
@@ -300,6 +342,9 @@ class Transform(NamedTuple):
def __bool__(self):
"""Returns True if transform is not identity, False otherwise.
+
+ :Example:
+
>>> bool(Identity)
False
>>> bool(Transform())
@@ -326,7 +371,7 @@ Identity = Transform()
def Offset(x=0, y=0):
"""Return the identity transformation offset by x, y.
- Example:
+ :Example:
>>> Offset(2, 3)
<Transform [1 0 0 1 2 3]>
>>>
@@ -337,7 +382,7 @@ def Scale(x, y=None):
"""Return the identity transformation scaled by x, y. The 'y' argument
may be None, which implies to use the x value for y as well.
- Example:
+ :Example:
>>> Scale(2, 3)
<Transform [2 0 0 3 0 0]>
>>>
diff --git a/Lib/fontTools/misc/xmlReader.py b/Lib/fontTools/misc/xmlReader.py
index b2707e99..6ec50de4 100644
--- a/Lib/fontTools/misc/xmlReader.py
+++ b/Lib/fontTools/misc/xmlReader.py
@@ -93,11 +93,12 @@ class XMLReader(object):
if not stackSize:
if name != "ttFont":
raise TTXParseError("illegal root tag: %s" % name)
- sfntVersion = attrs.get("sfntVersion")
- if sfntVersion is not None:
- if len(sfntVersion) != 4:
- sfntVersion = safeEval('"' + sfntVersion + '"')
- self.ttFont.sfntVersion = sfntVersion
+ if self.ttFont.reader is None and not self.ttFont.tables:
+ sfntVersion = attrs.get("sfntVersion")
+ if sfntVersion is not None:
+ if len(sfntVersion) != 4:
+ sfntVersion = safeEval('"' + sfntVersion + '"')
+ self.ttFont.sfntVersion = sfntVersion
self.contentStack.append([])
elif stackSize == 1:
if subFile is not None:
diff --git a/Lib/fontTools/misc/xmlWriter.py b/Lib/fontTools/misc/xmlWriter.py
index fec127a9..9e30fa33 100644
--- a/Lib/fontTools/misc/xmlWriter.py
+++ b/Lib/fontTools/misc/xmlWriter.py
@@ -1,6 +1,6 @@
"""xmlWriter.py -- Simple XML authoring class"""
-from fontTools.misc.py23 import byteord, strjoin, tobytes, tostr
+from fontTools.misc.textTools import byteord, strjoin, tobytes, tostr
import sys
import os
import string
@@ -11,7 +11,7 @@ INDENT = " "
class XMLWriter(object):
def __init__(self, fileOrPath, indentwhite=INDENT, idlefunc=None, encoding="utf_8",
- newlinestr=None):
+ newlinestr="\n"):
if encoding.lower().replace('-','').replace('_','') != 'utf8':
raise Exception('Only UTF-8 encoding is supported.')
if fileOrPath == '-':
diff --git a/Lib/fontTools/otlLib/builder.py b/Lib/fontTools/otlLib/builder.py
index 182f7da6..e3f33551 100644
--- a/Lib/fontTools/otlLib/builder.py
+++ b/Lib/fontTools/otlLib/builder.py
@@ -1,4 +1,5 @@
from collections import namedtuple, OrderedDict
+import os
from fontTools.misc.fixedTools import fixedToFloat
from fontTools import ttLib
from fontTools.ttLib.tables import otTables as ot
@@ -10,6 +11,11 @@ from fontTools.ttLib.tables.otBase import (
)
from fontTools.ttLib.tables import otBase
from fontTools.feaLib.ast import STATNameStatement
+from fontTools.otlLib.optimize.gpos import (
+ GPOS_COMPACT_MODE_DEFAULT,
+ GPOS_COMPACT_MODE_ENV_KEY,
+ compact_lookup,
+)
from fontTools.otlLib.error import OpenTypeLibError
from functools import reduce
import logging
@@ -22,7 +28,7 @@ log = logging.getLogger(__name__)
def buildCoverage(glyphs, glyphMap):
"""Builds a coverage table.
- Coverage tables (as defined in the `OpenType spec <https://docs.microsoft.com/en-gb/typography/opentype/spec/chapter2#coverage-table>`_)
+ Coverage tables (as defined in the `OpenType spec <https://docs.microsoft.com/en-gb/typography/opentype/spec/chapter2#coverage-table>`__)
are used in all OpenType Layout lookups apart from the Extension type, and
define the glyphs involved in a layout subtable. This allows shaping engines
to compare the glyph stream with the coverage table and quickly determine
@@ -50,7 +56,7 @@ def buildCoverage(glyphs, glyphMap):
if not glyphs:
return None
self = ot.Coverage()
- self.glyphs = sorted(glyphs, key=glyphMap.__getitem__)
+ self.glyphs = sorted(set(glyphs), key=glyphMap.__getitem__)
return self
@@ -64,7 +70,7 @@ LOOKUP_FLAG_USE_MARK_FILTERING_SET = 0x0010
def buildLookup(subtables, flags=0, markFilterSet=None):
"""Turns a collection of rules into a lookup.
- A Lookup (as defined in the `OpenType Spec <https://docs.microsoft.com/en-gb/typography/opentype/spec/chapter2#lookupTbl>`_)
+ A Lookup (as defined in the `OpenType Spec <https://docs.microsoft.com/en-gb/typography/opentype/spec/chapter2#lookupTbl>`__)
wraps the individual rules in a layout operation (substitution or
positioning) in a data structure expressing their overall lookup type -
for example, single substitution, mark-to-base attachment, and so on -
@@ -386,7 +392,21 @@ class ChainContextualBuilder(LookupBuilder):
if not ruleset.hasAnyGlyphClasses:
candidates[1] = [self.buildFormat1Subtable(ruleset, chaining)]
+ for i in [1, 2, 3]:
+ if candidates[i]:
+ try:
+ self.getCompiledSize_(candidates[i])
+ except Exception as e:
+ log.warning(
+ "Contextual format %i at %s overflowed (%s)"
+ % (i, str(self.location), e)
+ )
+ candidates[i] = None
+
candidates = [x for x in candidates if x is not None]
+ if not candidates:
+ raise OpenTypeLibError("All candidates overflowed", self.location)
+
winner = min(candidates, key=self.getCompiledSize_)
subtables.extend(winner)
@@ -943,12 +963,22 @@ class MarkBasePosBuilder(LookupBuilder):
positioning lookup.
"""
markClasses = self.buildMarkClasses_(self.marks)
- marks = {
- mark: (markClasses[mc], anchor) for mark, (mc, anchor) in self.marks.items()
- }
+ marks = {}
+ for mark, (mc, anchor) in self.marks.items():
+ if mc not in markClasses:
+ raise ValueError(
+ "Mark class %s not found for mark glyph %s" % (mc, mark)
+ )
+ marks[mark] = (markClasses[mc], anchor)
bases = {}
for glyph, anchors in self.bases.items():
- bases[glyph] = {markClasses[mc]: anchor for (mc, anchor) in anchors.items()}
+ bases[glyph] = {}
+ for mc, anchor in anchors.items():
+ if mc not in markClasses:
+ raise ValueError(
+ "Mark class %s not found for base glyph %s" % (mc, mark)
+ )
+ bases[glyph][markClasses[mc]] = anchor
subtables = buildMarkBasePos(marks, bases, self.glyphMap)
return self.buildLookup_(subtables)
@@ -1373,7 +1403,17 @@ class PairPosBuilder(LookupBuilder):
subtables.extend(buildPairPosGlyphs(self.glyphPairs, self.glyphMap))
for key in sorted(builders.keys()):
subtables.extend(builders[key].subtables())
- return self.buildLookup_(subtables)
+ lookup = self.buildLookup_(subtables)
+
+ # Compact the lookup
+ # This is a good moment to do it because the compaction should create
+ # smaller subtables, which may prevent overflows from happening.
+ mode = os.environ.get(GPOS_COMPACT_MODE_ENV_KEY, GPOS_COMPACT_MODE_DEFAULT)
+ if mode and mode != "0":
+ log.info("Compacting GPOS...")
+ compact_lookup(self.font, mode, lookup)
+
+ return lookup
class SinglePosBuilder(LookupBuilder):
@@ -2091,8 +2131,16 @@ def buildPairPosClassesSubtable(pairs, glyphMap, valueFormat1=None, valueFormat2
for c2 in classes2:
rec2 = ot.Class2Record()
val1, val2 = pairs.get((c1, c2), (None, None))
- rec2.Value1 = ValueRecord(src=val1, valueFormat=valueFormat1) if valueFormat1 else None
- rec2.Value2 = ValueRecord(src=val2, valueFormat=valueFormat2) if valueFormat2 else None
+ rec2.Value1 = (
+ ValueRecord(src=val1, valueFormat=valueFormat1)
+ if valueFormat1
+ else None
+ )
+ rec2.Value2 = (
+ ValueRecord(src=val2, valueFormat=valueFormat2)
+ if valueFormat2
+ else None
+ )
rec1.Class2Record.append(rec2)
self.Class1Count = len(self.Class1Record)
self.Class2Count = len(classes2)
@@ -2191,8 +2239,16 @@ def buildPairPosGlyphsSubtable(pairs, glyphMap, valueFormat1=None, valueFormat2=
for glyph2, val1, val2 in sorted(p[glyph], key=lambda x: glyphMap[x[0]]):
pvr = ot.PairValueRecord()
pvr.SecondGlyph = glyph2
- pvr.Value1 = ValueRecord(src=val1, valueFormat=valueFormat1) if valueFormat1 else None
- pvr.Value2 = ValueRecord(src=val2, valueFormat=valueFormat2) if valueFormat2 else None
+ pvr.Value1 = (
+ ValueRecord(src=val1, valueFormat=valueFormat1)
+ if valueFormat1
+ else None
+ )
+ pvr.Value2 = (
+ ValueRecord(src=val2, valueFormat=valueFormat2)
+ if valueFormat2
+ else None
+ )
ps.PairValueRecord.append(pvr)
ps.PairValueCount = len(ps.PairValueRecord)
self.PairSetCount = len(self.PairSet)
@@ -2313,8 +2369,13 @@ def buildSinglePosSubtable(values, glyphMap):
"""
self = ot.SinglePos()
self.Coverage = buildCoverage(values.keys(), glyphMap)
- valueFormat = self.ValueFormat = reduce(int.__or__, [v.getFormat() for v in values.values()], 0)
- valueRecords = [ValueRecord(src=values[g], valueFormat=valueFormat) for g in self.Coverage.glyphs]
+ valueFormat = self.ValueFormat = reduce(
+ int.__or__, [v.getFormat() for v in values.values()], 0
+ )
+ valueRecords = [
+ ValueRecord(src=values[g], valueFormat=valueFormat)
+ for g in self.Coverage.glyphs
+ ]
if all(v == valueRecords[0] for v in valueRecords):
self.Format = 1
if self.ValueFormat != 0:
@@ -2617,7 +2678,9 @@ AXIS_VALUE_NEGATIVE_INFINITY = fixedToFloat(-0x80000000, 16)
AXIS_VALUE_POSITIVE_INFINITY = fixedToFloat(0x7FFFFFFF, 16)
-def buildStatTable(ttFont, axes, locations=None, elidedFallbackName=2):
+def buildStatTable(
+ ttFont, axes, locations=None, elidedFallbackName=2, windowsNames=True, macNames=True
+):
"""Add a 'STAT' table to 'ttFont'.
'axes' is a list of dictionaries describing axes and their
@@ -2702,17 +2765,23 @@ def buildStatTable(ttFont, axes, locations=None, elidedFallbackName=2):
ttFont["STAT"] = ttLib.newTable("STAT")
statTable = ttFont["STAT"].table = ot.STAT()
nameTable = ttFont["name"]
- statTable.ElidedFallbackNameID = _addName(nameTable, elidedFallbackName)
+ statTable.ElidedFallbackNameID = _addName(
+ nameTable, elidedFallbackName, windows=windowsNames, mac=macNames
+ )
# 'locations' contains data for AxisValue Format 4
- axisRecords, axisValues = _buildAxisRecords(axes, nameTable)
+ axisRecords, axisValues = _buildAxisRecords(
+ axes, nameTable, windowsNames=windowsNames, macNames=macNames
+ )
if not locations:
statTable.Version = 0x00010001
else:
# We'll be adding Format 4 AxisValue records, which
# requires a higher table version
statTable.Version = 0x00010002
- multiAxisValues = _buildAxisValuesFormat4(locations, axes, nameTable)
+ multiAxisValues = _buildAxisValuesFormat4(
+ locations, axes, nameTable, windowsNames=windowsNames, macNames=macNames
+ )
axisValues = multiAxisValues + axisValues
# Store AxisRecords
@@ -2731,13 +2800,15 @@ def buildStatTable(ttFont, axes, locations=None, elidedFallbackName=2):
statTable.AxisValueCount = len(axisValues)
-def _buildAxisRecords(axes, nameTable):
+def _buildAxisRecords(axes, nameTable, windowsNames=True, macNames=True):
axisRecords = []
axisValues = []
for axisRecordIndex, axisDict in enumerate(axes):
axis = ot.AxisRecord()
axis.AxisTag = axisDict["tag"]
- axis.AxisNameID = _addName(nameTable, axisDict["name"], 256)
+ axis.AxisNameID = _addName(
+ nameTable, axisDict["name"], 256, windows=windowsNames, mac=macNames
+ )
axis.AxisOrdering = axisDict.get("ordering", axisRecordIndex)
axisRecords.append(axis)
@@ -2745,7 +2816,9 @@ def _buildAxisRecords(axes, nameTable):
axisValRec = ot.AxisValue()
axisValRec.AxisIndex = axisRecordIndex
axisValRec.Flags = axisVal.get("flags", 0)
- axisValRec.ValueNameID = _addName(nameTable, axisVal["name"])
+ axisValRec.ValueNameID = _addName(
+ nameTable, axisVal["name"], windows=windowsNames, mac=macNames
+ )
if "value" in axisVal:
axisValRec.Value = axisVal["value"]
@@ -2770,7 +2843,9 @@ def _buildAxisRecords(axes, nameTable):
return axisRecords, axisValues
-def _buildAxisValuesFormat4(locations, axes, nameTable):
+def _buildAxisValuesFormat4(
+ locations, axes, nameTable, windowsNames=True, macNames=True
+):
axisTagToIndex = {}
for axisRecordIndex, axisDict in enumerate(axes):
axisTagToIndex[axisDict["tag"]] = axisRecordIndex
@@ -2779,7 +2854,9 @@ def _buildAxisValuesFormat4(locations, axes, nameTable):
for axisLocationDict in locations:
axisValRec = ot.AxisValue()
axisValRec.Format = 4
- axisValRec.ValueNameID = _addName(nameTable, axisLocationDict["name"])
+ axisValRec.ValueNameID = _addName(
+ nameTable, axisLocationDict["name"], windows=windowsNames, mac=macNames
+ )
axisValRec.Flags = axisLocationDict.get("flags", 0)
axisValueRecords = []
for tag, value in axisLocationDict["location"].items():
@@ -2794,7 +2871,7 @@ def _buildAxisValuesFormat4(locations, axes, nameTable):
return axisValues
-def _addName(nameTable, value, minNameID=0):
+def _addName(nameTable, value, minNameID=0, windows=True, mac=True):
if isinstance(value, int):
# Already a nameID
return value
@@ -2818,4 +2895,6 @@ def _addName(nameTable, value, minNameID=0):
return nameID
else:
raise TypeError("value must be int, str, dict or list")
- return nameTable.addMultilingualName(names, minNameID=minNameID)
+ return nameTable.addMultilingualName(
+ names, windows=windows, mac=mac, minNameID=minNameID
+ )
diff --git a/Lib/fontTools/otlLib/optimize/__init__.py b/Lib/fontTools/otlLib/optimize/__init__.py
new file mode 100644
index 00000000..5c007e89
--- /dev/null
+++ b/Lib/fontTools/otlLib/optimize/__init__.py
@@ -0,0 +1,68 @@
+from argparse import RawTextHelpFormatter
+from textwrap import dedent
+
+from fontTools.ttLib import TTFont
+from fontTools.otlLib.optimize.gpos import compact, GPOS_COMPACT_MODE_DEFAULT
+
+def main(args=None):
+ """Optimize the layout tables of an existing font."""
+ from argparse import ArgumentParser
+ from fontTools import configLogger
+
+ parser = ArgumentParser(prog="otlLib.optimize", description=main.__doc__, formatter_class=RawTextHelpFormatter)
+ parser.add_argument("font")
+ parser.add_argument(
+ "-o", metavar="OUTPUTFILE", dest="outfile", default=None, help="output file"
+ )
+ parser.add_argument(
+ "--gpos-compact-mode",
+ help=dedent(
+ f"""\
+ GPOS Lookup type 2 (PairPos) compaction mode:
+ 0 = do not attempt to compact PairPos lookups;
+ 1 to 8 = create at most 1 to 8 new subtables for each existing
+ subtable, provided that it would yield a 50%% file size saving;
+ 9 = create as many new subtables as needed to yield a file size saving.
+ Default: {GPOS_COMPACT_MODE_DEFAULT}.
+
+ This compaction aims to save file size, by splitting large class
+ kerning subtables (Format 2) that contain many zero values into
+ smaller and denser subtables. It's a trade-off between the overhead
+ of several subtables versus the sparseness of one big subtable.
+
+ See the pull request: https://github.com/fonttools/fonttools/pull/2326
+ """
+ ),
+ default=int(GPOS_COMPACT_MODE_DEFAULT),
+ choices=list(range(10)),
+ type=int,
+ )
+ logging_group = parser.add_mutually_exclusive_group(required=False)
+ logging_group.add_argument(
+ "-v", "--verbose", action="store_true", help="Run more verbosely."
+ )
+ logging_group.add_argument(
+ "-q", "--quiet", action="store_true", help="Turn verbosity off."
+ )
+ options = parser.parse_args(args)
+
+ configLogger(
+ level=("DEBUG" if options.verbose else "ERROR" if options.quiet else "INFO")
+ )
+
+ font = TTFont(options.font)
+ # TODO: switch everything to have type(mode) = int when using the Config class
+ compact(font, str(options.gpos_compact_mode))
+ font.save(options.outfile or options.font)
+
+
+
+if __name__ == "__main__":
+ import sys
+
+ if len(sys.argv) > 1:
+ sys.exit(main())
+ import doctest
+
+ sys.exit(doctest.testmod().failed)
+
diff --git a/Lib/fontTools/otlLib/optimize/__main__.py b/Lib/fontTools/otlLib/optimize/__main__.py
new file mode 100644
index 00000000..03027ecd
--- /dev/null
+++ b/Lib/fontTools/otlLib/optimize/__main__.py
@@ -0,0 +1,6 @@
+import sys
+from fontTools.otlLib.optimize import main
+
+
+if __name__ == '__main__':
+ sys.exit(main())
diff --git a/Lib/fontTools/otlLib/optimize/gpos.py b/Lib/fontTools/otlLib/optimize/gpos.py
new file mode 100644
index 00000000..79873fad
--- /dev/null
+++ b/Lib/fontTools/otlLib/optimize/gpos.py
@@ -0,0 +1,439 @@
+import logging
+from collections import defaultdict, namedtuple
+from functools import reduce
+from itertools import chain
+from math import log2
+from typing import DefaultDict, Dict, Iterable, List, Sequence, Tuple
+
+from fontTools.misc.intTools import bit_count, bit_indices
+from fontTools.ttLib import TTFont
+from fontTools.ttLib.tables import otBase, otTables
+
+# NOTE: activating this optimization via the environment variable is
+# experimental and may not be supported once an alternative mechanism
+# is in place. See: https://github.com/fonttools/fonttools/issues/2349
+GPOS_COMPACT_MODE_ENV_KEY = "FONTTOOLS_GPOS_COMPACT_MODE"
+GPOS_COMPACT_MODE_DEFAULT = "0"
+
+log = logging.getLogger("fontTools.otlLib.optimize.gpos")
+
+
+def compact(font: TTFont, mode: str) -> TTFont:
+ # Ideal plan:
+ # 1. Find lookups of Lookup Type 2: Pair Adjustment Positioning Subtable
+ # https://docs.microsoft.com/en-us/typography/opentype/spec/gpos#lookup-type-2-pair-adjustment-positioning-subtable
+ # 2. Extract glyph-glyph kerning and class-kerning from all present subtables
+ # 3. Regroup into different subtable arrangements
+ # 4. Put back into the lookup
+ #
+ # Actual implementation:
+ # 2. Only class kerning is optimized currently
+ # 3. If the input kerning is already in several subtables, the subtables
+ # are not grouped together first; instead each subtable is treated
+ # independently, so currently this step is:
+ # Split existing subtables into more smaller subtables
+ gpos = font["GPOS"]
+ for lookup in gpos.table.LookupList.Lookup:
+ if lookup.LookupType == 2:
+ compact_lookup(font, mode, lookup)
+ elif lookup.LookupType == 9 and lookup.SubTable[0].ExtensionLookupType == 2:
+ compact_ext_lookup(font, mode, lookup)
+ return font
+
+
+def compact_lookup(font: TTFont, mode: str, lookup: otTables.Lookup) -> None:
+ new_subtables = compact_pair_pos(font, mode, lookup.SubTable)
+ lookup.SubTable = new_subtables
+ lookup.SubTableCount = len(new_subtables)
+
+
+def compact_ext_lookup(font: TTFont, mode: str, lookup: otTables.Lookup) -> None:
+ new_subtables = compact_pair_pos(
+ font, mode, [ext_subtable.ExtSubTable for ext_subtable in lookup.SubTable]
+ )
+ new_ext_subtables = []
+ for subtable in new_subtables:
+ ext_subtable = otTables.ExtensionPos()
+ ext_subtable.Format = 1
+ ext_subtable.ExtSubTable = subtable
+ new_ext_subtables.append(ext_subtable)
+ lookup.SubTable = new_ext_subtables
+ lookup.SubTableCount = len(new_ext_subtables)
+
+
+def compact_pair_pos(
+ font: TTFont, mode: str, subtables: Sequence[otTables.PairPos]
+) -> Sequence[otTables.PairPos]:
+ new_subtables = []
+ for subtable in subtables:
+ if subtable.Format == 1:
+ # Not doing anything to Format 1 (yet?)
+ new_subtables.append(subtable)
+ elif subtable.Format == 2:
+ new_subtables.extend(compact_class_pairs(font, mode, subtable))
+ return new_subtables
+
+
+def compact_class_pairs(
+ font: TTFont, mode: str, subtable: otTables.PairPos
+) -> List[otTables.PairPos]:
+ from fontTools.otlLib.builder import buildPairPosClassesSubtable
+
+ subtables = []
+ classes1: DefaultDict[int, List[str]] = defaultdict(list)
+ for g in subtable.Coverage.glyphs:
+ classes1[subtable.ClassDef1.classDefs.get(g, 0)].append(g)
+ classes2: DefaultDict[int, List[str]] = defaultdict(list)
+ for g, i in subtable.ClassDef2.classDefs.items():
+ classes2[i].append(g)
+ all_pairs = {}
+ for i, class1 in enumerate(subtable.Class1Record):
+ for j, class2 in enumerate(class1.Class2Record):
+ if is_really_zero(class2):
+ continue
+ all_pairs[(tuple(sorted(classes1[i])), tuple(sorted(classes2[j])))] = (
+ getattr(class2, "Value1", None),
+ getattr(class2, "Value2", None),
+ )
+
+ if len(mode) == 1 and mode in "123456789":
+ grouped_pairs = cluster_pairs_by_class2_coverage_custom_cost(
+ font, all_pairs, int(mode)
+ )
+ for pairs in grouped_pairs:
+ subtables.append(
+ buildPairPosClassesSubtable(pairs, font.getReverseGlyphMap())
+ )
+ else:
+ raise ValueError(f"Bad {GPOS_COMPACT_MODE_ENV_KEY}={mode}")
+ return subtables
+
+
+def is_really_zero(class2: otTables.Class2Record) -> bool:
+ v1 = getattr(class2, "Value1", None)
+ v2 = getattr(class2, "Value2", None)
+ return (v1 is None or v1.getEffectiveFormat() == 0) and (
+ v2 is None or v2.getEffectiveFormat() == 0
+ )
+
+
+Pairs = Dict[
+ Tuple[Tuple[str, ...], Tuple[str, ...]],
+ Tuple[otBase.ValueRecord, otBase.ValueRecord],
+]
+
+# Adapted from https://github.com/fonttools/fonttools/blob/f64f0b42f2d1163b2d85194e0979def539f5dca3/Lib/fontTools/ttLib/tables/otTables.py#L935-L958
+def _getClassRanges(glyphIDs: Iterable[int]):
+ glyphIDs = sorted(glyphIDs)
+ last = glyphIDs[0]
+ ranges = [[last]]
+ for glyphID in glyphIDs[1:]:
+ if glyphID != last + 1:
+ ranges[-1].append(last)
+ ranges.append([glyphID])
+ last = glyphID
+ ranges[-1].append(last)
+ return ranges, glyphIDs[0], glyphIDs[-1]
+
+
+# Adapted from https://github.com/fonttools/fonttools/blob/f64f0b42f2d1163b2d85194e0979def539f5dca3/Lib/fontTools/ttLib/tables/otTables.py#L960-L989
+def _classDef_bytes(
+ class_data: List[Tuple[List[Tuple[int, int]], int, int]],
+ class_ids: List[int],
+ coverage=False,
+):
+ if not class_ids:
+ return 0
+ first_ranges, min_glyph_id, max_glyph_id = class_data[class_ids[0]]
+ range_count = len(first_ranges)
+ for i in class_ids[1:]:
+ data = class_data[i]
+ range_count += len(data[0])
+ min_glyph_id = min(min_glyph_id, data[1])
+ max_glyph_id = max(max_glyph_id, data[2])
+ glyphCount = max_glyph_id - min_glyph_id + 1
+ # https://docs.microsoft.com/en-us/typography/opentype/spec/chapter2#class-definition-table-format-1
+ format1_bytes = 6 + glyphCount * 2
+ # https://docs.microsoft.com/en-us/typography/opentype/spec/chapter2#class-definition-table-format-2
+ format2_bytes = 4 + range_count * 6
+ return min(format1_bytes, format2_bytes)
+
+
+ClusteringContext = namedtuple(
+ "ClusteringContext",
+ [
+ "lines",
+ "all_class1",
+ "all_class1_data",
+ "all_class2_data",
+ "valueFormat1_bytes",
+ "valueFormat2_bytes",
+ ],
+)
+
+
+class Cluster:
+ # TODO(Python 3.7): Turn this into a dataclass
+ # ctx: ClusteringContext
+ # indices: int
+ # Caches
+ # TODO(Python 3.8): use functools.cached_property instead of the
+ # manually cached properties, and remove the cache fields listed below.
+ # _indices: Optional[List[int]] = None
+ # _column_indices: Optional[List[int]] = None
+ # _cost: Optional[int] = None
+
+ __slots__ = "ctx", "indices_bitmask", "_indices", "_column_indices", "_cost"
+
+ def __init__(self, ctx: ClusteringContext, indices_bitmask: int):
+ self.ctx = ctx
+ self.indices_bitmask = indices_bitmask
+ self._indices = None
+ self._column_indices = None
+ self._cost = None
+
+ @property
+ def indices(self):
+ if self._indices is None:
+ self._indices = bit_indices(self.indices_bitmask)
+ return self._indices
+
+ @property
+ def column_indices(self):
+ if self._column_indices is None:
+ # Indices of columns that have a 1 in at least 1 line
+ # => binary OR all the lines
+ bitmask = reduce(int.__or__, (self.ctx.lines[i] for i in self.indices))
+ self._column_indices = bit_indices(bitmask)
+ return self._column_indices
+
+ @property
+ def width(self):
+ # Add 1 because Class2=0 cannot be used but needs to be encoded.
+ return len(self.column_indices) + 1
+
+ @property
+ def cost(self):
+ if self._cost is None:
+ self._cost = (
+ # 2 bytes to store the offset to this subtable in the Lookup table above
+ 2
+ # Contents of the subtable
+ # From: https://docs.microsoft.com/en-us/typography/opentype/spec/gpos#pair-adjustment-positioning-format-2-class-pair-adjustment
+ # uint16 posFormat Format identifier: format = 2
+ + 2
+ # Offset16 coverageOffset Offset to Coverage table, from beginning of PairPos subtable.
+ + 2
+ + self.coverage_bytes
+ # uint16 valueFormat1 ValueRecord definition — for the first glyph of the pair (may be zero).
+ + 2
+ # uint16 valueFormat2 ValueRecord definition — for the second glyph of the pair (may be zero).
+ + 2
+ # Offset16 classDef1Offset Offset to ClassDef table, from beginning of PairPos subtable — for the first glyph of the pair.
+ + 2
+ + self.classDef1_bytes
+ # Offset16 classDef2Offset Offset to ClassDef table, from beginning of PairPos subtable — for the second glyph of the pair.
+ + 2
+ + self.classDef2_bytes
+ # uint16 class1Count Number of classes in classDef1 table — includes Class 0.
+ + 2
+ # uint16 class2Count Number of classes in classDef2 table — includes Class 0.
+ + 2
+ # Class1Record class1Records[class1Count] Array of Class1 records, ordered by classes in classDef1.
+ + (self.ctx.valueFormat1_bytes + self.ctx.valueFormat2_bytes)
+ * len(self.indices)
+ * self.width
+ )
+ return self._cost
+
+ @property
+ def coverage_bytes(self):
+ format1_bytes = (
+ # From https://docs.microsoft.com/en-us/typography/opentype/spec/chapter2#coverage-format-1
+ # uint16 coverageFormat Format identifier — format = 1
+ # uint16 glyphCount Number of glyphs in the glyph array
+ 4
+ # uint16 glyphArray[glyphCount] Array of glyph IDs — in numerical order
+ + sum(len(self.ctx.all_class1[i]) for i in self.indices) * 2
+ )
+ ranges = sorted(
+ chain.from_iterable(self.ctx.all_class1_data[i][0] for i in self.indices)
+ )
+ merged_range_count = 0
+ last = None
+ for (start, end) in ranges:
+ if last is not None and start != last + 1:
+ merged_range_count += 1
+ last = end
+ format2_bytes = (
+ # From https://docs.microsoft.com/en-us/typography/opentype/spec/chapter2#coverage-format-2
+ # uint16 coverageFormat Format identifier — format = 2
+ # uint16 rangeCount Number of RangeRecords
+ 4
+ # RangeRecord rangeRecords[rangeCount] Array of glyph ranges — ordered by startGlyphID.
+ # uint16 startGlyphID First glyph ID in the range
+ # uint16 endGlyphID Last glyph ID in the range
+ # uint16 startCoverageIndex Coverage Index of first glyph ID in range
+ + merged_range_count * 6
+ )
+ return min(format1_bytes, format2_bytes)
+
+ @property
+ def classDef1_bytes(self):
+ # We can skip encoding one of the Class1 definitions, and use
+ # Class1=0 to represent it instead, because Class1 is gated by the
+ # Coverage definition. Use Class1=0 for the highest byte savings.
+ # Going through all options takes too long, pick the biggest class
+ # = what happens in otlLib.builder.ClassDefBuilder.classes()
+ biggest_index = max(self.indices, key=lambda i: len(self.ctx.all_class1[i]))
+ return _classDef_bytes(
+ self.ctx.all_class1_data, [i for i in self.indices if i != biggest_index]
+ )
+
+ @property
+ def classDef2_bytes(self):
+ # All Class2 need to be encoded because we can't use Class2=0
+ return _classDef_bytes(self.ctx.all_class2_data, self.column_indices)
+
+
+def cluster_pairs_by_class2_coverage_custom_cost(
+ font: TTFont,
+ pairs: Pairs,
+ compression: int = 5,
+) -> List[Pairs]:
+ if not pairs:
+ # The subtable was actually empty?
+ return [pairs]
+
+ # Sorted for reproducibility/determinism
+ all_class1 = sorted(set(pair[0] for pair in pairs))
+ all_class2 = sorted(set(pair[1] for pair in pairs))
+
+ # Use Python's big ints for binary vectors representing each line
+ lines = [
+ sum(
+ 1 << i if (class1, class2) in pairs else 0
+ for i, class2 in enumerate(all_class2)
+ )
+ for class1 in all_class1
+ ]
+
+ # Map glyph names to ids and work with ints throughout for ClassDef formats
+ name_to_id = font.getReverseGlyphMap()
+ # Each entry in the arrays below is (range_count, min_glyph_id, max_glyph_id)
+ all_class1_data = [
+ _getClassRanges(name_to_id[name] for name in cls) for cls in all_class1
+ ]
+ all_class2_data = [
+ _getClassRanges(name_to_id[name] for name in cls) for cls in all_class2
+ ]
+
+ format1 = 0
+ format2 = 0
+ for pair, value in pairs.items():
+ format1 |= value[0].getEffectiveFormat() if value[0] else 0
+ format2 |= value[1].getEffectiveFormat() if value[1] else 0
+ valueFormat1_bytes = bit_count(format1) * 2
+ valueFormat2_bytes = bit_count(format2) * 2
+
+ ctx = ClusteringContext(
+ lines,
+ all_class1,
+ all_class1_data,
+ all_class2_data,
+ valueFormat1_bytes,
+ valueFormat2_bytes,
+ )
+
+ cluster_cache: Dict[int, Cluster] = {}
+
+ def make_cluster(indices: int) -> Cluster:
+ cluster = cluster_cache.get(indices, None)
+ if cluster is not None:
+ return cluster
+ cluster = Cluster(ctx, indices)
+ cluster_cache[indices] = cluster
+ return cluster
+
+ def merge(cluster: Cluster, other: Cluster) -> Cluster:
+ return make_cluster(cluster.indices_bitmask | other.indices_bitmask)
+
+ # Agglomerative clustering by hand, checking the cost gain of the new
+ # cluster against the previously separate clusters
+ # Start with 1 cluster per line
+ # cluster = set of lines = new subtable
+ clusters = [make_cluster(1 << i) for i in range(len(lines))]
+
+ # Cost of 1 cluster with everything
+ # `(1 << len) - 1` gives a bitmask full of 1's of length `len`
+ cost_before_splitting = make_cluster((1 << len(lines)) - 1).cost
+ log.debug(f" len(clusters) = {len(clusters)}")
+
+ while len(clusters) > 1:
+ lowest_cost_change = None
+ best_cluster_index = None
+ best_other_index = None
+ best_merged = None
+ for i, cluster in enumerate(clusters):
+ for j, other in enumerate(clusters[i + 1 :]):
+ merged = merge(cluster, other)
+ cost_change = merged.cost - cluster.cost - other.cost
+ if lowest_cost_change is None or cost_change < lowest_cost_change:
+ lowest_cost_change = cost_change
+ best_cluster_index = i
+ best_other_index = i + 1 + j
+ best_merged = merged
+ assert lowest_cost_change is not None
+ assert best_cluster_index is not None
+ assert best_other_index is not None
+ assert best_merged is not None
+
+ # If the best merge we found is still taking down the file size, then
+ # there's no question: we must do it, because it's beneficial in both
+ # ways (lower file size and lower number of subtables). However, if the
+ # best merge we found is not reducing file size anymore, then we need to
+ # look at the other stop criteria = the compression factor.
+ if lowest_cost_change > 0:
+ # Stop critera: check whether we should keep merging.
+ # Compute size reduction brought by splitting
+ cost_after_splitting = sum(c.cost for c in clusters)
+ # size_reduction so that after = before * (1 - size_reduction)
+ # E.g. before = 1000, after = 800, 1 - 800/1000 = 0.2
+ size_reduction = 1 - cost_after_splitting / cost_before_splitting
+
+ # Force more merging by taking into account the compression number.
+ # Target behaviour: compression number = 1 to 9, default 5 like gzip
+ # - 1 = accept to add 1 subtable to reduce size by 50%
+ # - 5 = accept to add 5 subtables to reduce size by 50%
+ # See https://github.com/harfbuzz/packtab/blob/master/Lib/packTab/__init__.py#L690-L691
+ # Given the size reduction we have achieved so far, compute how many
+ # new subtables are acceptable.
+ max_new_subtables = -log2(1 - size_reduction) * compression
+ log.debug(
+ f" len(clusters) = {len(clusters):3d} size_reduction={size_reduction:5.2f} max_new_subtables={max_new_subtables}",
+ )
+ if compression == 9:
+ # Override level 9 to mean: create any number of subtables
+ max_new_subtables = len(clusters)
+
+ # If we have managed to take the number of new subtables below the
+ # threshold, then we can stop.
+ if len(clusters) <= max_new_subtables + 1:
+ break
+
+ # No reason to stop yet, do the merge and move on to the next.
+ del clusters[best_other_index]
+ clusters[best_cluster_index] = best_merged
+
+ # All clusters are final; turn bitmasks back into the "Pairs" format
+ pairs_by_class1: Dict[Tuple[str, ...], Pairs] = defaultdict(dict)
+ for pair, values in pairs.items():
+ pairs_by_class1[pair[0]][pair] = values
+ pairs_groups: List[Pairs] = []
+ for cluster in clusters:
+ pairs_group: Pairs = dict()
+ for i in cluster.indices:
+ class1 = all_class1[i]
+ pairs_group.update(pairs_by_class1[class1])
+ pairs_groups.append(pairs_group)
+ return pairs_groups
diff --git a/Lib/fontTools/pens/basePen.py b/Lib/fontTools/pens/basePen.py
index 2161e021..e06c00ef 100644
--- a/Lib/fontTools/pens/basePen.py
+++ b/Lib/fontTools/pens/basePen.py
@@ -8,7 +8,7 @@ it is an abstraction for drawing outlines, making sure that outline objects
don't need to know the details about how and where they're being drawn, and
that drawings don't need to know the details of how outlines are stored.
-The most basic pattern is this:
+The most basic pattern is this::
outline.draw(pen) # 'outline' draws itself onto 'pen'
@@ -21,13 +21,13 @@ The AbstractPen class defines the Pen protocol. It implements almost
nothing (only no-op closePath() and endPath() methods), but is useful
for documentation purposes. Subclassing it basically tells the reader:
"this class implements the Pen protocol.". An examples of an AbstractPen
-subclass is fontTools.pens.transformPen.TransformPen.
+subclass is :py:class:`fontTools.pens.transformPen.TransformPen`.
The BasePen class is a base implementation useful for pens that actually
draw (for example a pen renders outlines using a native graphics engine).
BasePen contains a lot of base functionality, making it very easy to build
a pen that fully conforms to the pen protocol. Note that if you subclass
-BasePen, you _don't_ override moveTo(), lineTo(), etc., but _moveTo(),
+BasePen, you *don't* override moveTo(), lineTo(), etc., but _moveTo(),
_lineTo(), etc. See the BasePen doc string for details. Examples of
BasePen subclasses are fontTools.pens.boundsPen.BoundsPen and
fontTools.pens.cocoaPen.CocoaPen.
@@ -40,10 +40,14 @@ from typing import Tuple
from fontTools.misc.loggingTools import LogMixin
-__all__ = ["AbstractPen", "NullPen", "BasePen",
+__all__ = ["AbstractPen", "NullPen", "BasePen", "PenError",
"decomposeSuperBezierSegment", "decomposeQuadraticSegment"]
+class PenError(Exception):
+ """Represents an error during penning."""
+
+
class AbstractPen:
def moveTo(self, pt: Tuple[float, float]) -> None:
@@ -147,7 +151,7 @@ class NullPen(AbstractPen):
class LoggingPen(LogMixin, AbstractPen):
- """A pen with a `log` property (see fontTools.misc.loggingTools.LogMixin)
+ """A pen with a ``log`` property (see fontTools.misc.loggingTools.LogMixin)
"""
pass
diff --git a/Lib/fontTools/pens/boundsPen.py b/Lib/fontTools/pens/boundsPen.py
index 810715ca..227c22f5 100644
--- a/Lib/fontTools/pens/boundsPen.py
+++ b/Lib/fontTools/pens/boundsPen.py
@@ -14,10 +14,11 @@ class ControlBoundsPen(BasePen):
on their extremes.
When the shape has been drawn, the bounds are available as the
- 'bounds' attribute of the pen object. It's a 4-tuple:
+ ``bounds`` attribute of the pen object. It's a 4-tuple::
+
(xMin, yMin, xMax, yMax).
- If 'ignoreSinglePoints' is True, single points are ignored.
+ If ``ignoreSinglePoints`` is True, single points are ignored.
"""
def __init__(self, glyphSet, ignoreSinglePoints=False):
@@ -73,7 +74,8 @@ class BoundsPen(ControlBoundsPen):
than the "control bounds".
When the shape has been drawn, the bounds are available as the
- 'bounds' attribute of the pen object. It's a 4-tuple:
+ ``bounds`` attribute of the pen object. It's a 4-tuple::
+
(xMin, yMin, xMax, yMax)
"""
diff --git a/Lib/fontTools/pens/cu2quPen.py b/Lib/fontTools/pens/cu2quPen.py
index 497585bc..3c4ceae9 100644
--- a/Lib/fontTools/pens/cu2quPen.py
+++ b/Lib/fontTools/pens/cu2quPen.py
@@ -23,13 +23,15 @@ class Cu2QuPen(AbstractPen):
""" A filter pen to convert cubic bezier curves to quadratic b-splines
using the FontTools SegmentPen protocol.
- other_pen: another SegmentPen used to draw the transformed outline.
- max_err: maximum approximation error in font units. For optimal results,
- if you know the UPEM of the font, we recommend setting this to a
- value equal, or close to UPEM / 1000.
- reverse_direction: flip the contours' direction but keep starting point.
- stats: a dictionary counting the point numbers of quadratic segments.
- ignore_single_points: don't emit contours containing only a single point
+ Args:
+
+ other_pen: another SegmentPen used to draw the transformed outline.
+ max_err: maximum approximation error in font units. For optimal results,
+ if you know the UPEM of the font, we recommend setting this to a
+ value equal, or close to UPEM / 1000.
+ reverse_direction: flip the contours' direction but keep starting point.
+ stats: a dictionary counting the point numbers of quadratic segments.
+ ignore_single_points: don't emit contours containing only a single point
NOTE: The "ignore_single_points" argument is deprecated since v1.3.0,
which dropped Robofab subpport. It's no longer needed to special-case
@@ -138,12 +140,13 @@ class Cu2QuPointPen(BasePointToSegmentPen):
""" A filter pen to convert cubic bezier curves to quadratic b-splines
using the RoboFab PointPen protocol.
- other_point_pen: another PointPen used to draw the transformed outline.
- max_err: maximum approximation error in font units. For optimal results,
- if you know the UPEM of the font, we recommend setting this to a
- value equal, or close to UPEM / 1000.
- reverse_direction: reverse the winding direction of all contours.
- stats: a dictionary counting the point numbers of quadratic segments.
+ Args:
+ other_point_pen: another PointPen used to draw the transformed outline.
+ max_err: maximum approximation error in font units. For optimal results,
+ if you know the UPEM of the font, we recommend setting this to a
+ value equal, or close to UPEM / 1000.
+ reverse_direction: reverse the winding direction of all contours.
+ stats: a dictionary counting the point numbers of quadratic segments.
"""
def __init__(self, other_point_pen, max_err, reverse_direction=False,
diff --git a/Lib/fontTools/pens/freetypePen.py b/Lib/fontTools/pens/freetypePen.py
new file mode 100644
index 00000000..870776bc
--- /dev/null
+++ b/Lib/fontTools/pens/freetypePen.py
@@ -0,0 +1,458 @@
+# -*- coding: utf-8 -*-
+
+"""Pen to rasterize paths with FreeType."""
+
+__all__ = ["FreeTypePen"]
+
+import os
+import ctypes
+import platform
+import subprocess
+import collections
+import math
+
+import freetype
+from freetype.raw import FT_Outline_Get_Bitmap, FT_Outline_Get_BBox, FT_Outline_Get_CBox
+from freetype.ft_types import FT_Pos
+from freetype.ft_structs import FT_Vector, FT_BBox, FT_Bitmap, FT_Outline
+from freetype.ft_enums import (
+ FT_OUTLINE_NONE,
+ FT_OUTLINE_EVEN_ODD_FILL,
+ FT_PIXEL_MODE_GRAY,
+ FT_CURVE_TAG_ON,
+ FT_CURVE_TAG_CONIC,
+ FT_CURVE_TAG_CUBIC,
+)
+from freetype.ft_errors import FT_Exception
+
+from fontTools.pens.basePen import BasePen, PenError
+from fontTools.misc.roundTools import otRound
+from fontTools.misc.transform import Transform
+
+Contour = collections.namedtuple("Contour", ("points", "tags"))
+
+
+class FreeTypePen(BasePen):
+ """Pen to rasterize paths with FreeType. Requires `freetype-py` module.
+
+ Constructs ``FT_Outline`` from the paths, and renders it within a bitmap
+ buffer.
+
+ For ``array()`` and ``show()``, `numpy` and `matplotlib` must be installed.
+ For ``image()``, `Pillow` is required. Each module is lazily loaded when the
+ corresponding method is called.
+
+ Args:
+ glyphSet: a dictionary of drawable glyph objects keyed by name
+ used to resolve component references in composite glyphs.
+
+ :Examples:
+ If `numpy` and `matplotlib` is available, the following code will
+ show the glyph image of `fi` in a new window::
+
+ from fontTools.ttLib import TTFont
+ from fontTools.pens.freetypePen import FreeTypePen
+ from fontTools.misc.transform import Offset
+ pen = FreeTypePen(None)
+ font = TTFont('SourceSansPro-Regular.otf')
+ glyph = font.getGlyphSet()['fi']
+ glyph.draw(pen)
+ width, ascender, descender = glyph.width, font['OS/2'].usWinAscent, -font['OS/2'].usWinDescent
+ height = ascender - descender
+ pen.show(width=width, height=height, transform=Offset(0, -descender))
+
+ Combining with `uharfbuzz`, you can typeset a chunk of glyphs in a pen::
+
+ import uharfbuzz as hb
+ from fontTools.pens.freetypePen import FreeTypePen
+ from fontTools.pens.transformPen import TransformPen
+ from fontTools.misc.transform import Offset
+
+ en1, en2, ar, ja = 'Typesetting', 'Jeff', 'صف الحروف', 'たいぷせっと'
+ for text, font_path, direction, typo_ascender, typo_descender, vhea_ascender, vhea_descender, contain, features in (
+ (en1, 'NotoSans-Regular.ttf', 'ltr', 2189, -600, None, None, False, {"kern": True, "liga": True}),
+ (en2, 'NotoSans-Regular.ttf', 'ltr', 2189, -600, None, None, True, {"kern": True, "liga": True}),
+ (ar, 'NotoSansArabic-Regular.ttf', 'rtl', 1374, -738, None, None, False, {"kern": True, "liga": True}),
+ (ja, 'NotoSansJP-Regular.otf', 'ltr', 880, -120, 500, -500, False, {"palt": True, "kern": True}),
+ (ja, 'NotoSansJP-Regular.otf', 'ttb', 880, -120, 500, -500, False, {"vert": True, "vpal": True, "vkrn": True})
+ ):
+ blob = hb.Blob.from_file_path(font_path)
+ face = hb.Face(blob)
+ font = hb.Font(face)
+ buf = hb.Buffer()
+ buf.direction = direction
+ buf.add_str(text)
+ buf.guess_segment_properties()
+ hb.shape(font, buf, features)
+
+ x, y = 0, 0
+ pen = FreeTypePen(None)
+ for info, pos in zip(buf.glyph_infos, buf.glyph_positions):
+ gid = info.codepoint
+ transformed = TransformPen(pen, Offset(x + pos.x_offset, y + pos.y_offset))
+ font.draw_glyph_with_pen(gid, transformed)
+ x += pos.x_advance
+ y += pos.y_advance
+
+ offset, width, height = None, None, None
+ if direction in ('ltr', 'rtl'):
+ offset = (0, -typo_descender)
+ width = x
+ height = typo_ascender - typo_descender
+ else:
+ offset = (-vhea_descender, -y)
+ width = vhea_ascender - vhea_descender
+ height = -y
+ pen.show(width=width, height=height, transform=Offset(*offset), contain=contain)
+
+ For Jupyter Notebook, the rendered image will be displayed in a cell if
+ you replace ``show()`` with ``image()`` in the examples.
+ """
+
+ def __init__(self, glyphSet):
+ BasePen.__init__(self, glyphSet)
+ self.contours = []
+
+ def outline(self, transform=None, evenOdd=False):
+ """Converts the current contours to ``FT_Outline``.
+
+ Args:
+ transform: An optional 6-tuple containing an affine transformation,
+ or a ``Transform`` object from the ``fontTools.misc.transform``
+ module.
+ evenOdd: Pass ``True`` for even-odd fill instead of non-zero.
+ """
+ transform = transform or Transform()
+ if not hasattr(transform, "transformPoint"):
+ transform = Transform(*transform)
+ n_contours = len(self.contours)
+ n_points = sum((len(contour.points) for contour in self.contours))
+ points = []
+ for contour in self.contours:
+ for point in contour.points:
+ point = transform.transformPoint(point)
+ points.append(
+ FT_Vector(
+ FT_Pos(otRound(point[0] * 64)), FT_Pos(otRound(point[1] * 64))
+ )
+ )
+ tags = []
+ for contour in self.contours:
+ for tag in contour.tags:
+ tags.append(tag)
+ contours = []
+ contours_sum = 0
+ for contour in self.contours:
+ contours_sum += len(contour.points)
+ contours.append(contours_sum - 1)
+ flags = FT_OUTLINE_EVEN_ODD_FILL if evenOdd else FT_OUTLINE_NONE
+ return FT_Outline(
+ (ctypes.c_short)(n_contours),
+ (ctypes.c_short)(n_points),
+ (FT_Vector * n_points)(*points),
+ (ctypes.c_ubyte * n_points)(*tags),
+ (ctypes.c_short * n_contours)(*contours),
+ (ctypes.c_int)(flags),
+ )
+
+ def buffer(
+ self, width=None, height=None, transform=None, contain=False, evenOdd=False
+ ):
+ """Renders the current contours within a bitmap buffer.
+
+ Args:
+ width: Image width of the bitmap in pixels. If omitted, it
+ automatically fits to the bounding box of the contours.
+ height: Image height of the bitmap in pixels. If omitted, it
+ automatically fits to the bounding box of the contours.
+ transform: An optional 6-tuple containing an affine transformation,
+ or a ``Transform`` object from the ``fontTools.misc.transform``
+ module. The bitmap size is not affected by this matrix.
+ contain: If ``True``, the image size will be automatically expanded
+ so that it fits to the bounding box of the paths. Useful for
+ rendering glyphs with negative sidebearings without clipping.
+ evenOdd: Pass ``True`` for even-odd fill instead of non-zero.
+
+ Returns:
+ A tuple of ``(buffer, size)``, where ``buffer`` is a ``bytes``
+ object of the resulted bitmap and ``size`` is a 2-tuple of its
+ dimension.
+
+ :Notes:
+ The image size should always be given explicitly if you need to get
+ a proper glyph image. When ``width`` and ``height`` are omitted, it
+ forcifully fits to the bounding box and the side bearings get
+ cropped. If you pass ``0`` to both ``width`` and ``height`` and set
+ ``contain`` to ``True``, it expands to the bounding box while
+ maintaining the origin of the contours, meaning that LSB will be
+ maintained but RSB won’t. The difference between the two becomes
+ more obvious when rotate or skew transformation is applied.
+
+ :Example:
+ .. code-block::
+
+ >> pen = FreeTypePen(None)
+ >> glyph.draw(pen)
+ >> buf, size = pen.buffer(width=500, height=1000)
+ >> type(buf), len(buf), size
+ (<class 'bytes'>, 500000, (500, 1000))
+
+ """
+ transform = transform or Transform()
+ if not hasattr(transform, "transformPoint"):
+ transform = Transform(*transform)
+ contain_x, contain_y = contain or width is None, contain or height is None
+ if contain_x or contain_y:
+ dx, dy = transform.dx, transform.dy
+ bbox = self.bbox
+ p1, p2, p3, p4 = (
+ transform.transformPoint((bbox[0], bbox[1])),
+ transform.transformPoint((bbox[2], bbox[1])),
+ transform.transformPoint((bbox[0], bbox[3])),
+ transform.transformPoint((bbox[2], bbox[3])),
+ )
+ px, py = (p1[0], p2[0], p3[0], p4[0]), (p1[1], p2[1], p3[1], p4[1])
+ if contain_x:
+ if width is None:
+ dx = dx - min(*px)
+ width = max(*px) - min(*px)
+ else:
+ dx = dx - min(min(*px), 0.0)
+ width = max(width, max(*px) - min(min(*px), 0.0))
+ if contain_y:
+ if height is None:
+ dy = dy - min(*py)
+ height = max(*py) - min(*py)
+ else:
+ dy = dy - min(min(*py), 0.0)
+ height = max(height, max(*py) - min(min(*py), 0.0))
+ transform = Transform(*transform[:4], dx, dy)
+ width, height = math.ceil(width), math.ceil(height)
+ buf = ctypes.create_string_buffer(width * height)
+ bitmap = FT_Bitmap(
+ (ctypes.c_int)(height),
+ (ctypes.c_int)(width),
+ (ctypes.c_int)(width),
+ (ctypes.POINTER(ctypes.c_ubyte))(buf),
+ (ctypes.c_short)(256),
+ (ctypes.c_ubyte)(FT_PIXEL_MODE_GRAY),
+ (ctypes.c_char)(0),
+ (ctypes.c_void_p)(None),
+ )
+ outline = self.outline(transform=transform, evenOdd=evenOdd)
+ err = FT_Outline_Get_Bitmap(
+ freetype.get_handle(), ctypes.byref(outline), ctypes.byref(bitmap)
+ )
+ if err != 0:
+ raise FT_Exception(err)
+ return buf.raw, (width, height)
+
+ def array(
+ self, width=None, height=None, transform=None, contain=False, evenOdd=False
+ ):
+ """Returns the rendered contours as a numpy array. Requires `numpy`.
+
+ Args:
+ width: Image width of the bitmap in pixels. If omitted, it
+ automatically fits to the bounding box of the contours.
+ height: Image height of the bitmap in pixels. If omitted, it
+ automatically fits to the bounding box of the contours.
+ transform: An optional 6-tuple containing an affine transformation,
+ or a ``Transform`` object from the ``fontTools.misc.transform``
+ module. The bitmap size is not affected by this matrix.
+ contain: If ``True``, the image size will be automatically expanded
+ so that it fits to the bounding box of the paths. Useful for
+ rendering glyphs with negative sidebearings without clipping.
+ evenOdd: Pass ``True`` for even-odd fill instead of non-zero.
+
+ Returns:
+ A ``numpy.ndarray`` object with a shape of ``(height, width)``.
+ Each element takes a value in the range of ``[0.0, 1.0]``.
+
+ :Notes:
+ The image size should always be given explicitly if you need to get
+ a proper glyph image. When ``width`` and ``height`` are omitted, it
+ forcifully fits to the bounding box and the side bearings get
+ cropped. If you pass ``0`` to both ``width`` and ``height`` and set
+ ``contain`` to ``True``, it expands to the bounding box while
+ maintaining the origin of the contours, meaning that LSB will be
+ maintained but RSB won’t. The difference between the two becomes
+ more obvious when rotate or skew transformation is applied.
+
+ :Example:
+ .. code-block::
+
+ >> pen = FreeTypePen(None)
+ >> glyph.draw(pen)
+ >> arr = pen.array(width=500, height=1000)
+ >> type(a), a.shape
+ (<class 'numpy.ndarray'>, (1000, 500))
+ """
+ import numpy as np
+
+ buf, size = self.buffer(
+ width=width,
+ height=height,
+ transform=transform,
+ contain=contain,
+ evenOdd=evenOdd,
+ )
+ return np.frombuffer(buf, "B").reshape((size[1], size[0])) / 255.0
+
+ def show(
+ self, width=None, height=None, transform=None, contain=False, evenOdd=False
+ ):
+ """Plots the rendered contours with `pyplot`. Requires `numpy` and
+ `matplotlib`.
+
+ Args:
+ width: Image width of the bitmap in pixels. If omitted, it
+ automatically fits to the bounding box of the contours.
+ height: Image height of the bitmap in pixels. If omitted, it
+ automatically fits to the bounding box of the contours.
+ transform: An optional 6-tuple containing an affine transformation,
+ or a ``Transform`` object from the ``fontTools.misc.transform``
+ module. The bitmap size is not affected by this matrix.
+ contain: If ``True``, the image size will be automatically expanded
+ so that it fits to the bounding box of the paths. Useful for
+ rendering glyphs with negative sidebearings without clipping.
+ evenOdd: Pass ``True`` for even-odd fill instead of non-zero.
+
+ :Notes:
+ The image size should always be given explicitly if you need to get
+ a proper glyph image. When ``width`` and ``height`` are omitted, it
+ forcifully fits to the bounding box and the side bearings get
+ cropped. If you pass ``0`` to both ``width`` and ``height`` and set
+ ``contain`` to ``True``, it expands to the bounding box while
+ maintaining the origin of the contours, meaning that LSB will be
+ maintained but RSB won’t. The difference between the two becomes
+ more obvious when rotate or skew transformation is applied.
+
+ :Example:
+ .. code-block::
+
+ >> pen = FreeTypePen(None)
+ >> glyph.draw(pen)
+ >> pen.show(width=500, height=1000)
+ """
+ from matplotlib import pyplot as plt
+
+ a = self.array(
+ width=width,
+ height=height,
+ transform=transform,
+ contain=contain,
+ evenOdd=evenOdd,
+ )
+ plt.imshow(a, cmap="gray_r", vmin=0, vmax=1)
+ plt.show()
+
+ def image(
+ self, width=None, height=None, transform=None, contain=False, evenOdd=False
+ ):
+ """Returns the rendered contours as a PIL image. Requires `Pillow`.
+ Can be used to display a glyph image in Jupyter Notebook.
+
+ Args:
+ width: Image width of the bitmap in pixels. If omitted, it
+ automatically fits to the bounding box of the contours.
+ height: Image height of the bitmap in pixels. If omitted, it
+ automatically fits to the bounding box of the contours.
+ transform: An optional 6-tuple containing an affine transformation,
+ or a ``Transform`` object from the ``fontTools.misc.transform``
+ module. The bitmap size is not affected by this matrix.
+ contain: If ``True``, the image size will be automatically expanded
+ so that it fits to the bounding box of the paths. Useful for
+ rendering glyphs with negative sidebearings without clipping.
+ evenOdd: Pass ``True`` for even-odd fill instead of non-zero.
+
+ Returns:
+ A ``PIL.image`` object. The image is filled in black with alpha
+ channel obtained from the rendered bitmap.
+
+ :Notes:
+ The image size should always be given explicitly if you need to get
+ a proper glyph image. When ``width`` and ``height`` are omitted, it
+ forcifully fits to the bounding box and the side bearings get
+ cropped. If you pass ``0`` to both ``width`` and ``height`` and set
+ ``contain`` to ``True``, it expands to the bounding box while
+ maintaining the origin of the contours, meaning that LSB will be
+ maintained but RSB won’t. The difference between the two becomes
+ more obvious when rotate or skew transformation is applied.
+
+ :Example:
+ .. code-block::
+
+ >> pen = FreeTypePen(None)
+ >> glyph.draw(pen)
+ >> img = pen.image(width=500, height=1000)
+ >> type(img), img.size
+ (<class 'PIL.Image.Image'>, (500, 1000))
+ """
+ from PIL import Image
+
+ buf, size = self.buffer(
+ width=width,
+ height=height,
+ transform=transform,
+ contain=contain,
+ evenOdd=evenOdd,
+ )
+ img = Image.new("L", size, 0)
+ img.putalpha(Image.frombuffer("L", size, buf))
+ return img
+
+ @property
+ def bbox(self):
+ """Computes the exact bounding box of an outline.
+
+ Returns:
+ A tuple of ``(xMin, yMin, xMax, yMax)``.
+ """
+ bbox = FT_BBox()
+ outline = self.outline()
+ FT_Outline_Get_BBox(ctypes.byref(outline), ctypes.byref(bbox))
+ return (bbox.xMin / 64.0, bbox.yMin / 64.0, bbox.xMax / 64.0, bbox.yMax / 64.0)
+
+ @property
+ def cbox(self):
+ """Returns an outline's ‘control box’.
+
+ Returns:
+ A tuple of ``(xMin, yMin, xMax, yMax)``.
+ """
+ cbox = FT_BBox()
+ outline = self.outline()
+ FT_Outline_Get_CBox(ctypes.byref(outline), ctypes.byref(cbox))
+ return (cbox.xMin / 64.0, cbox.yMin / 64.0, cbox.xMax / 64.0, cbox.yMax / 64.0)
+
+ def _moveTo(self, pt):
+ contour = Contour([], [])
+ self.contours.append(contour)
+ contour.points.append(pt)
+ contour.tags.append(FT_CURVE_TAG_ON)
+
+ def _lineTo(self, pt):
+ if not (self.contours and len(self.contours[-1].points) > 0):
+ raise PenError("Contour missing required initial moveTo")
+ contour = self.contours[-1]
+ contour.points.append(pt)
+ contour.tags.append(FT_CURVE_TAG_ON)
+
+ def _curveToOne(self, p1, p2, p3):
+ if not (self.contours and len(self.contours[-1].points) > 0):
+ raise PenError("Contour missing required initial moveTo")
+ t1, t2, t3 = FT_CURVE_TAG_CUBIC, FT_CURVE_TAG_CUBIC, FT_CURVE_TAG_ON
+ contour = self.contours[-1]
+ for p, t in ((p1, t1), (p2, t2), (p3, t3)):
+ contour.points.append(p)
+ contour.tags.append(t)
+
+ def _qCurveToOne(self, p1, p2):
+ if not (self.contours and len(self.contours[-1].points) > 0):
+ raise PenError("Contour missing required initial moveTo")
+ t1, t2 = FT_CURVE_TAG_CONIC, FT_CURVE_TAG_ON
+ contour = self.contours[-1]
+ for p, t in ((p1, t1), (p2, t2)):
+ contour.points.append(p)
+ contour.tags.append(t)
diff --git a/Lib/fontTools/pens/pointPen.py b/Lib/fontTools/pens/pointPen.py
index 26f99d41..4c3148bf 100644
--- a/Lib/fontTools/pens/pointPen.py
+++ b/Lib/fontTools/pens/pointPen.py
@@ -15,7 +15,7 @@ For instance, whether or not a point is smooth, and its name.
import math
from typing import Any, Optional, Tuple
-from fontTools.pens.basePen import AbstractPen
+from fontTools.pens.basePen import AbstractPen, PenError
__all__ = [
"AbstractPointPen",
@@ -74,7 +74,8 @@ class BasePointToSegmentPen(AbstractPointPen):
self.currentPath = None
def beginPath(self, identifier=None, **kwargs):
- assert self.currentPath is None
+ if self.currentPath is not None:
+ raise PenError("Path already begun.")
self.currentPath = []
def _flushContour(self, segments):
@@ -106,7 +107,8 @@ class BasePointToSegmentPen(AbstractPointPen):
raise NotImplementedError
def endPath(self):
- assert self.currentPath is not None
+ if self.currentPath is None:
+ raise PenError("Path not begun.")
points = self.currentPath
self.currentPath = None
if not points:
@@ -154,6 +156,8 @@ class BasePointToSegmentPen(AbstractPointPen):
def addPoint(self, pt, segmentType=None, smooth=False, name=None,
identifier=None, **kwargs):
+ if self.currentPath is None:
+ raise PenError("Path not begun")
self.currentPath.append((pt, segmentType, smooth, name, kwargs))
@@ -161,6 +165,9 @@ class PointToSegmentPen(BasePointToSegmentPen):
"""
Adapter class that converts the PointPen protocol to the
(Segment)Pen protocol.
+
+ NOTE: The segment pen does not support and will drop point names, identifiers
+ and kwargs.
"""
def __init__(self, segmentPen, outputImpliedClosingLine=False):
@@ -169,21 +176,23 @@ class PointToSegmentPen(BasePointToSegmentPen):
self.outputImpliedClosingLine = outputImpliedClosingLine
def _flushContour(self, segments):
- assert len(segments) >= 1
+ if not segments:
+ raise PenError("Must have at least one segment.")
pen = self.pen
if segments[0][0] == "move":
# It's an open path.
closed = False
points = segments[0][1]
- assert len(points) == 1, "illegal move segment point count: %d" % len(points)
- movePt, smooth, name, kwargs = points[0]
+ if len(points) != 1:
+ raise PenError(f"Illegal move segment point count: {len(points)}")
+ movePt, _, _ , _ = points[0]
del segments[0]
else:
# It's a closed path, do a moveTo to the last
# point of the last segment.
closed = True
segmentType, points = segments[-1]
- movePt, smooth, name, kwargs = points[-1]
+ movePt, _, _ , _ = points[-1]
if movePt is None:
# quad special case: a contour with no on-curve points contains
# one "qcurve" segment that ends with a point that's None. We
@@ -196,9 +205,10 @@ class PointToSegmentPen(BasePointToSegmentPen):
lastPt = movePt
for i in range(nSegments):
segmentType, points = segments[i]
- points = [pt for pt, smooth, name, kwargs in points]
+ points = [pt for pt, _, _ , _ in points]
if segmentType == "line":
- assert len(points) == 1, "illegal line segment point count: %d" % len(points)
+ if len(points) != 1:
+ raise PenError(f"Illegal line segment point count: {len(points)}")
pt = points[0]
# For closed contours, a 'lineTo' is always implied from the last oncurve
# point to the starting point, thus we can omit it when the last and
@@ -224,7 +234,7 @@ class PointToSegmentPen(BasePointToSegmentPen):
pen.qCurveTo(*points)
lastPt = points[-1]
else:
- assert 0, "illegal segmentType: %s" % segmentType
+ raise PenError(f"Illegal segmentType: {segmentType}")
if closed:
pen.closePath()
else:
@@ -232,6 +242,7 @@ class PointToSegmentPen(BasePointToSegmentPen):
def addComponent(self, glyphName, transform, identifier=None, **kwargs):
del identifier # unused
+ del kwargs # unused
self.pen.addComponent(glyphName, transform)
@@ -260,27 +271,35 @@ class SegmentToPointPen(AbstractPen):
self.contour.append((pt, "move"))
def lineTo(self, pt):
- assert self.contour is not None, "contour missing required initial moveTo"
+ if self.contour is None:
+ raise PenError("Contour missing required initial moveTo")
self.contour.append((pt, "line"))
def curveTo(self, *pts):
- assert self.contour is not None, "contour missing required initial moveTo"
+ if not pts:
+ raise TypeError("Must pass in at least one point")
+ if self.contour is None:
+ raise PenError("Contour missing required initial moveTo")
for pt in pts[:-1]:
self.contour.append((pt, None))
self.contour.append((pts[-1], "curve"))
def qCurveTo(self, *pts):
+ if not pts:
+ raise TypeError("Must pass in at least one point")
if pts[-1] is None:
self.contour = []
else:
- assert self.contour is not None, "contour missing required initial moveTo"
+ if self.contour is None:
+ raise PenError("Contour missing required initial moveTo")
for pt in pts[:-1]:
self.contour.append((pt, None))
if pts[-1] is not None:
self.contour.append((pts[-1], "qcurve"))
def closePath(self):
- assert self.contour is not None, "contour missing required initial moveTo"
+ if self.contour is None:
+ raise PenError("Contour missing required initial moveTo")
if len(self.contour) > 1 and self.contour[0][0] == self.contour[-1][0]:
self.contour[0] = self.contour[-1]
del self.contour[-1]
@@ -294,12 +313,14 @@ class SegmentToPointPen(AbstractPen):
self.contour = None
def endPath(self):
- assert self.contour is not None, "contour missing required initial moveTo"
+ if self.contour is None:
+ raise PenError("Contour missing required initial moveTo")
self._flushContour()
self.contour = None
def addComponent(self, glyphName, transform):
- assert self.contour is None
+ if self.contour is not None:
+ raise PenError("Components must be added before or after contours")
self.pen.addComponent(glyphName, transform)
@@ -309,11 +330,14 @@ class GuessSmoothPointPen(AbstractPointPen):
should be "smooth", ie. that it's a "tangent" point or a "curve" point.
"""
- def __init__(self, outPen):
+ def __init__(self, outPen, error=0.05):
self._outPen = outPen
+ self._error = error
self._points = None
def _flushContour(self):
+ if self._points is None:
+ raise PenError("Path not begun")
points = self._points
nPoints = len(points)
if not nPoints:
@@ -329,7 +353,7 @@ class GuessSmoothPointPen(AbstractPointPen):
# closed path containing 1 point (!), ignore.
indices = []
for i in indices:
- pt, segmentType, dummy, name, kwargs = points[i]
+ pt, segmentType, _, name, kwargs = points[i]
if segmentType is None:
continue
prev = i - 1
@@ -343,16 +367,17 @@ class GuessSmoothPointPen(AbstractPointPen):
if pt != prevPt and pt != nextPt:
dx1, dy1 = pt[0] - prevPt[0], pt[1] - prevPt[1]
dx2, dy2 = nextPt[0] - pt[0], nextPt[1] - pt[1]
- a1 = math.atan2(dx1, dy1)
- a2 = math.atan2(dx2, dy2)
- if abs(a1 - a2) < 0.05:
+ a1 = math.atan2(dy1, dx1)
+ a2 = math.atan2(dy2, dx2)
+ if abs(a1 - a2) < self._error:
points[i] = pt, segmentType, True, name, kwargs
for pt, segmentType, smooth, name, kwargs in points:
self._outPen.addPoint(pt, segmentType, smooth, name, **kwargs)
def beginPath(self, identifier=None, **kwargs):
- assert self._points is None
+ if self._points is not None:
+ raise PenError("Path already begun")
self._points = []
if identifier is not None:
kwargs["identifier"] = identifier
@@ -365,12 +390,15 @@ class GuessSmoothPointPen(AbstractPointPen):
def addPoint(self, pt, segmentType=None, smooth=False, name=None,
identifier=None, **kwargs):
+ if self._points is None:
+ raise PenError("Path not begun")
if identifier is not None:
kwargs["identifier"] = identifier
self._points.append((pt, segmentType, False, name, kwargs))
def addComponent(self, glyphName, transformation, identifier=None, **kwargs):
- assert self._points is None
+ if self._points is not None:
+ raise PenError("Components must be added before or after contours")
if identifier is not None:
kwargs["identifier"] = identifier
self._outPen.addComponent(glyphName, transformation, **kwargs)
@@ -440,19 +468,26 @@ class ReverseContourPointPen(AbstractPointPen):
pen.endPath()
def beginPath(self, identifier=None, **kwargs):
- assert self.currentContour is None
+ if self.currentContour is not None:
+ raise PenError("Path already begun")
self.currentContour = []
self.currentContourIdentifier = identifier
self.onCurve = []
def endPath(self):
- assert self.currentContour is not None
+ if self.currentContour is None:
+ raise PenError("Path not begun")
self._flushContour()
self.currentContour = None
- def addPoint(self, pt, segmentType=None, smooth=False, name=None, **kwargs):
+ def addPoint(self, pt, segmentType=None, smooth=False, name=None, identifier=None, **kwargs):
+ if self.currentContour is None:
+ raise PenError("Path not begun")
+ if identifier is not None:
+ kwargs["identifier"] = identifier
self.currentContour.append((pt, segmentType, smooth, name, kwargs))
def addComponent(self, glyphName, transform, identifier=None, **kwargs):
- assert self.currentContour is None
+ if self.currentContour is not None:
+ raise PenError("Components must be added before or after contours")
self.pen.addComponent(glyphName, transform, identifier=identifier, **kwargs)
diff --git a/Lib/fontTools/pens/recordingPen.py b/Lib/fontTools/pens/recordingPen.py
index 99e87e5a..70f05e83 100644
--- a/Lib/fontTools/pens/recordingPen.py
+++ b/Lib/fontTools/pens/recordingPen.py
@@ -29,21 +29,21 @@ class RecordingPen(AbstractPen):
The recording can be accessed as pen.value; or replayed using
pen.replay(otherPen).
- Usage example:
- ==============
- from fontTools.ttLib import TTFont
- from fontTools.pens.recordingPen import RecordingPen
+ :Example:
- glyph_name = 'dollar'
- font_path = 'MyFont.otf'
+ from fontTools.ttLib import TTFont
+ from fontTools.pens.recordingPen import RecordingPen
- font = TTFont(font_path)
- glyphset = font.getGlyphSet()
- glyph = glyphset[glyph_name]
+ glyph_name = 'dollar'
+ font_path = 'MyFont.otf'
- pen = RecordingPen()
- glyph.draw(pen)
- print(pen.value)
+ font = TTFont(font_path)
+ glyphset = font.getGlyphSet()
+ glyph = glyphset[glyph_name]
+
+ pen = RecordingPen()
+ glyph.draw(pen)
+ print(pen.value)
"""
def __init__(self):
@@ -72,23 +72,23 @@ class DecomposingRecordingPen(DecomposingPen, RecordingPen):
The constructor takes a single 'glyphSet' positional argument,
a dictionary of glyph objects (i.e. with a 'draw' method) keyed
- by thir name.
-
- >>> class SimpleGlyph(object):
- ... def draw(self, pen):
- ... pen.moveTo((0, 0))
- ... pen.curveTo((1, 1), (2, 2), (3, 3))
- ... pen.closePath()
- >>> class CompositeGlyph(object):
- ... def draw(self, pen):
- ... pen.addComponent('a', (1, 0, 0, 1, -1, 1))
- >>> glyphSet = {'a': SimpleGlyph(), 'b': CompositeGlyph()}
- >>> for name, glyph in sorted(glyphSet.items()):
- ... pen = DecomposingRecordingPen(glyphSet)
- ... glyph.draw(pen)
- ... print("{}: {}".format(name, pen.value))
- a: [('moveTo', ((0, 0),)), ('curveTo', ((1, 1), (2, 2), (3, 3))), ('closePath', ())]
- b: [('moveTo', ((-1, 1),)), ('curveTo', ((0, 2), (1, 3), (2, 4))), ('closePath', ())]
+ by thir name::
+
+ >>> class SimpleGlyph(object):
+ ... def draw(self, pen):
+ ... pen.moveTo((0, 0))
+ ... pen.curveTo((1, 1), (2, 2), (3, 3))
+ ... pen.closePath()
+ >>> class CompositeGlyph(object):
+ ... def draw(self, pen):
+ ... pen.addComponent('a', (1, 0, 0, 1, -1, 1))
+ >>> glyphSet = {'a': SimpleGlyph(), 'b': CompositeGlyph()}
+ >>> for name, glyph in sorted(glyphSet.items()):
+ ... pen = DecomposingRecordingPen(glyphSet)
+ ... glyph.draw(pen)
+ ... print("{}: {}".format(name, pen.value))
+ a: [('moveTo', ((0, 0),)), ('curveTo', ((1, 1), (2, 2), (3, 3))), ('closePath', ())]
+ b: [('moveTo', ((-1, 1),)), ('curveTo', ((0, 2), (1, 3), (2, 4))), ('closePath', ())]
"""
# raises KeyError if base glyph is not found in glyphSet
skipMissingComponents = False
@@ -100,38 +100,44 @@ class RecordingPointPen(AbstractPointPen):
The recording can be accessed as pen.value; or replayed using
pointPen.replay(otherPointPen).
- Usage example:
- ==============
- from defcon import Font
- from fontTools.pens.recordingPen import RecordingPointPen
+ :Example:
+
+ from defcon import Font
+ from fontTools.pens.recordingPen import RecordingPointPen
- glyph_name = 'a'
- font_path = 'MyFont.ufo'
+ glyph_name = 'a'
+ font_path = 'MyFont.ufo'
- font = Font(font_path)
- glyph = font[glyph_name]
+ font = Font(font_path)
+ glyph = font[glyph_name]
- pen = RecordingPointPen()
- glyph.drawPoints(pen)
- print(pen.value)
+ pen = RecordingPointPen()
+ glyph.drawPoints(pen)
+ print(pen.value)
- new_glyph = font.newGlyph('b')
- pen.replay(new_glyph.getPointPen())
+ new_glyph = font.newGlyph('b')
+ pen.replay(new_glyph.getPointPen())
"""
def __init__(self):
self.value = []
- def beginPath(self, **kwargs):
+ def beginPath(self, identifier=None, **kwargs):
+ if identifier is not None:
+ kwargs["identifier"] = identifier
self.value.append(("beginPath", (), kwargs))
def endPath(self):
self.value.append(("endPath", (), {}))
- def addPoint(self, pt, segmentType=None, smooth=False, name=None, **kwargs):
+ def addPoint(self, pt, segmentType=None, smooth=False, name=None, identifier=None, **kwargs):
+ if identifier is not None:
+ kwargs["identifier"] = identifier
self.value.append(("addPoint", (pt, segmentType, smooth, name), kwargs))
- def addComponent(self, baseGlyphName, transformation, **kwargs):
+ def addComponent(self, baseGlyphName, transformation, identifier=None, **kwargs):
+ if identifier is not None:
+ kwargs["identifier"] = identifier
self.value.append(("addComponent", (baseGlyphName, transformation), kwargs))
def replay(self, pointPen):
diff --git a/Lib/fontTools/pens/reportLabPen.py b/Lib/fontTools/pens/reportLabPen.py
index c0a4610b..43217d42 100644
--- a/Lib/fontTools/pens/reportLabPen.py
+++ b/Lib/fontTools/pens/reportLabPen.py
@@ -7,7 +7,7 @@ __all__ = ["ReportLabPen"]
class ReportLabPen(BasePen):
- """A pen for drawing onto a reportlab.graphics.shapes.Path object."""
+ """A pen for drawing onto a ``reportlab.graphics.shapes.Path`` object."""
def __init__(self, glyphSet, path=None):
BasePen.__init__(self, glyphSet)
diff --git a/Lib/fontTools/pens/svgPathPen.py b/Lib/fontTools/pens/svgPathPen.py
index 4352ba47..e92737e3 100644
--- a/Lib/fontTools/pens/svgPathPen.py
+++ b/Lib/fontTools/pens/svgPathPen.py
@@ -1,18 +1,36 @@
+from typing import Callable
from fontTools.pens.basePen import BasePen
-def pointToString(pt):
- return " ".join([str(i) for i in pt])
+def pointToString(pt, ntos=str):
+ return " ".join(ntos(i) for i in pt)
class SVGPathPen(BasePen):
+ """ Pen to draw SVG path d commands.
- def __init__(self, glyphSet):
+ Example::
+ >>> pen = SVGPathPen(None)
+ >>> pen.moveTo((0, 0))
+ >>> pen.lineTo((1, 1))
+ >>> pen.curveTo((2, 2), (3, 3), (4, 4))
+ >>> pen.closePath()
+ >>> pen.getCommands()
+ 'M0 0 1 1C2 2 3 3 4 4Z'
+
+ Args:
+ glyphSet: a dictionary of drawable glyph objects keyed by name
+ used to resolve component references in composite glyphs.
+ ntos: a callable that takes a number and returns a string, to
+ customize how numbers are formatted (default: str).
+ """
+ def __init__(self, glyphSet, ntos: Callable[[float], str] = str):
BasePen.__init__(self, glyphSet)
self._commands = []
self._lastCommand = None
self._lastX = None
self._lastY = None
+ self._ntos = ntos
def _handleAnchor(self):
"""
@@ -43,7 +61,7 @@ class SVGPathPen(BasePen):
['M0 10']
"""
self._handleAnchor()
- t = "M%s" % (pointToString(pt))
+ t = "M%s" % (pointToString(pt, self._ntos))
self._commands.append(t)
self._lastCommand = "M"
self._lastX, self._lastY = pt
@@ -91,19 +109,19 @@ class SVGPathPen(BasePen):
# vertical line
elif x == self._lastX:
cmd = "V"
- pts = str(y)
+ pts = self._ntos(y)
# horizontal line
elif y == self._lastY:
cmd = "H"
- pts = str(x)
+ pts = self._ntos(x)
# previous was a moveto
elif self._lastCommand == "M":
cmd = None
- pts = " " + pointToString(pt)
+ pts = " " + pointToString(pt, self._ntos)
# basic
else:
cmd = "L"
- pts = pointToString(pt)
+ pts = pointToString(pt, self._ntos)
# write the string
t = ""
if cmd:
@@ -122,9 +140,9 @@ class SVGPathPen(BasePen):
['C10 20 30 40 50 60']
"""
t = "C"
- t += pointToString(pt1) + " "
- t += pointToString(pt2) + " "
- t += pointToString(pt3)
+ t += pointToString(pt1, self._ntos) + " "
+ t += pointToString(pt2, self._ntos) + " "
+ t += pointToString(pt3, self._ntos)
self._commands.append(t)
self._lastCommand = "C"
self._lastX, self._lastY = pt3
@@ -135,11 +153,16 @@ class SVGPathPen(BasePen):
>>> pen.qCurveTo((10, 20), (30, 40))
>>> pen._commands
['Q10 20 30 40']
+ >>> from fontTools.misc.roundTools import otRound
+ >>> pen = SVGPathPen(None, ntos=lambda v: str(otRound(v)))
+ >>> pen.qCurveTo((3, 3), (7, 5), (11, 4))
+ >>> pen._commands
+ ['Q3 3 5 4', 'Q7 5 11 4']
"""
assert pt2 is not None
t = "Q"
- t += pointToString(pt1) + " "
- t += pointToString(pt2)
+ t += pointToString(pt1, self._ntos) + " "
+ t += pointToString(pt2, self._ntos)
self._commands.append(t)
self._lastCommand = "Q"
self._lastX, self._lastY = pt2
diff --git a/Lib/fontTools/pens/transformPen.py b/Lib/fontTools/pens/transformPen.py
index 2dcf83b1..93d19191 100644
--- a/Lib/fontTools/pens/transformPen.py
+++ b/Lib/fontTools/pens/transformPen.py
@@ -1,7 +1,7 @@
from fontTools.pens.filterPen import FilterPen, FilterPointPen
-__all__ = ["TransformPen"]
+__all__ = ["TransformPen", "TransformPointPen"]
class TransformPen(FilterPen):
diff --git a/Lib/fontTools/pens/ttGlyphPen.py b/Lib/fontTools/pens/ttGlyphPen.py
index e7841efc..5087e158 100644
--- a/Lib/fontTools/pens/ttGlyphPen.py
+++ b/Lib/fontTools/pens/ttGlyphPen.py
@@ -1,30 +1,31 @@
from array import array
-from fontTools.misc.fixedTools import MAX_F2DOT14, otRound, floatToFixedToFloat
+from typing import Any, Dict, Optional, Tuple
+from fontTools.misc.fixedTools import MAX_F2DOT14, floatToFixedToFloat
+from fontTools.misc.loggingTools import LogMixin
+from fontTools.pens.pointPen import AbstractPointPen
from fontTools.misc.roundTools import otRound
-from fontTools.pens.basePen import LoggingPen
-from fontTools.pens.transformPen import TransformPen
+from fontTools.pens.basePen import LoggingPen, PenError
+from fontTools.pens.transformPen import TransformPen, TransformPointPen
from fontTools.ttLib.tables import ttProgram
from fontTools.ttLib.tables._g_l_y_f import Glyph
from fontTools.ttLib.tables._g_l_y_f import GlyphComponent
from fontTools.ttLib.tables._g_l_y_f import GlyphCoordinates
-__all__ = ["TTGlyphPen"]
+__all__ = ["TTGlyphPen", "TTGlyphPointPen"]
-class TTGlyphPen(LoggingPen):
- """Pen used for drawing to a TrueType glyph.
-
- This pen can be used to construct or modify glyphs in a TrueType format
- font. After using the pen to draw, use the ``.glyph()`` method to retrieve
- a :py:class:`~._g_l_y_f.Glyph` object representing the glyph.
- """
-
- def __init__(self, glyphSet, handleOverflowingTransforms=True):
- """Construct a new pen.
+class _TTGlyphBasePen:
+ def __init__(
+ self,
+ glyphSet: Optional[Dict[str, Any]],
+ handleOverflowingTransforms: bool = True,
+ ) -> None:
+ """
+ Construct a new pen.
Args:
- glyphSet (ttLib._TTGlyphSet): A glyphset object, used to resolve components.
+ glyphSet (Dict[str, Any]): A glyphset object, used to resolve components.
handleOverflowingTransforms (bool): See below.
If ``handleOverflowingTransforms`` is True, the components' transform values
@@ -42,41 +43,152 @@ class TTGlyphPen(LoggingPen):
If False, no check is done and all components are translated unmodified
into the glyf table, followed by an inevitable ``struct.error`` once an
attempt is made to compile them.
+
+ If both contours and components are present in a glyph, the components
+ are decomposed.
"""
self.glyphSet = glyphSet
self.handleOverflowingTransforms = handleOverflowingTransforms
self.init()
- def init(self):
+ def _decompose(
+ self,
+ glyphName: str,
+ transformation: Tuple[float, float, float, float, float, float],
+ ):
+ tpen = self.transformPen(self, transformation)
+ getattr(self.glyphSet[glyphName], self.drawMethod)(tpen)
+
+ def _isClosed(self):
+ """
+ Check if the current path is closed.
+ """
+ raise NotImplementedError
+
+ def init(self) -> None:
self.points = []
self.endPts = []
self.types = []
self.components = []
- def _addPoint(self, pt, onCurve):
+ def addComponent(
+ self,
+ baseGlyphName: str,
+ transformation: Tuple[float, float, float, float, float, float],
+ identifier: Optional[str] = None,
+ **kwargs: Any,
+ ) -> None:
+ """
+ Add a sub glyph.
+ """
+ self.components.append((baseGlyphName, transformation))
+
+ def _buildComponents(self, componentFlags):
+ if self.handleOverflowingTransforms:
+ # we can't encode transform values > 2 or < -2 in F2Dot14,
+ # so we must decompose the glyph if any transform exceeds these
+ overflowing = any(
+ s > 2 or s < -2
+ for (glyphName, transformation) in self.components
+ for s in transformation[:4]
+ )
+ components = []
+ for glyphName, transformation in self.components:
+ if glyphName not in self.glyphSet:
+ self.log.warning(f"skipped non-existing component '{glyphName}'")
+ continue
+ if self.points or (self.handleOverflowingTransforms and overflowing):
+ # can't have both coordinates and components, so decompose
+ self._decompose(glyphName, transformation)
+ continue
+
+ component = GlyphComponent()
+ component.glyphName = glyphName
+ component.x, component.y = (otRound(v) for v in transformation[4:])
+ # quantize floats to F2Dot14 so we get same values as when decompiled
+ # from a binary glyf table
+ transformation = tuple(
+ floatToFixedToFloat(v, 14) for v in transformation[:4]
+ )
+ if transformation != (1, 0, 0, 1):
+ if self.handleOverflowingTransforms and any(
+ MAX_F2DOT14 < s <= 2 for s in transformation
+ ):
+ # clamp values ~= +2.0 so we can keep the component
+ transformation = tuple(
+ MAX_F2DOT14 if MAX_F2DOT14 < s <= 2 else s
+ for s in transformation
+ )
+ component.transform = (transformation[:2], transformation[2:])
+ component.flags = componentFlags
+ components.append(component)
+ return components
+
+ def glyph(self, componentFlags: int = 0x4) -> Glyph:
+ """
+ Returns a :py:class:`~._g_l_y_f.Glyph` object representing the glyph.
+ """
+ if not self._isClosed():
+ raise PenError("Didn't close last contour.")
+ components = self._buildComponents(componentFlags)
+
+ glyph = Glyph()
+ glyph.coordinates = GlyphCoordinates(self.points)
+ glyph.coordinates.toInt()
+ glyph.endPtsOfContours = self.endPts
+ glyph.flags = array("B", self.types)
+ self.init()
+
+ if components:
+ # If both components and contours were present, they have by now
+ # been decomposed by _buildComponents.
+ glyph.components = components
+ glyph.numberOfContours = -1
+ else:
+ glyph.numberOfContours = len(glyph.endPtsOfContours)
+ glyph.program = ttProgram.Program()
+ glyph.program.fromBytecode(b"")
+
+ return glyph
+
+
+class TTGlyphPen(_TTGlyphBasePen, LoggingPen):
+ """
+ Pen used for drawing to a TrueType glyph.
+
+ This pen can be used to construct or modify glyphs in a TrueType format
+ font. After using the pen to draw, use the ``.glyph()`` method to retrieve
+ a :py:class:`~._g_l_y_f.Glyph` object representing the glyph.
+ """
+
+ drawMethod = "draw"
+ transformPen = TransformPen
+
+ def _addPoint(self, pt: Tuple[float, float], onCurve: int) -> None:
self.points.append(pt)
self.types.append(onCurve)
- def _popPoint(self):
+ def _popPoint(self) -> None:
self.points.pop()
self.types.pop()
- def _isClosed(self):
- return (
- (not self.points) or
- (self.endPts and self.endPts[-1] == len(self.points) - 1))
+ def _isClosed(self) -> bool:
+ return (not self.points) or (
+ self.endPts and self.endPts[-1] == len(self.points) - 1
+ )
- def lineTo(self, pt):
+ def lineTo(self, pt: Tuple[float, float]) -> None:
self._addPoint(pt, 1)
- def moveTo(self, pt):
- assert self._isClosed(), '"move"-type point must begin a new contour.'
+ def moveTo(self, pt: Tuple[float, float]) -> None:
+ if not self._isClosed():
+ raise PenError('"move"-type point must begin a new contour.')
self._addPoint(pt, 1)
- def curveTo(self, *points):
+ def curveTo(self, *points) -> None:
raise NotImplementedError
- def qCurveTo(self, *points):
+ def qCurveTo(self, *points) -> None:
assert len(points) >= 1
for pt in points[:-1]:
self._addPoint(pt, 0)
@@ -85,7 +197,7 @@ class TTGlyphPen(LoggingPen):
if points[-1] is not None:
self._addPoint(points[-1], 1)
- def closePath(self):
+ def closePath(self) -> None:
endPt = len(self.points) - 1
# ignore anchors (one-point paths)
@@ -103,72 +215,71 @@ class TTGlyphPen(LoggingPen):
self.endPts.append(endPt)
- def endPath(self):
+ def endPath(self) -> None:
# TrueType contours are always "closed"
self.closePath()
- def addComponent(self, glyphName, transformation):
- self.components.append((glyphName, transformation))
- def _buildComponents(self, componentFlags):
- if self.handleOverflowingTransforms:
- # we can't encode transform values > 2 or < -2 in F2Dot14,
- # so we must decompose the glyph if any transform exceeds these
- overflowing = any(s > 2 or s < -2
- for (glyphName, transformation) in self.components
- for s in transformation[:4])
- components = []
- for glyphName, transformation in self.components:
- if glyphName not in self.glyphSet:
- self.log.warning(
- "skipped non-existing component '%s'", glyphName
- )
- continue
- if (self.points or
- (self.handleOverflowingTransforms and overflowing)):
- # can't have both coordinates and components, so decompose
- tpen = TransformPen(self, transformation)
- self.glyphSet[glyphName].draw(tpen)
- continue
+class TTGlyphPointPen(_TTGlyphBasePen, LogMixin, AbstractPointPen):
+ """
+ Point pen used for drawing to a TrueType glyph.
- component = GlyphComponent()
- component.glyphName = glyphName
- component.x, component.y = (otRound(v) for v in transformation[4:])
- # quantize floats to F2Dot14 so we get same values as when decompiled
- # from a binary glyf table
- transformation = tuple(
- floatToFixedToFloat(v, 14) for v in transformation[:4]
- )
- if transformation != (1, 0, 0, 1):
- if (self.handleOverflowingTransforms and
- any(MAX_F2DOT14 < s <= 2 for s in transformation)):
- # clamp values ~= +2.0 so we can keep the component
- transformation = tuple(MAX_F2DOT14 if MAX_F2DOT14 < s <= 2
- else s for s in transformation)
- component.transform = (transformation[:2], transformation[2:])
- component.flags = componentFlags
- components.append(component)
- return components
+ This pen can be used to construct or modify glyphs in a TrueType format
+ font. After using the pen to draw, use the ``.glyph()`` method to retrieve
+ a :py:class:`~._g_l_y_f.Glyph` object representing the glyph.
+ """
- def glyph(self, componentFlags=0x4):
- """Returns a :py:class:`~._g_l_y_f.Glyph` object representing the glyph."""
- assert self._isClosed(), "Didn't close last contour."
+ drawMethod = "drawPoints"
+ transformPen = TransformPointPen
- components = self._buildComponents(componentFlags)
+ def init(self) -> None:
+ super().init()
+ self._currentContourStartIndex = None
- glyph = Glyph()
- glyph.coordinates = GlyphCoordinates(self.points)
- glyph.coordinates.toInt()
- glyph.endPtsOfContours = self.endPts
- glyph.flags = array("B", self.types)
- self.init()
+ def _isClosed(self) -> bool:
+ return self._currentContourStartIndex is None
- if components:
- glyph.components = components
- glyph.numberOfContours = -1
+ def beginPath(self, identifier: Optional[str] = None, **kwargs: Any) -> None:
+ """
+ Start a new sub path.
+ """
+ if not self._isClosed():
+ raise PenError("Didn't close previous contour.")
+ self._currentContourStartIndex = len(self.points)
+
+ def endPath(self) -> None:
+ """
+ End the current sub path.
+ """
+ # TrueType contours are always "closed"
+ if self._isClosed():
+ raise PenError("Contour is already closed.")
+ if self._currentContourStartIndex == len(self.points):
+ raise PenError("Tried to end an empty contour.")
+ self.endPts.append(len(self.points) - 1)
+ self._currentContourStartIndex = None
+
+ def addPoint(
+ self,
+ pt: Tuple[float, float],
+ segmentType: Optional[str] = None,
+ smooth: bool = False,
+ name: Optional[str] = None,
+ identifier: Optional[str] = None,
+ **kwargs: Any,
+ ) -> None:
+ """
+ Add a point to the current sub path.
+ """
+ if self._isClosed():
+ raise PenError("Can't add a point to a closed contour.")
+ if segmentType is None:
+ self.types.append(0) # offcurve
+ elif segmentType in ("qcurve", "line", "move"):
+ self.types.append(1) # oncurve
+ elif segmentType == "curve":
+ raise NotImplementedError("cubic curves are not supported")
else:
- glyph.numberOfContours = len(glyph.endPtsOfContours)
- glyph.program = ttProgram.Program()
- glyph.program.fromBytecode(b"")
+ raise AssertionError(segmentType)
- return glyph
+ self.points.append(pt)
diff --git a/Lib/fontTools/subset/__init__.py b/Lib/fontTools/subset/__init__.py
index f687b056..53b440da 100644
--- a/Lib/fontTools/subset/__init__.py
+++ b/Lib/fontTools/subset/__init__.py
@@ -8,12 +8,15 @@ from fontTools.ttLib.tables import otTables
from fontTools.otlLib.maxContextCalc import maxCtxFont
from fontTools.pens.basePen import NullPen
from fontTools.misc.loggingTools import Timer
+from fontTools.subset.util import _add_method, _uniq_sort
from fontTools.subset.cff import *
+from fontTools.subset.svg import *
import sys
import struct
import array
import logging
from collections import Counter, defaultdict
+from functools import reduce
from types import MethodType
__usage__ = "pyftsubset font-file [glyph...] [--option=value]..."
@@ -21,82 +24,100 @@ __usage__ = "pyftsubset font-file [glyph...] [--option=value]..."
__doc__="""\
pyftsubset -- OpenType font subsetter and optimizer
- pyftsubset is an OpenType font subsetter and optimizer, based on fontTools.
- It accepts any TT- or CFF-flavored OpenType (.otf or .ttf) or WOFF (.woff)
- font file. The subsetted glyph set is based on the specified glyphs
- or characters, and specified OpenType layout features.
-
- The tool also performs some size-reducing optimizations, aimed for using
- subset fonts as webfonts. Individual optimizations can be enabled or
- disabled, and are enabled by default when they are safe.
-
-Usage:
- """+__usage__+"""
-
- At least one glyph or one of --gids, --gids-file, --glyphs, --glyphs-file,
- --text, --text-file, --unicodes, or --unicodes-file, must be specified.
-
-Arguments:
- font-file
- The input font file.
- glyph
- Specify one or more glyph identifiers to include in the subset. Must be
- PS glyph names, or the special string '*' to keep the entire glyph set.
-
-Initial glyph set specification:
- These options populate the initial glyph set. Same option can appear
- multiple times, and the results are accummulated.
- --gids=<NNN>[,<NNN>...]
- Specify comma/whitespace-separated list of glyph IDs or ranges as
- decimal numbers. For example, --gids=10-12,14 adds glyphs with
- numbers 10, 11, 12, and 14.
- --gids-file=<path>
- Like --gids but reads from a file. Anything after a '#' on any line
- is ignored as comments.
- --glyphs=<glyphname>[,<glyphname>...]
- Specify comma/whitespace-separated PS glyph names to add to the subset.
- Note that only PS glyph names are accepted, not gidNNN, U+XXXX, etc
- that are accepted on the command line. The special string '*' will keep
- the entire glyph set.
- --glyphs-file=<path>
- Like --glyphs but reads from a file. Anything after a '#' on any line
- is ignored as comments.
- --text=<text>
- Specify characters to include in the subset, as UTF-8 string.
- --text-file=<path>
- Like --text but reads from a file. Newline character are not added to
- the subset.
- --unicodes=<XXXX>[,<XXXX>...]
- Specify comma/whitespace-separated list of Unicode codepoints or
- ranges as hex numbers, optionally prefixed with 'U+', 'u', etc.
- For example, --unicodes=41-5a,61-7a adds ASCII letters, so does
- the more verbose --unicodes=U+0041-005A,U+0061-007A.
- The special strings '*' will choose all Unicode characters mapped
- by the font.
- --unicodes-file=<path>
- Like --unicodes, but reads from a file. Anything after a '#' on any
- line in the file is ignored as comments.
- --ignore-missing-glyphs
- Do not fail if some requested glyphs or gids are not available in
- the font.
- --no-ignore-missing-glyphs
- Stop and fail if some requested glyphs or gids are not available
- in the font. [default]
- --ignore-missing-unicodes [default]
- Do not fail if some requested Unicode characters (including those
- indirectly specified using --text or --text-file) are not available
- in the font.
- --no-ignore-missing-unicodes
- Stop and fail if some requested Unicode characters are not available
- in the font.
- Note the default discrepancy between ignoring missing glyphs versus
- unicodes. This is for historical reasons and in the future
- --no-ignore-missing-unicodes might become default.
-
-Other options:
- For the other options listed below, to see the current value of the option,
- pass a value of '?' to it, with or without a '='.
- Examples:
+pyftsubset is an OpenType font subsetter and optimizer, based on fontTools.
+It accepts any TT- or CFF-flavored OpenType (.otf or .ttf) or WOFF (.woff)
+font file. The subsetted glyph set is based on the specified glyphs
+or characters, and specified OpenType layout features.
+
+The tool also performs some size-reducing optimizations, aimed for using
+subset fonts as webfonts. Individual optimizations can be enabled or
+disabled, and are enabled by default when they are safe.
+
+Usage: """+__usage__+"""
+
+At least one glyph or one of --gids, --gids-file, --glyphs, --glyphs-file,
+--text, --text-file, --unicodes, or --unicodes-file, must be specified.
+
+Args:
+
+font-file
+ The input font file.
+glyph
+ Specify one or more glyph identifiers to include in the subset. Must be
+ PS glyph names, or the special string '*' to keep the entire glyph set.
+
+Initial glyph set specification
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+These options populate the initial glyph set. Same option can appear
+multiple times, and the results are accummulated.
+
+--gids=<NNN>[,<NNN>...]
+ Specify comma/whitespace-separated list of glyph IDs or ranges as decimal
+ numbers. For example, --gids=10-12,14 adds glyphs with numbers 10, 11,
+ 12, and 14.
+
+--gids-file=<path>
+ Like --gids but reads from a file. Anything after a '#' on any line is
+ ignored as comments.
+
+--glyphs=<glyphname>[,<glyphname>...]
+ Specify comma/whitespace-separated PS glyph names to add to the subset.
+ Note that only PS glyph names are accepted, not gidNNN, U+XXXX, etc
+ that are accepted on the command line. The special string '*' will keep
+ the entire glyph set.
+
+--glyphs-file=<path>
+ Like --glyphs but reads from a file. Anything after a '#' on any line
+ is ignored as comments.
+
+--text=<text>
+ Specify characters to include in the subset, as UTF-8 string.
+
+--text-file=<path>
+ Like --text but reads from a file. Newline character are not added to
+ the subset.
+
+--unicodes=<XXXX>[,<XXXX>...]
+ Specify comma/whitespace-separated list of Unicode codepoints or
+ ranges as hex numbers, optionally prefixed with 'U+', 'u', etc.
+ For example, --unicodes=41-5a,61-7a adds ASCII letters, so does
+ the more verbose --unicodes=U+0041-005A,U+0061-007A.
+ The special strings '*' will choose all Unicode characters mapped
+ by the font.
+
+--unicodes-file=<path>
+ Like --unicodes, but reads from a file. Anything after a '#' on any
+ line in the file is ignored as comments.
+
+--ignore-missing-glyphs
+ Do not fail if some requested glyphs or gids are not available in
+ the font.
+
+--no-ignore-missing-glyphs
+ Stop and fail if some requested glyphs or gids are not available
+ in the font. [default]
+
+--ignore-missing-unicodes [default]
+ Do not fail if some requested Unicode characters (including those
+ indirectly specified using --text or --text-file) are not available
+ in the font.
+
+--no-ignore-missing-unicodes
+ Stop and fail if some requested Unicode characters are not available
+ in the font.
+ Note the default discrepancy between ignoring missing glyphs versus
+ unicodes. This is for historical reasons and in the future
+ --no-ignore-missing-unicodes might become default.
+
+Other options
+^^^^^^^^^^^^^
+
+For the other options listed below, to see the current value of the option,
+pass a value of '?' to it, with or without a '='.
+
+Examples::
+
$ pyftsubset --glyph-names?
Current setting for 'glyph-names' is: False
$ ./pyftsubset --name-IDs=?
@@ -105,239 +126,299 @@ Other options:
Current setting for 'hinting' is: True
Current setting for 'hinting' is: False
-Output options:
- --output-file=<path>
- The output font file. If not specified, the subsetted font
- will be saved in as font-file.subset.
- --flavor=<type>
- Specify flavor of output font file. May be 'woff' or 'woff2'.
- Note that WOFF2 requires the Brotli Python extension, available
- at https://github.com/google/brotli
- --with-zopfli
- Use the Google Zopfli algorithm to compress WOFF. The output is 3-8 %
- smaller than pure zlib, but the compression speed is much slower.
- The Zopfli Python bindings are available at:
- https://pypi.python.org/pypi/zopfli
-
-Glyph set expansion:
- These options control how additional glyphs are added to the subset.
- --retain-gids
- Retain glyph indices; just empty glyphs not needed in-place.
- --notdef-glyph
- Add the '.notdef' glyph to the subset (ie, keep it). [default]
- --no-notdef-glyph
- Drop the '.notdef' glyph unless specified in the glyph set. This
- saves a few bytes, but is not possible for Postscript-flavored
- fonts, as those require '.notdef'. For TrueType-flavored fonts,
- this works fine as long as no unsupported glyphs are requested
- from the font.
- --notdef-outline
- Keep the outline of '.notdef' glyph. The '.notdef' glyph outline is
- used when glyphs not supported by the font are to be shown. It is not
- needed otherwise.
- --no-notdef-outline
- When including a '.notdef' glyph, remove its outline. This saves
- a few bytes. [default]
- --recommended-glyphs
- Add glyphs 0, 1, 2, and 3 to the subset, as recommended for
- TrueType-flavored fonts: '.notdef', 'NULL' or '.null', 'CR', 'space'.
- Some legacy software might require this, but no modern system does.
- --no-recommended-glyphs
- Do not add glyphs 0, 1, 2, and 3 to the subset, unless specified in
- glyph set. [default]
- --no-layout-closure
- Do not expand glyph set to add glyphs produced by OpenType layout
- features. Instead, OpenType layout features will be subset to only
- rules that are relevant to the otherwise-specified glyph set.
- --layout-features[+|-]=<feature>[,<feature>...]
- Specify (=), add to (+=) or exclude from (-=) the comma-separated
- set of OpenType layout feature tags that will be preserved.
- Glyph variants used by the preserved features are added to the
- specified subset glyph set. By default, 'calt', 'ccmp', 'clig', 'curs',
- 'dnom', 'frac', 'kern', 'liga', 'locl', 'mark', 'mkmk', 'numr', 'rclt',
- 'rlig', 'rvrn', and all features required for script shaping are
- preserved. To see the full list, try '--layout-features=?'.
- Use '*' to keep all features.
- Multiple --layout-features options can be provided if necessary.
- Examples:
- --layout-features+=onum,pnum,ss01
- * Keep the default set of features and 'onum', 'pnum', 'ss01'.
- --layout-features-='mark','mkmk'
- * Keep the default set of features but drop 'mark' and 'mkmk'.
- --layout-features='kern'
- * Only keep the 'kern' feature, drop all others.
- --layout-features=''
- * Drop all features.
- --layout-features='*'
- * Keep all features.
- --layout-features+=aalt --layout-features-=vrt2
- * Keep default set of features plus 'aalt', but drop 'vrt2'.
- --layout-scripts[+|-]=<script>[,<script>...]
- Specify (=), add to (+=) or exclude from (-=) the comma-separated
- set of OpenType layout script tags that will be preserved. LangSys tags
- can be appended to script tag, separated by '.', for example:
- 'arab.dflt,arab.URD,latn.TRK'. By default all scripts are retained ('*').
-
-Hinting options:
- --hinting
- Keep hinting [default]
- --no-hinting
- Drop glyph-specific hinting and font-wide hinting tables, as well
- as remove hinting-related bits and pieces from other tables (eg. GPOS).
- See --hinting-tables for list of tables that are dropped by default.
- Instructions and hints are stripped from 'glyf' and 'CFF ' tables
- respectively. This produces (sometimes up to 30%) smaller fonts that
- are suitable for extremely high-resolution systems, like high-end
- mobile devices and retina displays.
-
-Optimization options:
- --desubroutinize
- Remove CFF use of subroutinizes. Subroutinization is a way to make CFF
- fonts smaller. For small subsets however, desubroutinizing might make
- the font smaller. It has even been reported that desubroutinized CFF
- fonts compress better (produce smaller output) WOFF and WOFF2 fonts.
- Also see note under --no-hinting.
- --no-desubroutinize [default]
- Leave CFF subroutinizes as is, only throw away unused subroutinizes.
-
-Font table options:
- --drop-tables[+|-]=<table>[,<table>...]
- Specify (=), add to (+=) or exclude from (-=) the comma-separated
- set of tables that will be be dropped.
- By default, the following tables are dropped:
- 'BASE', 'JSTF', 'DSIG', 'EBDT', 'EBLC', 'EBSC', 'SVG ', 'PCLT', 'LTSH'
- and Graphite tables: 'Feat', 'Glat', 'Gloc', 'Silf', 'Sill'.
- The tool will attempt to subset the remaining tables.
- Examples:
- --drop-tables-='SVG '
- * Drop the default set of tables but keep 'SVG '.
- --drop-tables+=GSUB
- * Drop the default set of tables and 'GSUB'.
- --drop-tables=DSIG
- * Only drop the 'DSIG' table, keep all others.
- --drop-tables=
- * Keep all tables.
- --no-subset-tables+=<table>[,<table>...]
- Add to the set of tables that will not be subsetted.
- By default, the following tables are included in this list, as
- they do not need subsetting (ignore the fact that 'loca' is listed
- here): 'gasp', 'head', 'hhea', 'maxp', 'vhea', 'OS/2', 'loca', 'name',
- 'cvt ', 'fpgm', 'prep', 'VMDX', 'DSIG', 'CPAL', 'MVAR', 'cvar', 'STAT'.
- By default, tables that the tool does not know how to subset and are not
- specified here will be dropped from the font, unless --passthrough-tables
- option is passed.
- Example:
- --no-subset-tables+=FFTM
- * Keep 'FFTM' table in the font by preventing subsetting.
- --passthrough-tables
- Do not drop tables that the tool does not know how to subset.
- --no-passthrough-tables
- Tables that the tool does not know how to subset and are not specified
- in --no-subset-tables will be dropped from the font. [default]
- --hinting-tables[-]=<table>[,<table>...]
- Specify (=), add to (+=) or exclude from (-=) the list of font-wide
- hinting tables that will be dropped if --no-hinting is specified,
- Examples:
- --hinting-tables-='VDMX'
- * Drop font-wide hinting tables except 'VDMX'.
- --hinting-tables=''
- * Keep all font-wide hinting tables (but strip hints from glyphs).
- --legacy-kern
- Keep TrueType 'kern' table even when OpenType 'GPOS' is available.
- --no-legacy-kern
- Drop TrueType 'kern' table if OpenType 'GPOS' is available. [default]
-
-Font naming options:
- These options control what is retained in the 'name' table. For numerical
- codes, see: http://www.microsoft.com/typography/otspec/name.htm
- --name-IDs[+|-]=<nameID>[,<nameID>...]
- Specify (=), add to (+=) or exclude from (-=) the set of 'name' table
- entry nameIDs that will be preserved. By default, only nameIDs between 0
- and 6 are preserved, the rest are dropped. Use '*' to keep all entries.
- Examples:
- --name-IDs+=7,8,9
- * Also keep Trademark, Manufacturer and Designer name entries.
- --name-IDs=''
- * Drop all 'name' table entries.
- --name-IDs='*'
- * keep all 'name' table entries
- --name-legacy
- Keep legacy (non-Unicode) 'name' table entries (0.x, 1.x etc.).
- XXX Note: This might be needed for some fonts that have no Unicode name
- entires for English. See: https://github.com/fonttools/fonttools/issues/146
- --no-name-legacy
- Drop legacy (non-Unicode) 'name' table entries [default]
- --name-languages[+|-]=<langID>[,<langID>]
- Specify (=), add to (+=) or exclude from (-=) the set of 'name' table
- langIDs that will be preserved. By default only records with langID
- 0x0409 (English) are preserved. Use '*' to keep all langIDs.
- --obfuscate-names
- Make the font unusable as a system font by replacing name IDs 1, 2, 3, 4,
- and 6 with dummy strings (it is still fully functional as webfont).
-
-Glyph naming and encoding options:
- --glyph-names
- Keep PS glyph names in TT-flavored fonts. In general glyph names are
- not needed for correct use of the font. However, some PDF generators
- and PDF viewers might rely on glyph names to extract Unicode text
- from PDF documents.
- --no-glyph-names
- Drop PS glyph names in TT-flavored fonts, by using 'post' table
- version 3.0. [default]
- --legacy-cmap
- Keep the legacy 'cmap' subtables (0.x, 1.x, 4.x etc.).
- --no-legacy-cmap
- Drop the legacy 'cmap' subtables. [default]
- --symbol-cmap
- Keep the 3.0 symbol 'cmap'.
- --no-symbol-cmap
- Drop the 3.0 symbol 'cmap'. [default]
-
-Other font-specific options:
- --recalc-bounds
- Recalculate font bounding boxes.
- --no-recalc-bounds
- Keep original font bounding boxes. This is faster and still safe
- for all practical purposes. [default]
- --recalc-timestamp
- Set font 'modified' timestamp to current time.
- --no-recalc-timestamp
- Do not modify font 'modified' timestamp. [default]
- --canonical-order
- Order tables as recommended in the OpenType standard. This is not
- required by the standard, nor by any known implementation.
- --no-canonical-order
- Keep original order of font tables. This is faster. [default]
- --prune-unicode-ranges
- Update the 'OS/2 ulUnicodeRange*' bits after subsetting. The Unicode
- ranges defined in the OpenType specification v1.7 are intersected with
- the Unicode codepoints specified in the font's Unicode 'cmap' subtables:
- when no overlap is found, the bit will be switched off. However, it will
- *not* be switched on if an intersection is found. [default]
- --no-prune-unicode-ranges
- Don't change the 'OS/2 ulUnicodeRange*' bits.
- --recalc-average-width
- Update the 'OS/2 xAvgCharWidth' field after subsetting.
- --no-recalc-average-width
- Don't change the 'OS/2 xAvgCharWidth' field. [default]
- --recalc-max-context
- Update the 'OS/2 usMaxContext' field after subsetting.
- --no-recalc-max-context
- Don't change the 'OS/2 usMaxContext' field. [default]
- --font-number=<number>
- Select font number for TrueType Collection (.ttc/.otc), starting from 0.
-
-Application options:
- --verbose
- Display verbose information of the subsetting process.
- --timing
- Display detailed timing information of the subsetting process.
- --xml
- Display the TTX XML representation of subsetted font.
-
-Example:
- Produce a subset containing the characters ' !"#$%' without performing
- size-reducing optimizations:
+Output options
+^^^^^^^^^^^^^^
+
+--output-file=<path>
+ The output font file. If not specified, the subsetted font
+ will be saved in as font-file.subset.
+
+--flavor=<type>
+ Specify flavor of output font file. May be 'woff' or 'woff2'.
+ Note that WOFF2 requires the Brotli Python extension, available
+ at https://github.com/google/brotli
+
+--with-zopfli
+ Use the Google Zopfli algorithm to compress WOFF. The output is 3-8 %
+ smaller than pure zlib, but the compression speed is much slower.
+ The Zopfli Python bindings are available at:
+ https://pypi.python.org/pypi/zopfli
+
+Glyph set expansion
+^^^^^^^^^^^^^^^^^^^
+
+These options control how additional glyphs are added to the subset.
+
+--retain-gids
+ Retain glyph indices; just empty glyphs not needed in-place.
+
+--notdef-glyph
+ Add the '.notdef' glyph to the subset (ie, keep it). [default]
+
+--no-notdef-glyph
+ Drop the '.notdef' glyph unless specified in the glyph set. This
+ saves a few bytes, but is not possible for Postscript-flavored
+ fonts, as those require '.notdef'. For TrueType-flavored fonts,
+ this works fine as long as no unsupported glyphs are requested
+ from the font.
+
+--notdef-outline
+ Keep the outline of '.notdef' glyph. The '.notdef' glyph outline is
+ used when glyphs not supported by the font are to be shown. It is not
+ needed otherwise.
+
+--no-notdef-outline
+ When including a '.notdef' glyph, remove its outline. This saves
+ a few bytes. [default]
+
+--recommended-glyphs
+ Add glyphs 0, 1, 2, and 3 to the subset, as recommended for
+ TrueType-flavored fonts: '.notdef', 'NULL' or '.null', 'CR', 'space'.
+ Some legacy software might require this, but no modern system does.
+
+--no-recommended-glyphs
+ Do not add glyphs 0, 1, 2, and 3 to the subset, unless specified in
+ glyph set. [default]
+
+--no-layout-closure
+ Do not expand glyph set to add glyphs produced by OpenType layout
+ features. Instead, OpenType layout features will be subset to only
+ rules that are relevant to the otherwise-specified glyph set.
+
+--layout-features[+|-]=<feature>[,<feature>...]
+ Specify (=), add to (+=) or exclude from (-=) the comma-separated
+ set of OpenType layout feature tags that will be preserved.
+ Glyph variants used by the preserved features are added to the
+ specified subset glyph set. By default, 'calt', 'ccmp', 'clig', 'curs',
+ 'dnom', 'frac', 'kern', 'liga', 'locl', 'mark', 'mkmk', 'numr', 'rclt',
+ 'rlig', 'rvrn', and all features required for script shaping are
+ preserved. To see the full list, try '--layout-features=?'.
+ Use '*' to keep all features.
+ Multiple --layout-features options can be provided if necessary.
+ Examples:
+
+ --layout-features+=onum,pnum,ss01
+ * Keep the default set of features and 'onum', 'pnum', 'ss01'.
+ --layout-features-='mark','mkmk'
+ * Keep the default set of features but drop 'mark' and 'mkmk'.
+ --layout-features='kern'
+ * Only keep the 'kern' feature, drop all others.
+ --layout-features=''
+ * Drop all features.
+ --layout-features='*'
+ * Keep all features.
+ --layout-features+=aalt --layout-features-=vrt2
+ * Keep default set of features plus 'aalt', but drop 'vrt2'.
+
+--layout-scripts[+|-]=<script>[,<script>...]
+ Specify (=), add to (+=) or exclude from (-=) the comma-separated
+ set of OpenType layout script tags that will be preserved. LangSys tags
+ can be appended to script tag, separated by '.', for example:
+ 'arab.dflt,arab.URD,latn.TRK'. By default all scripts are retained ('*').
+
+Hinting options
+^^^^^^^^^^^^^^^
+
+--hinting
+ Keep hinting [default]
+
+--no-hinting
+ Drop glyph-specific hinting and font-wide hinting tables, as well
+ as remove hinting-related bits and pieces from other tables (eg. GPOS).
+ See --hinting-tables for list of tables that are dropped by default.
+ Instructions and hints are stripped from 'glyf' and 'CFF ' tables
+ respectively. This produces (sometimes up to 30%) smaller fonts that
+ are suitable for extremely high-resolution systems, like high-end
+ mobile devices and retina displays.
+
+Optimization options
+^^^^^^^^^^^^^^^^^^^^
+
+--desubroutinize
+ Remove CFF use of subroutinizes. Subroutinization is a way to make CFF
+ fonts smaller. For small subsets however, desubroutinizing might make
+ the font smaller. It has even been reported that desubroutinized CFF
+ fonts compress better (produce smaller output) WOFF and WOFF2 fonts.
+ Also see note under --no-hinting.
+
+--no-desubroutinize [default]
+ Leave CFF subroutinizes as is, only throw away unused subroutinizes.
+
+Font table options
+^^^^^^^^^^^^^^^^^^
+
+--drop-tables[+|-]=<table>[,<table>...]
+ Specify (=), add to (+=) or exclude from (-=) the comma-separated
+ set of tables that will be be dropped.
+ By default, the following tables are dropped:
+ 'BASE', 'JSTF', 'DSIG', 'EBDT', 'EBLC', 'EBSC', 'PCLT', 'LTSH'
+ and Graphite tables: 'Feat', 'Glat', 'Gloc', 'Silf', 'Sill'.
+ The tool will attempt to subset the remaining tables.
+
+ Examples:
+
+ --drop-tables-='BASE'
+ * Drop the default set of tables but keep 'BASE'.
+
+ --drop-tables+=GSUB
+ * Drop the default set of tables and 'GSUB'.
+
+ --drop-tables=DSIG
+ * Only drop the 'DSIG' table, keep all others.
+
+ --drop-tables=
+ * Keep all tables.
+
+--no-subset-tables+=<table>[,<table>...]
+ Add to the set of tables that will not be subsetted.
+ By default, the following tables are included in this list, as
+ they do not need subsetting (ignore the fact that 'loca' is listed
+ here): 'gasp', 'head', 'hhea', 'maxp', 'vhea', 'OS/2', 'loca', 'name',
+ 'cvt ', 'fpgm', 'prep', 'VMDX', 'DSIG', 'CPAL', 'MVAR', 'cvar', 'STAT'.
+ By default, tables that the tool does not know how to subset and are not
+ specified here will be dropped from the font, unless --passthrough-tables
+ option is passed.
+
+ Example:
+
+ --no-subset-tables+=FFTM
+ * Keep 'FFTM' table in the font by preventing subsetting.
+
+--passthrough-tables
+ Do not drop tables that the tool does not know how to subset.
+
+--no-passthrough-tables
+ Tables that the tool does not know how to subset and are not specified
+ in --no-subset-tables will be dropped from the font. [default]
+
+--hinting-tables[-]=<table>[,<table>...]
+ Specify (=), add to (+=) or exclude from (-=) the list of font-wide
+ hinting tables that will be dropped if --no-hinting is specified.
+
+ Examples:
+
+ --hinting-tables-='VDMX'
+ * Drop font-wide hinting tables except 'VDMX'.
+ --hinting-tables=''
+ * Keep all font-wide hinting tables (but strip hints from glyphs).
+
+--legacy-kern
+ Keep TrueType 'kern' table even when OpenType 'GPOS' is available.
+
+--no-legacy-kern
+ Drop TrueType 'kern' table if OpenType 'GPOS' is available. [default]
+
+Font naming options
+^^^^^^^^^^^^^^^^^^^
+
+These options control what is retained in the 'name' table. For numerical
+codes, see: http://www.microsoft.com/typography/otspec/name.htm
+
+--name-IDs[+|-]=<nameID>[,<nameID>...]
+ Specify (=), add to (+=) or exclude from (-=) the set of 'name' table
+ entry nameIDs that will be preserved. By default, only nameIDs between 0
+ and 6 are preserved, the rest are dropped. Use '*' to keep all entries.
+
+ Examples:
+
+ --name-IDs+=7,8,9
+ * Also keep Trademark, Manufacturer and Designer name entries.
+ --name-IDs=''
+ * Drop all 'name' table entries.
+ --name-IDs='*'
+ * keep all 'name' table entries
+
+--name-legacy
+ Keep legacy (non-Unicode) 'name' table entries (0.x, 1.x etc.).
+ XXX Note: This might be needed for some fonts that have no Unicode name
+ entires for English. See: https://github.com/fonttools/fonttools/issues/146
+
+--no-name-legacy
+ Drop legacy (non-Unicode) 'name' table entries [default]
+
+--name-languages[+|-]=<langID>[,<langID>]
+ Specify (=), add to (+=) or exclude from (-=) the set of 'name' table
+ langIDs that will be preserved. By default only records with langID
+ 0x0409 (English) are preserved. Use '*' to keep all langIDs.
+
+--obfuscate-names
+ Make the font unusable as a system font by replacing name IDs 1, 2, 3, 4,
+ and 6 with dummy strings (it is still fully functional as webfont).
+
+Glyph naming and encoding options
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+--glyph-names
+ Keep PS glyph names in TT-flavored fonts. In general glyph names are
+ not needed for correct use of the font. However, some PDF generators
+ and PDF viewers might rely on glyph names to extract Unicode text
+ from PDF documents.
+--no-glyph-names
+ Drop PS glyph names in TT-flavored fonts, by using 'post' table
+ version 3.0. [default]
+--legacy-cmap
+ Keep the legacy 'cmap' subtables (0.x, 1.x, 4.x etc.).
+--no-legacy-cmap
+ Drop the legacy 'cmap' subtables. [default]
+--symbol-cmap
+ Keep the 3.0 symbol 'cmap'.
+--no-symbol-cmap
+ Drop the 3.0 symbol 'cmap'. [default]
+
+Other font-specific options
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+--recalc-bounds
+ Recalculate font bounding boxes.
+--no-recalc-bounds
+ Keep original font bounding boxes. This is faster and still safe
+ for all practical purposes. [default]
+--recalc-timestamp
+ Set font 'modified' timestamp to current time.
+--no-recalc-timestamp
+ Do not modify font 'modified' timestamp. [default]
+--canonical-order
+ Order tables as recommended in the OpenType standard. This is not
+ required by the standard, nor by any known implementation.
+--no-canonical-order
+ Keep original order of font tables. This is faster. [default]
+--prune-unicode-ranges
+ Update the 'OS/2 ulUnicodeRange*' bits after subsetting. The Unicode
+ ranges defined in the OpenType specification v1.7 are intersected with
+ the Unicode codepoints specified in the font's Unicode 'cmap' subtables:
+ when no overlap is found, the bit will be switched off. However, it will
+ *not* be switched on if an intersection is found. [default]
+--no-prune-unicode-ranges
+ Don't change the 'OS/2 ulUnicodeRange*' bits.
+--recalc-average-width
+ Update the 'OS/2 xAvgCharWidth' field after subsetting.
+--no-recalc-average-width
+ Don't change the 'OS/2 xAvgCharWidth' field. [default]
+--recalc-max-context
+ Update the 'OS/2 usMaxContext' field after subsetting.
+--no-recalc-max-context
+ Don't change the 'OS/2 usMaxContext' field. [default]
+--font-number=<number>
+ Select font number for TrueType Collection (.ttc/.otc), starting from 0.
+--pretty-svg
+ When subsetting SVG table, use lxml pretty_print=True option to indent
+ the XML output (only recommended for debugging purposes).
+
+Application options
+^^^^^^^^^^^^^^^^^^^
+
+--verbose
+ Display verbose information of the subsetting process.
+--timing
+ Display detailed timing information of the subsetting process.
+--xml
+ Display the TTX XML representation of subsetted font.
+
+Example
+^^^^^^^
+
+Produce a subset containing the characters ' !"#$%' without performing
+size-reducing optimizations::
$ pyftsubset font.ttf --unicodes="U+0020-0025" \\
--layout-features='*' --glyph-names --symbol-cmap --legacy-cmap \\
@@ -362,26 +443,6 @@ log.glyphs = MethodType(_log_glyphs, log)
timer = Timer(logger=logging.getLogger("fontTools.subset.timer"))
-def _add_method(*clazzes):
- """Returns a decorator function that adds a new method to one or
- more classes."""
- def wrapper(method):
- done = []
- for clazz in clazzes:
- if clazz in done: continue # Support multiple names of a clazz
- done.append(clazz)
- assert clazz.__name__ != 'DefaultTable', \
- 'Oops, table class not found.'
- assert not hasattr(clazz, method.__name__), \
- "Oops, class '%s' has method '%s'." % (clazz.__name__,
- method.__name__)
- setattr(clazz, method.__name__, method)
- return None
- return wrapper
-
-def _uniq_sort(l):
- return sorted(set(l))
-
def _dict_subset(d, glyphs):
return {g:d[g] for g in glyphs}
@@ -527,6 +588,17 @@ def subset_glyphs(self, s):
else:
assert 0, "unknown format: %s" % self.Format
+@_add_method(otTables.Device)
+def is_hinting(self):
+ return self.DeltaFormat in (1,2,3)
+
+@_add_method(otTables.ValueRecord)
+def prune_hints(self):
+ for name in ['XPlaDevice', 'YPlaDevice', 'XAdvDevice', 'YAdvDevice']:
+ v = getattr(self, name, None)
+ if v is not None and v.is_hinting():
+ delattr(self, name)
+
@_add_method(otTables.SinglePos)
def subset_glyphs(self, s):
if self.Format == 1:
@@ -543,14 +615,27 @@ def subset_glyphs(self, s):
@_add_method(otTables.SinglePos)
def prune_post_subset(self, font, options):
- if not options.hinting:
- # Drop device tables
- self.ValueFormat &= ~0x00F0
+ if self.Value is None:
+ assert self.ValueFormat == 0
+ return True
+
+ # Shrink ValueFormat
+ if self.Format == 1:
+ if not options.hinting:
+ self.Value.prune_hints()
+ self.ValueFormat = self.Value.getEffectiveFormat()
+ elif self.Format == 2:
+ if not options.hinting:
+ for v in self.Value:
+ v.prune_hints()
+ self.ValueFormat = reduce(int.__or__, [v.getEffectiveFormat() for v in self.Value], 0)
+
# Downgrade to Format 1 if all ValueRecords are the same
if self.Format == 2 and all(v == self.Value[0] for v in self.Value):
self.Format = 1
self.Value = self.Value[0] if self.ValueFormat != 0 else None
del self.ValueCount
+
return True
@_add_method(otTables.PairPos)
@@ -587,10 +672,22 @@ def subset_glyphs(self, s):
@_add_method(otTables.PairPos)
def prune_post_subset(self, font, options):
if not options.hinting:
- # Drop device tables
- self.ValueFormat1 &= ~0x00F0
- self.ValueFormat2 &= ~0x00F0
- return True
+ attr1, attr2 = {
+ 1: ('PairSet', 'PairValueRecord'),
+ 2: ('Class1Record', 'Class2Record'),
+ }[self.Format]
+
+ self.ValueFormat1 = self.ValueFormat2 = 0
+ for row in getattr(self, attr1):
+ for r in getattr(row, attr2):
+ if r.Value1:
+ r.Value1.prune_hints()
+ self.ValueFormat1 |= r.Value1.getEffectiveFormat()
+ if r.Value2:
+ r.Value2.prune_hints()
+ self.ValueFormat2 |= r.Value2.getEffectiveFormat()
+
+ return bool(self.ValueFormat1 | self.ValueFormat2)
@_add_method(otTables.CursivePos)
def subset_glyphs(self, s):
@@ -606,9 +703,15 @@ def subset_glyphs(self, s):
@_add_method(otTables.Anchor)
def prune_hints(self):
- # Drop device tables / contour anchor point
- self.ensureDecompiled()
- self.Format = 1
+ if self.Format == 2:
+ self.Format = 1
+ elif self.Format == 3:
+ for name in ('XDeviceTable', 'YDeviceTable'):
+ v = getattr(self, name, None)
+ if v is not None and v.is_hinting():
+ setattr(self, name, None)
+ if self.XDeviceTable is None and self.YDeviceTable is None:
+ self.Format = 1
@_add_method(otTables.CursivePos)
def prune_post_subset(self, font, options):
@@ -713,7 +816,6 @@ def subset_glyphs(self, s):
@_add_method(otTables.MarkMarkPos)
def prune_post_subset(self, font, options):
if not options.hinting:
- # Drop device tables or contour anchor point
for m in self.Mark1Array.MarkRecord:
if m.MarkAnchor:
m.MarkAnchor.prune_hints()
@@ -976,7 +1078,7 @@ def closure_glyphs(self, s, cur_glyphs):
chaos.update(range(seqi, len(getattr(r, c.Input))+2))
lookup.closure_glyphs(s, cur_glyphs=pos_glyphs)
elif self.Format == 3:
- if not all(x.intersect(s.glyphs) for x in c.RuleData(self)):
+ if not all(x is not None and x.intersect(s.glyphs) for x in c.RuleData(self)):
return []
r = self
input_coverages = getattr(r, c.Input)
@@ -1071,7 +1173,7 @@ def subset_glyphs(self, s):
return bool(rss)
elif self.Format == 3:
- return all(x.subset(s.glyphs) for x in c.RuleData(self))
+ return all(x is not None and x.subset(s.glyphs) for x in c.RuleData(self))
else:
assert 0, "unknown format: %s" % self.Format
@@ -1266,7 +1368,13 @@ def subset_lookups(self, lookup_indices):
self.LookupListIndex = [lookup_indices.index(l)
for l in self.LookupListIndex]
self.LookupCount = len(self.LookupListIndex)
- return self.LookupCount or self.FeatureParams
+ # keep 'size' feature even if it contains no lookups; but drop any other
+ # empty feature (e.g. FeatureParams for stylistic set names)
+ # https://github.com/fonttools/fonttools/issues/2324
+ return (
+ self.LookupCount or
+ isinstance(self.FeatureParams, otTables.FeatureParamsSize)
+ )
@_add_method(otTables.FeatureList)
def subset_lookups(self, lookup_indices):
@@ -2007,7 +2115,7 @@ def closure_glyphs(self, s):
self.ColorLayers = self._decompileColorLayersV0(self.table)
self.ColorLayersV1 = {
rec.BaseGlyph: rec.Paint
- for rec in self.table.BaseGlyphV1List.BaseGlyphV1Record
+ for rec in self.table.BaseGlyphList.BaseGlyphPaintRecord
}
decompose = s.glyphs
@@ -2031,31 +2139,48 @@ def subset_glyphs(self, s):
from fontTools.colorLib.unbuilder import unbuildColrV1
from fontTools.colorLib.builder import buildColrV1, populateCOLRv0
+ # only include glyphs after COLR closure, which in turn comes after cmap and GSUB
+ # closure, but importantly before glyf/CFF closures. COLR layers can refer to
+ # composite glyphs, and that's ok, since glyf/CFF closures happen after COLR closure
+ # and take care of those. If we also included glyphs resulting from glyf/CFF closures
+ # when deciding which COLR base glyphs to retain, then we may end up with a situation
+ # whereby a COLR base glyph is kept, not because directly requested (cmap)
+ # or substituted (GSUB) or referenced by another COLRv1 PaintColrGlyph, but because
+ # it corresponds to (has same GID as) a non-COLR glyph that happens to be used as a
+ # component in glyf or CFF table. Best case scenario we retain more glyphs than
+ # required; worst case we retain incomplete COLR records that try to reference
+ # glyphs that are no longer in the final subset font.
+ # https://github.com/fonttools/fonttools/issues/2461
+ s.glyphs = s.glyphs_colred
+
self.ColorLayers = {g: self.ColorLayers[g] for g in s.glyphs if g in self.ColorLayers}
if self.version == 0:
return bool(self.ColorLayers)
- colorGlyphsV1 = unbuildColrV1(self.table.LayerV1List, self.table.BaseGlyphV1List)
- self.table.LayerV1List, self.table.BaseGlyphV1List = buildColrV1(
+ colorGlyphsV1 = unbuildColrV1(self.table.LayerList, self.table.BaseGlyphList)
+ self.table.LayerList, self.table.BaseGlyphList = buildColrV1(
{g: colorGlyphsV1[g] for g in colorGlyphsV1 if g in s.glyphs}
)
del self.ColorLayersV1
+ if self.table.ClipList is not None:
+ clips = self.table.ClipList.clips
+ self.table.ClipList.clips = {g: clips[g] for g in clips if g in s.glyphs}
+
layersV0 = self.ColorLayers
- if not self.table.BaseGlyphV1List.BaseGlyphV1Record:
+ if not self.table.BaseGlyphList.BaseGlyphPaintRecord:
# no more COLRv1 glyphs: downgrade to version 0
self.version = 0
del self.table
return bool(layersV0)
- if layersV0:
- populateCOLRv0(
- self.table,
- {
- g: [(layer.name, layer.colorID) for layer in layersV0[g]]
- for g in layersV0
- },
- )
+ populateCOLRv0(
+ self.table,
+ {
+ g: [(layer.name, layer.colorID) for layer in layersV0[g]]
+ for g in layersV0
+ },
+ )
del self.ColorLayers
# TODO: also prune ununsed varIndices in COLR.VarStore
@@ -2070,11 +2195,11 @@ def prune_post_subset(self, font, options):
colors_by_index = defaultdict(list)
def collect_colors_by_index(paint):
- if hasattr(paint, "Color"): # either solid colors...
- colors_by_index[paint.Color.PaletteIndex].append(paint.Color)
+ if hasattr(paint, "PaletteIndex"): # either solid colors...
+ colors_by_index[paint.PaletteIndex].append(paint)
elif hasattr(paint, "ColorLine"): # ... or gradient color stops
for stop in paint.ColorLine.ColorStop:
- colors_by_index[stop.Color.PaletteIndex].append(stop.Color)
+ colors_by_index[stop.PaletteIndex].append(stop)
if colr.version == 0:
for layers in colr.ColorLayers.values():
@@ -2084,10 +2209,12 @@ def prune_post_subset(self, font, options):
if colr.table.LayerRecordArray:
for layer in colr.table.LayerRecordArray.LayerRecord:
colors_by_index[layer.PaletteIndex].append(layer)
- for record in colr.table.BaseGlyphV1List.BaseGlyphV1Record:
+ for record in colr.table.BaseGlyphList.BaseGlyphPaintRecord:
record.Paint.traverse(colr.table, collect_colors_by_index)
- retained_palette_indices = set(colors_by_index.keys())
+ # don't remap palette entry index 0xFFFF, this is always the foreground color
+ # https://github.com/fonttools/fonttools/issues/2257
+ retained_palette_indices = set(colors_by_index.keys()) - {0xFFFF}
for palette in self.palettes:
palette[:] = [c for i, c in enumerate(palette) if i in retained_palette_indices]
assert len(palette) == len(retained_palette_indices)
@@ -2201,7 +2328,7 @@ def subset_glyphs(self, s):
def remapComponentsFast(self, glyphidmap):
if not self.data or struct.unpack(">h", self.data[:2])[0] >= 0:
return # Not composite
- data = array.array("B", self.data)
+ data = self.data = bytearray(self.data)
i = 10
more = 1
while more:
@@ -2221,8 +2348,6 @@ def remapComponentsFast(self, glyphidmap):
elif flags & 0x0080: i += 8 # WE_HAVE_A_TWO_BY_TWO
more = flags & 0x0020 # MORE_COMPONENTS
- self.data = data.tobytes()
-
@_add_method(ttLib.getTableClass('glyf'))
def closure_glyphs(self, s):
glyphSet = self.glyphs
@@ -2245,7 +2370,7 @@ def prune_pre_subset(self, font, options):
g = self[self.glyphOrder[0]]
# Yay, easy!
g.__dict__.clear()
- g.data = ""
+ g.data = b''
return True
@_add_method(ttLib.getTableClass('glyf'))
@@ -2260,7 +2385,7 @@ def subset_glyphs(self, s):
Glyph = ttLib.getTableModule('glyf').Glyph
for g in s.glyphs_emptied:
self.glyphs[g] = Glyph()
- self.glyphs[g].data = ''
+ self.glyphs[g].data = b''
self.glyphOrder = [g for g in self.glyphOrder if g in s.glyphs or g in s.glyphs_emptied]
# Don't drop empty 'glyf' tables, otherwise 'loca' doesn't get subset.
return True
@@ -2454,7 +2579,7 @@ class Options(object):
# spaces in tag names (e.g. "SVG ", "cvt ") are stripped by the argument parser
_drop_tables_default = ['BASE', 'JSTF', 'DSIG', 'EBDT', 'EBLC',
- 'EBSC', 'SVG', 'PCLT', 'LTSH']
+ 'EBSC', 'PCLT', 'LTSH']
_drop_tables_default += ['Feat', 'Glat', 'Gloc', 'Silf', 'Sill'] # Graphite
_no_subset_tables_default = ['avar', 'fvar',
'gasp', 'head', 'hhea', 'maxp',
@@ -2521,6 +2646,7 @@ class Options(object):
self.timing = False
self.xml = False
self.font_number = -1
+ self.pretty_svg = False
self.set(**kwargs)
@@ -2659,7 +2785,7 @@ class Subsetter(object):
def _closure_glyphs(self, font):
realGlyphs = set(font.getGlyphOrder())
- glyph_order = font.getGlyphOrder()
+ self.orig_glyph_order = glyph_order = font.getGlyphOrder()
self.glyphs_requested = set()
self.glyphs_requested.update(self.glyph_names_requested)
@@ -2739,6 +2865,7 @@ class Subsetter(object):
log.info("Closed glyph list over '%s': %d glyphs after",
table, len(self.glyphs))
log.glyphs(self.glyphs, font=font)
+ setattr(self, f"glyphs_{table.lower()}ed", frozenset(self.glyphs))
if 'glyf' in font:
with timer("close glyph list over 'glyf'"):
@@ -2778,6 +2905,24 @@ class Subsetter(object):
self.reverseEmptiedGlyphMap = {g:order[g] for g in self.glyphs_emptied}
+ if not self.options.retain_gids:
+ new_glyph_order = [
+ g for g in glyph_order if g in self.glyphs_retained
+ ]
+ else:
+ new_glyph_order = [
+ g for g in glyph_order
+ if font.getGlyphID(g) <= self.last_retained_order
+ ]
+ # We'll call font.setGlyphOrder() at the end of _subset_glyphs when all
+ # tables have been subsetted. Below, we use the new glyph order to get
+ # a map from old to new glyph indices, which can be useful when
+ # subsetting individual tables (e.g. SVG) that refer to GIDs.
+ self.new_glyph_order = new_glyph_order
+ self.glyph_index_map = {
+ order[new_glyph_order[i]]: i
+ for i in range(len(new_glyph_order))
+ }
log.info("Retaining %d glyphs", len(self.glyphs_retained))
@@ -2807,14 +2952,7 @@ class Subsetter(object):
del font[tag]
with timer("subset GlyphOrder"):
- glyphOrder = font.getGlyphOrder()
- if not self.options.retain_gids:
- glyphOrder = [g for g in glyphOrder if g in self.glyphs_retained]
- else:
- glyphOrder = [g for g in glyphOrder if font.getGlyphID(g) <= self.last_retained_order]
-
- font.setGlyphOrder(glyphOrder)
- font._buildReverseGlyphOrderDict()
+ font.setGlyphOrder(self.new_glyph_order)
def _prune_post_subset(self, font):
@@ -2863,13 +3001,11 @@ class Subsetter(object):
@timer("load font")
def load_font(fontFile,
options,
- allowVID=False,
checkChecksums=0,
dontLoadGlyphNames=False,
lazy=True):
font = ttLib.TTFont(fontFile,
- allowVID=allowVID,
checkChecksums=checkChecksums,
recalcBBoxes=options.recalc_bounds,
recalcTimestamp=options.recalc_timestamp,
diff --git a/Lib/fontTools/subset/cff.py b/Lib/fontTools/subset/cff.py
index b59c6b96..0dcb7975 100644
--- a/Lib/fontTools/subset/cff.py
+++ b/Lib/fontTools/subset/cff.py
@@ -2,27 +2,10 @@ from fontTools.misc import psCharStrings
from fontTools import ttLib
from fontTools.pens.basePen import NullPen
from fontTools.misc.roundTools import otRound
+from fontTools.misc.loggingTools import deprecateFunction
from fontTools.varLib.varStore import VarStoreInstancer
+from fontTools.subset.util import _add_method, _uniq_sort
-def _add_method(*clazzes):
- """Returns a decorator function that adds a new method to one or
- more classes."""
- def wrapper(method):
- done = []
- for clazz in clazzes:
- if clazz in done: continue # Support multiple names of a clazz
- done.append(clazz)
- assert clazz.__name__ != 'DefaultTable', \
- 'Oops, table class not found.'
- assert not hasattr(clazz, method.__name__), \
- "Oops, class '%s' has method '%s'." % (clazz.__name__,
- method.__name__)
- setattr(clazz, method.__name__, method)
- return None
- return wrapper
-
-def _uniq_sort(l):
- return sorted(set(l))
class _ClosureGlyphsT2Decompiler(psCharStrings.SimpleT2Decompiler):
@@ -70,8 +53,7 @@ def _empty_charstring(font, glyphName, isCFF2, ignoreWidth=False):
c, fdSelectIndex = font.CharStrings.getItemAndSelector(glyphName)
if isCFF2 or ignoreWidth:
# CFF2 charstrings have no widths nor 'endchar' operators
- c.decompile()
- c.program = [] if isCFF2 else ['endchar']
+ c.setProgram([] if isCFF2 else ['endchar'])
else:
if hasattr(font, 'FDArray') and font.FDArray is not None:
private = font.FDArray[fdSelectIndex].Private
@@ -137,9 +119,12 @@ def subset_glyphs(self, s):
#sel.format = None
sel.format = 3
sel.gidArray = [sel.gidArray[i] for i in indices]
- cs.charStrings = {g:indices.index(v)
- for g,v in cs.charStrings.items()
- if g in glyphs}
+ newCharStrings = {}
+ for indicesIdx, charsetIdx in enumerate(indices):
+ g = font.charset[charsetIdx]
+ if g in cs.charStrings:
+ newCharStrings[g] = indicesIdx
+ cs.charStrings = newCharStrings
else:
cs.charStrings = {g:v
for g,v in cs.charStrings.items()
@@ -363,86 +348,6 @@ class _DehintingT2Decompiler(psCharStrings.T2WidthExtractor):
hints.status = max(hints.status, subr_hints.status)
-class StopHintCountEvent(Exception):
- pass
-
-
-
-
-class _DesubroutinizingT2Decompiler(psCharStrings.SimpleT2Decompiler):
- stop_hintcount_ops = ("op_hintmask", "op_cntrmask", "op_rmoveto", "op_hmoveto",
- "op_vmoveto")
-
- def __init__(self, localSubrs, globalSubrs, private=None):
- psCharStrings.SimpleT2Decompiler.__init__(self, localSubrs, globalSubrs,
- private)
-
- def execute(self, charString):
- self.need_hintcount = True # until proven otherwise
- for op_name in self.stop_hintcount_ops:
- setattr(self, op_name, self.stop_hint_count)
-
- if hasattr(charString, '_desubroutinized'):
- # If a charstring has already been desubroutinized, we will still
- # need to execute it if we need to count hints in order to
- # compute the byte length for mask arguments, and haven't finished
- # counting hints pairs.
- if self.need_hintcount and self.callingStack:
- try:
- psCharStrings.SimpleT2Decompiler.execute(self, charString)
- except StopHintCountEvent:
- del self.callingStack[-1]
- return
-
- charString._patches = []
- psCharStrings.SimpleT2Decompiler.execute(self, charString)
- desubroutinized = charString.program[:]
- for idx, expansion in reversed(charString._patches):
- assert idx >= 2
- assert desubroutinized[idx - 1] in ['callsubr', 'callgsubr'], desubroutinized[idx - 1]
- assert type(desubroutinized[idx - 2]) == int
- if expansion[-1] == 'return':
- expansion = expansion[:-1]
- desubroutinized[idx-2:idx] = expansion
- if not self.private.in_cff2:
- if 'endchar' in desubroutinized:
- # Cut off after first endchar
- desubroutinized = desubroutinized[:desubroutinized.index('endchar') + 1]
- else:
- if not len(desubroutinized) or desubroutinized[-1] != 'return':
- desubroutinized.append('return')
-
- charString._desubroutinized = desubroutinized
- del charString._patches
-
- def op_callsubr(self, index):
- subr = self.localSubrs[self.operandStack[-1]+self.localBias]
- psCharStrings.SimpleT2Decompiler.op_callsubr(self, index)
- self.processSubr(index, subr)
-
- def op_callgsubr(self, index):
- subr = self.globalSubrs[self.operandStack[-1]+self.globalBias]
- psCharStrings.SimpleT2Decompiler.op_callgsubr(self, index)
- self.processSubr(index, subr)
-
- def stop_hint_count(self, *args):
- self.need_hintcount = False
- for op_name in self.stop_hintcount_ops:
- setattr(self, op_name, None)
- cs = self.callingStack[-1]
- if hasattr(cs, '_desubroutinized'):
- raise StopHintCountEvent()
-
- def op_hintmask(self, index):
- psCharStrings.SimpleT2Decompiler.op_hintmask(self, index)
- if self.need_hintcount:
- self.stop_hint_count()
-
- def processSubr(self, index, subr):
- cs = self.callingStack[-1]
- if not hasattr(cs, '_desubroutinized'):
- cs._patches.append((index, subr._desubroutinized))
-
@_add_method(ttLib.getTableClass('CFF '))
def prune_post_subset(self, ttfFont, options):
@@ -462,7 +367,7 @@ def prune_post_subset(self, ttfFont, options):
# Desubroutinize if asked for
if options.desubroutinize:
- self.desubroutinize()
+ cff.desubroutinize()
# Drop hints if not needed
if not options.hinting:
@@ -478,36 +383,11 @@ def _delete_empty_subrs(private_dict):
del private_dict.rawDict['Subrs']
del private_dict.Subrs
+
+@deprecateFunction("use 'CFFFontSet.desubroutinize()' instead", category=DeprecationWarning)
@_add_method(ttLib.getTableClass('CFF '))
def desubroutinize(self):
- cff = self.cff
- for fontname in cff.keys():
- font = cff[fontname]
- cs = font.CharStrings
- for g in font.charset:
- c, _ = cs.getItemAndSelector(g)
- c.decompile()
- subrs = getattr(c.private, "Subrs", [])
- decompiler = _DesubroutinizingT2Decompiler(subrs, c.globalSubrs, c.private)
- decompiler.execute(c)
- c.program = c._desubroutinized
- del c._desubroutinized
- # Delete all the local subrs
- if hasattr(font, 'FDArray'):
- for fd in font.FDArray:
- pd = fd.Private
- if hasattr(pd, 'Subrs'):
- del pd.Subrs
- if 'Subrs' in pd.rawDict:
- del pd.rawDict['Subrs']
- else:
- pd = font.Private
- if hasattr(pd, 'Subrs'):
- del pd.Subrs
- if 'Subrs' in pd.rawDict:
- del pd.rawDict['Subrs']
- # as well as the global subrs
- cff.GlobalSubrs.clear()
+ self.cff.desubroutinize()
@_add_method(ttLib.getTableClass('CFF '))
diff --git a/Lib/fontTools/subset/svg.py b/Lib/fontTools/subset/svg.py
new file mode 100644
index 00000000..e25fb3e6
--- /dev/null
+++ b/Lib/fontTools/subset/svg.py
@@ -0,0 +1,248 @@
+from __future__ import annotations
+
+import re
+from functools import lru_cache
+from itertools import chain, count
+from typing import Dict, Iterable, Iterator, List, Optional, Set, Tuple
+
+try:
+ from lxml import etree
+except ModuleNotFoundError:
+ # lxml is required for subsetting SVG, but we prefer to delay the import error
+ # until subset_glyphs() is called (i.e. if font to subset has an 'SVG ' table)
+ etree = None
+
+from fontTools import ttLib
+from fontTools.subset.util import _add_method
+
+
+__all__ = ["subset_glyphs"]
+
+
+GID_RE = re.compile(r"^glyph(\d+)$")
+
+NAMESPACES = {
+ "svg": "http://www.w3.org/2000/svg",
+ "xlink": "http://www.w3.org/1999/xlink",
+}
+XLINK_HREF = f'{{{NAMESPACES["xlink"]}}}href'
+
+
+# TODO(antrotype): Replace with functools.cache once we are 3.9+
+@lru_cache(maxsize=None)
+def xpath(path):
+ # compile XPath upfront, caching result to reuse on multiple elements
+ return etree.XPath(path, namespaces=NAMESPACES)
+
+
+def group_elements_by_id(tree: etree.Element) -> Dict[str, etree.Element]:
+ # select all svg elements with 'id' attribute no matter where they are
+ # including the root element itself:
+ # https://github.com/fonttools/fonttools/issues/2548
+ return {el.attrib["id"]: el for el in xpath("//svg:*[@id]")(tree)}
+
+
+def parse_css_declarations(style_attr: str) -> Dict[str, str]:
+ # https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/style
+ # https://developer.mozilla.org/en-US/docs/Web/CSS/Syntax#css_declarations
+ result = {}
+ for declaration in style_attr.split(";"):
+ if declaration.count(":") == 1:
+ property_name, value = declaration.split(":")
+ property_name = property_name.strip()
+ result[property_name] = value.strip()
+ elif declaration.strip():
+ raise ValueError(f"Invalid CSS declaration syntax: {declaration}")
+ return result
+
+
+def iter_referenced_ids(tree: etree.Element) -> Iterator[str]:
+ # Yield all the ids that can be reached via references from this element tree.
+ # We currently support xlink:href (as used by <use> and gradient templates),
+ # and local url(#...) links found in fill or clip-path attributes
+ # TODO(anthrotype): Check we aren't missing other supported kinds of reference
+ find_svg_elements_with_references = xpath(
+ ".//svg:*[ "
+ "starts-with(@xlink:href, '#') "
+ "or starts-with(@fill, 'url(#') "
+ "or starts-with(@clip-path, 'url(#') "
+ "or contains(@style, ':url(#') "
+ "]",
+ )
+ for el in chain([tree], find_svg_elements_with_references(tree)):
+ ref_id = href_local_target(el)
+ if ref_id is not None:
+ yield ref_id
+
+ attrs = el.attrib
+ if "style" in attrs:
+ attrs = {**attrs, **parse_css_declarations(el.attrib["style"])}
+ for attr in ("fill", "clip-path"):
+ if attr in attrs:
+ value = attrs[attr]
+ if value.startswith("url(#") and value.endswith(")"):
+ ref_id = value[5:-1]
+ assert ref_id
+ yield ref_id
+
+
+def closure_element_ids(
+ elements: Dict[str, etree.Element], element_ids: Set[str]
+) -> None:
+ # Expand the initial subset of element ids to include ids that can be reached
+ # via references from the initial set.
+ unvisited = element_ids
+ while unvisited:
+ referenced: Set[str] = set()
+ for el_id in unvisited:
+ if el_id not in elements:
+ # ignore dangling reference; not our job to validate svg
+ continue
+ referenced.update(iter_referenced_ids(elements[el_id]))
+ referenced -= element_ids
+ element_ids.update(referenced)
+ unvisited = referenced
+
+
+def subset_elements(el: etree.Element, retained_ids: Set[str]) -> bool:
+ # Keep elements if their id is in the subset, or any of their children's id is.
+ # Drop elements whose id is not in the subset, and either have no children,
+ # or all their children are being dropped.
+ if el.attrib.get("id") in retained_ids:
+ # if id is in the set, don't recurse; keep whole subtree
+ return True
+ # recursively subset all the children; we use a list comprehension instead
+ # of a parentheses-less generator expression because we don't want any() to
+ # short-circuit, as our function has a side effect of dropping empty elements.
+ if any([subset_elements(e, retained_ids) for e in el]):
+ return True
+ assert len(el) == 0
+ parent = el.getparent()
+ if parent is not None:
+ parent.remove(el)
+ return False
+
+
+def remap_glyph_ids(
+ svg: etree.Element, glyph_index_map: Dict[int, int]
+) -> Dict[str, str]:
+ # Given {old_gid: new_gid} map, rename all elements containing id="glyph{gid}"
+ # special attributes
+ elements = group_elements_by_id(svg)
+ id_map = {}
+ for el_id, el in elements.items():
+ m = GID_RE.match(el_id)
+ if not m:
+ continue
+ old_index = int(m.group(1))
+ new_index = glyph_index_map.get(old_index)
+ if new_index is not None:
+ if old_index == new_index:
+ continue
+ new_id = f"glyph{new_index}"
+ else:
+ # If the old index is missing, the element correspond to a glyph that was
+ # excluded from the font's subset.
+ # We rename it to avoid clashes with the new GIDs or other element ids.
+ new_id = f".{el_id}"
+ n = count(1)
+ while new_id in elements:
+ new_id = f"{new_id}.{next(n)}"
+
+ id_map[el_id] = new_id
+ el.attrib["id"] = new_id
+
+ return id_map
+
+
+def href_local_target(el: etree.Element) -> Optional[str]:
+ if XLINK_HREF in el.attrib:
+ href = el.attrib[XLINK_HREF]
+ if href.startswith("#") and len(href) > 1:
+ return href[1:] # drop the leading #
+ return None
+
+
+def update_glyph_href_links(svg: etree.Element, id_map: Dict[str, str]) -> None:
+ # update all xlink:href="#glyph..." attributes to point to the new glyph ids
+ for el in xpath(".//svg:*[starts-with(@xlink:href, '#glyph')]")(svg):
+ old_id = href_local_target(el)
+ assert old_id is not None
+ if old_id in id_map:
+ new_id = id_map[old_id]
+ el.attrib[XLINK_HREF] = f"#{new_id}"
+
+
+def ranges(ints: Iterable[int]) -> Iterator[Tuple[int, int]]:
+ # Yield sorted, non-overlapping (min, max) ranges of consecutive integers
+ sorted_ints = iter(sorted(set(ints)))
+ try:
+ start = end = next(sorted_ints)
+ except StopIteration:
+ return
+ for v in sorted_ints:
+ if v - 1 == end:
+ end = v
+ else:
+ yield (start, end)
+ start = end = v
+ yield (start, end)
+
+
+@_add_method(ttLib.getTableClass("SVG "))
+def subset_glyphs(self, s) -> bool:
+ if etree is None:
+ raise ModuleNotFoundError("No module named 'lxml', required to subset SVG")
+
+ # glyph names (before subsetting)
+ glyph_order: List[str] = s.orig_glyph_order
+ # map from glyph names to original glyph indices
+ rev_orig_glyph_map: Dict[str, int] = s.reverseOrigGlyphMap
+ # map from original to new glyph indices (after subsetting)
+ glyph_index_map: Dict[int, int] = s.glyph_index_map
+
+ new_docs: List[Tuple[bytes, int, int]] = []
+ for doc, start, end in self.docList:
+
+ glyphs = {glyph_order[i] for i in range(start, end + 1)}.intersection(s.glyphs)
+ if not glyphs:
+ # no intersection: we can drop the whole record
+ continue
+
+ svg = etree.fromstring(
+ # encode because fromstring dislikes xml encoding decl if input is str.
+ # SVG xml encoding must be utf-8 as per OT spec.
+ doc.encode("utf-8"),
+ parser=etree.XMLParser(
+ # Disable libxml2 security restrictions to support very deep trees.
+ # Without this we would get an error like this:
+ # `lxml.etree.XMLSyntaxError: internal error: Huge input lookup`
+ # when parsing big fonts e.g. noto-emoji-picosvg.ttf.
+ huge_tree=True,
+ # ignore blank text as it's not meaningful in OT-SVG; it also prevents
+ # dangling tail text after removing an element when pretty_print=True
+ remove_blank_text=True,
+ ),
+ )
+
+ elements = group_elements_by_id(svg)
+ gids = {rev_orig_glyph_map[g] for g in glyphs}
+ element_ids = {f"glyph{i}" for i in gids}
+ closure_element_ids(elements, element_ids)
+
+ if not subset_elements(svg, element_ids):
+ continue
+
+ if not s.options.retain_gids:
+ id_map = remap_glyph_ids(svg, glyph_index_map)
+ update_glyph_href_links(svg, id_map)
+
+ new_doc = etree.tostring(svg, pretty_print=s.options.pretty_svg).decode("utf-8")
+
+ new_gids = (glyph_index_map[i] for i in gids)
+ for start, end in ranges(new_gids):
+ new_docs.append((new_doc, start, end))
+
+ self.docList = new_docs
+
+ return bool(self.docList)
diff --git a/Lib/fontTools/subset/util.py b/Lib/fontTools/subset/util.py
new file mode 100644
index 00000000..d20e925d
--- /dev/null
+++ b/Lib/fontTools/subset/util.py
@@ -0,0 +1,25 @@
+"""Private utility methods used by the subset modules"""
+
+
+def _add_method(*clazzes):
+ """Returns a decorator function that adds a new method to one or
+ more classes."""
+
+ def wrapper(method):
+ done = []
+ for clazz in clazzes:
+ if clazz in done:
+ continue # Support multiple names of a clazz
+ done.append(clazz)
+ assert clazz.__name__ != "DefaultTable", "Oops, table class not found."
+ assert not hasattr(
+ clazz, method.__name__
+ ), "Oops, class '%s' has method '%s'." % (clazz.__name__, method.__name__)
+ setattr(clazz, method.__name__, method)
+ return None
+
+ return wrapper
+
+
+def _uniq_sort(l):
+ return sorted(set(l))
diff --git a/Lib/fontTools/svgLib/path/__init__.py b/Lib/fontTools/svgLib/path/__init__.py
index 9440429b..fbddeeab 100644
--- a/Lib/fontTools/svgLib/path/__init__.py
+++ b/Lib/fontTools/svgLib/path/__init__.py
@@ -1,7 +1,6 @@
-from fontTools.misc.py23 import tostr
-
from fontTools.pens.transformPen import TransformPen
from fontTools.misc import etree
+from fontTools.misc.textTools import tostr
from .parser import parse_path
from .shapes import PathBuilder
diff --git a/Lib/fontTools/t1Lib/__init__.py b/Lib/fontTools/t1Lib/__init__.py
index e1d94d35..a74f9a47 100644
--- a/Lib/fontTools/t1Lib/__init__.py
+++ b/Lib/fontTools/t1Lib/__init__.py
@@ -15,14 +15,17 @@ write(path, data, kind='OTHER', dohex=False)
part should be written as hexadecimal or binary, but only if kind
is 'OTHER'.
"""
-from fontTools.misc.py23 import bytechr, byteord, bytesjoin
+import fontTools
from fontTools.misc import eexec
from fontTools.misc.macCreatorType import getMacCreatorAndType
+from fontTools.misc.textTools import bytechr, byteord, bytesjoin, tobytes
+from fontTools.misc.psOperators import _type1_pre_eexec_order, _type1_fontinfo_order, _type1_post_eexec_order
+from fontTools.encodings.StandardEncoding import StandardEncoding
import os
import re
__author__ = "jvr"
-__version__ = "1.0b2"
+__version__ = "1.0b3"
DEBUG = 0
@@ -65,8 +68,8 @@ class T1Font(object):
write(path, self.getData(), type, dohex)
def getData(self):
- # XXX Todo: if the data has been converted to Python object,
- # recreate the PS stream
+ if not hasattr(self, "data"):
+ self.data = self.createData()
return self.data
def getGlyphSet(self):
@@ -102,6 +105,148 @@ class T1Font(object):
subrs[i] = psCharStrings.T1CharString(charString[lenIV:], subrs=subrs)
del self.data
+ def createData(self):
+ sf = self.font
+
+ eexec_began = False
+ eexec_dict = {}
+ lines = []
+ lines.extend([self._tobytes(f"%!FontType1-1.1: {sf['FontName']}"),
+ self._tobytes(f"%t1Font: ({fontTools.version})"),
+ self._tobytes(f"%%BeginResource: font {sf['FontName']}")])
+ # follow t1write.c:writeRegNameKeyedFont
+ size = 3 # Headroom for new key addition
+ size += 1 # FontMatrix is always counted
+ size += 1 + 1 # Private, CharStings
+ for key in font_dictionary_keys:
+ size += int(key in sf)
+ lines.append(self._tobytes(f"{size} dict dup begin"))
+
+ for key, value in sf.items():
+ if eexec_began:
+ eexec_dict[key] = value
+ continue
+
+ if key == "FontInfo":
+ fi = sf["FontInfo"]
+ # follow t1write.c:writeFontInfoDict
+ size = 3 # Headroom for new key addition
+ for subkey in FontInfo_dictionary_keys:
+ size += int(subkey in fi)
+ lines.append(self._tobytes(f"/FontInfo {size} dict dup begin"))
+
+ for subkey, subvalue in fi.items():
+ lines.extend(self._make_lines(subkey, subvalue))
+ lines.append(b"end def")
+ elif key in _type1_post_eexec_order: # usually 'Private'
+ eexec_dict[key] = value
+ eexec_began = True
+ else:
+ lines.extend(self._make_lines(key, value))
+ lines.append(b"end")
+ eexec_portion = self.encode_eexec(eexec_dict)
+ lines.append(bytesjoin([b"currentfile eexec ", eexec_portion]))
+
+ for _ in range(8):
+ lines.append(self._tobytes("0"*64))
+ lines.extend([b"cleartomark",
+ b"%%EndResource",
+ b"%%EOF"])
+
+ data = bytesjoin(lines, "\n")
+ return data
+
+ def encode_eexec(self, eexec_dict):
+ lines = []
+
+ # '-|', '|-', '|'
+ RD_key, ND_key, NP_key = None, None, None
+
+ for key, value in eexec_dict.items():
+ if key == "Private":
+ pr = eexec_dict["Private"]
+ # follow t1write.c:writePrivateDict
+ size = 3 # for RD, ND, NP
+ for subkey in Private_dictionary_keys:
+ size += int(subkey in pr)
+ lines.append(b"dup /Private")
+ lines.append(self._tobytes(f"{size} dict dup begin"))
+ for subkey, subvalue in pr.items():
+ if not RD_key and subvalue == RD_value:
+ RD_key = subkey
+ elif not ND_key and subvalue == ND_value:
+ ND_key = subkey
+ elif not NP_key and subvalue == PD_value:
+ NP_key = subkey
+
+ if subkey == 'OtherSubrs':
+ # XXX: assert that no flex hint is used
+ lines.append(self._tobytes(hintothers))
+ elif subkey == "Subrs":
+ # XXX: standard Subrs only
+ lines.append(b"/Subrs 5 array")
+ for i, subr_bin in enumerate(std_subrs):
+ encrypted_subr, R = eexec.encrypt(bytesjoin([char_IV, subr_bin]), 4330)
+ lines.append(bytesjoin([self._tobytes(f"dup {i} {len(encrypted_subr)} {RD_key} "), encrypted_subr, self._tobytes(f" {NP_key}")]))
+ lines.append(b'def')
+
+ lines.append(b"put")
+ else:
+ lines.extend(self._make_lines(subkey, subvalue))
+ elif key == "CharStrings":
+ lines.append(b"dup /CharStrings")
+ lines.append(self._tobytes(f"{len(eexec_dict['CharStrings'])} dict dup begin"))
+ for glyph_name, char_bin in eexec_dict["CharStrings"].items():
+ char_bin.compile()
+ encrypted_char, R = eexec.encrypt(bytesjoin([char_IV, char_bin.bytecode]), 4330)
+ lines.append(bytesjoin([self._tobytes(f"/{glyph_name} {len(encrypted_char)} {RD_key} "), encrypted_char, self._tobytes(f" {ND_key}")]))
+ lines.append(b"end put")
+ else:
+ lines.extend(self._make_lines(key, value))
+
+ lines.extend([b"end",
+ b"dup /FontName get exch definefont pop",
+ b"mark",
+ b"currentfile closefile\n"])
+
+ eexec_portion = bytesjoin(lines, "\n")
+ encrypted_eexec, R = eexec.encrypt(bytesjoin([eexec_IV, eexec_portion]), 55665)
+
+ return encrypted_eexec
+
+ def _make_lines(self, key, value):
+ if key == "FontName":
+ return [self._tobytes(f"/{key} /{value} def")]
+ if key in ["isFixedPitch", "ForceBold", "RndStemUp"]:
+ return [self._tobytes(f"/{key} {'true' if value else 'false'} def")]
+ elif key == "Encoding":
+ if value == StandardEncoding:
+ return [self._tobytes(f"/{key} StandardEncoding def")]
+ else:
+ # follow fontTools.misc.psOperators._type1_Encoding_repr
+ lines = []
+ lines.append(b"/Encoding 256 array")
+ lines.append(b"0 1 255 {1 index exch /.notdef put} for")
+ for i in range(256):
+ name = value[i]
+ if name != ".notdef":
+ lines.append(self._tobytes(f"dup {i} /{name} put"))
+ lines.append(b"def")
+ return lines
+ if isinstance(value, str):
+ return [self._tobytes(f"/{key} ({value}) def")]
+ elif isinstance(value, bool):
+ return [self._tobytes(f"/{key} {'true' if value else 'false'} def")]
+ elif isinstance(value, list):
+ return [self._tobytes(f"/{key} [{' '.join(str(v) for v in value)}] def")]
+ elif isinstance(value, tuple):
+ return [self._tobytes(f"/{key} {{{' '.join(str(v) for v in value)}}} def")]
+ else:
+ return [self._tobytes(f"/{key} {value} def")]
+
+ def _tobytes(self, s, errors="strict"):
+ return tobytes(s, self.encoding, errors)
+
# low level T1 data read and write functions
@@ -367,3 +512,69 @@ def stringToLong(s):
for i in range(4):
l += byteord(s[i]) << (i * 8)
return l
+
+
+# PS stream helpers
+
+font_dictionary_keys = list(_type1_pre_eexec_order)
+# t1write.c:writeRegNameKeyedFont
+# always counts following keys
+font_dictionary_keys.remove("FontMatrix")
+
+FontInfo_dictionary_keys = list(_type1_fontinfo_order)
+# extend because AFDKO tx may use following keys
+FontInfo_dictionary_keys.extend([
+ "FSType",
+ "Copyright",
+])
+
+Private_dictionary_keys = [
+ # We don't know what names will be actually used.
+ # "RD",
+ # "ND",
+ # "NP",
+ "Subrs",
+ "OtherSubrs",
+ "UniqueID",
+ "BlueValues",
+ "OtherBlues",
+ "FamilyBlues",
+ "FamilyOtherBlues",
+ "BlueScale",
+ "BlueShift",
+ "BlueFuzz",
+ "StdHW",
+ "StdVW",
+ "StemSnapH",
+ "StemSnapV",
+ "ForceBold",
+ "LanguageGroup",
+ "password",
+ "lenIV",
+ "MinFeature",
+ "RndStemUp",
+]
+
+# t1write_hintothers.h
+hintothers = """/OtherSubrs[{}{}{}{systemdict/internaldict known not{pop 3}{1183615869
+systemdict/internaldict get exec dup/startlock known{/startlock get exec}{dup
+/strtlck known{/strtlck get exec}{pop 3}ifelse}ifelse}ifelse}executeonly]def"""
+# t1write.c:saveStdSubrs
+std_subrs = [
+ # 3 0 callother pop pop setcurrentpoint return
+ b"\x8e\x8b\x0c\x10\x0c\x11\x0c\x11\x0c\x21\x0b",
+ # 0 1 callother return
+ b"\x8b\x8c\x0c\x10\x0b",
+ # 0 2 callother return
+ b"\x8b\x8d\x0c\x10\x0b",
+ # return
+ b"\x0b",
+ # 3 1 3 callother pop callsubr return
+ b"\x8e\x8c\x8e\x0c\x10\x0c\x11\x0a\x0b"
+]
+# follow t1write.c:writeRegNameKeyedFont
+eexec_IV = b"cccc"
+char_IV = b"\x0c\x0c\x0c\x0c"
+RD_value = ("string", "currentfile", "exch", "readstring", "pop")
+ND_value = ("def",)
+PD_value = ("put",)
diff --git a/Lib/fontTools/tfmLib.py b/Lib/fontTools/tfmLib.py
new file mode 100644
index 00000000..673373ff
--- /dev/null
+++ b/Lib/fontTools/tfmLib.py
@@ -0,0 +1,460 @@
+"""Module for reading TFM (TeX Font Metrics) files.
+
+The TFM format is described in the TFtoPL WEB source code, whose typeset form
+can be found on `CTAN <http://mirrors.ctan.org/info/knuth-pdf/texware/tftopl.pdf>`_.
+
+ >>> from fontTools.tfmLib import TFM
+ >>> tfm = TFM("Tests/tfmLib/data/cmr10.tfm")
+ >>>
+ >>> # Accessing an attribute gets you metadata.
+ >>> tfm.checksum
+ 1274110073
+ >>> tfm.designsize
+ 10.0
+ >>> tfm.codingscheme
+ 'TeX text'
+ >>> tfm.family
+ 'CMR'
+ >>> tfm.seven_bit_safe_flag
+ False
+ >>> tfm.face
+ 234
+ >>> tfm.extraheader
+ {}
+ >>> tfm.fontdimens
+ {'SLANT': 0.0, 'SPACE': 0.33333396911621094, 'STRETCH': 0.16666698455810547, 'SHRINK': 0.11111164093017578, 'XHEIGHT': 0.4305553436279297, 'QUAD': 1.0000028610229492, 'EXTRASPACE': 0.11111164093017578}
+ >>> # Accessing a character gets you its metrics.
+ >>> # “width” is always available, other metrics are available only when
+ >>> # applicable. All values are relative to “designsize”.
+ >>> tfm.chars[ord("g")]
+ {'width': 0.5000019073486328, 'height': 0.4305553436279297, 'depth': 0.1944446563720703, 'italic': 0.013888359069824219}
+ >>> # Kerning and ligature can be accessed as well.
+ >>> tfm.kerning[ord("c")]
+ {104: -0.02777862548828125, 107: -0.02777862548828125}
+ >>> tfm.ligatures[ord("f")]
+ {105: ('LIG', 12), 102: ('LIG', 11), 108: ('LIG', 13)}
+"""
+
+from types import SimpleNamespace
+
+from fontTools.misc.sstruct import calcsize, unpack, unpack2
+
+SIZES_FORMAT = """
+ >
+ lf: h # length of the entire file, in words
+ lh: h # length of the header data, in words
+ bc: h # smallest character code in the font
+ ec: h # largest character code in the font
+ nw: h # number of words in the width table
+ nh: h # number of words in the height table
+ nd: h # number of words in the depth table
+ ni: h # number of words in the italic correction table
+ nl: h # number of words in the ligature/kern table
+ nk: h # number of words in the kern table
+ ne: h # number of words in the extensible character table
+ np: h # number of font parameter words
+"""
+
+SIZES_SIZE = calcsize(SIZES_FORMAT)
+
+FIXED_FORMAT = "12.20F"
+
+HEADER_FORMAT1 = f"""
+ >
+ checksum: L
+ designsize: {FIXED_FORMAT}
+"""
+
+HEADER_FORMAT2 = f"""
+ {HEADER_FORMAT1}
+ codingscheme: 40p
+"""
+
+HEADER_FORMAT3 = f"""
+ {HEADER_FORMAT2}
+ family: 20p
+"""
+
+HEADER_FORMAT4 = f"""
+ {HEADER_FORMAT3}
+ seven_bit_safe_flag: ?
+ ignored: x
+ ignored: x
+ face: B
+"""
+
+HEADER_SIZE1 = calcsize(HEADER_FORMAT1)
+HEADER_SIZE2 = calcsize(HEADER_FORMAT2)
+HEADER_SIZE3 = calcsize(HEADER_FORMAT3)
+HEADER_SIZE4 = calcsize(HEADER_FORMAT4)
+
+LIG_KERN_COMMAND = """
+ >
+ skip_byte: B
+ next_char: B
+ op_byte: B
+ remainder: B
+"""
+
+BASE_PARAMS = [
+ "SLANT",
+ "SPACE",
+ "STRETCH",
+ "SHRINK",
+ "XHEIGHT",
+ "QUAD",
+ "EXTRASPACE",
+]
+
+MATHSY_PARAMS = [
+ "NUM1",
+ "NUM2",
+ "NUM3",
+ "DENOM1",
+ "DENOM2",
+ "SUP1",
+ "SUP2",
+ "SUP3",
+ "SUB1",
+ "SUB2",
+ "SUPDROP",
+ "SUBDROP",
+ "DELIM1",
+ "DELIM2",
+ "AXISHEIGHT",
+]
+
+MATHEX_PARAMS = [
+ "DEFAULTRULETHICKNESS",
+ "BIGOPSPACING1",
+ "BIGOPSPACING2",
+ "BIGOPSPACING3",
+ "BIGOPSPACING4",
+ "BIGOPSPACING5",
+]
+
+VANILLA = 0
+MATHSY = 1
+MATHEX = 2
+
+UNREACHABLE = 0
+PASSTHROUGH = 1
+ACCESSABLE = 2
+
+NO_TAG = 0
+LIG_TAG = 1
+LIST_TAG = 2
+EXT_TAG = 3
+
+STOP_FLAG = 128
+KERN_FLAG = 128
+
+
+class TFMException(Exception):
+ def __init__(self, message):
+ super().__init__(message)
+
+
+class TFM:
+ def __init__(self, file):
+ self._read(file)
+
+ def __repr__(self):
+ return (
+ f"<TFM"
+ f" for {self.family}"
+ f" in {self.codingscheme}"
+ f" at {self.designsize:g}pt>"
+ )
+
+ def _read(self, file):
+ if hasattr(file, "read"):
+ data = file.read()
+ else:
+ with open(file, "rb") as fp:
+ data = fp.read()
+
+ self._data = data
+
+ if len(data) < SIZES_SIZE:
+ raise TFMException("Too short input file")
+
+ sizes = SimpleNamespace()
+ unpack2(SIZES_FORMAT, data, sizes)
+
+ # Do some file structure sanity checks.
+ # TeX and TFtoPL do additional functional checks and might even correct
+ # “errors” in the input file, but we instead try to output the file as
+ # it is as long as it is parsable, even if the data make no sense.
+
+ if sizes.lf < 0:
+ raise TFMException("The file claims to have negative or zero length!")
+
+ if len(data) < sizes.lf * 4:
+ raise TFMException("The file has fewer bytes than it claims!")
+
+ for name, length in vars(sizes).items():
+ if length < 0:
+ raise TFMException("The subfile size: '{name}' is negative!")
+
+ if sizes.lh < 2:
+ raise TFMException(f"The header length is only {sizes.lh}!")
+
+ if sizes.bc > sizes.ec + 1 or sizes.ec > 255:
+ raise TFMException(
+ f"The character code range {sizes.bc}..{sizes.ec} is illegal!"
+ )
+
+ if sizes.nw == 0 or sizes.nh == 0 or sizes.nd == 0 or sizes.ni == 0:
+ raise TFMException("Incomplete subfiles for character dimensions!")
+
+ if sizes.ne > 256:
+ raise TFMException(f"There are {ne} extensible recipes!")
+
+ if sizes.lf != (
+ 6
+ + sizes.lh
+ + (sizes.ec - sizes.bc + 1)
+ + sizes.nw
+ + sizes.nh
+ + sizes.nd
+ + sizes.ni
+ + sizes.nl
+ + sizes.nk
+ + sizes.ne
+ + sizes.np
+ ):
+ raise TFMException("Subfile sizes don’t add up to the stated total")
+
+ # Subfile offsets, used in the helper function below. These all are
+ # 32-bit word offsets not 8-bit byte offsets.
+ char_base = 6 + sizes.lh - sizes.bc
+ width_base = char_base + sizes.ec + 1
+ height_base = width_base + sizes.nw
+ depth_base = height_base + sizes.nh
+ italic_base = depth_base + sizes.nd
+ lig_kern_base = italic_base + sizes.ni
+ kern_base = lig_kern_base + sizes.nl
+ exten_base = kern_base + sizes.nk
+ param_base = exten_base + sizes.ne
+
+ # Helper functions for accessing individual data. If this looks
+ # nonidiomatic Python, I blame the effect of reading the literate WEB
+ # documentation of TFtoPL.
+ def char_info(c):
+ return 4 * (char_base + c)
+
+ def width_index(c):
+ return data[char_info(c)]
+
+ def noneexistent(c):
+ return c < sizes.bc or c > sizes.ec or width_index(c) == 0
+
+ def height_index(c):
+ return data[char_info(c) + 1] // 16
+
+ def depth_index(c):
+ return data[char_info(c) + 1] % 16
+
+ def italic_index(c):
+ return data[char_info(c) + 2] // 4
+
+ def tag(c):
+ return data[char_info(c) + 2] % 4
+
+ def remainder(c):
+ return data[char_info(c) + 3]
+
+ def width(c):
+ r = 4 * (width_base + width_index(c))
+ return read_fixed(r, "v")["v"]
+
+ def height(c):
+ r = 4 * (height_base + height_index(c))
+ return read_fixed(r, "v")["v"]
+
+ def depth(c):
+ r = 4 * (depth_base + depth_index(c))
+ return read_fixed(r, "v")["v"]
+
+ def italic(c):
+ r = 4 * (italic_base + italic_index(c))
+ return read_fixed(r, "v")["v"]
+
+ def exten(c):
+ return 4 * (exten_base + remainder(c))
+
+ def lig_step(i):
+ return 4 * (lig_kern_base + i)
+
+ def lig_kern_command(i):
+ command = SimpleNamespace()
+ unpack2(LIG_KERN_COMMAND, data[i:], command)
+ return command
+
+ def kern(i):
+ r = 4 * (kern_base + i)
+ return read_fixed(r, "v")["v"]
+
+ def param(i):
+ return 4 * (param_base + i)
+
+ def read_fixed(index, key, obj=None):
+ ret = unpack2(f">;{key}:{FIXED_FORMAT}", data[index:], obj)
+ return ret[0]
+
+ # Set all attributes to empty values regardless of the header size.
+ unpack(HEADER_FORMAT4, [0] * HEADER_SIZE4, self)
+
+ offset = 24
+ length = sizes.lh * 4
+ self.extraheader = {}
+ if length >= HEADER_SIZE4:
+ rest = unpack2(HEADER_FORMAT4, data[offset:], self)[1]
+ if self.face < 18:
+ s = self.face % 2
+ b = self.face // 2
+ self.face = "MBL"[b % 3] + "RI"[s] + "RCE"[b // 3]
+ for i in range(sizes.lh - HEADER_SIZE4 // 4):
+ rest = unpack2(f">;HEADER{i + 18}:l", rest, self.extraheader)[1]
+ elif length >= HEADER_SIZE3:
+ unpack2(HEADER_FORMAT3, data[offset:], self)
+ elif length >= HEADER_SIZE2:
+ unpack2(HEADER_FORMAT2, data[offset:], self)
+ elif length >= HEADER_SIZE1:
+ unpack2(HEADER_FORMAT1, data[offset:], self)
+
+ self.fonttype = VANILLA
+ scheme = self.codingscheme.upper()
+ if scheme.startswith("TEX MATH SY"):
+ self.fonttype = MATHSY
+ elif scheme.startswith("TEX MATH EX"):
+ self.fonttype = MATHEX
+
+ self.fontdimens = {}
+ for i in range(sizes.np):
+ name = f"PARAMETER{i+1}"
+ if i <= 6:
+ name = BASE_PARAMS[i]
+ elif self.fonttype == MATHSY and i <= 21:
+ name = MATHSY_PARAMS[i - 7]
+ elif self.fonttype == MATHEX and i <= 12:
+ name = MATHEX_PARAMS[i - 7]
+ read_fixed(param(i), name, self.fontdimens)
+
+ lig_kern_map = {}
+ self.right_boundary_char = None
+ self.left_boundary_char = None
+ if sizes.nl > 0:
+ cmd = lig_kern_command(lig_step(0))
+ if cmd.skip_byte == 255:
+ self.right_boundary_char = cmd.next_char
+
+ cmd = lig_kern_command(lig_step((sizes.nl - 1)))
+ if cmd.skip_byte == 255:
+ self.left_boundary_char = 256
+ r = 256 * cmd.op_byte + cmd.remainder
+ lig_kern_map[self.left_boundary_char] = r
+
+ self.chars = {}
+ for c in range(sizes.bc, sizes.ec + 1):
+ if width_index(c) > 0:
+ self.chars[c] = info = {}
+ info["width"] = width(c)
+ if height_index(c) > 0:
+ info["height"] = height(c)
+ if depth_index(c) > 0:
+ info["depth"] = depth(c)
+ if italic_index(c) > 0:
+ info["italic"] = italic(c)
+ char_tag = tag(c)
+ if char_tag == NO_TAG:
+ pass
+ elif char_tag == LIG_TAG:
+ lig_kern_map[c] = remainder(c)
+ elif char_tag == LIST_TAG:
+ info["nextlarger"] = remainder(c)
+ elif char_tag == EXT_TAG:
+ info["varchar"] = varchar = {}
+ for i in range(4):
+ part = data[exten(c) + i]
+ if i == 3 or part > 0:
+ name = "rep"
+ if i == 0:
+ name = "top"
+ elif i == 1:
+ name = "mid"
+ elif i == 2:
+ name = "bot"
+ if noneexistent(part):
+ varchar[name] = c
+ else:
+ varchar[name] = part
+
+ self.ligatures = {}
+ self.kerning = {}
+ for c, i in sorted(lig_kern_map.items()):
+ cmd = lig_kern_command(lig_step(i))
+ if cmd.skip_byte > STOP_FLAG:
+ i = 256 * cmd.op_byte + cmd.remainder
+
+ while i < sizes.nl:
+ cmd = lig_kern_command(lig_step(i))
+ if cmd.skip_byte > STOP_FLAG:
+ pass
+ else:
+ if cmd.op_byte >= KERN_FLAG:
+ r = 256 * (cmd.op_byte - KERN_FLAG) + cmd.remainder
+ self.kerning.setdefault(c, {})[cmd.next_char] = kern(r)
+ else:
+ r = cmd.op_byte
+ if r == 4 or (r > 7 and r != 11):
+ # Ligature step with nonstandard code, we output
+ # the code verbatim.
+ lig = r
+ else:
+ lig = ""
+ if r % 4 > 1:
+ lig += "/"
+ lig += "LIG"
+ if r % 2 != 0:
+ lig += "/"
+ while r > 3:
+ lig += ">"
+ r -= 4
+ self.ligatures.setdefault(c, {})[cmd.next_char] = (
+ lig,
+ cmd.remainder,
+ )
+
+ if cmd.skip_byte >= STOP_FLAG:
+ break
+ i += cmd.skip_byte + 1
+
+
+if __name__ == "__main__":
+ import sys
+
+ tfm = TFM(sys.argv[1])
+ print(
+ "\n".join(
+ x
+ for x in [
+ f"tfm.checksum={tfm.checksum}",
+ f"tfm.designsize={tfm.designsize}",
+ f"tfm.codingscheme={tfm.codingscheme}",
+ f"tfm.fonttype={tfm.fonttype}",
+ f"tfm.family={tfm.family}",
+ f"tfm.seven_bit_safe_flag={tfm.seven_bit_safe_flag}",
+ f"tfm.face={tfm.face}",
+ f"tfm.extraheader={tfm.extraheader}",
+ f"tfm.fontdimens={tfm.fontdimens}",
+ f"tfm.right_boundary_char={tfm.right_boundary_char}",
+ f"tfm.left_boundary_char={tfm.left_boundary_char}",
+ f"tfm.kerning={tfm.kerning}",
+ f"tfm.ligatures={tfm.ligatures}",
+ f"tfm.chars={tfm.chars}",
+ ]
+ )
+ )
+ print(tfm)
diff --git a/Lib/fontTools/ttLib/__init__.py b/Lib/fontTools/ttLib/__init__.py
index 16417e73..dadd7f20 100644
--- a/Lib/fontTools/ttLib/__init__.py
+++ b/Lib/fontTools/ttLib/__init__.py
@@ -1,45 +1,4 @@
-"""fontTools.ttLib -- a package for dealing with TrueType fonts.
-
-This package offers translators to convert TrueType fonts to Python
-objects and vice versa, and additionally from Python to TTX (an XML-based
-text format) and vice versa.
-
-Example interactive session:
-
-Python 1.5.2c1 (#43, Mar 9 1999, 13:06:43) [CW PPC w/GUSI w/MSL]
-Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
->> from fontTools import ttLib
->> tt = ttLib.TTFont("afont.ttf")
->> tt['maxp'].numGlyphs
-242
->> tt['OS/2'].achVendID
-'B&H\000'
->> tt['head'].unitsPerEm
-2048
->> tt.saveXML("afont.ttx")
-Dumping 'LTSH' table...
-Dumping 'OS/2' table...
-Dumping 'VDMX' table...
-Dumping 'cmap' table...
-Dumping 'cvt ' table...
-Dumping 'fpgm' table...
-Dumping 'glyf' table...
-Dumping 'hdmx' table...
-Dumping 'head' table...
-Dumping 'hhea' table...
-Dumping 'hmtx' table...
-Dumping 'loca' table...
-Dumping 'maxp' table...
-Dumping 'name' table...
-Dumping 'post' table...
-Dumping 'prep' table...
->> tt2 = ttLib.TTFont()
->> tt2.importXML("afont.ttx")
->> tt2['maxp'].numGlyphs
-242
->>
-
-"""
+"""fontTools.ttLib -- a package for dealing with TrueType fonts."""
from fontTools.misc.loggingTools import deprecateFunction
import logging
diff --git a/Lib/fontTools/ttLib/removeOverlaps.py b/Lib/fontTools/ttLib/removeOverlaps.py
index fb5c77ab..624cd47b 100644
--- a/Lib/fontTools/ttLib/removeOverlaps.py
+++ b/Lib/fontTools/ttLib/removeOverlaps.py
@@ -5,8 +5,9 @@ Requires https://github.com/fonttools/skia-pathops
import itertools
import logging
-from typing import Iterable, Optional, Mapping
+from typing import Callable, Iterable, Optional, Mapping
+from fontTools.misc.roundTools import otRound
from fontTools.ttLib import ttFont
from fontTools.ttLib.tables import _g_l_y_f
from fontTools.ttLib.tables import _h_m_t_x
@@ -18,6 +19,10 @@ import pathops
__all__ = ["removeOverlaps"]
+class RemoveOverlapsError(Exception):
+ pass
+
+
log = logging.getLogger("fontTools.ttLib.removeOverlaps")
_TTGlyphMapping = Mapping[str, ttFont._TTGlyph]
@@ -76,6 +81,49 @@ def ttfGlyphFromSkPath(path: pathops.Path) -> _g_l_y_f.Glyph:
return glyph
+def _round_path(
+ path: pathops.Path, round: Callable[[float], float] = otRound
+) -> pathops.Path:
+ rounded_path = pathops.Path()
+ for verb, points in path:
+ rounded_path.add(verb, *((round(p[0]), round(p[1])) for p in points))
+ return rounded_path
+
+
+def _simplify(path: pathops.Path, debugGlyphName: str) -> pathops.Path:
+ # skia-pathops has a bug where it sometimes fails to simplify paths when there
+ # are float coordinates and control points are very close to one another.
+ # Rounding coordinates to integers works around the bug.
+ # Since we are going to round glyf coordinates later on anyway, here it is
+ # ok(-ish) to also round before simplify. Better than failing the whole process
+ # for the entire font.
+ # https://bugs.chromium.org/p/skia/issues/detail?id=11958
+ # https://github.com/google/fonts/issues/3365
+ # TODO(anthrotype): remove once this Skia bug is fixed
+ try:
+ return pathops.simplify(path, clockwise=path.clockwise)
+ except pathops.PathOpsError:
+ pass
+
+ path = _round_path(path)
+ try:
+ path = pathops.simplify(path, clockwise=path.clockwise)
+ log.debug(
+ "skia-pathops failed to simplify '%s' with float coordinates, "
+ "but succeded using rounded integer coordinates",
+ debugGlyphName,
+ )
+ return path
+ except pathops.PathOpsError as e:
+ if log.isEnabledFor(logging.DEBUG):
+ path.dump()
+ raise RemoveOverlapsError(
+ f"Failed to remove overlaps from glyph {debugGlyphName!r}"
+ ) from e
+
+ raise AssertionError("Unreachable")
+
+
def removeTTGlyphOverlaps(
glyphName: str,
glyphSet: _TTGlyphMapping,
@@ -93,7 +141,7 @@ def removeTTGlyphOverlaps(
path = skPathFromGlyph(glyphName, glyphSet)
# remove overlaps
- path2 = pathops.simplify(path, clockwise=path.clockwise)
+ path2 = _simplify(path, glyphName)
# replace TTGlyph if simplified path is different (ignoring contour order)
if {tuple(c) for c in path.contours} != {tuple(c) for c in path2.contours}:
@@ -115,6 +163,7 @@ def removeOverlaps(
font: ttFont.TTFont,
glyphNames: Optional[Iterable[str]] = None,
removeHinting: bool = True,
+ ignoreErrors=False,
) -> None:
"""Simplify glyphs in TTFont by merging overlapping contours.
@@ -132,6 +181,8 @@ def removeOverlaps(
glyphNames: optional iterable of glyph names (str) to remove overlaps from.
By default, all glyphs in the font are processed.
removeHinting (bool): set to False to keep hinting for unmodified glyphs.
+ ignoreErrors (bool): set to True to ignore errors while removing overlaps,
+ thus keeping the tricky glyphs unchanged (fonttools/fonttools#2363).
"""
try:
glyfTable = font["glyf"]
@@ -159,10 +210,15 @@ def removeOverlaps(
)
modified = set()
for glyphName in glyphNames:
- if removeTTGlyphOverlaps(
- glyphName, glyphSet, glyfTable, hmtxTable, removeHinting
- ):
- modified.add(glyphName)
+ try:
+ if removeTTGlyphOverlaps(
+ glyphName, glyphSet, glyfTable, hmtxTable, removeHinting
+ ):
+ modified.add(glyphName)
+ except RemoveOverlapsError:
+ if not ignoreErrors:
+ raise
+ log.error("Failed to remove overlaps for '%s'", glyphName)
log.debug("Removed overlaps for %s glyphs:\n%s", len(modified), " ".join(modified))
diff --git a/Lib/fontTools/ttLib/sfnt.py b/Lib/fontTools/ttLib/sfnt.py
index d609dc51..e7c06337 100644
--- a/Lib/fontTools/ttLib/sfnt.py
+++ b/Lib/fontTools/ttLib/sfnt.py
@@ -8,13 +8,13 @@ Defines two public classes:
used automatically by ttLib.TTFont.)
The reading and writing of sfnt files is separated in two distinct
-classes, since whenever to number of tables changes or whenever
-a table's length chages you need to rewrite the whole file anyway.
+classes, since whenever the number of tables changes or whenever
+a table's length changes you need to rewrite the whole file anyway.
"""
from io import BytesIO
from types import SimpleNamespace
-from fontTools.misc.py23 import Tag
+from fontTools.misc.textTools import Tag
from fontTools.misc import sstruct
from fontTools.ttLib import TTLibError
import struct
@@ -571,9 +571,6 @@ class WOFFFlavorData():
def calcChecksum(data):
"""Calculate the checksum for an arbitrary block of data.
- Optionally takes a 'start' argument, which allows you to
- calculate a checksum in chunks by feeding it a previous
- result.
If the data length is not a multiple of four, it assumes
it is to be padded with null byte.
diff --git a/Lib/fontTools/ttLib/tables/C_B_D_T_.py b/Lib/fontTools/ttLib/tables/C_B_D_T_.py
index 11bb60b8..adf5447f 100644
--- a/Lib/fontTools/ttLib/tables/C_B_D_T_.py
+++ b/Lib/fontTools/ttLib/tables/C_B_D_T_.py
@@ -3,7 +3,7 @@
# Google Author(s): Matt Fontaine
-from fontTools.misc.py23 import bytesjoin
+from fontTools.misc.textTools import bytesjoin
from fontTools.misc import sstruct
from . import E_B_D_T_
from .BitmapGlyphMetrics import BigGlyphMetrics, bigGlyphMetricsFormat, SmallGlyphMetrics, smallGlyphMetricsFormat
diff --git a/Lib/fontTools/ttLib/tables/C_O_L_R_.py b/Lib/fontTools/ttLib/tables/C_O_L_R_.py
index 4004d417..3528bf5b 100644
--- a/Lib/fontTools/ttLib/tables/C_O_L_R_.py
+++ b/Lib/fontTools/ttLib/tables/C_O_L_R_.py
@@ -9,8 +9,10 @@ from . import DefaultTable
class table_C_O_L_R_(DefaultTable.DefaultTable):
""" This table is structured so that you can treat it like a dictionary keyed by glyph name.
- ttFont['COLR'][<glyphName>] will return the color layers for any glyph
- ttFont['COLR'][<glyphName>] = <value> will set the color layers for any glyph.
+
+ ``ttFont['COLR'][<glyphName>]`` will return the color layers for any glyph.
+
+ ``ttFont['COLR'][<glyphName>] = <value>`` will set the color layers for any glyph.
"""
@staticmethod
diff --git a/Lib/fontTools/ttLib/tables/C_P_A_L_.py b/Lib/fontTools/ttLib/tables/C_P_A_L_.py
index c095095e..1ad342f1 100644
--- a/Lib/fontTools/ttLib/tables/C_P_A_L_.py
+++ b/Lib/fontTools/ttLib/tables/C_P_A_L_.py
@@ -2,8 +2,7 @@
#
# Google Author(s): Behdad Esfahbod
-from fontTools.misc.py23 import bytesjoin
-from fontTools.misc.textTools import safeEval
+from fontTools.misc.textTools import bytesjoin, safeEval
from . import DefaultTable
import array
from collections import namedtuple
diff --git a/Lib/fontTools/ttLib/tables/D_S_I_G_.py b/Lib/fontTools/ttLib/tables/D_S_I_G_.py
index 1a520cab..02fddee6 100644
--- a/Lib/fontTools/ttLib/tables/D_S_I_G_.py
+++ b/Lib/fontTools/ttLib/tables/D_S_I_G_.py
@@ -1,5 +1,4 @@
-from fontTools.misc.py23 import bytesjoin, strjoin, tobytes, tostr
-from fontTools.misc.textTools import safeEval
+from fontTools.misc.textTools import bytesjoin, strjoin, tobytes, tostr, safeEval
from fontTools.misc import sstruct
from . import DefaultTable
import base64
diff --git a/Lib/fontTools/ttLib/tables/DefaultTable.py b/Lib/fontTools/ttLib/tables/DefaultTable.py
index c70480a3..dae83183 100644
--- a/Lib/fontTools/ttLib/tables/DefaultTable.py
+++ b/Lib/fontTools/ttLib/tables/DefaultTable.py
@@ -1,4 +1,4 @@
-from fontTools.misc.py23 import Tag
+from fontTools.misc.textTools import Tag
from fontTools.ttLib import getClassTag
class DefaultTable(object):
diff --git a/Lib/fontTools/ttLib/tables/E_B_D_T_.py b/Lib/fontTools/ttLib/tables/E_B_D_T_.py
index 5d9e7244..0bd2ab99 100644
--- a/Lib/fontTools/ttLib/tables/E_B_D_T_.py
+++ b/Lib/fontTools/ttLib/tables/E_B_D_T_.py
@@ -1,6 +1,5 @@
-from fontTools.misc.py23 import bytechr, byteord, bytesjoin, strjoin
from fontTools.misc import sstruct
-from fontTools.misc.textTools import safeEval, readHex, hexStr, deHexStr
+from fontTools.misc.textTools import bytechr, byteord, bytesjoin, strjoin, safeEval, readHex, hexStr, deHexStr
from .BitmapGlyphMetrics import BigGlyphMetrics, bigGlyphMetricsFormat, SmallGlyphMetrics, smallGlyphMetricsFormat
from . import DefaultTable
import itertools
diff --git a/Lib/fontTools/ttLib/tables/E_B_L_C_.py b/Lib/fontTools/ttLib/tables/E_B_L_C_.py
index 94d40d96..cfdbca7b 100644
--- a/Lib/fontTools/ttLib/tables/E_B_L_C_.py
+++ b/Lib/fontTools/ttLib/tables/E_B_L_C_.py
@@ -1,7 +1,6 @@
-from fontTools.misc.py23 import bytesjoin
from fontTools.misc import sstruct
from . import DefaultTable
-from fontTools.misc.textTools import safeEval
+from fontTools.misc.textTools import bytesjoin, safeEval
from .BitmapGlyphMetrics import BigGlyphMetrics, bigGlyphMetricsFormat, SmallGlyphMetrics, smallGlyphMetricsFormat
import struct
import itertools
diff --git a/Lib/fontTools/ttLib/tables/F__e_a_t.py b/Lib/fontTools/ttLib/tables/F__e_a_t.py
index 7e510614..a444c11d 100644
--- a/Lib/fontTools/ttLib/tables/F__e_a_t.py
+++ b/Lib/fontTools/ttLib/tables/F__e_a_t.py
@@ -11,6 +11,12 @@ Feat_hdr_format='''
'''
class table_F__e_a_t(DefaultTable.DefaultTable):
+ """The ``Feat`` table is used exclusively by the Graphite shaping engine
+ to store features and possible settings specified in GDL. Graphite features
+ determine what rules are applied to transform a glyph stream.
+
+ Not to be confused with ``feat``, or the OpenType Layout tables
+ ``GSUB``/``GPOS``."""
def __init__(self, tag=None):
DefaultTable.DefaultTable.__init__(self, tag)
diff --git a/Lib/fontTools/ttLib/tables/G_M_A_P_.py b/Lib/fontTools/ttLib/tables/G_M_A_P_.py
index 5b30dcfe..833890da 100644
--- a/Lib/fontTools/ttLib/tables/G_M_A_P_.py
+++ b/Lib/fontTools/ttLib/tables/G_M_A_P_.py
@@ -1,6 +1,5 @@
-from fontTools.misc.py23 import tobytes, tostr
from fontTools.misc import sstruct
-from fontTools.misc.textTools import safeEval
+from fontTools.misc.textTools import tobytes, tostr, safeEval
from . import DefaultTable
GMAPFormat = """
diff --git a/Lib/fontTools/ttLib/tables/G_P_K_G_.py b/Lib/fontTools/ttLib/tables/G_P_K_G_.py
index 7598a62a..4f469c02 100644
--- a/Lib/fontTools/ttLib/tables/G_P_K_G_.py
+++ b/Lib/fontTools/ttLib/tables/G_P_K_G_.py
@@ -1,6 +1,5 @@
-from fontTools.misc.py23 import bytesjoin
from fontTools.misc import sstruct
-from fontTools.misc.textTools import safeEval, readHex
+from fontTools.misc.textTools import bytesjoin, safeEval, readHex
from . import DefaultTable
import sys
import array
diff --git a/Lib/fontTools/ttLib/tables/M_E_T_A_.py b/Lib/fontTools/ttLib/tables/M_E_T_A_.py
index d4f6bc8c..990bfd2d 100644
--- a/Lib/fontTools/ttLib/tables/M_E_T_A_.py
+++ b/Lib/fontTools/ttLib/tables/M_E_T_A_.py
@@ -1,6 +1,5 @@
-from fontTools.misc.py23 import byteord
from fontTools.misc import sstruct
-from fontTools.misc.textTools import safeEval
+from fontTools.misc.textTools import byteord, safeEval
from . import DefaultTable
import pdb
import struct
diff --git a/Lib/fontTools/ttLib/tables/S_I_N_G_.py b/Lib/fontTools/ttLib/tables/S_I_N_G_.py
index dd9b63c4..73246df4 100644
--- a/Lib/fontTools/ttLib/tables/S_I_N_G_.py
+++ b/Lib/fontTools/ttLib/tables/S_I_N_G_.py
@@ -1,6 +1,5 @@
-from fontTools.misc.py23 import bytechr, byteord, tobytes, tostr
from fontTools.misc import sstruct
-from fontTools.misc.textTools import safeEval
+from fontTools.misc.textTools import bytechr, byteord, tobytes, tostr, safeEval
from . import DefaultTable
SINGFormat = """
diff --git a/Lib/fontTools/ttLib/tables/S_V_G_.py b/Lib/fontTools/ttLib/tables/S_V_G_.py
index 135f2718..bc0e533d 100644
--- a/Lib/fontTools/ttLib/tables/S_V_G_.py
+++ b/Lib/fontTools/ttLib/tables/S_V_G_.py
@@ -1,10 +1,25 @@
-from fontTools.misc.py23 import bytesjoin, strjoin, tobytes, tostr
+"""Compiles/decompiles SVG table.
+
+https://docs.microsoft.com/en-us/typography/opentype/spec/svg
+
+The XML format is:
+
+.. code-block:: xml
+
+ <SVG>
+ <svgDoc endGlyphID="1" startGlyphID="1">
+ <![CDATA[ <complete SVG doc> ]]
+ </svgDoc>
+ ...
+ <svgDoc endGlyphID="n" startGlyphID="m">
+ <![CDATA[ <complete SVG doc> ]]
+ </svgDoc>
+ </SVG>
+"""
+
+from fontTools.misc.textTools import bytesjoin, strjoin, tobytes, tostr
from fontTools.misc import sstruct
from . import DefaultTable
-try:
- import xml.etree.cElementTree as ET
-except ImportError:
- import xml.etree.ElementTree as ET
from io import BytesIO
import struct
import logging
@@ -13,71 +28,15 @@ import logging
log = logging.getLogger(__name__)
-__doc__="""
-Compiles/decompiles version 0 and 1 SVG tables from/to XML.
-
-Version 1 is the first SVG definition, implemented in Mozilla before Aug 2013, now deprecated.
-This module will decompile this correctly, but will compile a version 1 table
-only if you add the secret element "<version1/>" to the SVG element in the TTF file.
-
-Version 0 is the joint Adobe-Mozilla proposal, which supports color palettes.
-
-The XML format is:
-<SVG>
- <svgDoc endGlyphID="1" startGlyphID="1">
- <![CDATA[ <complete SVG doc> ]]
- </svgDoc>
-...
- <svgDoc endGlyphID="n" startGlyphID="m">
- <![CDATA[ <complete SVG doc> ]]
- </svgDoc>
-
- <colorPalettes>
- <colorParamUINameID>n</colorParamUINameID>
- ...
- <colorParamUINameID>m</colorParamUINameID>
- <colorPalette uiNameID="n">
- <colorRecord red="<int>" green="<int>" blue="<int>" alpha="<int>" />
- ...
- <colorRecord red="<int>" green="<int>" blue="<int>" alpha="<int>" />
- </colorPalette>
- ...
- <colorPalette uiNameID="m">
- <colorRecord red="<int> green="<int>" blue="<int>" alpha="<int>" />
- ...
- <colorRecord red=<int>" green="<int>" blue="<int>" alpha="<int>" />
- </colorPalette>
- </colorPalettes>
-</SVG>
-
-Color values must be less than 256.
-
-The number of color records in each </colorPalette> must be the same as
-the number of <colorParamUINameID> elements.
-
-"""
-
-XML = ET.XML
-XMLElement = ET.Element
-xmlToString = ET.tostring
-
SVG_format_0 = """
> # big endian
version: H
offsetToSVGDocIndex: L
- offsetToColorPalettes: L
+ reserved: L
"""
SVG_format_0Size = sstruct.calcsize(SVG_format_0)
-SVG_format_1 = """
- > # big endian
- version: H
- numIndicies: H
-"""
-
-SVG_format_1Size = sstruct.calcsize(SVG_format_1)
-
doc_index_entry_format_0 = """
> # big endian
startGlyphID: H
@@ -88,84 +47,26 @@ doc_index_entry_format_0 = """
doc_index_entry_format_0Size = sstruct.calcsize(doc_index_entry_format_0)
-colorRecord_format_0 = """
- red: B
- green: B
- blue: B
- alpha: B
-"""
class table_S_V_G_(DefaultTable.DefaultTable):
- def __init__(self, tag=None):
- DefaultTable.DefaultTable.__init__(self, tag)
- self.colorPalettes = None
-
def decompile(self, data, ttFont):
- self.docList = None
- self.colorPalettes = None
- pos = 0
- self.version = struct.unpack(">H", data[pos:pos+2])[0]
-
- if self.version == 1:
- # This is pre-standardization version of the table; and obsolete. But we decompile it for now.
- # https://wiki.mozilla.org/SVGOpenTypeFonts
- self.decompile_format_1(data, ttFont)
- else:
- if self.version != 0:
- log.warning(
- "Unknown SVG table version '%s'. Decompiling as version 0.", self.version)
- # This is the standardized version of the table; and current.
- # https://www.microsoft.com/typography/otspec/svg.htm
- self.decompile_format_0(data, ttFont)
-
- def decompile_format_0(self, data, ttFont):
- dummy, data2 = sstruct.unpack2(SVG_format_0, data, self)
+ self.docList = []
+ # Version 0 is the standardized version of the table; and current.
+ # https://www.microsoft.com/typography/otspec/svg.htm
+ sstruct.unpack(SVG_format_0, data[:SVG_format_0Size], self)
+ if self.version != 0:
+ log.warning(
+ "Unknown SVG table version '%s'. Decompiling as version 0.", self.version)
# read in SVG Documents Index
- self.decompileEntryList(data)
-
- # read in colorPalettes table.
- self.colorPalettes = colorPalettes = ColorPalettes()
- pos = self.offsetToColorPalettes
- if pos > 0:
- colorPalettes.numColorParams = numColorParams = struct.unpack(">H", data[pos:pos+2])[0]
- if numColorParams > 0:
- colorPalettes.colorParamUINameIDs = colorParamUINameIDs = []
- pos = pos + 2
- for i in range(numColorParams):
- nameID = struct.unpack(">H", data[pos:pos+2])[0]
- colorParamUINameIDs.append(nameID)
- pos = pos + 2
-
- colorPalettes.numColorPalettes = numColorPalettes = struct.unpack(">H", data[pos:pos+2])[0]
- pos = pos + 2
- if numColorPalettes > 0:
- colorPalettes.colorPaletteList = colorPaletteList = []
- for i in range(numColorPalettes):
- colorPalette = ColorPalette()
- colorPaletteList.append(colorPalette)
- colorPalette.uiNameID = struct.unpack(">H", data[pos:pos+2])[0]
- pos = pos + 2
- colorPalette.paletteColors = paletteColors = []
- for j in range(numColorParams):
- colorRecord, colorPaletteData = sstruct.unpack2(colorRecord_format_0, data[pos:], ColorRecord())
- paletteColors.append(colorRecord)
- pos += 4
-
- def decompile_format_1(self, data, ttFont):
- self.offsetToSVGDocIndex = 2
- self.decompileEntryList(data)
-
- def decompileEntryList(self, data):
# data starts with the first entry of the entry list.
pos = subTableStart = self.offsetToSVGDocIndex
- self.numEntries = numEntries = struct.unpack(">H", data[pos:pos+2])[0]
+ self.numEntries = struct.unpack(">H", data[pos:pos+2])[0]
pos += 2
if self.numEntries > 0:
data2 = data[pos:]
- self.docList = []
- self.entries = entries = []
+ entries = []
for i in range(self.numEntries):
docIndexEntry, data2 = sstruct.unpack2(doc_index_entry_format_0, data2, DocumentIndexEntry())
entries.append(docIndexEntry)
@@ -185,13 +86,6 @@ class table_S_V_G_(DefaultTable.DefaultTable):
self.docList.append( [doc, entry.startGlyphID, entry.endGlyphID] )
def compile(self, ttFont):
- if hasattr(self, "version1"):
- data = self.compileFormat1(ttFont)
- else:
- data = self.compileFormat0(ttFont)
- return data
-
- def compileFormat0(self, ttFont):
version = 0
offsetToSVGDocIndex = SVG_format_0Size # I start the SVGDocIndex right after the header.
# get SGVDoc info.
@@ -201,8 +95,8 @@ class table_S_V_G_(DefaultTable.DefaultTable):
datum = struct.pack(">H",numEntries)
entryList.append(datum)
curOffset = len(datum) + doc_index_entry_format_0Size*numEntries
+ seenDocs = {}
for doc, startGlyphID, endGlyphID in self.docList:
- docOffset = curOffset
docBytes = tobytes(doc, encoding="utf_8")
if getattr(self, "compressed", False) and not docBytes.startswith(b"\x1f\x8b"):
import gzip
@@ -214,63 +108,25 @@ class table_S_V_G_(DefaultTable.DefaultTable):
docBytes = gzipped
del gzipped, bytesIO
docLength = len(docBytes)
- curOffset += docLength
+ if docBytes in seenDocs:
+ docOffset = seenDocs[docBytes]
+ else:
+ docOffset = curOffset
+ curOffset += docLength
+ seenDocs[docBytes] = docOffset
+ docList.append(docBytes)
entry = struct.pack(">HHLL", startGlyphID, endGlyphID, docOffset, docLength)
entryList.append(entry)
- docList.append(docBytes)
entryList.extend(docList)
svgDocData = bytesjoin(entryList)
- # get colorpalette info.
- if self.colorPalettes is None:
- offsetToColorPalettes = 0
- palettesData = ""
- else:
- offsetToColorPalettes = SVG_format_0Size + len(svgDocData)
- dataList = []
- numColorParams = len(self.colorPalettes.colorParamUINameIDs)
- datum = struct.pack(">H", numColorParams)
- dataList.append(datum)
- for uiNameId in self.colorPalettes.colorParamUINameIDs:
- datum = struct.pack(">H", uiNameId)
- dataList.append(datum)
- numColorPalettes = len(self.colorPalettes.colorPaletteList)
- datum = struct.pack(">H", numColorPalettes)
- dataList.append(datum)
- for colorPalette in self.colorPalettes.colorPaletteList:
- datum = struct.pack(">H", colorPalette.uiNameID)
- dataList.append(datum)
- for colorRecord in colorPalette.paletteColors:
- data = struct.pack(">BBBB", colorRecord.red, colorRecord.green, colorRecord.blue, colorRecord.alpha)
- dataList.append(data)
- palettesData = bytesjoin(dataList)
-
- header = struct.pack(">HLL", version, offsetToSVGDocIndex, offsetToColorPalettes)
- data = [header, svgDocData, palettesData]
+ reserved = 0
+ header = struct.pack(">HLL", version, offsetToSVGDocIndex, reserved)
+ data = [header, svgDocData]
data = bytesjoin(data)
return data
- def compileFormat1(self, ttFont):
- version = 1
- numEntries = len(self.docList)
- header = struct.pack(">HH", version, numEntries)
- dataList = [header]
- docList = []
- curOffset = SVG_format_1Size + doc_index_entry_format_0Size*numEntries
- for doc, startGlyphID, endGlyphID in self.docList:
- docOffset = curOffset
- docBytes = tobytes(doc, encoding="utf_8")
- docLength = len(docBytes)
- curOffset += docLength
- entry = struct.pack(">HHLL", startGlyphID, endGlyphID, docOffset, docLength)
- dataList.append(entry)
- docList.append(docBytes)
- dataList.extend(docList)
- data = bytesjoin(dataList)
- return data
-
def toXML(self, writer, ttFont):
- writer.newline()
for doc, startGID, endGID in self.docList:
writer.begintag("svgDoc", startGlyphID=startGID, endGlyphID=endGID)
writer.newline()
@@ -279,33 +135,6 @@ class table_S_V_G_(DefaultTable.DefaultTable):
writer.endtag("svgDoc")
writer.newline()
- if (self.colorPalettes is not None) and (self.colorPalettes.numColorParams is not None):
- writer.begintag("colorPalettes")
- writer.newline()
- for uiNameID in self.colorPalettes.colorParamUINameIDs:
- writer.begintag("colorParamUINameID")
- writer._writeraw(str(uiNameID))
- writer.endtag("colorParamUINameID")
- writer.newline()
- for colorPalette in self.colorPalettes.colorPaletteList:
- writer.begintag("colorPalette", [("uiNameID", str(colorPalette.uiNameID))])
- writer.newline()
- for colorRecord in colorPalette.paletteColors:
- colorAttributes = [
- ("red", hex(colorRecord.red)),
- ("green", hex(colorRecord.green)),
- ("blue", hex(colorRecord.blue)),
- ("alpha", hex(colorRecord.alpha)),
- ]
- writer.begintag("colorRecord", colorAttributes)
- writer.endtag("colorRecord")
- writer.newline()
- writer.endtag("colorPalette")
- writer.newline()
-
- writer.endtag("colorPalettes")
- writer.newline()
-
def fromXML(self, name, attrs, content, ttFont):
if name == "svgDoc":
if not hasattr(self, "docList"):
@@ -315,14 +144,10 @@ class table_S_V_G_(DefaultTable.DefaultTable):
startGID = int(attrs["startGlyphID"])
endGID = int(attrs["endGlyphID"])
self.docList.append( [doc, startGID, endGID] )
- elif name == "colorPalettes":
- self.colorPalettes = ColorPalettes()
- self.colorPalettes.fromXML(name, attrs, content, ttFont)
- if self.colorPalettes.numColorParams == 0:
- self.colorPalettes = None
else:
log.warning("Unknown %s %s", name, content)
+
class DocumentIndexEntry(object):
def __init__(self):
self.startGlyphID = None # USHORT
@@ -332,55 +157,3 @@ class DocumentIndexEntry(object):
def __repr__(self):
return "startGlyphID: %s, endGlyphID: %s, svgDocOffset: %s, svgDocLength: %s" % (self.startGlyphID, self.endGlyphID, self.svgDocOffset, self.svgDocLength)
-
-class ColorPalettes(object):
- def __init__(self):
- self.numColorParams = None # USHORT
- self.colorParamUINameIDs = [] # list of name table name ID values that provide UI description of each color palette.
- self.numColorPalettes = None # USHORT
- self.colorPaletteList = [] # list of ColorPalette records
-
- def fromXML(self, name, attrs, content, ttFont):
- for element in content:
- if not isinstance(element, tuple):
- continue
- name, attrib, content = element
- if name == "colorParamUINameID":
- uiNameID = int(content[0])
- self.colorParamUINameIDs.append(uiNameID)
- elif name == "colorPalette":
- colorPalette = ColorPalette()
- self.colorPaletteList.append(colorPalette)
- colorPalette.fromXML(name, attrib, content, ttFont)
-
- self.numColorParams = len(self.colorParamUINameIDs)
- self.numColorPalettes = len(self.colorPaletteList)
- for colorPalette in self.colorPaletteList:
- if len(colorPalette.paletteColors) != self.numColorParams:
- raise ValueError("Number of color records in a colorPalette ('%s') does not match the number of colorParamUINameIDs elements ('%s')." % (len(colorPalette.paletteColors), self.numColorParams))
-
-class ColorPalette(object):
- def __init__(self):
- self.uiNameID = None # USHORT. name table ID that describes user interface strings associated with this color palette.
- self.paletteColors = [] # list of ColorRecords
-
- def fromXML(self, name, attrs, content, ttFont):
- self.uiNameID = int(attrs["uiNameID"])
- for element in content:
- if isinstance(element, type("")):
- continue
- name, attrib, content = element
- if name == "colorRecord":
- colorRecord = ColorRecord()
- self.paletteColors.append(colorRecord)
- colorRecord.red = eval(attrib["red"])
- colorRecord.green = eval(attrib["green"])
- colorRecord.blue = eval(attrib["blue"])
- colorRecord.alpha = eval(attrib["alpha"])
-
-class ColorRecord(object):
- def __init__(self):
- self.red = 255 # all are one byte values.
- self.green = 255
- self.blue = 255
- self.alpha = 255
diff --git a/Lib/fontTools/ttLib/tables/S__i_l_f.py b/Lib/fontTools/ttLib/tables/S__i_l_f.py
index 95880b07..f326c386 100644
--- a/Lib/fontTools/ttLib/tables/S__i_l_f.py
+++ b/Lib/fontTools/ttLib/tables/S__i_l_f.py
@@ -1,7 +1,6 @@
-from fontTools.misc.py23 import byteord
from fontTools.misc import sstruct
from fontTools.misc.fixedTools import floatToFixedToStr
-from fontTools.misc.textTools import safeEval
+from fontTools.misc.textTools import byteord, safeEval
# from itertools import *
from . import DefaultTable
from . import grUtils
diff --git a/Lib/fontTools/ttLib/tables/T_S_I_V_.py b/Lib/fontTools/ttLib/tables/T_S_I_V_.py
index 80214452..c1e244c6 100644
--- a/Lib/fontTools/ttLib/tables/T_S_I_V_.py
+++ b/Lib/fontTools/ttLib/tables/T_S_I_V_.py
@@ -1,4 +1,4 @@
-from fontTools.misc.py23 import strjoin, tobytes, tostr
+from fontTools.misc.textTools import strjoin, tobytes, tostr
from . import asciiTable
class table_T_S_I_V_(asciiTable.asciiTable):
diff --git a/Lib/fontTools/ttLib/tables/T_S_I__1.py b/Lib/fontTools/ttLib/tables/T_S_I__1.py
index 9ae7acd6..7f7608b2 100644
--- a/Lib/fontTools/ttLib/tables/T_S_I__1.py
+++ b/Lib/fontTools/ttLib/tables/T_S_I__1.py
@@ -4,9 +4,9 @@ tool to store its hinting source data.
TSI1 contains the text of the glyph programs in the form of low-level assembly
code, as well as the 'extra' programs 'fpgm', 'ppgm' (i.e. 'prep'), and 'cvt'.
"""
-from fontTools.misc.py23 import strjoin, tobytes, tostr
from . import DefaultTable
from fontTools.misc.loggingTools import LogMixin
+from fontTools.misc.textTools import strjoin, tobytes, tostr
class table_T_S_I__1(LogMixin, DefaultTable.DefaultTable):
diff --git a/Lib/fontTools/ttLib/tables/TupleVariation.py b/Lib/fontTools/ttLib/tables/TupleVariation.py
index a63fb6c6..9c2895e4 100644
--- a/Lib/fontTools/ttLib/tables/TupleVariation.py
+++ b/Lib/fontTools/ttLib/tables/TupleVariation.py
@@ -1,4 +1,3 @@
-from fontTools.misc.py23 import bytechr, byteord, bytesjoin
from fontTools.misc.fixedTools import (
fixedToFloat as fi2fl,
floatToFixed as fl2fi,
@@ -8,6 +7,7 @@ from fontTools.misc.fixedTools import (
)
from fontTools.misc.textTools import safeEval
import array
+from collections import Counter, defaultdict
import io
import logging
import struct
@@ -38,7 +38,7 @@ class TupleVariation(object):
def __init__(self, axes, coordinates):
self.axes = axes.copy()
- self.coordinates = coordinates[:]
+ self.coordinates = list(coordinates)
def __repr__(self):
axes = ",".join(sorted(["%s=%s" % (name, value) for (name, value) in self.axes.items()]))
@@ -48,11 +48,12 @@ class TupleVariation(object):
return self.coordinates == other.coordinates and self.axes == other.axes
def getUsedPoints(self):
- result = set()
- for i, point in enumerate(self.coordinates):
- if point is not None:
- result.add(i)
- return result
+ # Empty set means "all points used".
+ if None not in self.coordinates:
+ return frozenset()
+ used = frozenset([i for i,p in enumerate(self.coordinates) if p is not None])
+ # Return None if no points used.
+ return used if used else None
def hasImpact(self):
"""Returns True if this TupleVariation has any visible impact.
@@ -126,15 +127,21 @@ class TupleVariation(object):
log.warning("bad delta format: %s" %
", ".join(sorted(attrs.keys())))
- def compile(self, axisTags, sharedCoordIndices, sharedPoints):
+ def compile(self, axisTags, sharedCoordIndices={}, pointData=None):
+ assert set(self.axes.keys()) <= set(axisTags), ("Unknown axis tag found.", self.axes.keys(), axisTags)
+
tupleData = []
+ auxData = []
- assert all(tag in axisTags for tag in self.axes.keys()), ("Unknown axis tag found.", self.axes.keys(), axisTags)
+ if pointData is None:
+ usedPoints = self.getUsedPoints()
+ if usedPoints is None: # Nothing to encode
+ return b'', b''
+ pointData = self.compilePoints(usedPoints)
coord = self.compileCoord(axisTags)
- if coord in sharedCoordIndices:
- flags = sharedCoordIndices[coord]
- else:
+ flags = sharedCoordIndices.get(coord)
+ if flags is None:
flags = EMBEDDED_PEAK_TUPLE
tupleData.append(coord)
@@ -143,26 +150,27 @@ class TupleVariation(object):
flags |= INTERMEDIATE_REGION
tupleData.append(intermediateCoord)
- points = self.getUsedPoints()
- if sharedPoints == points:
- # Only use the shared points if they are identical to the actually used points
- auxData = self.compileDeltas(sharedPoints)
- usesSharedPoints = True
- else:
+ # pointData of b'' implies "use shared points".
+ if pointData:
flags |= PRIVATE_POINT_NUMBERS
- numPointsInGlyph = len(self.coordinates)
- auxData = self.compilePoints(points, numPointsInGlyph) + self.compileDeltas(points)
- usesSharedPoints = False
+ auxData.append(pointData)
- tupleData = struct.pack('>HH', len(auxData), flags) + bytesjoin(tupleData)
- return (tupleData, auxData, usesSharedPoints)
+ auxData.append(self.compileDeltas())
+ auxData = b''.join(auxData)
+
+ tupleData.insert(0, struct.pack('>HH', len(auxData), flags))
+ return b''.join(tupleData), auxData
def compileCoord(self, axisTags):
- result = []
+ result = bytearray()
+ axes = self.axes
for axis in axisTags:
- _minValue, value, _maxValue = self.axes.get(axis, (0.0, 0.0, 0.0))
- result.append(struct.pack(">h", fl2fi(value, 14)))
- return bytesjoin(result)
+ triple = axes.get(axis)
+ if triple is None:
+ result.extend(b'\0\0')
+ else:
+ result.extend(struct.pack(">h", fl2fi(triple[1], 14)))
+ return bytes(result)
def compileIntermediateCoord(self, axisTags):
needed = False
@@ -175,13 +183,13 @@ class TupleVariation(object):
break
if not needed:
return None
- minCoords = []
- maxCoords = []
+ minCoords = bytearray()
+ maxCoords = bytearray()
for axis in axisTags:
minValue, value, maxValue = self.axes.get(axis, (0.0, 0.0, 0.0))
- minCoords.append(struct.pack(">h", fl2fi(minValue, 14)))
- maxCoords.append(struct.pack(">h", fl2fi(maxValue, 14)))
- return bytesjoin(minCoords + maxCoords)
+ minCoords.extend(struct.pack(">h", fl2fi(minValue, 14)))
+ maxCoords.extend(struct.pack(">h", fl2fi(maxValue, 14)))
+ return minCoords + maxCoords
@staticmethod
def decompileCoord_(axisTags, data, offset):
@@ -193,11 +201,15 @@ class TupleVariation(object):
return coord, pos
@staticmethod
- def compilePoints(points, numPointsInGlyph):
+ def compilePoints(points):
# If the set consists of all points in the glyph, it gets encoded with
# a special encoding: a single zero byte.
- if len(points) == numPointsInGlyph:
- return b"\0"
+ #
+ # To use this optimization, points passed in must be empty set.
+ # The following two lines are not strictly necessary as the main code
+ # below would emit the same. But this is most common and faster.
+ if not points:
+ return b'\0'
# In the 'gvar' table, the packing of point numbers is a little surprising.
# It consists of multiple runs, each being a delta-encoded list of integers.
@@ -209,19 +221,24 @@ class TupleVariation(object):
points.sort()
numPoints = len(points)
+ result = bytearray()
# The binary representation starts with the total number of points in the set,
# encoded into one or two bytes depending on the value.
if numPoints < 0x80:
- result = [bytechr(numPoints)]
+ result.append(numPoints)
else:
- result = [bytechr((numPoints >> 8) | 0x80) + bytechr(numPoints & 0xff)]
+ result.append((numPoints >> 8) | 0x80)
+ result.append(numPoints & 0xff)
MAX_RUN_LENGTH = 127
pos = 0
lastValue = 0
while pos < numPoints:
- run = io.BytesIO()
runLength = 0
+
+ headerPos = len(result)
+ result.append(0)
+
useByteEncoding = None
while pos < numPoints and runLength <= MAX_RUN_LENGTH:
curValue = points[pos]
@@ -234,38 +251,36 @@ class TupleVariation(object):
# TODO This never switches back to a byte-encoding from a short-encoding.
# That's suboptimal.
if useByteEncoding:
- run.write(bytechr(delta))
+ result.append(delta)
else:
- run.write(bytechr(delta >> 8))
- run.write(bytechr(delta & 0xff))
+ result.append(delta >> 8)
+ result.append(delta & 0xff)
lastValue = curValue
pos += 1
runLength += 1
if useByteEncoding:
- runHeader = bytechr(runLength - 1)
+ result[headerPos] = runLength - 1
else:
- runHeader = bytechr((runLength - 1) | POINTS_ARE_WORDS)
- result.append(runHeader)
- result.append(run.getvalue())
+ result[headerPos] = (runLength - 1) | POINTS_ARE_WORDS
- return bytesjoin(result)
+ return result
@staticmethod
def decompilePoints_(numPoints, data, offset, tableTag):
"""(numPoints, data, offset, tableTag) --> ([point1, point2, ...], newOffset)"""
assert tableTag in ('cvar', 'gvar')
pos = offset
- numPointsInData = byteord(data[pos])
+ numPointsInData = data[pos]
pos += 1
if (numPointsInData & POINTS_ARE_WORDS) != 0:
- numPointsInData = (numPointsInData & POINT_RUN_COUNT_MASK) << 8 | byteord(data[pos])
+ numPointsInData = (numPointsInData & POINT_RUN_COUNT_MASK) << 8 | data[pos]
pos += 1
if numPointsInData == 0:
return (range(numPoints), pos)
result = []
while len(result) < numPointsInData:
- runHeader = byteord(data[pos])
+ runHeader = data[pos]
pos += 1
numPointsInRun = (runHeader & POINT_RUN_COUNT_MASK) + 1
point = 0
@@ -298,23 +313,28 @@ class TupleVariation(object):
(",".join(sorted(badPoints)), tableTag))
return (result, pos)
- def compileDeltas(self, points):
+ def compileDeltas(self):
deltaX = []
deltaY = []
- for p in sorted(list(points)):
- c = self.coordinates[p]
- if type(c) is tuple and len(c) == 2:
+ if self.getCoordWidth() == 2:
+ for c in self.coordinates:
+ if c is None:
+ continue
deltaX.append(c[0])
deltaY.append(c[1])
- elif type(c) is int:
+ else:
+ for c in self.coordinates:
+ if c is None:
+ continue
deltaX.append(c)
- elif c is not None:
- raise TypeError("invalid type of delta: %s" % type(c))
- return self.compileDeltaValues_(deltaX) + self.compileDeltaValues_(deltaY)
+ bytearr = bytearray()
+ self.compileDeltaValues_(deltaX, bytearr)
+ self.compileDeltaValues_(deltaY, bytearr)
+ return bytearr
@staticmethod
- def compileDeltaValues_(deltas):
- """[value1, value2, value3, ...] --> bytestring
+ def compileDeltaValues_(deltas, bytearr=None):
+ """[value1, value2, value3, ...] --> bytearray
Emits a sequence of runs. Each run starts with a
byte-sized header whose 6 least significant bits
@@ -329,38 +349,41 @@ class TupleVariation(object):
bytes; if (header & 0x40) is set, the delta values are
signed 16-bit integers.
""" # Explaining the format because the 'gvar' spec is hard to understand.
- stream = io.BytesIO()
+ if bytearr is None:
+ bytearr = bytearray()
pos = 0
- while pos < len(deltas):
+ numDeltas = len(deltas)
+ while pos < numDeltas:
value = deltas[pos]
if value == 0:
- pos = TupleVariation.encodeDeltaRunAsZeroes_(deltas, pos, stream)
- elif value >= -128 and value <= 127:
- pos = TupleVariation.encodeDeltaRunAsBytes_(deltas, pos, stream)
+ pos = TupleVariation.encodeDeltaRunAsZeroes_(deltas, pos, bytearr)
+ elif -128 <= value <= 127:
+ pos = TupleVariation.encodeDeltaRunAsBytes_(deltas, pos, bytearr)
else:
- pos = TupleVariation.encodeDeltaRunAsWords_(deltas, pos, stream)
- return stream.getvalue()
+ pos = TupleVariation.encodeDeltaRunAsWords_(deltas, pos, bytearr)
+ return bytearr
@staticmethod
- def encodeDeltaRunAsZeroes_(deltas, offset, stream):
- runLength = 0
+ def encodeDeltaRunAsZeroes_(deltas, offset, bytearr):
pos = offset
numDeltas = len(deltas)
- while pos < numDeltas and runLength < 64 and deltas[pos] == 0:
+ while pos < numDeltas and deltas[pos] == 0:
pos += 1
- runLength += 1
- assert runLength >= 1 and runLength <= 64
- stream.write(bytechr(DELTAS_ARE_ZERO | (runLength - 1)))
+ runLength = pos - offset
+ while runLength >= 64:
+ bytearr.append(DELTAS_ARE_ZERO | 63)
+ runLength -= 64
+ if runLength:
+ bytearr.append(DELTAS_ARE_ZERO | (runLength - 1))
return pos
@staticmethod
- def encodeDeltaRunAsBytes_(deltas, offset, stream):
- runLength = 0
+ def encodeDeltaRunAsBytes_(deltas, offset, bytearr):
pos = offset
numDeltas = len(deltas)
- while pos < numDeltas and runLength < 64:
+ while pos < numDeltas:
value = deltas[pos]
- if value < -128 or value > 127:
+ if not (-128 <= value <= 127):
break
# Within a byte-encoded run of deltas, a single zero
# is best stored literally as 0x00 value. However,
@@ -373,19 +396,22 @@ class TupleVariation(object):
if value == 0 and pos+1 < numDeltas and deltas[pos+1] == 0:
break
pos += 1
- runLength += 1
- assert runLength >= 1 and runLength <= 64
- stream.write(bytechr(runLength - 1))
- for i in range(offset, pos):
- stream.write(struct.pack('b', otRound(deltas[i])))
+ runLength = pos - offset
+ while runLength >= 64:
+ bytearr.append(63)
+ bytearr.extend(array.array('b', deltas[offset:offset+64]))
+ offset += 64
+ runLength -= 64
+ if runLength:
+ bytearr.append(runLength - 1)
+ bytearr.extend(array.array('b', deltas[offset:pos]))
return pos
@staticmethod
- def encodeDeltaRunAsWords_(deltas, offset, stream):
- runLength = 0
+ def encodeDeltaRunAsWords_(deltas, offset, bytearr):
pos = offset
numDeltas = len(deltas)
- while pos < numDeltas and runLength < 64:
+ while pos < numDeltas:
value = deltas[pos]
# Within a word-encoded run of deltas, it is easiest
# to start a new run (with a different encoding)
@@ -403,15 +429,22 @@ class TupleVariation(object):
# [0x6666, 2, 0x7777] becomes 7 bytes when storing
# the value literally (42 66 66 00 02 77 77), but 8 bytes
# when starting a new run (40 66 66 00 02 40 77 77).
- isByteEncodable = lambda value: value >= -128 and value <= 127
- if isByteEncodable(value) and pos+1 < numDeltas and isByteEncodable(deltas[pos+1]):
+ if (-128 <= value <= 127) and pos+1 < numDeltas and (-128 <= deltas[pos+1] <= 127):
break
pos += 1
- runLength += 1
- assert runLength >= 1 and runLength <= 64
- stream.write(bytechr(DELTAS_ARE_WORDS | (runLength - 1)))
- for i in range(offset, pos):
- stream.write(struct.pack('>h', otRound(deltas[i])))
+ runLength = pos - offset
+ while runLength >= 64:
+ bytearr.append(DELTAS_ARE_WORDS | 63)
+ a = array.array('h', deltas[offset:offset+64])
+ if sys.byteorder != "big": a.byteswap()
+ bytearr.extend(a)
+ offset += 64
+ runLength -= 64
+ if runLength:
+ bytearr.append(DELTAS_ARE_WORDS | (runLength - 1))
+ a = array.array('h', deltas[offset:pos])
+ if sys.byteorder != "big": a.byteswap()
+ bytearr.extend(a)
return pos
@staticmethod
@@ -420,7 +453,7 @@ class TupleVariation(object):
result = []
pos = offset
while len(result) < numDeltas:
- runHeader = byteord(data[pos])
+ runHeader = data[pos]
pos += 1
numDeltasInRun = (runHeader & DELTA_RUN_COUNT_MASK) + 1
if (runHeader & DELTAS_ARE_ZERO) != 0:
@@ -523,9 +556,9 @@ class TupleVariation(object):
# Shouldn't matter that this is different from fvar...?
axisTags = sorted(self.axes.keys())
- tupleData, auxData, _ = self.compile(axisTags, [], None)
+ tupleData, auxData = self.compile(axisTags)
unoptimizedLength = len(tupleData) + len(auxData)
- tupleData, auxData, _ = varOpt.compile(axisTags, [], None)
+ tupleData, auxData = varOpt.compile(axisTags)
optimizedLength = len(tupleData) + len(auxData)
if optimizedLength < unoptimizedLength:
@@ -577,87 +610,77 @@ def decompileSharedTuples(axisTags, sharedTupleCount, data, offset):
return result
-def compileSharedTuples(axisTags, variations):
- coordCount = {}
+def compileSharedTuples(axisTags, variations,
+ MAX_NUM_SHARED_COORDS = TUPLE_INDEX_MASK + 1):
+ coordCount = Counter()
for var in variations:
coord = var.compileCoord(axisTags)
- coordCount[coord] = coordCount.get(coord, 0) + 1
- sharedCoords = [(count, coord)
- for (coord, count) in coordCount.items() if count > 1]
- sharedCoords.sort(reverse=True)
- MAX_NUM_SHARED_COORDS = TUPLE_INDEX_MASK + 1
- sharedCoords = sharedCoords[:MAX_NUM_SHARED_COORDS]
- return [c[1] for c in sharedCoords] # Strip off counts.
+ coordCount[coord] += 1
+ # In python < 3.7, most_common() ordering is non-deterministic
+ # so apply a sort to make sure the ordering is consistent.
+ sharedCoords = sorted(
+ coordCount.most_common(MAX_NUM_SHARED_COORDS),
+ key=lambda item: (-item[1], item[0]),
+ )
+ return [c[0] for c in sharedCoords if c[1] > 1]
def compileTupleVariationStore(variations, pointCount,
axisTags, sharedTupleIndices,
useSharedPoints=True):
- variations = [v for v in variations if v.hasImpact()]
- if len(variations) == 0:
- return (0, b"", b"")
+ newVariations = []
+ pointDatas = []
+ # Compile all points and figure out sharing if desired
+ sharedPoints = None
- # Each glyph variation tuples modifies a set of control points. To
- # indicate which exact points are getting modified, a single tuple
- # can either refer to a shared set of points, or the tuple can
- # supply its private point numbers. Because the impact of sharing
- # can be positive (no need for a private point list) or negative
- # (need to supply 0,0 deltas for unused points), it is not obvious
- # how to determine which tuples should take their points from the
- # shared pool versus have their own. Perhaps we should resort to
- # brute force, and try all combinations? However, if a glyph has n
- # variation tuples, we would need to try 2^n combinations (because
- # each tuple may or may not be part of the shared set). How many
- # variations tuples do glyphs have?
- #
- # Skia.ttf: {3: 1, 5: 11, 6: 41, 7: 62, 8: 387, 13: 1, 14: 3}
- # JamRegular.ttf: {3: 13, 4: 122, 5: 1, 7: 4, 8: 1, 9: 1, 10: 1}
- # BuffaloGalRegular.ttf: {1: 16, 2: 13, 4: 2, 5: 4, 6: 19, 7: 1, 8: 3, 9: 8}
- # (Reading example: In Skia.ttf, 41 glyphs have 6 variation tuples).
- #
-
- # Is this even worth optimizing? If we never use a shared point
- # list, the private lists will consume 112K for Skia, 5K for
- # BuffaloGalRegular, and 15K for JamRegular. If we always use a
- # shared point list, the shared lists will consume 16K for Skia,
- # 3K for BuffaloGalRegular, and 10K for JamRegular. However, in
- # the latter case the delta arrays will become larger, but I
- # haven't yet measured by how much. From gut feeling (which may be
- # wrong), the optimum is to share some but not all points;
- # however, then we would need to try all combinations.
- #
- # For the time being, we try two variants and then pick the better one:
- # (a) each tuple supplies its own private set of points;
- # (b) all tuples refer to a shared set of points, which consists of
- # "every control point in the glyph that has explicit deltas".
- usedPoints = set()
+ # Collect, count, and compile point-sets for all variation sets
+ pointSetCount = defaultdict(int)
for v in variations:
- usedPoints |= v.getUsedPoints()
+ points = v.getUsedPoints()
+ if points is None: # Empty variations
+ continue
+ pointSetCount[points] += 1
+ newVariations.append(v)
+ pointDatas.append(points)
+ variations = newVariations
+ del newVariations
+
+ if not variations:
+ return (0, b"", b"")
+
+ n = len(variations[0].coordinates)
+ assert all(len(v.coordinates) == n for v in variations), "Variation sets have different sizes"
+
+ compiledPoints = {pointSet:TupleVariation.compilePoints(pointSet)
+ for pointSet in pointSetCount}
+
+ tupleVariationCount = len(variations)
tuples = []
data = []
- someTuplesSharePoints = False
- sharedPointVariation = None # To keep track of a variation that uses shared points
- for v in variations:
- privateTuple, privateData, _ = v.compile(
- axisTags, sharedTupleIndices, sharedPoints=None)
- sharedTuple, sharedData, usesSharedPoints = v.compile(
- axisTags, sharedTupleIndices, sharedPoints=usedPoints)
- if useSharedPoints and (len(sharedTuple) + len(sharedData)) < (len(privateTuple) + len(privateData)):
- tuples.append(sharedTuple)
- data.append(sharedData)
- someTuplesSharePoints |= usesSharedPoints
- sharedPointVariation = v
- else:
- tuples.append(privateTuple)
- data.append(privateData)
- if someTuplesSharePoints:
- # Use the last of the variations that share points for compiling the packed point data
- data = sharedPointVariation.compilePoints(usedPoints, len(sharedPointVariation.coordinates)) + bytesjoin(data)
- tupleVariationCount = TUPLES_SHARE_POINT_NUMBERS | len(tuples)
- else:
- data = bytesjoin(data)
- tupleVariationCount = len(tuples)
- tuples = bytesjoin(tuples)
+
+ if useSharedPoints:
+ # Find point-set which saves most bytes.
+ def key(pn):
+ pointSet = pn[0]
+ count = pn[1]
+ return len(compiledPoints[pointSet]) * (count - 1)
+ sharedPoints = max(pointSetCount.items(), key=key)[0]
+
+ data.append(compiledPoints[sharedPoints])
+ tupleVariationCount |= TUPLES_SHARE_POINT_NUMBERS
+
+ # b'' implies "use shared points"
+ pointDatas = [compiledPoints[points] if points != sharedPoints else b''
+ for points in pointDatas]
+
+ for v,p in zip(variations, pointDatas):
+ thisTuple, thisData = v.compile(axisTags, sharedTupleIndices, pointData=p)
+
+ tuples.append(thisTuple)
+ data.append(thisData)
+
+ tuples = b''.join(tuples)
+ data = b''.join(data)
return tupleVariationCount, tuples, data
diff --git a/Lib/fontTools/ttLib/tables/V_O_R_G_.py b/Lib/fontTools/ttLib/tables/V_O_R_G_.py
index 0b7fe959..e03e164b 100644
--- a/Lib/fontTools/ttLib/tables/V_O_R_G_.py
+++ b/Lib/fontTools/ttLib/tables/V_O_R_G_.py
@@ -1,14 +1,15 @@
-from fontTools.misc.py23 import bytesjoin
-from fontTools.misc.textTools import safeEval
+from fontTools.misc.textTools import bytesjoin, safeEval
from . import DefaultTable
import struct
class table_V_O_R_G_(DefaultTable.DefaultTable):
- """ This table is structured so that you can treat it like a dictionary keyed by glyph name.
- ttFont['VORG'][<glyphName>] will return the vertical origin for any glyph
- ttFont['VORG'][<glyphName>] = <value> will set the vertical origin for any glyph.
+ """This table is structured so that you can treat it like a dictionary keyed by glyph name.
+
+ ``ttFont['VORG'][<glyphName>]`` will return the vertical origin for any glyph.
+
+ ``ttFont['VORG'][<glyphName>] = <value>`` will set the vertical origin for any glyph.
"""
def decompile(self, data, ttFont):
diff --git a/Lib/fontTools/ttLib/tables/_a_n_k_r.py b/Lib/fontTools/ttLib/tables/_a_n_k_r.py
index 1f2946c2..16f5c184 100644
--- a/Lib/fontTools/ttLib/tables/_a_n_k_r.py
+++ b/Lib/fontTools/ttLib/tables/_a_n_k_r.py
@@ -1,11 +1,12 @@
from .otBase import BaseTTXConverter
-
-# The anchor point table provides a way to define anchor points.
-# These are points within the coordinate space of a given glyph,
-# independent of the control points used to render the glyph.
-# Anchor points are used in conjunction with the 'kerx' table.
-#
-# https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6ankr.html
class table__a_n_k_r(BaseTTXConverter):
+ """
+ The anchor point table provides a way to define anchor points.
+ These are points within the coordinate space of a given glyph,
+ independent of the control points used to render the glyph.
+ Anchor points are used in conjunction with the 'kerx' table.
+
+ See also https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6ankr.html
+ """
pass
diff --git a/Lib/fontTools/ttLib/tables/_a_v_a_r.py b/Lib/fontTools/ttLib/tables/_a_v_a_r.py
index 2b6a40ed..16f2a219 100644
--- a/Lib/fontTools/ttLib/tables/_a_v_a_r.py
+++ b/Lib/fontTools/ttLib/tables/_a_v_a_r.py
@@ -1,4 +1,3 @@
-from fontTools.misc.py23 import bytesjoin
from fontTools.misc import sstruct
from fontTools.misc.fixedTools import (
fixedToFloat as fi2fl,
@@ -6,6 +5,7 @@ from fontTools.misc.fixedTools import (
floatToFixedToStr as fl2str,
strToFixedToFloat as str2fl,
)
+from fontTools.misc.textTools import bytesjoin
from fontTools.ttLib import TTLibError
from . import DefaultTable
import struct
@@ -28,6 +28,28 @@ assert sstruct.calcsize(AVAR_HEADER_FORMAT) == 8, sstruct.calcsize(AVAR_HEADER_F
class table__a_v_a_r(DefaultTable.DefaultTable):
+ """Axis Variations Table
+
+ This class represents the ``avar`` table of a variable font. The object has one
+ substantive attribute, ``segments``, which maps axis tags to a segments dictionary::
+
+ >>> font["avar"].segments # doctest: +SKIP
+ {'wght': {-1.0: -1.0,
+ 0.0: 0.0,
+ 0.125: 0.11444091796875,
+ 0.25: 0.23492431640625,
+ 0.5: 0.35540771484375,
+ 0.625: 0.5,
+ 0.75: 0.6566162109375,
+ 0.875: 0.81927490234375,
+ 1.0: 1.0},
+ 'ital': {-1.0: -1.0, 0.0: 0.0, 1.0: 1.0}}
+
+ Notice that the segments dictionary is made up of normalized values. A valid
+ ``avar`` segment mapping must contain the entries ``-1.0: -1.0, 0.0: 0.0, 1.0: 1.0``.
+ fontTools does not enforce this, so it is your responsibility to ensure that
+ mappings are valid.
+ """
dependencies = ["fvar"]
diff --git a/Lib/fontTools/ttLib/tables/_c_i_d_g.py b/Lib/fontTools/ttLib/tables/_c_i_d_g.py
index de83d4d6..2517e785 100644
--- a/Lib/fontTools/ttLib/tables/_c_i_d_g.py
+++ b/Lib/fontTools/ttLib/tables/_c_i_d_g.py
@@ -2,17 +2,18 @@
from .otBase import BaseTTXConverter
-# The AAT ‘cidg’ table has almost the same structure as ‘gidc’,
-# just mapping CIDs to GlyphIDs instead of the reverse direction.
-#
-# It is useful for fonts that may be used by a PDF renderer in lieu of
-# a font reference with a known glyph collection but no subsetted
-# glyphs. For instance, a PDF can say “please use a font conforming
-# to Adobe-Japan-1”; the ‘cidg’ mapping is necessary if the font is,
-# say, a TrueType font. ‘gidc’ is lossy for this purpose and is
-# obsoleted by ‘cidg’.
-#
-# For example, the first font in /System/Library/Fonts/PingFang.ttc
-# (which Apple ships pre-installed on MacOS 10.12.6) has a ‘cidg’ table.
class table__c_i_d_g(BaseTTXConverter):
+ """The AAT ``cidg`` table has almost the same structure as ``gidc``,
+just mapping CIDs to GlyphIDs instead of the reverse direction.
+
+It is useful for fonts that may be used by a PDF renderer in lieu of
+a font reference with a known glyph collection but no subsetted
+glyphs. For instance, a PDF can say “please use a font conforming
+to Adobe-Japan-1”; the ``cidg`` mapping is necessary if the font is,
+say, a TrueType font. ``gidc`` is lossy for this purpose and is
+obsoleted by ``cidg``.
+
+For example, the first font in ``/System/Library/Fonts/PingFang.ttc``
+(which Apple ships pre-installed on MacOS 10.12.6) has a ``cidg`` table.
+"""
pass
diff --git a/Lib/fontTools/ttLib/tables/_c_m_a_p.py b/Lib/fontTools/ttLib/tables/_c_m_a_p.py
index a65a0c25..a31b5059 100644
--- a/Lib/fontTools/ttLib/tables/_c_m_a_p.py
+++ b/Lib/fontTools/ttLib/tables/_c_m_a_p.py
@@ -1,5 +1,4 @@
-from fontTools.misc.py23 import bytesjoin
-from fontTools.misc.textTools import safeEval, readHex
+from fontTools.misc.textTools import bytesjoin, safeEval, readHex
from fontTools.misc.encodingTools import getEncoding
from fontTools.ttLib import getSearchRange
from fontTools.unicode import Unicode
@@ -15,21 +14,61 @@ log = logging.getLogger(__name__)
def _make_map(font, chars, gids):
assert len(chars) == len(gids)
+ glyphNames = font.getGlyphNameMany(gids)
cmap = {}
- glyphOrder = font.getGlyphOrder()
- for char,gid in zip(chars,gids):
+ for char,gid,name in zip(chars,gids,glyphNames):
if gid == 0:
continue
- try:
- name = glyphOrder[gid]
- except IndexError:
- name = font.getGlyphName(gid)
cmap[char] = name
return cmap
class table__c_m_a_p(DefaultTable.DefaultTable):
+ """Character to Glyph Index Mapping Table
+
+ This class represents the `cmap <https://docs.microsoft.com/en-us/typography/opentype/spec/cmap>`_
+ table, which maps between input characters (in Unicode or other system encodings)
+ and glyphs within the font. The ``cmap`` table contains one or more subtables
+ which determine the mapping of of characters to glyphs across different platforms
+ and encoding systems.
+
+ ``table__c_m_a_p`` objects expose an accessor ``.tables`` which provides access
+ to the subtables, although it is normally easier to retrieve individual subtables
+ through the utility methods described below. To add new subtables to a font,
+ first determine the subtable format (if in doubt use format 4 for glyphs within
+ the BMP, format 12 for glyphs outside the BMP, and format 14 for Unicode Variation
+ Sequences) construct subtable objects with ``CmapSubtable.newSubtable(format)``,
+ and append them to the ``.tables`` list.
+
+ Within a subtable, the mapping of characters to glyphs is provided by the ``.cmap``
+ attribute.
+
+ Example::
+
+ cmap4_0_3 = CmapSubtable.newSubtable(4)
+ cmap4_0_3.platformID = 0
+ cmap4_0_3.platEncID = 3
+ cmap4_0_3.language = 0
+ cmap4_0_3.cmap = { 0xC1: "Aacute" }
+
+ cmap = newTable("cmap")
+ cmap.tableVersion = 0
+ cmap.tables = [cmap4_0_3]
+ """
def getcmap(self, platformID, platEncID):
+ """Returns the first subtable which matches the given platform and encoding.
+
+ Args:
+ platformID (int): The platform ID. Use 0 for Unicode, 1 for Macintosh
+ (deprecated for new fonts), 2 for ISO (deprecated) and 3 for Windows.
+ encodingID (int): Encoding ID. Interpretation depends on the platform ID.
+ See the OpenType specification for details.
+
+ Returns:
+ An object which is a subclass of :py:class:`CmapSubtable` if a matching
+ subtable is found within the font, or ``None`` otherwise.
+ """
+
for subtable in self.tables:
if (subtable.platformID == platformID and
subtable.platEncID == platEncID):
@@ -37,13 +76,22 @@ class table__c_m_a_p(DefaultTable.DefaultTable):
return None # not found
def getBestCmap(self, cmapPreferences=((3, 10), (0, 6), (0, 4), (3, 1), (0, 3), (0, 2), (0, 1), (0, 0))):
- """Return the 'best' unicode cmap dictionary available in the font,
- or None, if no unicode cmap subtable is available.
+ """Returns the 'best' Unicode cmap dictionary available in the font
+ or ``None``, if no Unicode cmap subtable is available.
By default it will search for the following (platformID, platEncID)
- pairs:
- (3, 10), (0, 6), (0, 4), (3, 1), (0, 3), (0, 2), (0, 1), (0, 0)
- This can be customized via the cmapPreferences argument.
+ pairs in order::
+
+ (3, 10), # Windows Unicode full repertoire
+ (0, 6), # Unicode full repertoire (format 13 subtable)
+ (0, 4), # Unicode 2.0 full repertoire
+ (3, 1), # Windows Unicode BMP
+ (0, 3), # Unicode 2.0 BMP
+ (0, 2), # Unicode ISO/IEC 10646
+ (0, 1), # Unicode 1.1
+ (0, 0) # Unicode 1.0
+
+ This order can be customized via the ``cmapPreferences`` argument.
"""
for platformID, platEncID in cmapPreferences:
cmapSubtable = self.getcmap(platformID, platEncID)
@@ -52,12 +100,20 @@ class table__c_m_a_p(DefaultTable.DefaultTable):
return None # None of the requested cmap subtables were found
def buildReversed(self):
- """Returns a reverse cmap such as {'one':{0x31}, 'A':{0x41,0x391}}.
+ """Builds a reverse mapping dictionary
+
+ Iterates over all Unicode cmap tables and returns a dictionary mapping
+ glyphs to sets of codepoints, such as::
+
+ {
+ 'one': {0x31}
+ 'A': {0x41,0x391}
+ }
The values are sets of Unicode codepoints because
some fonts map different codepoints to the same glyph.
- For example, U+0041 LATIN CAPITAL LETTER A and U+0391
- GREEK CAPITAL LETTER ALPHA are sometimes the same glyph.
+ For example, ``U+0041 LATIN CAPITAL LETTER A`` and ``U+0391
+ GREEK CAPITAL LETTER ALPHA`` are sometimes the same glyph.
"""
result = {}
for subtable in self.tables:
@@ -100,6 +156,12 @@ class table__c_m_a_p(DefaultTable.DefaultTable):
else:
seenOffsets[offset] = i
tables.append(table)
+ if ttFont.lazy is False: # Be lazy for None and True
+ self.ensureDecompiled()
+
+ def ensureDecompiled(self):
+ for st in self.tables:
+ st.ensureDecompiled()
def compile(self, ttFont):
self.tables.sort() # sort according to the spec; see CmapSubtable.__lt__()
@@ -145,6 +207,16 @@ class table__c_m_a_p(DefaultTable.DefaultTable):
class CmapSubtable(object):
+ """Base class for all cmap subtable formats.
+
+ Subclasses which handle the individual subtable formats are named
+ ``cmap_format_0``, ``cmap_format_2`` etc. Use :py:meth:`getSubtableClass`
+ to retrieve the concrete subclass, or :py:meth:`newSubtable` to get a
+ new subtable object for a given format.
+
+ The object exposes a ``.cmap`` attribute, which contains a dictionary mapping
+ character codepoints to glyph names.
+ """
@staticmethod
def getSubtableClass(format):
@@ -153,7 +225,8 @@ class CmapSubtable(object):
@staticmethod
def newSubtable(format):
- """Return a new instance of a subtable for format."""
+ """Return a new instance of a subtable for the given format
+ ."""
subtableClass = CmapSubtable.getSubtableClass(format)
return subtableClass(format)
@@ -161,6 +234,17 @@ class CmapSubtable(object):
self.format = format
self.data = None
self.ttFont = None
+ self.platformID = None #: The platform ID of this subtable
+ self.platEncID = None #: The encoding ID of this subtable (interpretation depends on ``platformID``)
+ self.language = None #: The language ID of this subtable (Macintosh platform only)
+
+ def ensureDecompiled(self):
+ if self.data is None:
+ return
+ self.decompile(None, None) # use saved data.
+ self.data = None # Once this table has been decompiled, make sure we don't
+ # just return the original data. Also avoids recursion when
+ # called with an attribute that the cmap subtable doesn't have.
def __getattr__(self, attr):
# allow lazy decompilation of subtables.
@@ -168,10 +252,7 @@ class CmapSubtable(object):
raise AttributeError(attr)
if self.data is None:
raise AttributeError(attr)
- self.decompile(None, None) # use saved data.
- self.data = None # Once this table has been decompiled, make sure we don't
- # just return the original data. Also avoids recursion when
- # called with an attribute that the cmap subtable doesn't have.
+ self.ensureDecompiled()
return getattr(self, attr)
def decompileHeader(self, data, ttFont):
@@ -198,20 +279,22 @@ class CmapSubtable(object):
def getEncoding(self, default=None):
"""Returns the Python encoding name for this cmap subtable based on its platformID,
platEncID, and language. If encoding for these values is not known, by default
- None is returned. That can be overriden by passing a value to the default
+ ``None`` is returned. That can be overridden by passing a value to the ``default``
argument.
Note that if you want to choose a "preferred" cmap subtable, most of the time
- self.isUnicode() is what you want as that one only returns true for the modern,
+ ``self.isUnicode()`` is what you want as that one only returns true for the modern,
commonly used, Unicode-compatible triplets, not the legacy ones.
"""
return getEncoding(self.platformID, self.platEncID, self.language, default)
def isUnicode(self):
+ """Returns true if the characters are interpreted as Unicode codepoints."""
return (self.platformID == 0 or
(self.platformID == 3 and self.platEncID in [0, 1, 10]))
def isSymbol(self):
+ """Returns true if the subtable is for the Symbol encoding (3,0)"""
return self.platformID == 3 and self.platEncID == 0
def _writeCodes(self, codes, writer):
diff --git a/Lib/fontTools/ttLib/tables/_c_v_a_r.py b/Lib/fontTools/ttLib/tables/_c_v_a_r.py
index 09b2c16c..a67efe02 100644
--- a/Lib/fontTools/ttLib/tables/_c_v_a_r.py
+++ b/Lib/fontTools/ttLib/tables/_c_v_a_r.py
@@ -1,6 +1,6 @@
-from fontTools.misc.py23 import bytesjoin
from . import DefaultTable
from fontTools.misc import sstruct
+from fontTools.misc.textTools import bytesjoin
from fontTools.ttLib.tables.TupleVariation import \
compileTupleVariationStore, decompileTupleVariationStore, TupleVariation
@@ -41,7 +41,7 @@ class table__c_v_a_r(DefaultTable.DefaultTable):
"tupleVariationCount": tupleVariationCount,
"offsetToData": CVAR_HEADER_SIZE + len(tuples),
}
- return bytesjoin([
+ return b''.join([
sstruct.pack(CVAR_HEADER_FORMAT, header),
tuples,
data
diff --git a/Lib/fontTools/ttLib/tables/_f_e_a_t.py b/Lib/fontTools/ttLib/tables/_f_e_a_t.py
index eb03f8ba..079b514c 100644
--- a/Lib/fontTools/ttLib/tables/_f_e_a_t.py
+++ b/Lib/fontTools/ttLib/tables/_f_e_a_t.py
@@ -2,4 +2,10 @@ from .otBase import BaseTTXConverter
class table__f_e_a_t(BaseTTXConverter):
+ """The feature name table is an AAT (Apple Advanced Typography) table for
+ storing font features, settings, and their human-readable names. It should
+ not be confused with the ``Feat`` table or the OpenType Layout ``GSUB``/``GPOS``
+ tables. See `Feature Name Table <https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6feat.html>`_
+ in the TrueType Reference Manual for more information on the structure and
+ purpose of this table."""
pass
diff --git a/Lib/fontTools/ttLib/tables/_f_v_a_r.py b/Lib/fontTools/ttLib/tables/_f_v_a_r.py
index 7487da62..d7409195 100644
--- a/Lib/fontTools/ttLib/tables/_f_v_a_r.py
+++ b/Lib/fontTools/ttLib/tables/_f_v_a_r.py
@@ -1,4 +1,3 @@
-from fontTools.misc.py23 import Tag, bytesjoin
from fontTools.misc import sstruct
from fontTools.misc.fixedTools import (
fixedToFloat as fi2fl,
@@ -6,7 +5,7 @@ from fontTools.misc.fixedTools import (
floatToFixedToStr as fl2str,
strToFixedToFloat as str2fl,
)
-from fontTools.misc.textTools import safeEval
+from fontTools.misc.textTools import Tag, bytesjoin, safeEval
from fontTools.ttLib import TTLibError
from . import DefaultTable
import struct
diff --git a/Lib/fontTools/ttLib/tables/_g_l_y_f.py b/Lib/fontTools/ttLib/tables/_g_l_y_f.py
index 4680ddbf..14c4519d 100644
--- a/Lib/fontTools/ttLib/tables/_g_l_y_f.py
+++ b/Lib/fontTools/ttLib/tables/_g_l_y_f.py
@@ -1,12 +1,11 @@
"""_g_l_y_f.py -- Converter classes for the 'glyf' table."""
from collections import namedtuple
-from fontTools.misc.py23 import bytechr, byteord, bytesjoin, tostr
from fontTools.misc import sstruct
from fontTools import ttLib
from fontTools import version
-from fontTools.misc.textTools import safeEval, pad
-from fontTools.misc.arrayTools import calcBounds, calcIntBounds, pointInRect
+from fontTools.misc.textTools import tostr, safeEval, pad
+from fontTools.misc.arrayTools import calcIntBounds, pointInRect
from fontTools.misc.bezierTools import calcQuadraticBounds
from fontTools.misc.fixedTools import (
fixedToFloat as fi2fl,
@@ -25,6 +24,7 @@ import logging
import os
from fontTools.misc import xmlWriter
from fontTools.misc.filenames import userNameToFileName
+from fontTools.misc.loggingTools import deprecateFunction
log = logging.getLogger(__name__)
@@ -47,6 +47,35 @@ SCALE_COMPONENT_OFFSET_DEFAULT = 0 # 0 == MS, 1 == Apple
class table__g_l_y_f(DefaultTable.DefaultTable):
+ """Glyph Data Table
+
+ This class represents the `glyf <https://docs.microsoft.com/en-us/typography/opentype/spec/glyf>`_
+ table, which contains outlines for glyphs in TrueType format. In many cases,
+ it is easier to access and manipulate glyph outlines through the ``GlyphSet``
+ object returned from :py:meth:`fontTools.ttLib.ttFont.getGlyphSet`::
+
+ >> from fontTools.pens.boundsPen import BoundsPen
+ >> glyphset = font.getGlyphSet()
+ >> bp = BoundsPen(glyphset)
+ >> glyphset["A"].draw(bp)
+ >> bp.bounds
+ (19, 0, 633, 716)
+
+ However, this class can be used for low-level access to the ``glyf`` table data.
+ Objects of this class support dictionary-like access, mapping glyph names to
+ :py:class:`Glyph` objects::
+
+ >> glyf = font["glyf"]
+ >> len(glyf["Aacute"].components)
+ 2
+
+ Note that when adding glyphs to the font via low-level access to the ``glyf``
+ table, the new glyphs must also be added to the ``hmtx``/``vmtx`` table::
+
+ >> font["glyf"]["divisionslash"] = Glyph()
+ >> font["hmtx"]["divisionslash"] = (640, 0)
+
+ """
# this attribute controls the amount of padding applied to glyph data upon compile.
# Glyph lenghts are aligned to multiples of the specified value.
@@ -81,8 +110,11 @@ class table__g_l_y_f(DefaultTable.DefaultTable):
if noname:
log.warning('%s glyphs have no name', noname)
if ttFont.lazy is False: # Be lazy for None and True
- for glyph in self.glyphs.values():
- glyph.expand(self)
+ self.ensureDecompiled()
+
+ def ensureDecompiled(self):
+ for glyph in self.glyphs.values():
+ glyph.expand(self)
def compile(self, ttFont):
if not hasattr(self, "glyphOrder"):
@@ -117,7 +149,7 @@ class table__g_l_y_f(DefaultTable.DefaultTable):
currentLocation += len(glyphData)
locations[len(dataList)] = currentLocation
- data = bytesjoin(dataList)
+ data = b''.join(dataList)
if 'loca' in ttFont:
ttFont['loca'].set(locations)
if 'maxp' in ttFont:
@@ -145,10 +177,10 @@ class table__g_l_y_f(DefaultTable.DefaultTable):
path, ext = os.path.splitext(writer.file.name)
existingGlyphFiles = set()
for glyphName in glyphNames:
- if glyphName not in self:
+ glyph = self.get(glyphName)
+ if glyph is None:
log.warning("glyph '%s' does not exist in glyf table", glyphName)
continue
- glyph = self[glyphName]
if glyph.numberOfContours:
if splitGlyphs:
glyphPath = userNameToFileName(
@@ -215,16 +247,33 @@ class table__g_l_y_f(DefaultTable.DefaultTable):
glyph.compact(self, 0)
def setGlyphOrder(self, glyphOrder):
+ """Sets the glyph order
+
+ Args:
+ glyphOrder ([str]): List of glyph names in order.
+ """
self.glyphOrder = glyphOrder
def getGlyphName(self, glyphID):
+ """Returns the name for the glyph with the given ID.
+
+ Raises a ``KeyError`` if the glyph name is not found in the font.
+ """
return self.glyphOrder[glyphID]
def getGlyphID(self, glyphName):
+ """Returns the ID of the glyph with the given name.
+
+ Raises a ``ValueError`` if the glyph is not found in the font.
+ """
# XXX optimize with reverse dict!!!
return self.glyphOrder.index(glyphName)
def removeHinting(self):
+ """Removes TrueType hints from all glyphs in the glyphset.
+
+ See :py:meth:`Glyph.removeHinting`.
+ """
for glyph in self.glyphs.values():
glyph.removeHinting()
@@ -236,6 +285,12 @@ class table__g_l_y_f(DefaultTable.DefaultTable):
__contains__ = has_key
+ def get(self, glyphName, default=None):
+ glyph = self.glyphs.get(glyphName, default)
+ if glyph is not None:
+ glyph.expand(self)
+ return glyph
+
def __getitem__(self, glyphName):
glyph = self.glyphs[glyphName]
glyph.expand(self)
@@ -254,49 +309,33 @@ class table__g_l_y_f(DefaultTable.DefaultTable):
assert len(self.glyphOrder) == len(self.glyphs)
return len(self.glyphs)
- def getPhantomPoints(self, glyphName, ttFont, defaultVerticalOrigin=None):
+ def _getPhantomPoints(self, glyphName, hMetrics, vMetrics=None):
"""Compute the four "phantom points" for the given glyph from its bounding box
and the horizontal and vertical advance widths and sidebearings stored in the
ttFont's "hmtx" and "vmtx" tables.
- If the ttFont doesn't contain a "vmtx" table, the hhea.ascent is used as the
- vertical origin, and the head.unitsPerEm as the vertical advance.
+ 'hMetrics' should be ttFont['hmtx'].metrics.
- The "defaultVerticalOrigin" (Optional[int]) is needed when the ttFont contains
- neither a "vmtx" nor an "hhea" table, as may happen with 'sparse' masters.
- The value should be the hhea.ascent of the default master.
+ 'vMetrics' should be ttFont['vmtx'].metrics if there is "vmtx" or None otherwise.
+ If there is no vMetrics passed in, vertical phantom points are set to the zero coordinate.
https://docs.microsoft.com/en-us/typography/opentype/spec/tt_instructing_glyphs#phantoms
"""
glyph = self[glyphName]
- assert glyphName in ttFont["hmtx"].metrics, ttFont["hmtx"].metrics
- horizontalAdvanceWidth, leftSideBearing = ttFont["hmtx"].metrics[glyphName]
if not hasattr(glyph, 'xMin'):
glyph.recalcBounds(self)
+
+ horizontalAdvanceWidth, leftSideBearing = hMetrics[glyphName]
leftSideX = glyph.xMin - leftSideBearing
rightSideX = leftSideX + horizontalAdvanceWidth
- if "vmtx" in ttFont:
- verticalAdvanceWidth, topSideBearing = ttFont["vmtx"].metrics[glyphName]
+
+ if vMetrics:
+ verticalAdvanceWidth, topSideBearing = vMetrics[glyphName]
topSideY = topSideBearing + glyph.yMax
+ bottomSideY = topSideY - verticalAdvanceWidth
else:
- # without vmtx, use ascent as vertical origin and UPEM as vertical advance
- # like HarfBuzz does
- verticalAdvanceWidth = ttFont["head"].unitsPerEm
- if "hhea" in ttFont:
- topSideY = ttFont["hhea"].ascent
- else:
- # sparse masters may not contain an hhea table; use the ascent
- # of the default master as the vertical origin
- if defaultVerticalOrigin is not None:
- topSideY = defaultVerticalOrigin
- else:
- log.warning(
- "font is missing both 'vmtx' and 'hhea' tables, "
- "and no 'defaultVerticalOrigin' was provided; "
- "the vertical phantom points may be incorrect."
- )
- topSideY = verticalAdvanceWidth
- bottomSideY = topSideY - verticalAdvanceWidth
+ bottomSideY = topSideY = 0
+
return [
(leftSideX, 0),
(rightSideX, 0),
@@ -304,7 +343,7 @@ class table__g_l_y_f(DefaultTable.DefaultTable):
(0, bottomSideY),
]
- def getCoordinatesAndControls(self, glyphName, ttFont, defaultVerticalOrigin=None):
+ def _getCoordinatesAndControls(self, glyphName, hMetrics, vMetrics=None):
"""Return glyph coordinates and controls as expected by "gvar" table.
The coordinates includes four "phantom points" for the glyph metrics,
@@ -320,14 +359,14 @@ class table__g_l_y_f(DefaultTable.DefaultTable):
- components: list of base glyph names (str) for each component in
composite glyphs (None for simple glyphs).
- The "ttFont" and "defaultVerticalOrigin" args are used to compute the
- "phantom points" (see "getPhantomPoints" method).
+ The "hMetrics" and vMetrics are used to compute the "phantom points" (see
+ the "_getPhantomPoints" method).
Return None if the requested glyphName is not present.
"""
- if glyphName not in self.glyphs:
+ glyph = self.get(glyphName)
+ if glyph is None:
return None
- glyph = self[glyphName]
if glyph.isComposite():
coords = GlyphCoordinates(
[(getattr(c, 'x', 0), getattr(c, 'y', 0)) for c in glyph.components]
@@ -348,13 +387,11 @@ class table__g_l_y_f(DefaultTable.DefaultTable):
components=None,
)
# Add phantom points for (left, right, top, bottom) positions.
- phantomPoints = self.getPhantomPoints(
- glyphName, ttFont, defaultVerticalOrigin=defaultVerticalOrigin
- )
+ phantomPoints = self._getPhantomPoints(glyphName, hMetrics, vMetrics)
coords.extend(phantomPoints)
return coords, controls
- def setCoordinates(self, glyphName, coord, ttFont):
+ def _setCoordinates(self, glyphName, coord, hMetrics, vMetrics=None):
"""Set coordinates and metrics for the given glyph.
"coord" is an array of GlyphCoordinates which must include the "phantom
@@ -363,9 +400,11 @@ class table__g_l_y_f(DefaultTable.DefaultTable):
Both the horizontal/vertical advances and left/top sidebearings in "hmtx"
and "vmtx" tables (if any) are updated from four phantom points and
the glyph's bounding boxes.
+
+ The "hMetrics" and vMetrics are used to propagate "phantom points"
+ into "hmtx" and "vmtx" tables if desired. (see the "_getPhantomPoints"
+ method).
"""
- # TODO: Create new glyph if not already present
- assert glyphName in self.glyphs
glyph = self[glyphName]
# Handle phantom points for (left, right, top, bottom) positions.
@@ -396,14 +435,61 @@ class table__g_l_y_f(DefaultTable.DefaultTable):
# https://github.com/fonttools/fonttools/pull/1198
horizontalAdvanceWidth = 0
leftSideBearing = otRound(glyph.xMin - leftSideX)
- ttFont["hmtx"].metrics[glyphName] = horizontalAdvanceWidth, leftSideBearing
+ hMetrics[glyphName] = horizontalAdvanceWidth, leftSideBearing
- if "vmtx" in ttFont:
+ if vMetrics is not None:
verticalAdvanceWidth = otRound(topSideY - bottomSideY)
if verticalAdvanceWidth < 0: # unlikely but do the same as horizontal
verticalAdvanceWidth = 0
topSideBearing = otRound(topSideY - glyph.yMax)
- ttFont["vmtx"].metrics[glyphName] = verticalAdvanceWidth, topSideBearing
+ vMetrics[glyphName] = verticalAdvanceWidth, topSideBearing
+
+
+ # Deprecated
+
+ def _synthesizeVMetrics(self, glyphName, ttFont, defaultVerticalOrigin):
+ """This method is wrong and deprecated.
+ For rationale see:
+ https://github.com/fonttools/fonttools/pull/2266/files#r613569473
+ """
+ vMetrics = getattr(ttFont.get('vmtx'), 'metrics', None)
+ if vMetrics is None:
+ verticalAdvanceWidth = ttFont["head"].unitsPerEm
+ topSideY = getattr(ttFont.get('hhea'), 'ascent', None)
+ if topSideY is None:
+ if defaultVerticalOrigin is not None:
+ topSideY = defaultVerticalOrigin
+ else:
+ topSideY = verticalAdvanceWidth
+ glyph = self[glyphName]
+ glyph.recalcBounds(self)
+ topSideBearing = otRound(topSideY - glyph.yMax)
+ vMetrics = {glyphName: (verticalAdvanceWidth, topSideBearing)}
+ return vMetrics
+
+ @deprecateFunction("use '_getPhantomPoints' instead", category=DeprecationWarning)
+ def getPhantomPoints(self, glyphName, ttFont, defaultVerticalOrigin=None):
+ """Old public name for self._getPhantomPoints().
+ See: https://github.com/fonttools/fonttools/pull/2266"""
+ hMetrics = ttFont['hmtx'].metrics
+ vMetrics = self._synthesizeVMetrics(glyphName, ttFont, defaultVerticalOrigin)
+ return self._getPhantomPoints(glyphName, hMetrics, vMetrics)
+
+ @deprecateFunction("use '_getCoordinatesAndControls' instead", category=DeprecationWarning)
+ def getCoordinatesAndControls(self, glyphName, ttFont, defaultVerticalOrigin=None):
+ """Old public name for self._getCoordinatesAndControls().
+ See: https://github.com/fonttools/fonttools/pull/2266"""
+ hMetrics = ttFont['hmtx'].metrics
+ vMetrics = self._synthesizeVMetrics(glyphName, ttFont, defaultVerticalOrigin)
+ return self._getCoordinatesAndControls(glyphName, hMetrics, vMetrics)
+
+ @deprecateFunction("use '_setCoordinates' instead", category=DeprecationWarning)
+ def setCoordinates(self, glyphName, ttFont):
+ """Old public name for self._setCoordinates().
+ See: https://github.com/fonttools/fonttools/pull/2266"""
+ hMetrics = ttFont['hmtx'].metrics
+ vMetrics = getattr(ttFont.get('vmtx'), 'metrics', None)
+ self._setCoordinates(glyphName, hMetrics, vMetrics)
_GlyphControls = namedtuple(
@@ -488,8 +574,7 @@ def flagEncodeCoord(flag, mask, coord, coordBytes):
elif byteCount == -1:
coordBytes.append(-coord)
elif byteCount == 2:
- coordBytes.append((coord >> 8) & 0xFF)
- coordBytes.append(coord & 0xFF)
+ coordBytes.extend(struct.pack('>h', coord))
def flagEncodeCoords(flag, x, y, xBytes, yBytes):
flagEncodeCoord(flag, flagXsame|flagXShort, x, xBytes)
@@ -515,8 +600,29 @@ CompositeMaxpValues = namedtuple('CompositeMaxpValues', ['nPoints', 'nContours',
class Glyph(object):
+ """This class represents an individual TrueType glyph.
+
+ TrueType glyph objects come in two flavours: simple and composite. Simple
+ glyph objects contain contours, represented via the ``.coordinates``,
+ ``.flags``, ``.numberOfContours``, and ``.endPtsOfContours`` attributes;
+ composite glyphs contain components, available through the ``.components``
+ attributes.
+
+ Because the ``.coordinates`` attribute (and other simple glyph attributes mentioned
+ above) is only set on simple glyphs and the ``.components`` attribute is only
+ set on composite glyphs, it is necessary to use the :py:meth:`isComposite`
+ method to test whether a glyph is simple or composite before attempting to
+ access its data.
+
+ For a composite glyph, the components can also be accessed via array-like access::
- def __init__(self, data=""):
+ >> assert(font["glyf"]["Aacute"].isComposite())
+ >> font["glyf"]["Aacute"][0]
+ <fontTools.ttLib.tables._g_l_y_f.GlyphComponent at 0x1027b2ee0>
+
+ """
+
+ def __init__(self, data=b""):
if not data:
# empty char
self.numberOfContours = 0
@@ -557,7 +663,7 @@ class Glyph(object):
else:
return self.data
if self.numberOfContours == 0:
- return ""
+ return b''
if recalcBBoxes:
self.recalcBounds(glyfTable)
data = sstruct.pack(glyphHeaderFormat, self)
@@ -608,7 +714,7 @@ class Glyph(object):
raise ttLib.TTLibError("can't mix composites and contours in glyph")
self.numberOfContours = self.numberOfContours + 1
coordinates = GlyphCoordinates()
- flags = []
+ flags = bytearray()
for element in content:
if not isinstance(element, tuple):
continue
@@ -616,11 +722,10 @@ class Glyph(object):
if name != "pt":
continue # ignore anything but "pt"
coordinates.append((safeEval(attrs["x"]), safeEval(attrs["y"])))
- flag = not not safeEval(attrs["on"])
+ flag = bool(safeEval(attrs["on"]))
if "overlap" in attrs and bool(safeEval(attrs["overlap"])):
flag |= flagOverlapSimple
flags.append(flag)
- flags = array.array("B", flags)
if not hasattr(self, "coordinates"):
self.coordinates = coordinates
self.flags = flags
@@ -695,16 +800,14 @@ class Glyph(object):
if sys.byteorder != "big": endPtsOfContours.byteswap()
self.endPtsOfContours = endPtsOfContours.tolist()
- data = data[2*self.numberOfContours:]
-
- instructionLength, = struct.unpack(">h", data[:2])
- data = data[2:]
+ pos = 2*self.numberOfContours
+ instructionLength, = struct.unpack(">h", data[pos:pos+2])
self.program = ttProgram.Program()
- self.program.fromBytecode(data[:instructionLength])
- data = data[instructionLength:]
+ self.program.fromBytecode(data[pos+2:pos+2+instructionLength])
+ pos += 2 + instructionLength
nCoordinates = self.endPtsOfContours[-1] + 1
flags, xCoordinates, yCoordinates = \
- self.decompileCoordinatesRaw(nCoordinates, data)
+ self.decompileCoordinatesRaw(nCoordinates, data, pos)
# fill in repetitions and apply signs
self.coordinates = coordinates = GlyphCoordinates.zeros(nCoordinates)
@@ -741,24 +844,26 @@ class Glyph(object):
assert yIndex == len(yCoordinates)
coordinates.relativeToAbsolute()
# discard all flags except "keepFlags"
- self.flags = array.array("B", (f & keepFlags for f in flags))
+ for i in range(len(flags)):
+ flags[i] &= keepFlags
+ self.flags = flags
- def decompileCoordinatesRaw(self, nCoordinates, data):
+ def decompileCoordinatesRaw(self, nCoordinates, data, pos=0):
# unpack flags and prepare unpacking of coordinates
- flags = array.array("B", [0] * nCoordinates)
+ flags = bytearray(nCoordinates)
# Warning: deep Python trickery going on. We use the struct module to unpack
# the coordinates. We build a format string based on the flags, so we can
# unpack the coordinates in one struct.unpack() call.
xFormat = ">" # big endian
yFormat = ">" # big endian
- i = j = 0
+ j = 0
while True:
- flag = byteord(data[i])
- i = i + 1
+ flag = data[pos]
+ pos += 1
repeat = 1
if flag & flagRepeat:
- repeat = byteord(data[i]) + 1
- i = i + 1
+ repeat = data[pos] + 1
+ pos += 1
for k in range(repeat):
if flag & flagXShort:
xFormat = xFormat + 'B'
@@ -773,15 +878,14 @@ class Glyph(object):
if j >= nCoordinates:
break
assert j == nCoordinates, "bad glyph flags"
- data = data[i:]
# unpack raw coordinates, krrrrrr-tching!
xDataLen = struct.calcsize(xFormat)
yDataLen = struct.calcsize(yFormat)
- if len(data) - (xDataLen + yDataLen) >= 4:
+ if len(data) - pos - (xDataLen + yDataLen) >= 4:
log.warning(
- "too much glyph data: %d excess bytes", len(data) - (xDataLen + yDataLen))
- xCoordinates = struct.unpack(xFormat, data[:xDataLen])
- yCoordinates = struct.unpack(yFormat, data[xDataLen:xDataLen+yDataLen])
+ "too much glyph data: %d excess bytes", len(data) - pos - (xDataLen + yDataLen))
+ xCoordinates = struct.unpack(xFormat, data[pos:pos+xDataLen])
+ yCoordinates = struct.unpack(yFormat, data[pos+xDataLen:pos+xDataLen+yDataLen])
return flags, xCoordinates, yCoordinates
def compileComponents(self, glyfTable):
@@ -811,9 +915,7 @@ class Glyph(object):
data.append(instructions)
deltas = self.coordinates.copy()
- if deltas.isFloat():
- # Warn?
- deltas.toInt()
+ deltas.toInt()
deltas.absoluteToRelative()
# TODO(behdad): Add a configuration option for this?
@@ -821,14 +923,14 @@ class Glyph(object):
#deltas = self.compileDeltasOptimal(self.flags, deltas)
data.extend(deltas)
- return bytesjoin(data)
+ return b''.join(data)
def compileDeltasGreedy(self, flags, deltas):
# Implements greedy algorithm for packing coordinate deltas:
# uses shortest representation one coordinate at a time.
- compressedflags = []
- xPoints = []
- yPoints = []
+ compressedFlags = bytearray()
+ compressedXs = bytearray()
+ compressedYs = bytearray()
lastflag = None
repeat = 0
for flag,(x,y) in zip(flags, deltas):
@@ -842,9 +944,9 @@ class Glyph(object):
flag = flag | flagXsame
else:
x = -x
- xPoints.append(bytechr(x))
+ compressedXs.append(x)
else:
- xPoints.append(struct.pack(">h", x))
+ compressedXs.extend(struct.pack('>h', x))
# do y
if y == 0:
flag = flag | flagYsame
@@ -854,24 +956,21 @@ class Glyph(object):
flag = flag | flagYsame
else:
y = -y
- yPoints.append(bytechr(y))
+ compressedYs.append(y)
else:
- yPoints.append(struct.pack(">h", y))
+ compressedYs.extend(struct.pack('>h', y))
# handle repeating flags
if flag == lastflag and repeat != 255:
repeat = repeat + 1
if repeat == 1:
- compressedflags.append(flag)
+ compressedFlags.append(flag)
else:
- compressedflags[-2] = flag | flagRepeat
- compressedflags[-1] = repeat
+ compressedFlags[-2] = flag | flagRepeat
+ compressedFlags[-1] = repeat
else:
repeat = 0
- compressedflags.append(flag)
+ compressedFlags.append(flag)
lastflag = flag
- compressedFlags = array.array("B", compressedflags).tobytes()
- compressedXs = bytesjoin(xPoints)
- compressedYs = bytesjoin(yPoints)
return (compressedFlags, compressedXs, compressedYs)
def compileDeltasOptimal(self, flags, deltas):
@@ -902,9 +1001,9 @@ class Glyph(object):
flags.append(flag)
flags.reverse()
- compressedFlags = array.array("B")
- compressedXs = array.array("B")
- compressedYs = array.array("B")
+ compressedFlags = bytearray()
+ compressedXs = bytearray()
+ compressedYs = bytearray()
coords = iter(deltas)
ff = []
for flag in flags:
@@ -924,72 +1023,22 @@ class Glyph(object):
raise Exception("internal error")
except StopIteration:
pass
- compressedFlags = compressedFlags.tobytes()
- compressedXs = compressedXs.tobytes()
- compressedYs = compressedYs.tobytes()
return (compressedFlags, compressedXs, compressedYs)
def recalcBounds(self, glyfTable):
+ """Recalculates the bounds of the glyph.
+
+ Each glyph object stores its bounding box in the
+ ``xMin``/``yMin``/``xMax``/``yMax`` attributes. These bounds must be
+ recomputed when the ``coordinates`` change. The ``table__g_l_y_f`` bounds
+ must be provided to resolve component bounds.
+ """
coords, endPts, flags = self.getCoordinates(glyfTable)
- if len(coords) > 0:
- if 0:
- # This branch calculates exact glyph outline bounds
- # analytically, handling cases without on-curve
- # extremas, etc. However, the glyf table header
- # simply says that the bounds should be min/max x/y
- # "for coordinate data", so I suppose that means no
- # fancy thing here, just get extremas of all coord
- # points (on and off). As such, this branch is
- # disabled.
-
- # Collect on-curve points
- onCurveCoords = [coords[j] for j in range(len(coords))
- if flags[j] & flagOnCurve]
- # Add implicit on-curve points
- start = 0
- for end in endPts:
- last = end
- for j in range(start, end + 1):
- if not ((flags[j] | flags[last]) & flagOnCurve):
- x = (coords[last][0] + coords[j][0]) / 2
- y = (coords[last][1] + coords[j][1]) / 2
- onCurveCoords.append((x,y))
- last = j
- start = end + 1
- # Add bounds for curves without an explicit extrema
- start = 0
- for end in endPts:
- last = end
- for j in range(start, end + 1):
- if not (flags[j] & flagOnCurve):
- next = j + 1 if j < end else start
- bbox = calcBounds([coords[last], coords[next]])
- if not pointInRect(coords[j], bbox):
- # Ouch!
- log.warning("Outline has curve with implicit extrema.")
- # Ouch! Find analytical curve bounds.
- pthis = coords[j]
- plast = coords[last]
- if not (flags[last] & flagOnCurve):
- plast = ((pthis[0]+plast[0])/2, (pthis[1]+plast[1])/2)
- pnext = coords[next]
- if not (flags[next] & flagOnCurve):
- pnext = ((pthis[0]+pnext[0])/2, (pthis[1]+pnext[1])/2)
- bbox = calcQuadraticBounds(plast, pthis, pnext)
- onCurveCoords.append((bbox[0],bbox[1]))
- onCurveCoords.append((bbox[2],bbox[3]))
- last = j
- start = end + 1
-
- self.xMin, self.yMin, self.xMax, self.yMax = calcIntBounds(onCurveCoords)
- else:
- self.xMin, self.yMin, self.xMax, self.yMax = calcIntBounds(coords)
- else:
- self.xMin, self.yMin, self.xMax, self.yMax = (0, 0, 0, 0)
+ self.xMin, self.yMin, self.xMax, self.yMax = calcIntBounds(coords)
def isComposite(self):
- """Can be called on compact or expanded glyph."""
+ """Test whether a glyph has components"""
if hasattr(self, "data") and self.data:
return struct.unpack(">h", self.data[:2])[0] == -1
else:
@@ -1001,12 +1050,27 @@ class Glyph(object):
return self.components[componentIndex]
def getCoordinates(self, glyfTable):
+ """Return the coordinates, end points and flags
+
+ This method returns three values: A :py:class:`GlyphCoordinates` object,
+ a list of the indexes of the final points of each contour (allowing you
+ to split up the coordinates list into contours) and a list of flags.
+
+ On simple glyphs, this method returns information from the glyph's own
+ contours; on composite glyphs, it "flattens" all components recursively
+ to return a list of coordinates representing all the components involved
+ in the glyph.
+
+ To interpret the flags for each point, see the "Simple Glyph Flags"
+ section of the `glyf table specification <https://docs.microsoft.com/en-us/typography/opentype/spec/glyf#simple-glyph-description>`.
+ """
+
if self.numberOfContours > 0:
return self.coordinates, self.endPtsOfContours, self.flags
elif self.isComposite():
# it's a composite
allCoords = GlyphCoordinates()
- allFlags = array.array("B")
+ allFlags = bytearray()
allEndPts = []
for compo in self.components:
g = glyfTable[compo.glyphName]
@@ -1051,9 +1115,14 @@ class Glyph(object):
allFlags.extend(flags)
return allCoords, allEndPts, allFlags
else:
- return GlyphCoordinates(), [], array.array("B")
+ return GlyphCoordinates(), [], bytearray()
def getComponentNames(self, glyfTable):
+ """Returns a list of names of component glyphs used in this glyph
+
+ This method can be used on simple glyphs (in which case it returns an
+ empty list) or composite glyphs.
+ """
if not hasattr(self, "data"):
if self.isComposite():
return [c.glyphName for c in self.components]
@@ -1101,7 +1170,7 @@ class Glyph(object):
if not self.data:
return
numContours = struct.unpack(">h", self.data[:2])[0]
- data = array.array("B", self.data)
+ data = bytearray(self.data)
i = 10
if numContours >= 0:
i += 2 * numContours # endPtsOfContours
@@ -1170,12 +1239,21 @@ class Glyph(object):
# Remove padding
data = data[:i]
- self.data = data.tobytes()
+ self.data = data
def removeHinting(self):
+ """Removes TrueType hinting instructions from the glyph."""
self.trim (remove_hinting=True)
def draw(self, pen, glyfTable, offset=0):
+ """Draws the glyph using the supplied pen object.
+
+ Arguments:
+ pen: An object conforming to the pen protocol.
+ glyfTable: A :py:class:`table__g_l_y_f` object, to resolve components.
+ offset (int): A horizontal offset. If provided, all coordinates are
+ translated by this offset.
+ """
if self.isComposite():
for component in self.components:
@@ -1221,7 +1299,7 @@ class Glyph(object):
pen.closePath()
def drawPoints(self, pen, glyfTable, offset=0):
- """Draw the glyph using the supplied pointPen. Opposed to Glyph.draw(),
+ """Draw the glyph using the supplied pointPen. As opposed to Glyph.draw(),
this will not change the point indices.
"""
@@ -1263,12 +1341,29 @@ class Glyph(object):
return result if result is NotImplemented else not result
class GlyphComponent(object):
+ """Represents a component within a composite glyph.
+
+ The component is represented internally with four attributes: ``glyphName``,
+ ``x``, ``y`` and ``transform``. If there is no "two-by-two" matrix (i.e
+ no scaling, reflection, or rotation; only translation), the ``transform``
+ attribute is not present.
+ """
+ # The above documentation is not *completely* true, but is *true enough* because
+ # the rare firstPt/lastPt attributes are not totally supported and nobody seems to
+ # mind - see below.
def __init__(self):
pass
def getComponentInfo(self):
- """Return the base glyph name and a transform."""
+ """Return information about the component
+
+ This method returns a tuple of two values: the glyph name of the component's
+ base glyph, and a transformation matrix. As opposed to accessing the attributes
+ directly, ``getComponentInfo`` always returns a six-element tuple of the
+ component's transformation matrix, even when the two-by-two ``.transform``
+ matrix is not present.
+ """
# XXX Ignoring self.firstPt & self.lastpt for now: I need to implement
# something equivalent in fontTools.objects.glyph (I'd rather not
# convert it to an absolute offset, since it is valuable information).
@@ -1431,65 +1526,60 @@ class GlyphComponent(object):
return result if result is NotImplemented else not result
class GlyphCoordinates(object):
+ """A list of glyph coordinates.
- def __init__(self, iterable=[], typecode="h"):
- self._a = array.array(typecode)
+ Unlike an ordinary list, this is a numpy-like matrix object which supports
+ matrix addition, scalar multiplication and other operations described below.
+ """
+ def __init__(self, iterable=[]):
+ self._a = array.array('d')
self.extend(iterable)
@property
def array(self):
+ """Returns the underlying array of coordinates"""
return self._a
- def isFloat(self):
- return self._a.typecode == 'd'
-
- def _ensureFloat(self):
- if self.isFloat():
- return
- # The conversion to list() is to work around Jython bug
- self._a = array.array("d", list(self._a))
-
- def _checkFloat(self, p):
- if self.isFloat():
- return p
- if any(v > 0x7FFF or v < -0x8000 for v in p):
- self._ensureFloat()
- return p
- if any(isinstance(v, float) for v in p):
- p = [int(v) if int(v) == v else v for v in p]
- if any(isinstance(v, float) for v in p):
- self._ensureFloat()
- return p
-
@staticmethod
def zeros(count):
- return GlyphCoordinates([(0,0)] * count)
+ """Creates a new ``GlyphCoordinates`` object with all coordinates set to (0,0)"""
+ g = GlyphCoordinates()
+ g._a.frombytes(bytes(count * 2 * g._a.itemsize))
+ return g
def copy(self):
- c = GlyphCoordinates(typecode=self._a.typecode)
+ """Creates a new ``GlyphCoordinates`` object which is a copy of the current one."""
+ c = GlyphCoordinates()
c._a.extend(self._a)
return c
def __len__(self):
+ """Returns the number of coordinates in the array."""
return len(self._a) // 2
def __getitem__(self, k):
+ """Returns a two element tuple (x,y)"""
if isinstance(k, slice):
indices = range(*k.indices(len(self)))
return [self[i] for i in indices]
- return self._a[2*k],self._a[2*k+1]
+ a = self._a
+ x = a[2*k]
+ y = a[2*k+1]
+ return (int(x) if x.is_integer() else x,
+ int(y) if y.is_integer() else y)
def __setitem__(self, k, v):
+ """Sets a point's coordinates to a two element tuple (x,y)"""
if isinstance(k, slice):
indices = range(*k.indices(len(self)))
# XXX This only works if len(v) == len(indices)
for j,i in enumerate(indices):
self[i] = v[j]
return
- v = self._checkFloat(v)
self._a[2*k],self._a[2*k+1] = v
def __delitem__(self, i):
+ """Removes a point from the list"""
i = (2*i) % len(self._a)
del self._a[i]
del self._a[i]
@@ -1498,69 +1588,71 @@ class GlyphCoordinates(object):
return 'GlyphCoordinates(['+','.join(str(c) for c in self)+'])'
def append(self, p):
- p = self._checkFloat(p)
self._a.extend(tuple(p))
def extend(self, iterable):
for p in iterable:
- p = self._checkFloat(p)
self._a.extend(p)
def toInt(self, *, round=otRound):
- if not self.isFloat():
- return
- a = array.array("h")
- for n in self._a:
- a.append(round(n))
- self._a = a
+ a = self._a
+ for i in range(len(a)):
+ a[i] = round(a[i])
def relativeToAbsolute(self):
a = self._a
x,y = 0,0
- for i in range(len(a) // 2):
- x = a[2*i ] + x
- y = a[2*i+1] + y
- self[i] = (x, y)
+ for i in range(0, len(a), 2):
+ a[i ] = x = a[i ] + x
+ a[i+1] = y = a[i+1] + y
def absoluteToRelative(self):
a = self._a
x,y = 0,0
- for i in range(len(a) // 2):
- dx = a[2*i ] - x
- dy = a[2*i+1] - y
- x = a[2*i ]
- y = a[2*i+1]
- self[i] = (dx, dy)
+ for i in range(0, len(a), 2):
+ nx = a[i ]
+ ny = a[i+1]
+ a[i] = nx - x
+ a[i+1] = ny - y
+ x = nx
+ y = ny
def translate(self, p):
"""
>>> GlyphCoordinates([(1,2)]).translate((.5,0))
"""
- (x,y) = self._checkFloat(p)
+ x,y = p
+ if x == 0 and y == 0:
+ return
a = self._a
- for i in range(len(a) // 2):
- self[i] = (a[2*i] + x, a[2*i+1] + y)
+ for i in range(0, len(a), 2):
+ a[i] += x
+ a[i+1] += y
def scale(self, p):
"""
>>> GlyphCoordinates([(1,2)]).scale((.5,0))
"""
- (x,y) = self._checkFloat(p)
+ x,y = p
+ if x == 1 and y == 1:
+ return
a = self._a
- for i in range(len(a) // 2):
- self[i] = (a[2*i] * x, a[2*i+1] * y)
+ for i in range(0, len(a), 2):
+ a[i] *= x
+ a[i+1] *= y
def transform(self, t):
"""
>>> GlyphCoordinates([(1,2)]).transform(((.5,0),(.2,.5)))
"""
a = self._a
- for i in range(len(a) // 2):
- x = a[2*i ]
- y = a[2*i+1]
+ for i in range(0, len(a), 2):
+ x = a[i ]
+ y = a[i+1]
px = x * t[0][0] + y * t[1][0]
py = x * t[0][1] + y * t[1][1]
- self[i] = (px, py)
+ a[i] = px
+ a[i+1] = py
def __eq__(self, other):
"""
@@ -1645,23 +1737,22 @@ class GlyphCoordinates(object):
>>> g = GlyphCoordinates([(1,2)])
>>> g += (.5,0)
>>> g
- GlyphCoordinates([(1.5, 2.0)])
+ GlyphCoordinates([(1.5, 2)])
>>> g2 = GlyphCoordinates([(3,4)])
>>> g += g2
>>> g
- GlyphCoordinates([(4.5, 6.0)])
+ GlyphCoordinates([(4.5, 6)])
"""
if isinstance(other, tuple):
assert len(other) == 2
self.translate(other)
return self
if isinstance(other, GlyphCoordinates):
- if other.isFloat(): self._ensureFloat()
other = other._a
a = self._a
assert len(a) == len(other)
- for i in range(len(a) // 2):
- self[i] = (a[2*i] + other[2*i], a[2*i+1] + other[2*i+1])
+ for i in range(len(a)):
+ a[i] += other[i]
return self
return NotImplemented
@@ -1670,23 +1761,22 @@ class GlyphCoordinates(object):
>>> g = GlyphCoordinates([(1,2)])
>>> g -= (.5,0)
>>> g
- GlyphCoordinates([(0.5, 2.0)])
+ GlyphCoordinates([(0.5, 2)])
>>> g2 = GlyphCoordinates([(3,4)])
>>> g -= g2
>>> g
- GlyphCoordinates([(-2.5, -2.0)])
+ GlyphCoordinates([(-2.5, -2)])
"""
if isinstance(other, tuple):
assert len(other) == 2
self.translate((-other[0],-other[1]))
return self
if isinstance(other, GlyphCoordinates):
- if other.isFloat(): self._ensureFloat()
other = other._a
a = self._a
assert len(a) == len(other)
- for i in range(len(a) // 2):
- self[i] = (a[2*i] - other[2*i], a[2*i+1] - other[2*i+1])
+ for i in range(len(a)):
+ a[i] -= other[i]
return self
return NotImplemented
@@ -1696,20 +1786,23 @@ class GlyphCoordinates(object):
>>> g *= (2,.5)
>>> g *= 2
>>> g
- GlyphCoordinates([(4.0, 2.0)])
+ GlyphCoordinates([(4, 2)])
>>> g = GlyphCoordinates([(1,2)])
>>> g *= 2
>>> g
GlyphCoordinates([(2, 4)])
"""
- if isinstance(other, Number):
- other = (other, other)
if isinstance(other, tuple):
- if other == (1,1):
- return self
assert len(other) == 2
self.scale(other)
return self
+ if isinstance(other, Number):
+ if other == 1:
+ return self
+ a = self._a
+ for i in range(len(a)):
+ a[i] *= other
+ return self
return NotImplemented
def __itruediv__(self, other):
@@ -1718,7 +1811,7 @@ class GlyphCoordinates(object):
>>> g /= (.5,1.5)
>>> g /= 2
>>> g
- GlyphCoordinates([(1.0, 1.0)])
+ GlyphCoordinates([(1, 1)])
"""
if isinstance(other, Number):
other = (other, other)
@@ -1750,20 +1843,6 @@ class GlyphCoordinates(object):
__nonzero__ = __bool__
-def reprflag(flag):
- bin = ""
- if isinstance(flag, str):
- flag = byteord(flag)
- while flag:
- if flag & 0x01:
- bin = "1" + bin
- else:
- bin = "0" + bin
- flag = flag >> 1
- bin = (14 - len(bin)) * "0" + bin
- return bin
-
-
if __name__ == "__main__":
import doctest, sys
sys.exit(doctest.testmod().failed)
diff --git a/Lib/fontTools/ttLib/tables/_g_v_a_r.py b/Lib/fontTools/ttLib/tables/_g_v_a_r.py
index 8c9b530e..bc283cfe 100644
--- a/Lib/fontTools/ttLib/tables/_g_v_a_r.py
+++ b/Lib/fontTools/ttLib/tables/_g_v_a_r.py
@@ -1,4 +1,3 @@
-from fontTools.misc.py23 import bytesjoin
from fontTools.misc import sstruct
from fontTools.misc.textTools import safeEval
from . import DefaultTable
@@ -76,12 +75,13 @@ class table__g_v_a_r(DefaultTable.DefaultTable):
result = [compiledHeader, compiledOffsets]
result.extend(sharedTuples)
result.extend(compiledGlyphs)
- return bytesjoin(result)
+ return b''.join(result)
def compileGlyphs_(self, ttFont, axisTags, sharedCoordIndices):
result = []
+ glyf = ttFont['glyf']
for glyphName in ttFont.getGlyphOrder():
- glyph = ttFont["glyf"][glyphName]
+ glyph = glyf[glyphName]
pointCount = self.getNumPoints_(glyph)
variations = self.variations.get(glyphName, [])
result.append(compileGlyph_(variations, pointCount,
@@ -99,9 +99,10 @@ class table__g_v_a_r(DefaultTable.DefaultTable):
axisTags, self.sharedTupleCount, data, self.offsetToSharedTuples)
self.variations = {}
offsetToData = self.offsetToGlyphVariationData
+ glyf = ttFont['glyf']
for i in range(self.glyphCount):
glyphName = glyphs[i]
- glyph = ttFont["glyf"][glyphName]
+ glyph = glyf[glyphName]
numPointsInGlyph = self.getNumPoints_(glyph)
gvarData = data[offsetToData + offsets[i] : offsetToData + offsets[i + 1]]
try:
@@ -214,12 +215,14 @@ def compileGlyph_(variations, pointCount, axisTags, sharedCoordIndices):
variations, pointCount, axisTags, sharedCoordIndices)
if tupleVariationCount == 0:
return b""
- result = (
- struct.pack(">HH", tupleVariationCount, 4 + len(tuples)) + tuples + data
- )
- if len(result) % 2 != 0:
- result = result + b"\0" # padding
- return result
+ result = [
+ struct.pack(">HH", tupleVariationCount, 4 + len(tuples)),
+ tuples,
+ data
+ ]
+ if (len(tuples) + len(data)) % 2 != 0:
+ result.append(b"\0") # padding
+ return b''.join(result)
def decompileGlyph_(pointCount, sharedTuples, axisTags, data):
diff --git a/Lib/fontTools/ttLib/tables/_h_d_m_x.py b/Lib/fontTools/ttLib/tables/_h_d_m_x.py
index 954d1bc1..9f860d2a 100644
--- a/Lib/fontTools/ttLib/tables/_h_d_m_x.py
+++ b/Lib/fontTools/ttLib/tables/_h_d_m_x.py
@@ -1,5 +1,5 @@
-from fontTools.misc.py23 import bytechr, byteord, strjoin
from fontTools.misc import sstruct
+from fontTools.misc.textTools import bytechr, byteord, strjoin
from . import DefaultTable
import array
from collections.abc import Mapping
diff --git a/Lib/fontTools/ttLib/tables/_l_t_a_g.py b/Lib/fontTools/ttLib/tables/_l_t_a_g.py
index caec72a3..ce3c6b97 100644
--- a/Lib/fontTools/ttLib/tables/_l_t_a_g.py
+++ b/Lib/fontTools/ttLib/tables/_l_t_a_g.py
@@ -1,5 +1,4 @@
-from fontTools.misc.py23 import bytesjoin, tobytes
-from fontTools.misc.textTools import safeEval
+from fontTools.misc.textTools import bytesjoin, tobytes, safeEval
from . import DefaultTable
import struct
diff --git a/Lib/fontTools/ttLib/tables/_m_e_t_a.py b/Lib/fontTools/ttLib/tables/_m_e_t_a.py
index 1a125f82..3faf0a56 100644
--- a/Lib/fontTools/ttLib/tables/_m_e_t_a.py
+++ b/Lib/fontTools/ttLib/tables/_m_e_t_a.py
@@ -1,6 +1,5 @@
-from fontTools.misc.py23 import bytesjoin, strjoin
from fontTools.misc import sstruct
-from fontTools.misc.textTools import readHex
+from fontTools.misc.textTools import bytesjoin, strjoin, readHex
from fontTools.ttLib import TTLibError
from . import DefaultTable
diff --git a/Lib/fontTools/ttLib/tables/_n_a_m_e.py b/Lib/fontTools/ttLib/tables/_n_a_m_e.py
index 206469de..9558addb 100644
--- a/Lib/fontTools/ttLib/tables/_n_a_m_e.py
+++ b/Lib/fontTools/ttLib/tables/_n_a_m_e.py
@@ -1,7 +1,6 @@
# -*- coding: utf-8 -*-
-from fontTools.misc.py23 import bytechr, byteord, bytesjoin, strjoin, tobytes, tostr
from fontTools.misc import sstruct
-from fontTools.misc.textTools import safeEval
+from fontTools.misc.textTools import bytechr, byteord, bytesjoin, strjoin, tobytes, tostr, safeEval
from fontTools.misc.encodingTools import getEncoding
from fontTools.ttLib import newTable
from . import DefaultTable
@@ -121,6 +120,44 @@ class table__n_a_m_e(DefaultTable.DefaultTable):
else:
return None
+ def getFirstDebugName(self, nameIDs):
+ for nameID in nameIDs:
+ name = self.getDebugName(nameID)
+ if name is not None:
+ return name
+ return None
+
+ def getBestFamilyName(self):
+ # 21 = WWS Family Name
+ # 16 = Typographic Family Name
+ # 1 = Family Name
+ return self.getFirstDebugName((21, 16, 1))
+
+ def getBestSubFamilyName(self):
+ # 22 = WWS SubFamily Name
+ # 17 = Typographic SubFamily Name
+ # 2 = SubFamily Name
+ return self.getFirstDebugName((22, 17, 2))
+
+ def getBestFullName(self):
+ # 4 = Full Name
+ # 6 = PostScript Name
+ for nameIDs in ((21, 22), (16, 17), (1, 2), (4, ), (6, )):
+ if len(nameIDs) == 2:
+ name_fam = self.getDebugName(nameIDs[0])
+ name_subfam = self.getDebugName(nameIDs[1])
+ if None in [name_fam, name_subfam]:
+ continue # if any is None, skip
+ name = f"{name_fam} {name_subfam}"
+ if name_subfam.lower() == 'regular':
+ name = f"{name_fam}"
+ return name
+ else:
+ name = self.getDebugName(nameIDs[0])
+ if name is not None:
+ return name
+ return None
+
def setName(self, string, nameID, platformID, platEncID, langID):
""" Set the 'string' for the name record identified by 'nameID', 'platformID',
'platEncID' and 'langID'. If a record with that nameID doesn't exist, create it
diff --git a/Lib/fontTools/ttLib/tables/_p_o_s_t.py b/Lib/fontTools/ttLib/tables/_p_o_s_t.py
index e26e81f8..c54b87f0 100644
--- a/Lib/fontTools/ttLib/tables/_p_o_s_t.py
+++ b/Lib/fontTools/ttLib/tables/_p_o_s_t.py
@@ -1,13 +1,14 @@
-from fontTools.misc.py23 import bytechr, byteord, tobytes, tostr
from fontTools import ttLib
from fontTools.ttLib.standardGlyphOrder import standardGlyphOrder
from fontTools.misc import sstruct
-from fontTools.misc.textTools import safeEval, readHex
+from fontTools.misc.textTools import bytechr, byteord, tobytes, tostr, safeEval, readHex
from . import DefaultTable
import sys
import struct
import array
+import logging
+log = logging.getLogger(__name__)
postFormat = """
>
@@ -85,7 +86,8 @@ class table__p_o_s_t(DefaultTable.DefaultTable):
indices.frombytes(data[:2*numGlyphs])
if sys.byteorder != "big": indices.byteswap()
data = data[2*numGlyphs:]
- self.extraNames = extraNames = unpackPStrings(data)
+ maxIndex = max(indices)
+ self.extraNames = extraNames = unpackPStrings(data, maxIndex-257)
self.glyphOrder = glyphOrder = [""] * int(ttFont['maxp'].numGlyphs)
for glyphID in range(numGlyphs):
index = indices[glyphID]
@@ -252,14 +254,34 @@ class table__p_o_s_t(DefaultTable.DefaultTable):
self.data = readHex(content)
-def unpackPStrings(data):
+def unpackPStrings(data, n):
+ # extract n Pascal strings from data.
+ # if there is not enough data, use ""
+
strings = []
index = 0
dataLen = len(data)
- while index < dataLen:
- length = byteord(data[index])
- strings.append(tostr(data[index+1:index+1+length], encoding="latin1"))
- index = index + 1 + length
+
+ for _ in range(n):
+ if dataLen <= index:
+ length = 0
+ else:
+ length = byteord(data[index])
+ index += 1
+
+ if dataLen <= index + length - 1:
+ name = ""
+ else:
+ name = tostr(data[index:index+length], encoding="latin1")
+ strings.append (name)
+ index += length
+
+ if index < dataLen:
+ log.warning("%d extra bytes in post.stringData array", dataLen - index)
+
+ elif dataLen < index:
+ log.warning("not enough data in post.stringData array")
+
return strings
diff --git a/Lib/fontTools/ttLib/tables/_t_r_a_k.py b/Lib/fontTools/ttLib/tables/_t_r_a_k.py
index 7f3227dc..3052496f 100644
--- a/Lib/fontTools/ttLib/tables/_t_r_a_k.py
+++ b/Lib/fontTools/ttLib/tables/_t_r_a_k.py
@@ -1,4 +1,3 @@
-from fontTools.misc.py23 import bytesjoin
from fontTools.misc import sstruct
from fontTools.misc.fixedTools import (
fixedToFloat as fi2fl,
@@ -6,7 +5,7 @@ from fontTools.misc.fixedTools import (
floatToFixedToStr as fl2str,
strToFixedToFloat as str2fl,
)
-from fontTools.misc.textTools import safeEval
+from fontTools.misc.textTools import bytesjoin, safeEval
from fontTools.ttLib import TTLibError
from . import DefaultTable
import struct
diff --git a/Lib/fontTools/ttLib/tables/asciiTable.py b/Lib/fontTools/ttLib/tables/asciiTable.py
index 7b036c8e..a97d92df 100644
--- a/Lib/fontTools/ttLib/tables/asciiTable.py
+++ b/Lib/fontTools/ttLib/tables/asciiTable.py
@@ -1,4 +1,4 @@
-from fontTools.misc.py23 import strjoin, tobytes, tostr
+from fontTools.misc.textTools import strjoin, tobytes, tostr
from . import DefaultTable
diff --git a/Lib/fontTools/ttLib/tables/otBase.py b/Lib/fontTools/ttLib/tables/otBase.py
index 3c07f9e1..bc2c9fba 100644
--- a/Lib/fontTools/ttLib/tables/otBase.py
+++ b/Lib/fontTools/ttLib/tables/otBase.py
@@ -1,9 +1,10 @@
-from fontTools.misc.py23 import Tag, bytesjoin
+from fontTools.misc.textTools import Tag, bytesjoin
from .DefaultTable import DefaultTable
import sys
import array
import struct
import logging
+from typing import Iterator, NamedTuple, Optional
log = logging.getLogger(__name__)
@@ -34,6 +35,7 @@ class BaseTTXConverter(DefaultTable):
"""
def decompile(self, data, font):
+ """Create an object from the binary data. Called automatically on access."""
from . import otTables
reader = OTTableReader(data, tableTag=self.tableTag)
tableClass = getattr(otTables, self.tableTag)
@@ -41,26 +43,28 @@ class BaseTTXConverter(DefaultTable):
self.table.decompile(reader, font)
def compile(self, font):
- """ Create a top-level OTTableWriter for the GPOS/GSUB table.
- Call the compile method for the the table
- for each 'converter' record in the table converter list
- call converter's write method for each item in the value.
- - For simple items, the write method adds a string to the
- writer's self.items list.
- - For Struct/Table/Subtable items, it add first adds new writer to the
- to the writer's self.items, then calls the item's compile method.
- This creates a tree of writers, rooted at the GUSB/GPOS writer, with
- each writer representing a table, and the writer.items list containing
- the child data strings and writers.
- call the getAllData method
- call _doneWriting, which removes duplicates
- call _gatherTables. This traverses the tables, adding unique occurences to a flat list of tables
- Traverse the flat list of tables, calling getDataLength on each to update their position
- Traverse the flat list of tables again, calling getData each get the data in the table, now that
- pos's and offset are known.
-
- If a lookup subtable overflows an offset, we have to start all over.
- """
+ """Compiles the table into binary. Called automatically on save."""
+
+ # General outline:
+ # Create a top-level OTTableWriter for the GPOS/GSUB table.
+ # Call the compile method for the the table
+ # for each 'converter' record in the table converter list
+ # call converter's write method for each item in the value.
+ # - For simple items, the write method adds a string to the
+ # writer's self.items list.
+ # - For Struct/Table/Subtable items, it add first adds new writer to the
+ # to the writer's self.items, then calls the item's compile method.
+ # This creates a tree of writers, rooted at the GUSB/GPOS writer, with
+ # each writer representing a table, and the writer.items list containing
+ # the child data strings and writers.
+ # call the getAllData method
+ # call _doneWriting, which removes duplicates
+ # call _gatherTables. This traverses the tables, adding unique occurences to a flat list of tables
+ # Traverse the flat list of tables, calling getDataLength on each to update their position
+ # Traverse the flat list of tables again, calling getData each get the data in the table, now that
+ # pos's and offset are known.
+
+ # If a lookup subtable overflows an offset, we have to start all over.
overflowRecord = None
while True:
@@ -105,6 +109,13 @@ class BaseTTXConverter(DefaultTable):
self.table.fromXML(name, attrs, content, font)
self.table.populateDefaults()
+ def ensureDecompiled(self):
+ self.table.ensureDecompiled(recurse=True)
+
+
+# https://github.com/fonttools/fonttools/pull/2285#issuecomment-834652928
+assert len(struct.pack('i', 0)) == 4
+assert array.array('i').itemsize == 4, "Oops, file a bug against fonttools."
class OTTableReader(object):
@@ -140,32 +151,43 @@ class OTTableReader(object):
value, = struct.unpack(f">{typecode}", self.data[pos:newpos])
self.pos = newpos
return value
-
- def readUShort(self):
- return self.readValue("H", staticSize=2)
-
def readArray(self, typecode, staticSize, count):
pos = self.pos
newpos = pos + count * staticSize
value = array.array(typecode, self.data[pos:newpos])
if sys.byteorder != "big": value.byteswap()
self.pos = newpos
- return value
-
- def readUShortArray(self, count):
- return self.readArray("H", staticSize=2, count=count)
+ return value.tolist()
def readInt8(self):
return self.readValue("b", staticSize=1)
+ def readInt8Array(self, count):
+ return self.readArray("b", staticSize=1, count=count)
def readShort(self):
return self.readValue("h", staticSize=2)
+ def readShortArray(self, count):
+ return self.readArray("h", staticSize=2, count=count)
def readLong(self):
- return self.readValue("l", staticSize=4)
+ return self.readValue("i", staticSize=4)
+ def readLongArray(self, count):
+ return self.readArray("i", staticSize=4, count=count)
def readUInt8(self):
return self.readValue("B", staticSize=1)
+ def readUInt8Array(self, count):
+ return self.readArray("B", staticSize=1, count=count)
+
+ def readUShort(self):
+ return self.readValue("H", staticSize=2)
+ def readUShortArray(self, count):
+ return self.readArray("H", staticSize=2, count=count)
+
+ def readULong(self):
+ return self.readValue("I", staticSize=4)
+ def readULongArray(self, count):
+ return self.readArray("I", staticSize=4, count=count)
def readUInt24(self):
pos = self.pos
@@ -173,9 +195,8 @@ class OTTableReader(object):
value, = struct.unpack(">l", b'\0'+self.data[pos:newpos])
self.pos = newpos
return value
-
- def readULong(self):
- return self.readValue("L", staticSize=4)
+ def readUInt24Array(self, count):
+ return [self.readUInt24() for _ in range(count)]
def readTag(self):
pos = self.pos
@@ -316,6 +337,12 @@ class OTTableWriter(object):
items[i] = item.getCountData()
elif hasattr(item, "getData"):
item._doneWriting(internedTables)
+ # At this point, all subwriters are hashable based on their items.
+ # (See hash and comparison magic methods above.) So the ``setdefault``
+ # call here will return the first writer object we've seen with
+ # equal content, or store it in the dictionary if it's not been
+ # seen yet. We therefore replace the subwriter object with an equivalent
+ # object, which deduplicates the tree.
if not dontShare:
items[i] = item = internedTables.setdefault(item, item)
self.items = tuple(items)
@@ -344,13 +371,13 @@ class OTTableWriter(object):
tables, extTables, done = extTables, None, {}
# add Coverage table if it is sorted last.
- sortCoverageLast = 0
+ sortCoverageLast = False
if hasattr(self, "sortCoverageLast"):
# Find coverage table
for i in range(numItems):
item = self.items[i]
- if hasattr(item, "name") and (item.name == "Coverage"):
- sortCoverageLast = 1
+ if getattr(item, 'name', None) == "Coverage":
+ sortCoverageLast = True
break
if id(item) not in done:
item._gatherTables(tables, extTables, done)
@@ -363,7 +390,7 @@ class OTTableWriter(object):
if not hasattr(item, "getData"):
continue
- if sortCoverageLast and (i==1) and item.name == 'Coverage':
+ if sortCoverageLast and (i==1) and getattr(item, 'name', None) == 'Coverage':
# we've already 'gathered' it above
continue
@@ -419,33 +446,52 @@ class OTTableWriter(object):
def writeValue(self, typecode, value):
self.items.append(struct.pack(f">{typecode}", value))
+ def writeArray(self, typecode, values):
+ a = array.array(typecode, values)
+ if sys.byteorder != "big": a.byteswap()
+ self.items.append(a.tobytes())
- def writeUShort(self, value):
- assert 0 <= value < 0x10000, value
- self.items.append(struct.pack(">H", value))
+ def writeInt8(self, value):
+ assert -128 <= value < 128, value
+ self.items.append(struct.pack(">b", value))
+ def writeInt8Array(self, values):
+ self.writeArray('b', values)
def writeShort(self, value):
assert -32768 <= value < 32768, value
self.items.append(struct.pack(">h", value))
+ def writeShortArray(self, values):
+ self.writeArray('h', values)
+
+ def writeLong(self, value):
+ self.items.append(struct.pack(">i", value))
+ def writeLongArray(self, values):
+ self.writeArray('i', values)
def writeUInt8(self, value):
assert 0 <= value < 256, value
self.items.append(struct.pack(">B", value))
+ def writeUInt8Array(self, values):
+ self.writeArray('B', values)
- def writeInt8(self, value):
- assert -128 <= value < 128, value
- self.items.append(struct.pack(">b", value))
+ def writeUShort(self, value):
+ assert 0 <= value < 0x10000, value
+ self.items.append(struct.pack(">H", value))
+ def writeUShortArray(self, values):
+ self.writeArray('H', values)
+
+ def writeULong(self, value):
+ self.items.append(struct.pack(">I", value))
+ def writeULongArray(self, values):
+ self.writeArray('I', values)
def writeUInt24(self, value):
assert 0 <= value < 0x1000000, value
b = struct.pack(">L", value)
self.items.append(b[1:])
-
- def writeLong(self, value):
- self.items.append(struct.pack(">l", value))
-
- def writeULong(self, value):
- self.items.append(struct.pack(">L", value))
+ def writeUInt24Array(self, values):
+ for value in values:
+ self.writeUInt24(value)
def writeTag(self, tag):
tag = Tag(tag).tobytes()
@@ -532,11 +578,11 @@ def packUShort(value):
def packULong(value):
assert 0 <= value < 0x100000000, value
- return struct.pack(">L", value)
+ return struct.pack(">I", value)
def packUInt24(value):
assert 0 <= value < 0x1000000, value
- return struct.pack(">L", value)[1:]
+ return struct.pack(">I", value)[1:]
class BaseTable(object):
@@ -554,13 +600,16 @@ class BaseTable(object):
raise AttributeError(attr)
- def ensureDecompiled(self):
+ def ensureDecompiled(self, recurse=False):
reader = self.__dict__.get("reader")
if reader:
del self.reader
font = self.font
del self.font
self.decompile(reader, font)
+ if recurse:
+ for subtable in self.iterSubTables():
+ subtable.value.ensureDecompiled(recurse)
@classmethod
def getRecordSize(cls, reader):
@@ -571,7 +620,7 @@ class BaseTable(object):
countValue = 1
if conv.repeat:
if conv.repeat in reader:
- countValue = reader[conv.repeat]
+ countValue = reader[conv.repeat] + conv.aux
else:
return NotImplemented
totalSize += size * countValue
@@ -698,14 +747,11 @@ class BaseTable(object):
else:
# conv.repeat is a propagated count
writer[conv.repeat].setValue(countValue)
- values = value
- for i, value in enumerate(values):
- try:
- conv.write(writer, font, table, value, i)
- except Exception as e:
- name = value.__class__.__name__ if value is not None else conv.name
- e.args = e.args + (name+'['+str(i)+']',)
- raise
+ try:
+ conv.writeArray(writer, font, table, value)
+ except Exception as e:
+ e.args = e.args + (conv.name+'[]',)
+ raise
elif conv.isCount:
# Special-case Count values.
# Assumption: a Count field will *always* precede
@@ -812,6 +858,37 @@ class BaseTable(object):
return self.__dict__ == other.__dict__
+ class SubTableEntry(NamedTuple):
+ """See BaseTable.iterSubTables()"""
+ name: str
+ value: "BaseTable"
+ index: Optional[int] = None # index into given array, None for single values
+
+ def iterSubTables(self) -> Iterator[SubTableEntry]:
+ """Yield (name, value, index) namedtuples for all subtables of current table.
+
+ A sub-table is an instance of BaseTable (or subclass thereof) that is a child
+ of self, the current parent table.
+ The tuples also contain the attribute name (str) of the of parent table to get
+ a subtable, and optionally, for lists of subtables (i.e. attributes associated
+ with a converter that has a 'repeat'), an index into the list containing the
+ given subtable value.
+ This method can be useful to traverse trees of otTables.
+ """
+ for conv in self.getConverters():
+ name = conv.name
+ value = getattr(self, name, None)
+ if value is None:
+ continue
+ if isinstance(value, BaseTable):
+ yield self.SubTableEntry(name, value)
+ elif isinstance(value, list):
+ yield from (
+ self.SubTableEntry(name, v, index=i)
+ for i, v in enumerate(value)
+ if isinstance(v, BaseTable)
+ )
+
class FormatSwitchingBaseTable(BaseTable):
@@ -823,6 +900,15 @@ class FormatSwitchingBaseTable(BaseTable):
return NotImplemented
def getConverters(self):
+ try:
+ fmt = self.Format
+ except AttributeError:
+ # some FormatSwitchingBaseTables (e.g. Coverage) no longer have 'Format'
+ # attribute after fully decompiled, only gain one in preWrite before being
+ # recompiled. In the decompiled state, these hand-coded classes defined in
+ # otTables.py lose their format-specific nature and gain more high-level
+ # attributes that are not tied to converters.
+ return []
return self.converters.get(self.Format, [])
def getConverterByName(self, name):
@@ -970,6 +1056,13 @@ class ValueRecord(object):
format = format | valueRecordFormatDict[name][0]
return format
+ def getEffectiveFormat(self):
+ format = 0
+ for name,value in self.__dict__.items():
+ if value:
+ format = format | valueRecordFormatDict[name][0]
+ return format
+
def toXML(self, xmlWriter, font, valueName, attrs=None):
if attrs is None:
simpleItems = []
diff --git a/Lib/fontTools/ttLib/tables/otConverters.py b/Lib/fontTools/ttLib/tables/otConverters.py
index 4af38acd..44fcd0ab 100644
--- a/Lib/fontTools/ttLib/tables/otConverters.py
+++ b/Lib/fontTools/ttLib/tables/otConverters.py
@@ -1,4 +1,3 @@
-from fontTools.misc.py23 import bytesjoin, tobytes, tostr
from fontTools.misc.fixedTools import (
fixedToFloat as fi2fl,
floatToFixed as fl2fi,
@@ -7,14 +6,15 @@ from fontTools.misc.fixedTools import (
ensureVersionIsLong as fi2ve,
versionToFixed as ve2fi,
)
-from fontTools.misc.textTools import pad, safeEval
+from fontTools.misc.roundTools import nearestMultipleShortestRepr, otRound
+from fontTools.misc.textTools import bytesjoin, tobytes, tostr, pad, safeEval
from fontTools.ttLib import getSearchRange
from .otBase import (CountReference, FormatSwitchingBaseTable,
OTTableReader, OTTableWriter, ValueRecordFactory)
from .otTables import (lookupTypes, AATStateTable, AATState, AATAction,
ContextualMorphAction, LigatureMorphAction,
- InsertionMorphAction, MorxSubtable, VariableFloat,
- VariableInt, ExtendMode as _ExtendMode,
+ InsertionMorphAction, MorxSubtable,
+ ExtendMode as _ExtendMode,
CompositeMode as _CompositeMode)
from itertools import zip_longest
from functools import partial
@@ -192,8 +192,12 @@ class BaseConverter(object):
raise NotImplementedError(self)
def writeArray(self, writer, font, tableDict, values):
- for i, value in enumerate(values):
- self.write(writer, font, tableDict, value, i)
+ try:
+ for i, value in enumerate(values):
+ self.write(writer, font, tableDict, value, i)
+ except Exception as e:
+ e.args = e.args + (i,)
+ raise
def write(self, writer, font, tableDict, value, repeatIndex=None):
"""Write a value to the writer."""
@@ -221,6 +225,18 @@ class SimpleValue(BaseConverter):
def xmlRead(self, attrs, content, font):
return self.fromString(attrs["value"])
+class OptionalValue(SimpleValue):
+ DEFAULT = None
+ def xmlWrite(self, xmlWriter, font, value, name, attrs):
+ if value != self.DEFAULT:
+ attrs.append(("value", self.toString(value)))
+ xmlWriter.simpletag(name, attrs)
+ xmlWriter.newline()
+ def xmlRead(self, attrs, content, font):
+ if "value" in attrs:
+ return self.fromString(attrs["value"])
+ return self.DEFAULT
+
class IntValue(SimpleValue):
@staticmethod
def fromString(value):
@@ -230,48 +246,75 @@ class Long(IntValue):
staticSize = 4
def read(self, reader, font, tableDict):
return reader.readLong()
+ def readArray(self, reader, font, tableDict, count):
+ return reader.readLongArray(count)
def write(self, writer, font, tableDict, value, repeatIndex=None):
writer.writeLong(value)
+ def writeArray(self, writer, font, tableDict, values):
+ writer.writeLongArray(values)
class ULong(IntValue):
staticSize = 4
def read(self, reader, font, tableDict):
return reader.readULong()
+ def readArray(self, reader, font, tableDict, count):
+ return reader.readULongArray(count)
def write(self, writer, font, tableDict, value, repeatIndex=None):
writer.writeULong(value)
+ def writeArray(self, writer, font, tableDict, values):
+ writer.writeULongArray(values)
class Flags32(ULong):
@staticmethod
def toString(value):
return "0x%08X" % value
+class VarIndex(OptionalValue, ULong):
+ DEFAULT = 0xFFFFFFFF
+
class Short(IntValue):
staticSize = 2
def read(self, reader, font, tableDict):
return reader.readShort()
+ def readArray(self, reader, font, tableDict, count):
+ return reader.readShortArray(count)
def write(self, writer, font, tableDict, value, repeatIndex=None):
writer.writeShort(value)
+ def writeArray(self, writer, font, tableDict, values):
+ writer.writeShortArray(values)
class UShort(IntValue):
staticSize = 2
def read(self, reader, font, tableDict):
return reader.readUShort()
+ def readArray(self, reader, font, tableDict, count):
+ return reader.readUShortArray(count)
def write(self, writer, font, tableDict, value, repeatIndex=None):
writer.writeUShort(value)
+ def writeArray(self, writer, font, tableDict, values):
+ writer.writeUShortArray(values)
class Int8(IntValue):
staticSize = 1
def read(self, reader, font, tableDict):
return reader.readInt8()
+ def readArray(self, reader, font, tableDict, count):
+ return reader.readInt8Array(count)
def write(self, writer, font, tableDict, value, repeatIndex=None):
writer.writeInt8(value)
+ def writeArray(self, writer, font, tableDict, values):
+ writer.writeInt8Array(values)
class UInt8(IntValue):
staticSize = 1
def read(self, reader, font, tableDict):
return reader.readUInt8()
+ def readArray(self, reader, font, tableDict, count):
+ return reader.readUInt8Array(count)
def write(self, writer, font, tableDict, value, repeatIndex=None):
writer.writeUInt8(value)
+ def writeArray(self, writer, font, tableDict, values):
+ writer.writeUInt8Array(values)
class UInt24(IntValue):
staticSize = 3
@@ -304,16 +347,11 @@ class GlyphID(SimpleValue):
staticSize = 2
typecode = "H"
def readArray(self, reader, font, tableDict, count):
- glyphOrder = font.getGlyphOrder()
- gids = reader.readArray(self.typecode, self.staticSize, count)
- try:
- l = [glyphOrder[gid] for gid in gids]
- except IndexError:
- # Slower, but will not throw an IndexError on an invalid glyph id.
- l = [font.getGlyphName(gid) for gid in gids]
- return l
+ return font.getGlyphNameMany(reader.readArray(self.typecode, self.staticSize, count))
def read(self, reader, font, tableDict):
return font.getGlyphName(reader.readValue(self.typecode, self.staticSize))
+ def writeArray(self, writer, font, tableDict, values):
+ writer.writeArray(self.typecode, font.getGlyphIDMany(values))
def write(self, writer, font, tableDict, value, repeatIndex=None):
writer.writeValue(self.typecode, font.getGlyphID(value))
@@ -390,6 +428,22 @@ class F2Dot14(FloatValue):
def toString(value):
return fl2str(value, 14)
+class Angle(F2Dot14):
+ # angles are specified in degrees, and encoded as F2Dot14 fractions of half
+ # circle: e.g. 1.0 => 180, -0.5 => -90, -2.0 => -360, etc.
+ factor = 1.0/(1<<14) * 180 # 0.010986328125
+ def read(self, reader, font, tableDict):
+ return super().read(reader, font, tableDict) * 180
+ def write(self, writer, font, tableDict, value, repeatIndex=None):
+ super().write(writer, font, tableDict, value / 180, repeatIndex=repeatIndex)
+ @classmethod
+ def fromString(cls, value):
+ # quantize to nearest multiples of minimum fixed-precision angle
+ return otRound(float(value) / cls.factor) * cls.factor
+ @classmethod
+ def toString(cls, value):
+ return nearestMultipleShortestRepr(value, cls.factor)
+
class Version(SimpleValue):
staticSize = 4
def read(self, reader, font, tableDict):
@@ -1155,8 +1209,7 @@ class STXHeader(BaseConverter):
def _readLigatures(self, reader, font):
limit = len(reader.data)
numLigatureGlyphs = (limit - reader.pos) // 2
- return [font.getGlyphName(g)
- for g in reader.readUShortArray(numLigatureGlyphs)]
+ return font.getGlyphNameMany(reader.readUShortArray(numLigatureGlyphs))
def _countPerGlyphLookups(self, table):
# Somewhat annoyingly, the morx table does not encode
@@ -1551,20 +1604,15 @@ class VarIdxMapValue(BaseConverter):
outerShift = 16 - innerBits
entrySize = 1 + ((fmt & 0x0030) >> 4)
- read = {
- 1: reader.readUInt8,
- 2: reader.readUShort,
- 3: reader.readUInt24,
- 4: reader.readULong,
+ readArray = {
+ 1: reader.readUInt8Array,
+ 2: reader.readUShortArray,
+ 3: reader.readUInt24Array,
+ 4: reader.readULongArray,
}[entrySize]
- mapping = []
- for i in range(nItems):
- raw = read()
- idx = ((raw & outerMask) << outerShift) | (raw & innerMask)
- mapping.append(idx)
-
- return mapping
+ return [(((raw & outerMask) << outerShift) | (raw & innerMask))
+ for raw in readArray(nItems)]
def write(self, writer, font, tableDict, value, repeatIndex=None):
fmt = tableDict['EntryFormat']
@@ -1576,16 +1624,15 @@ class VarIdxMapValue(BaseConverter):
outerShift = 16 - innerBits
entrySize = 1 + ((fmt & 0x0030) >> 4)
- write = {
- 1: writer.writeUInt8,
- 2: writer.writeUShort,
- 3: writer.writeUInt24,
- 4: writer.writeULong,
+ writeArray = {
+ 1: writer.writeUInt8Array,
+ 2: writer.writeUShortArray,
+ 3: writer.writeUInt24Array,
+ 4: writer.writeULongArray,
}[entrySize]
- for idx in mapping:
- raw = ((idx & 0xFFFF0000) >> outerShift) | (idx & innerMask)
- write(raw)
+ writeArray([(((idx & 0xFFFF0000) >> outerShift) | (idx & innerMask))
+ for idx in mapping])
class VarDataValue(BaseConverter):
@@ -1594,27 +1641,43 @@ class VarDataValue(BaseConverter):
values = []
regionCount = tableDict["VarRegionCount"]
- shortCount = tableDict["NumShorts"]
+ wordCount = tableDict["NumShorts"]
- for i in range(min(regionCount, shortCount)):
- values.append(reader.readShort())
- for i in range(min(regionCount, shortCount), regionCount):
- values.append(reader.readInt8())
- for i in range(regionCount, shortCount):
- reader.readInt8()
+ # https://github.com/fonttools/fonttools/issues/2279
+ longWords = bool(wordCount & 0x8000)
+ wordCount = wordCount & 0x7FFF
+
+ if longWords:
+ readBigArray, readSmallArray = reader.readLongArray, reader.readShortArray
+ else:
+ readBigArray, readSmallArray = reader.readShortArray, reader.readInt8Array
+
+ n1, n2 = min(regionCount, wordCount), max(regionCount, wordCount)
+ values.extend(readBigArray(n1))
+ values.extend(readSmallArray(n2 - n1))
+ if n2 > regionCount: # Padding
+ del values[regionCount:]
return values
- def write(self, writer, font, tableDict, value, repeatIndex=None):
+ def write(self, writer, font, tableDict, values, repeatIndex=None):
regionCount = tableDict["VarRegionCount"]
- shortCount = tableDict["NumShorts"]
+ wordCount = tableDict["NumShorts"]
- for i in range(min(regionCount, shortCount)):
- writer.writeShort(value[i])
- for i in range(min(regionCount, shortCount), regionCount):
- writer.writeInt8(value[i])
- for i in range(regionCount, shortCount):
- writer.writeInt8(0)
+ # https://github.com/fonttools/fonttools/issues/2279
+ longWords = bool(wordCount & 0x8000)
+ wordCount = wordCount & 0x7FFF
+
+ (writeBigArray, writeSmallArray) = {
+ False: (writer.writeShortArray, writer.writeInt8Array),
+ True: (writer.writeLongArray, writer.writeShortArray),
+ }[longWords]
+
+ n1, n2 = min(regionCount, wordCount), max(regionCount, wordCount)
+ writeBigArray(values[:n1])
+ writeSmallArray(values[n1:regionCount])
+ if n2 > regionCount: # Padding
+ writer.writeSmallArray([0] * (n2 - regionCount))
def xmlWrite(self, xmlWriter, font, value, name, attrs):
xmlWriter.simpletag(name, attrs + [("value", value)])
@@ -1637,99 +1700,6 @@ class LookupFlag(UShort):
xmlWriter.comment(" ".join(flags))
xmlWriter.newline()
-def _issubclass_namedtuple(x):
- return (
- issubclass(x, tuple)
- and getattr(x, "_fields", None) is not None
- )
-
-
-class _NamedTupleConverter(BaseConverter):
- # subclasses must override this
- tupleClass = NotImplemented
- # List[SimpleValue]
- converterClasses = NotImplemented
-
- def __init__(self, name, repeat, aux, tableClass=None):
- # we expect all converters to be subclasses of SimpleValue
- assert all(issubclass(klass, SimpleValue) for klass in self.converterClasses)
- assert _issubclass_namedtuple(self.tupleClass), repr(self.tupleClass)
- assert len(self.tupleClass._fields) == len(self.converterClasses)
- assert tableClass is None # tableClass is unused by SimplValues
- BaseConverter.__init__(self, name, repeat, aux)
- self.converters = [
- klass(name=name, repeat=None, aux=None)
- for name, klass in zip(self.tupleClass._fields, self.converterClasses)
- ]
- self.convertersByName = {conv.name: conv for conv in self.converters}
- # returned by getRecordSize method
- self.staticSize = sum(c.staticSize for c in self.converters)
-
- def read(self, reader, font, tableDict):
- kwargs = {
- conv.name: conv.read(reader, font, tableDict)
- for conv in self.converters
- }
- return self.tupleClass(**kwargs)
-
- def write(self, writer, font, tableDict, value, repeatIndex=None):
- for conv in self.converters:
- v = getattr(value, conv.name)
- # repeatIndex is unused for SimpleValues
- conv.write(writer, font, tableDict, v, repeatIndex=None)
-
- def xmlWrite(self, xmlWriter, font, value, name, attrs):
- assert value is not None
- defaults = value.__new__.__defaults__ or ()
- assert len(self.converters) >= len(defaults)
- values = {}
- required = object()
- for conv, default in zip_longest(
- reversed(self.converters),
- reversed(defaults),
- fillvalue=required,
- ):
- v = getattr(value, conv.name)
- if default is required or v != default:
- values[conv.name] = conv.toString(v)
- if attrs is None:
- attrs = []
- attrs.extend(
- (conv.name, values[conv.name])
- for conv in self.converters
- if conv.name in values
- )
- xmlWriter.simpletag(name, attrs)
- xmlWriter.newline()
-
- def xmlRead(self, attrs, content, font):
- converters = self.convertersByName
- kwargs = {
- k: converters[k].fromString(v)
- for k, v in attrs.items()
- }
- return self.tupleClass(**kwargs)
-
-
-class VarFixed(_NamedTupleConverter):
- tupleClass = VariableFloat
- converterClasses = [Fixed, ULong]
-
-
-class VarF2Dot14(_NamedTupleConverter):
- tupleClass = VariableFloat
- converterClasses = [F2Dot14, ULong]
-
-
-class VarInt16(_NamedTupleConverter):
- tupleClass = VariableInt
- converterClasses = [Short, ULong]
-
-
-class VarUInt16(_NamedTupleConverter):
- tupleClass = VariableInt
- converterClasses = [UShort, ULong]
-
class _UInt8Enum(UInt8):
enumClass = NotImplemented
@@ -1762,6 +1732,7 @@ converterMapping = {
"uint32": ULong,
"char64": Char64,
"Flags32": Flags32,
+ "VarIndex": VarIndex,
"Version": Version,
"Tag": Tag,
"GlyphID": GlyphID,
@@ -1770,6 +1741,7 @@ converterMapping = {
"DeciPoints": DeciPoints,
"Fixed": Fixed,
"F2Dot14": F2Dot14,
+ "Angle": Angle,
"struct": Struct,
"Offset": Table,
"LOffset": LTable,
@@ -1798,10 +1770,4 @@ converterMapping = {
"OffsetTo": lambda C: partial(Table, tableClass=C),
"LOffsetTo": lambda C: partial(LTable, tableClass=C),
"LOffset24To": lambda C: partial(Table24, tableClass=C),
-
- # Variable types
- "VarFixed": VarFixed,
- "VarF2Dot14": VarF2Dot14,
- "VarInt16": VarInt16,
- "VarUInt16": VarUInt16,
}
diff --git a/Lib/fontTools/ttLib/tables/otData.py b/Lib/fontTools/ttLib/tables/otData.py
index c4294169..dd4033e4 100755
--- a/Lib/fontTools/ttLib/tables/otData.py
+++ b/Lib/fontTools/ttLib/tables/otData.py
@@ -988,6 +988,20 @@ otData = [
('VarIdxMapValue', 'mapping', '', 0, 'Array of compressed data'),
]),
+ ('DeltaSetIndexMapFormat0', [
+ ('uint8', 'Format', None, None, 'Format of the DeltaSetIndexMap = 0'),
+ ('uint8', 'EntryFormat', None, None, ''), # Automatically computed
+ ('uint16', 'MappingCount', None, None, ''), # Automatically computed
+ ('VarIdxMapValue', 'mapping', '', 0, 'Array of compressed data'),
+ ]),
+
+ ('DeltaSetIndexMapFormat1', [
+ ('uint8', 'Format', None, None, 'Format of the DeltaSetIndexMap = 1'),
+ ('uint8', 'EntryFormat', None, None, ''), # Automatically computed
+ ('uint32', 'MappingCount', None, None, ''), # Automatically computed
+ ('VarIdxMapValue', 'mapping', '', 0, 'Array of compressed data'),
+ ]),
+
# Glyph advance variations
('HVAR', [
@@ -1546,8 +1560,10 @@ otData = [
('LOffset', 'BaseGlyphRecordArray', None, None, 'Offset (from beginning of COLR table) to Base Glyph records.'),
('LOffset', 'LayerRecordArray', None, None, 'Offset (from beginning of COLR table) to Layer Records.'),
('uint16', 'LayerRecordCount', None, None, 'Number of Layer Records.'),
- ('LOffset', 'BaseGlyphV1List', None, 'Version >= 1', 'Offset (from beginning of COLR table) to array of Version-1 Base Glyph records.'),
- ('LOffset', 'LayerV1List', None, 'Version >= 1', 'Offset (from beginning of COLR table) to LayerV1List.'),
+ ('LOffset', 'BaseGlyphList', None, 'Version >= 1', 'Offset (from beginning of COLR table) to array of Version-1 Base Glyph records.'),
+ ('LOffset', 'LayerList', None, 'Version >= 1', 'Offset (from beginning of COLR table) to LayerList.'),
+ ('LOffset', 'ClipList', None, 'Version >= 1', 'Offset to ClipList table (may be NULL)'),
+ ('LOffsetTo(DeltaSetIndexMap)', 'VarIndexMap', None, 'Version >= 1', 'Offset to DeltaSetIndexMap table (may be NULL)'),
('LOffset', 'VarStore', None, 'Version >= 1', 'Offset to variation store (may be NULL)'),
]),
@@ -1570,19 +1586,48 @@ otData = [
('uint16', 'PaletteIndex', None, None, 'Index value to use with a selected color palette.'),
]),
- ('BaseGlyphV1List', [
+ ('BaseGlyphList', [
('uint32', 'BaseGlyphCount', None, None, 'Number of Version-1 Base Glyph records'),
- ('struct', 'BaseGlyphV1Record', 'BaseGlyphCount', 0, 'Array of Version-1 Base Glyph records'),
+ ('struct', 'BaseGlyphPaintRecord', 'BaseGlyphCount', 0, 'Array of Version-1 Base Glyph records'),
]),
- ('BaseGlyphV1Record', [
+ ('BaseGlyphPaintRecord', [
('GlyphID', 'BaseGlyph', None, None, 'Glyph ID of reference glyph.'),
- ('LOffset', 'Paint', None, None, 'Offset (from beginning of BaseGlyphV1Record) to Paint, typically a PaintColrLayers.'),
+ ('LOffset', 'Paint', None, None, 'Offset (from beginning of BaseGlyphPaintRecord) to Paint, typically a PaintColrLayers.'),
]),
- ('LayerV1List', [
+ ('LayerList', [
('uint32', 'LayerCount', None, None, 'Number of Version-1 Layers'),
- ('LOffset', 'Paint', 'LayerCount', 0, 'Array of offsets to Paint tables, from the start of the LayerV1List table.'),
+ ('LOffset', 'Paint', 'LayerCount', 0, 'Array of offsets to Paint tables, from the start of the LayerList table.'),
+ ]),
+
+ ('ClipListFormat1', [
+ ('uint8', 'Format', None, None, 'Format for ClipList with 16bit glyph IDs: 1'),
+ ('uint32', 'ClipCount', None, None, 'Number of Clip records.'),
+ ('struct', 'ClipRecord', 'ClipCount', 0, 'Array of Clip records sorted by glyph ID.'),
+ ]),
+
+ ('ClipRecord', [
+ ('uint16', 'StartGlyphID', None, None, 'First glyph ID in the range.'),
+ ('uint16', 'EndGlyphID', None, None, 'Last glyph ID in the range.'),
+ ('Offset24', 'ClipBox', None, None, 'Offset to a ClipBox table.'),
+ ]),
+
+ ('ClipBoxFormat1', [
+ ('uint8', 'Format', None, None, 'Format for ClipBox without variation: set to 1.'),
+ ('int16', 'xMin', None, None, 'Minimum x of clip box.'),
+ ('int16', 'yMin', None, None, 'Minimum y of clip box.'),
+ ('int16', 'xMax', None, None, 'Maximum x of clip box.'),
+ ('int16', 'yMax', None, None, 'Maximum y of clip box.'),
+ ]),
+
+ ('ClipBoxFormat2', [
+ ('uint8', 'Format', None, None, 'Format for variable ClipBox: set to 2.'),
+ ('int16', 'xMin', None, None, 'Minimum x of clip box.'),
+ ('int16', 'yMin', None, None, 'Minimum y of clip box.'),
+ ('int16', 'xMax', None, None, 'Maximum x of clip box.'),
+ ('int16', 'yMax', None, None, 'Maximum y of clip box.'),
+ ('VarIndex', 'VarIndexBase', None, None, 'Base index into DeltaSetIndexMap.'),
]),
# COLRv1 Affine2x3 uses the same column-major order to serialize a 2D
@@ -1603,30 +1648,25 @@ otData = [
('Fixed', 'dy', None, None, 'Translation in y direction'),
]),
('VarAffine2x3', [
- ('VarFixed', 'xx', None, None, 'x-part of x basis vector'),
- ('VarFixed', 'yx', None, None, 'y-part of x basis vector'),
- ('VarFixed', 'xy', None, None, 'x-part of y basis vector'),
- ('VarFixed', 'yy', None, None, 'y-part of y basis vector'),
- ('VarFixed', 'dx', None, None, 'Translation in x direction'),
- ('VarFixed', 'dy', None, None, 'Translation in y direction'),
- ]),
-
- ('ColorIndex', [
- ('uint16', 'PaletteIndex', None, None, 'Index value to use with a selected color palette.'),
- ('F2Dot14', 'Alpha', None, None, 'Values outsided [0.,1.] reserved'),
- ]),
- ('VarColorIndex', [
- ('uint16', 'PaletteIndex', None, None, 'Index value to use with a selected color palette.'),
- ('VarF2Dot14', 'Alpha', None, None, 'Values outsided [0.,1.] reserved'),
+ ('Fixed', 'xx', None, None, 'x-part of x basis vector'),
+ ('Fixed', 'yx', None, None, 'y-part of x basis vector'),
+ ('Fixed', 'xy', None, None, 'x-part of y basis vector'),
+ ('Fixed', 'yy', None, None, 'y-part of y basis vector'),
+ ('Fixed', 'dx', None, None, 'Translation in x direction'),
+ ('Fixed', 'dy', None, None, 'Translation in y direction'),
+ ('VarIndex', 'VarIndexBase', None, None, 'Base index into DeltaSetIndexMap.'),
]),
('ColorStop', [
('F2Dot14', 'StopOffset', None, None, ''),
- ('ColorIndex', 'Color', None, None, ''),
+ ('uint16', 'PaletteIndex', None, None, 'Index for a CPAL palette entry.'),
+ ('F2Dot14', 'Alpha', None, None, 'Values outsided [0.,1.] reserved'),
]),
('VarColorStop', [
- ('VarF2Dot14', 'StopOffset', None, None, ''),
- ('VarColorIndex', 'Color', None, None, ''),
+ ('F2Dot14', 'StopOffset', None, None, 'VarIndexBase + 0'),
+ ('uint16', 'PaletteIndex', None, None, 'Index for a CPAL palette entry.'),
+ ('F2Dot14', 'Alpha', None, None, 'Values outsided [0.,1.] reserved. VarIndexBase + 1'),
+ ('VarIndex', 'VarIndexBase', None, None, 'Base index into DeltaSetIndexMap.'),
]),
('ColorLine', [
@@ -1643,19 +1683,22 @@ otData = [
# PaintColrLayers
('PaintFormat1', [
('uint8', 'PaintFormat', None, None, 'Format identifier-format = 1'),
- ('uint8', 'NumLayers', None, None, 'Number of offsets to Paint to read from LayerV1List.'),
- ('uint32', 'FirstLayerIndex', None, None, 'Index into LayerV1List.'),
+ ('uint8', 'NumLayers', None, None, 'Number of offsets to Paint to read from LayerList.'),
+ ('uint32', 'FirstLayerIndex', None, None, 'Index into LayerList.'),
]),
# PaintSolid
('PaintFormat2', [
('uint8', 'PaintFormat', None, None, 'Format identifier-format = 2'),
- ('ColorIndex', 'Color', None, None, 'A solid color paint.'),
+ ('uint16', 'PaletteIndex', None, None, 'Index for a CPAL palette entry.'),
+ ('F2Dot14', 'Alpha', None, None, 'Values outsided [0.,1.] reserved'),
]),
# PaintVarSolid
('PaintFormat3', [
('uint8', 'PaintFormat', None, None, 'Format identifier-format = 3'),
- ('VarColorIndex', 'Color', None, None, 'A solid color paint.'),
+ ('uint16', 'PaletteIndex', None, None, 'Index for a CPAL palette entry.'),
+ ('F2Dot14', 'Alpha', None, None, 'Values outsided [0.,1.] reserved. VarIndexBase + 0'),
+ ('VarIndex', 'VarIndexBase', None, None, 'Base index into DeltaSetIndexMap.'),
]),
# PaintLinearGradient
@@ -1673,12 +1716,13 @@ otData = [
('PaintFormat5', [
('uint8', 'PaintFormat', None, None, 'Format identifier-format = 5'),
('LOffset24To(VarColorLine)', 'ColorLine', None, None, 'Offset (from beginning of PaintVarLinearGradient table) to VarColorLine subtable.'),
- ('VarInt16', 'x0', None, None, ''),
- ('VarInt16', 'y0', None, None, ''),
- ('VarInt16', 'x1', None, None, ''),
- ('VarInt16', 'y1', None, None, ''),
- ('VarInt16', 'x2', None, None, ''),
- ('VarInt16', 'y2', None, None, ''),
+ ('int16', 'x0', None, None, ''),
+ ('int16', 'y0', None, None, ''),
+ ('int16', 'x1', None, None, ''),
+ ('int16', 'y1', None, None, ''),
+ ('int16', 'x2', None, None, ''),
+ ('int16', 'y2', None, None, ''),
+ ('VarIndex', 'VarIndexBase', None, None, 'Base index into DeltaSetIndexMap.'),
]),
# PaintRadialGradient
@@ -1696,12 +1740,13 @@ otData = [
('PaintFormat7', [
('uint8', 'PaintFormat', None, None, 'Format identifier-format = 7'),
('LOffset24To(VarColorLine)', 'ColorLine', None, None, 'Offset (from beginning of PaintVarRadialGradient table) to VarColorLine subtable.'),
- ('VarInt16', 'x0', None, None, ''),
- ('VarInt16', 'y0', None, None, ''),
- ('VarUInt16', 'r0', None, None, ''),
- ('VarInt16', 'x1', None, None, ''),
- ('VarInt16', 'y1', None, None, ''),
- ('VarUInt16', 'r1', None, None, ''),
+ ('int16', 'x0', None, None, ''),
+ ('int16', 'y0', None, None, ''),
+ ('uint16', 'r0', None, None, ''),
+ ('int16', 'x1', None, None, ''),
+ ('int16', 'y1', None, None, ''),
+ ('uint16', 'r1', None, None, ''),
+ ('VarIndex', 'VarIndexBase', None, None, 'Base index into DeltaSetIndexMap.'),
]),
# PaintSweepGradient
@@ -1710,17 +1755,18 @@ otData = [
('Offset24', 'ColorLine', None, None, 'Offset (from beginning of PaintSweepGradient table) to ColorLine subtable.'),
('int16', 'centerX', None, None, 'Center x coordinate.'),
('int16', 'centerY', None, None, 'Center y coordinate.'),
- ('Fixed', 'startAngle', None, None, 'Start of the angular range of the gradient.'),
- ('Fixed', 'endAngle', None, None, 'End of the angular range of the gradient.'),
+ ('Angle', 'startAngle', None, None, 'Start of the angular range of the gradient.'),
+ ('Angle', 'endAngle', None, None, 'End of the angular range of the gradient.'),
]),
# PaintVarSweepGradient
('PaintFormat9', [
('uint8', 'PaintFormat', None, None, 'Format identifier-format = 9'),
('LOffset24To(VarColorLine)', 'ColorLine', None, None, 'Offset (from beginning of PaintVarSweepGradient table) to VarColorLine subtable.'),
- ('VarInt16', 'centerX', None, None, 'Center x coordinate.'),
- ('VarInt16', 'centerY', None, None, 'Center y coordinate.'),
- ('VarFixed', 'startAngle', None, None, 'Start of the angular range of the gradient.'),
- ('VarFixed', 'endAngle', None, None, 'End of the angular range of the gradient.'),
+ ('int16', 'centerX', None, None, 'Center x coordinate.'),
+ ('int16', 'centerY', None, None, 'Center y coordinate.'),
+ ('Angle', 'startAngle', None, None, 'Start of the angular range of the gradient.'),
+ ('Angle', 'endAngle', None, None, 'End of the angular range of the gradient.'),
+ ('VarIndex', 'VarIndexBase', None, None, 'Base index into DeltaSetIndexMap.'),
]),
# PaintGlyph
@@ -1733,76 +1779,177 @@ otData = [
# PaintColrGlyph
('PaintFormat11', [
('uint8', 'PaintFormat', None, None, 'Format identifier-format = 11'),
- ('GlyphID', 'Glyph', None, None, 'Virtual glyph ID for a BaseGlyphV1List base glyph.'),
+ ('GlyphID', 'Glyph', None, None, 'Virtual glyph ID for a BaseGlyphList base glyph.'),
]),
# PaintTransform
('PaintFormat12', [
('uint8', 'PaintFormat', None, None, 'Format identifier-format = 12'),
('Offset24', 'Paint', None, None, 'Offset (from beginning of PaintTransform table) to Paint subtable.'),
- ('Affine2x3', 'Transform', None, None, '2x3 matrix for 2D affine transformations.'),
+ ('LOffset24To(Affine2x3)', 'Transform', None, None, '2x3 matrix for 2D affine transformations.'),
]),
# PaintVarTransform
('PaintFormat13', [
('uint8', 'PaintFormat', None, None, 'Format identifier-format = 13'),
('Offset24', 'Paint', None, None, 'Offset (from beginning of PaintVarTransform table) to Paint subtable.'),
- ('VarAffine2x3', 'Transform', None, None, '2x3 matrix for 2D affine transformations.'),
+ ('LOffset24To(VarAffine2x3)', 'Transform', None, None, '2x3 matrix for 2D affine transformations.'),
]),
# PaintTranslate
('PaintFormat14', [
('uint8', 'PaintFormat', None, None, 'Format identifier-format = 14'),
('Offset24', 'Paint', None, None, 'Offset (from beginning of PaintTranslate table) to Paint subtable.'),
- ('Fixed', 'dx', None, None, 'Translation in x direction.'),
- ('Fixed', 'dy', None, None, 'Translation in y direction.'),
+ ('int16', 'dx', None, None, 'Translation in x direction.'),
+ ('int16', 'dy', None, None, 'Translation in y direction.'),
]),
# PaintVarTranslate
('PaintFormat15', [
('uint8', 'PaintFormat', None, None, 'Format identifier-format = 15'),
('Offset24', 'Paint', None, None, 'Offset (from beginning of PaintVarTranslate table) to Paint subtable.'),
- ('VarFixed', 'dx', None, None, 'Translation in x direction.'),
- ('VarFixed', 'dy', None, None, 'Translation in y direction.'),
+ ('int16', 'dx', None, None, 'Translation in x direction.'),
+ ('int16', 'dy', None, None, 'Translation in y direction.'),
+ ('VarIndex', 'VarIndexBase', None, None, 'Base index into DeltaSetIndexMap.'),
]),
- # PaintRotate
+ # PaintScale
('PaintFormat16', [
('uint8', 'PaintFormat', None, None, 'Format identifier-format = 16'),
- ('Offset24', 'Paint', None, None, 'Offset (from beginning of PaintRotate table) to Paint subtable.'),
- ('Fixed', 'angle', None, None, ''),
- ('Fixed', 'centerX', None, None, ''),
- ('Fixed', 'centerY', None, None, ''),
+ ('Offset24', 'Paint', None, None, 'Offset (from beginning of PaintScale table) to Paint subtable.'),
+ ('F2Dot14', 'scaleX', None, None, ''),
+ ('F2Dot14', 'scaleY', None, None, ''),
]),
- # PaintVarRotate
+ # PaintVarScale
('PaintFormat17', [
('uint8', 'PaintFormat', None, None, 'Format identifier-format = 17'),
- ('Offset24', 'Paint', None, None, 'Offset (from beginning of PaintVarRotate table) to Paint subtable.'),
- ('VarFixed', 'angle', None, None, ''),
- ('VarFixed', 'centerX', None, None, ''),
- ('VarFixed', 'centerY', None, None, ''),
+ ('Offset24', 'Paint', None, None, 'Offset (from beginning of PaintVarScale table) to Paint subtable.'),
+ ('F2Dot14', 'scaleX', None, None, ''),
+ ('F2Dot14', 'scaleY', None, None, ''),
+ ('VarIndex', 'VarIndexBase', None, None, 'Base index into DeltaSetIndexMap.'),
]),
- # PaintSkew
+ # PaintScaleAroundCenter
('PaintFormat18', [
('uint8', 'PaintFormat', None, None, 'Format identifier-format = 18'),
- ('Offset24', 'Paint', None, None, 'Offset (from beginning of PaintSkew table) to Paint subtable.'),
- ('Fixed', 'xSkewAngle', None, None, ''),
- ('Fixed', 'ySkewAngle', None, None, ''),
- ('Fixed', 'centerX', None, None, ''),
- ('Fixed', 'centerY', None, None, ''),
+ ('Offset24', 'Paint', None, None, 'Offset (from beginning of PaintScaleAroundCenter table) to Paint subtable.'),
+ ('F2Dot14', 'scaleX', None, None, ''),
+ ('F2Dot14', 'scaleY', None, None, ''),
+ ('int16', 'centerX', None, None, ''),
+ ('int16', 'centerY', None, None, ''),
]),
- # PaintVarSkew
+ # PaintVarScaleAroundCenter
('PaintFormat19', [
('uint8', 'PaintFormat', None, None, 'Format identifier-format = 19'),
- ('Offset24', 'Paint', None, None, 'Offset (from beginning of PaintVarSkew table) to Paint subtable.'),
- ('VarFixed', 'xSkewAngle', None, None, ''),
- ('VarFixed', 'ySkewAngle', None, None, ''),
- ('VarFixed', 'centerX', None, None, ''),
- ('VarFixed', 'centerY', None, None, ''),
+ ('Offset24', 'Paint', None, None, 'Offset (from beginning of PaintVarScaleAroundCenter table) to Paint subtable.'),
+ ('F2Dot14', 'scaleX', None, None, ''),
+ ('F2Dot14', 'scaleY', None, None, ''),
+ ('int16', 'centerX', None, None, ''),
+ ('int16', 'centerY', None, None, ''),
+ ('VarIndex', 'VarIndexBase', None, None, 'Base index into DeltaSetIndexMap.'),
]),
- # PaintComposite
+ # PaintScaleUniform
('PaintFormat20', [
('uint8', 'PaintFormat', None, None, 'Format identifier-format = 20'),
+ ('Offset24', 'Paint', None, None, 'Offset (from beginning of PaintScaleUniform table) to Paint subtable.'),
+ ('F2Dot14', 'scale', None, None, ''),
+ ]),
+ # PaintVarScaleUniform
+ ('PaintFormat21', [
+ ('uint8', 'PaintFormat', None, None, 'Format identifier-format = 21'),
+ ('Offset24', 'Paint', None, None, 'Offset (from beginning of PaintVarScaleUniform table) to Paint subtable.'),
+ ('F2Dot14', 'scale', None, None, ''),
+ ('VarIndex', 'VarIndexBase', None, None, 'Base index into DeltaSetIndexMap.'),
+ ]),
+
+ # PaintScaleUniformAroundCenter
+ ('PaintFormat22', [
+ ('uint8', 'PaintFormat', None, None, 'Format identifier-format = 22'),
+ ('Offset24', 'Paint', None, None, 'Offset (from beginning of PaintScaleUniformAroundCenter table) to Paint subtable.'),
+ ('F2Dot14', 'scale', None, None, ''),
+ ('int16', 'centerX', None, None, ''),
+ ('int16', 'centerY', None, None, ''),
+ ]),
+ # PaintVarScaleUniformAroundCenter
+ ('PaintFormat23', [
+ ('uint8', 'PaintFormat', None, None, 'Format identifier-format = 23'),
+ ('Offset24', 'Paint', None, None, 'Offset (from beginning of PaintVarScaleUniformAroundCenter table) to Paint subtable.'),
+ ('F2Dot14', 'scale', None, None, ''),
+ ('int16', 'centerX', None, None, ''),
+ ('int16', 'centerY', None, None, ''),
+ ('VarIndex', 'VarIndexBase', None, None, 'Base index into DeltaSetIndexMap.'),
+ ]),
+
+ # PaintRotate
+ ('PaintFormat24', [
+ ('uint8', 'PaintFormat', None, None, 'Format identifier-format = 24'),
+ ('Offset24', 'Paint', None, None, 'Offset (from beginning of PaintRotate table) to Paint subtable.'),
+ ('Angle', 'angle', None, None, ''),
+ ]),
+ # PaintVarRotate
+ ('PaintFormat25', [
+ ('uint8', 'PaintFormat', None, None, 'Format identifier-format = 25'),
+ ('Offset24', 'Paint', None, None, 'Offset (from beginning of PaintVarRotate table) to Paint subtable.'),
+ ('Angle', 'angle', None, None, ''),
+ ('VarIndex', 'VarIndexBase', None, None, 'Base index into DeltaSetIndexMap.'),
+ ]),
+
+ # PaintRotateAroundCenter
+ ('PaintFormat26', [
+ ('uint8', 'PaintFormat', None, None, 'Format identifier-format = 26'),
+ ('Offset24', 'Paint', None, None, 'Offset (from beginning of PaintRotateAroundCenter table) to Paint subtable.'),
+ ('Angle', 'angle', None, None, ''),
+ ('int16', 'centerX', None, None, ''),
+ ('int16', 'centerY', None, None, ''),
+ ]),
+ # PaintVarRotateAroundCenter
+ ('PaintFormat27', [
+ ('uint8', 'PaintFormat', None, None, 'Format identifier-format = 27'),
+ ('Offset24', 'Paint', None, None, 'Offset (from beginning of PaintVarRotateAroundCenter table) to Paint subtable.'),
+ ('Angle', 'angle', None, None, ''),
+ ('int16', 'centerX', None, None, ''),
+ ('int16', 'centerY', None, None, ''),
+ ('VarIndex', 'VarIndexBase', None, None, 'Base index into DeltaSetIndexMap.'),
+ ]),
+
+ # PaintSkew
+ ('PaintFormat28', [
+ ('uint8', 'PaintFormat', None, None, 'Format identifier-format = 28'),
+ ('Offset24', 'Paint', None, None, 'Offset (from beginning of PaintSkew table) to Paint subtable.'),
+ ('Angle', 'xSkewAngle', None, None, ''),
+ ('Angle', 'ySkewAngle', None, None, ''),
+ ]),
+ # PaintVarSkew
+ ('PaintFormat29', [
+ ('uint8', 'PaintFormat', None, None, 'Format identifier-format = 29'),
+ ('Offset24', 'Paint', None, None, 'Offset (from beginning of PaintVarSkew table) to Paint subtable.'),
+ ('Angle', 'xSkewAngle', None, None, ''),
+ ('Angle', 'ySkewAngle', None, None, ''),
+ ('VarIndex', 'VarIndexBase', None, None, 'Base index into DeltaSetIndexMap.'),
+ ]),
+
+ # PaintSkewAroundCenter
+ ('PaintFormat30', [
+ ('uint8', 'PaintFormat', None, None, 'Format identifier-format = 30'),
+ ('Offset24', 'Paint', None, None, 'Offset (from beginning of PaintSkewAroundCenter table) to Paint subtable.'),
+ ('Angle', 'xSkewAngle', None, None, ''),
+ ('Angle', 'ySkewAngle', None, None, ''),
+ ('int16', 'centerX', None, None, ''),
+ ('int16', 'centerY', None, None, ''),
+ ]),
+ # PaintVarSkewAroundCenter
+ ('PaintFormat31', [
+ ('uint8', 'PaintFormat', None, None, 'Format identifier-format = 31'),
+ ('Offset24', 'Paint', None, None, 'Offset (from beginning of PaintVarSkewAroundCenter table) to Paint subtable.'),
+ ('Angle', 'xSkewAngle', None, None, ''),
+ ('Angle', 'ySkewAngle', None, None, ''),
+ ('int16', 'centerX', None, None, ''),
+ ('int16', 'centerY', None, None, ''),
+ ('VarIndex', 'VarIndexBase', None, None, 'Base index into DeltaSetIndexMap.'),
+ ]),
+
+ # PaintComposite
+ ('PaintFormat32', [
+ ('uint8', 'PaintFormat', None, None, 'Format identifier-format = 32'),
('LOffset24To(Paint)', 'SourcePaint', None, None, 'Offset (from beginning of PaintComposite table) to source Paint subtable.'),
('CompositeMode', 'CompositeMode', None, None, 'A CompositeMode enumeration value.'),
('LOffset24To(Paint)', 'BackdropPaint', None, None, 'Offset (from beginning of PaintComposite table) to backdrop Paint subtable.'),
diff --git a/Lib/fontTools/ttLib/tables/otTables.py b/Lib/fontTools/ttLib/tables/otTables.py
index 85befb3b..fbd9db7b 100644
--- a/Lib/fontTools/ttLib/tables/otTables.py
+++ b/Lib/fontTools/ttLib/tables/otTables.py
@@ -5,12 +5,12 @@ OpenType subtables.
Most are constructed upon import from data in otData.py, all are populated with
converter objects from otConverters.py.
"""
+import copy
from enum import IntEnum
import itertools
-from collections import namedtuple
-from fontTools.misc.py23 import bytesjoin
+from collections import defaultdict, namedtuple
from fontTools.misc.roundTools import otRound
-from fontTools.misc.textTools import pad, safeEval
+from fontTools.misc.textTools import bytesjoin, pad, safeEval
from .otBase import (
BaseTable, FormatSwitchingBaseTable, ValueRecord, CountReference,
getFormatSwitchingBaseTableClass,
@@ -425,8 +425,7 @@ class InsertionMorphAction(AATAction):
return []
reader = actionReader.getSubReader(
actionReader.pos + index * 2)
- return [font.getGlyphName(glyphID)
- for glyphID in reader.readUShortArray(count)]
+ return font.getGlyphNameMany(reader.readUShortArray(count))
def toXML(self, xmlWriter, font, attrs, name):
xmlWriter.begintag(name, **attrs)
@@ -521,12 +520,10 @@ class Coverage(FormatSwitchingBaseTable):
def postRead(self, rawTable, font):
if self.Format == 1:
- # TODO only allow glyphs that are valid?
self.glyphs = rawTable["GlyphArray"]
elif self.Format == 2:
glyphs = self.glyphs = []
ranges = rawTable["RangeRecord"]
- glyphOrder = font.getGlyphOrder()
# Some SIL fonts have coverage entries that don't have sorted
# StartCoverageIndex. If it is so, fixup and warn. We undo
# this when writing font out.
@@ -536,25 +533,11 @@ class Coverage(FormatSwitchingBaseTable):
ranges = sorted_ranges
del sorted_ranges
for r in ranges:
- assert r.StartCoverageIndex == len(glyphs), \
- (r.StartCoverageIndex, len(glyphs))
start = r.Start
end = r.End
- try:
- startID = font.getGlyphID(start, requireReal=True)
- except KeyError:
- log.warning("Coverage table has start glyph ID out of range: %s.", start)
- continue
- try:
- endID = font.getGlyphID(end, requireReal=True) + 1
- except KeyError:
- # Apparently some tools use 65535 to "match all" the range
- if end != 'glyph65535':
- log.warning("Coverage table has end glyph ID out of range: %s.", end)
- # NOTE: We clobber out-of-range things here. There are legit uses for those,
- # but none that we have seen in the wild.
- endID = len(glyphOrder)
- glyphs.extend(glyphOrder[glyphID] for glyphID in range(startID, endID))
+ startID = font.getGlyphID(start)
+ endID = font.getGlyphID(end) + 1
+ glyphs.extend(font.getGlyphNameMany(range(startID, endID)))
else:
self.glyphs = []
log.warning("Unknown Coverage format: %s", self.Format)
@@ -566,10 +549,9 @@ class Coverage(FormatSwitchingBaseTable):
glyphs = self.glyphs = []
format = 1
rawTable = {"GlyphArray": glyphs}
- getGlyphID = font.getGlyphID
if glyphs:
# find out whether Format 2 is more compact or not
- glyphIDs = [getGlyphID(glyphName) for glyphName in glyphs ]
+ glyphIDs = font.getGlyphIDMany(glyphs)
brokenOrder = sorted(glyphIDs) != glyphIDs
last = glyphIDs[0]
@@ -618,32 +600,18 @@ class Coverage(FormatSwitchingBaseTable):
glyphs.append(attrs["value"])
-class VarIdxMap(BaseTable):
+class DeltaSetIndexMap(getFormatSwitchingBaseTableClass("uint8")):
def populateDefaults(self, propagator=None):
if not hasattr(self, 'mapping'):
- self.mapping = {}
+ self.mapping = []
def postRead(self, rawTable, font):
assert (rawTable['EntryFormat'] & 0xFFC0) == 0
- glyphOrder = font.getGlyphOrder()
- mapList = rawTable['mapping']
- mapList.extend([mapList[-1]] * (len(glyphOrder) - len(mapList)))
- self.mapping = dict(zip(glyphOrder, mapList))
-
- def preWrite(self, font):
- mapping = getattr(self, "mapping", None)
- if mapping is None:
- mapping = self.mapping = {}
-
- glyphOrder = font.getGlyphOrder()
- mapping = [mapping[g] for g in glyphOrder]
- while len(mapping) > 1 and mapping[-2] == mapping[-1]:
- del mapping[-1]
-
- rawTable = { 'mapping': mapping }
- rawTable['MappingCount'] = len(mapping)
+ self.mapping = rawTable['mapping']
+ @staticmethod
+ def getEntryFormat(mapping):
ored = 0
for idx in mapping:
ored |= idx
@@ -666,9 +634,65 @@ class VarIdxMap(BaseTable):
else:
entrySize = 4
- entryFormat = ((entrySize - 1) << 4) | (innerBits - 1)
+ return ((entrySize - 1) << 4) | (innerBits - 1)
+
+ def preWrite(self, font):
+ mapping = getattr(self, "mapping", None)
+ if mapping is None:
+ mapping = self.mapping = []
+ self.Format = 1 if len(mapping) > 0xFFFF else 0
+ rawTable = self.__dict__.copy()
+ rawTable['MappingCount'] = len(mapping)
+ rawTable['EntryFormat'] = self.getEntryFormat(mapping)
+ return rawTable
+
+ def toXML2(self, xmlWriter, font):
+ for i, value in enumerate(getattr(self, "mapping", [])):
+ attrs = (
+ ('index', i),
+ ('outer', value >> 16),
+ ('inner', value & 0xFFFF),
+ )
+ xmlWriter.simpletag("Map", attrs)
+ xmlWriter.newline()
+
+ def fromXML(self, name, attrs, content, font):
+ mapping = getattr(self, "mapping", None)
+ if mapping is None:
+ self.mapping = mapping = []
+ index = safeEval(attrs['index'])
+ outer = safeEval(attrs['outer'])
+ inner = safeEval(attrs['inner'])
+ assert inner <= 0xFFFF
+ mapping.insert(index, (outer << 16) | inner)
+
+
+class VarIdxMap(BaseTable):
+
+ def populateDefaults(self, propagator=None):
+ if not hasattr(self, 'mapping'):
+ self.mapping = {}
+
+ def postRead(self, rawTable, font):
+ assert (rawTable['EntryFormat'] & 0xFFC0) == 0
+ glyphOrder = font.getGlyphOrder()
+ mapList = rawTable['mapping']
+ mapList.extend([mapList[-1]] * (len(glyphOrder) - len(mapList)))
+ self.mapping = dict(zip(glyphOrder, mapList))
+
+ def preWrite(self, font):
+ mapping = getattr(self, "mapping", None)
+ if mapping is None:
+ mapping = self.mapping = {}
+
+ glyphOrder = font.getGlyphOrder()
+ mapping = [mapping[g] for g in glyphOrder]
+ while len(mapping) > 1 and mapping[-2] == mapping[-1]:
+ del mapping[-1]
- rawTable['EntryFormat'] = entryFormat
+ rawTable = {'mapping': mapping}
+ rawTable['MappingCount'] = len(mapping)
+ rawTable['EntryFormat'] = DeltaSetIndexMap.getEntryFormat(mapping)
return rawTable
def toXML2(self, xmlWriter, font):
@@ -726,9 +750,9 @@ class SingleSubst(FormatSwitchingBaseTable):
input = _getGlyphsFromCoverageTable(rawTable["Coverage"])
if self.Format == 1:
delta = rawTable["DeltaGlyphID"]
- inputGIDS = [ font.getGlyphID(name) for name in input ]
+ inputGIDS = font.getGlyphIDMany(input)
outGIDS = [ (glyphID + delta) % 65536 for glyphID in inputGIDS ]
- outNames = [ font.getGlyphName(glyphID) for glyphID in outGIDS ]
+ outNames = font.getGlyphNameMany(outGIDS)
for inp, out in zip(input, outNames):
mapping[inp] = out
elif self.Format == 2:
@@ -882,51 +906,30 @@ class ClassDef(FormatSwitchingBaseTable):
def postRead(self, rawTable, font):
classDefs = {}
- glyphOrder = font.getGlyphOrder()
if self.Format == 1:
start = rawTable["StartGlyph"]
classList = rawTable["ClassValueArray"]
- try:
- startID = font.getGlyphID(start, requireReal=True)
- except KeyError:
- log.warning("ClassDef table has start glyph ID out of range: %s.", start)
- startID = len(glyphOrder)
+ startID = font.getGlyphID(start)
endID = startID + len(classList)
- if endID > len(glyphOrder):
- log.warning("ClassDef table has entries for out of range glyph IDs: %s,%s.",
- start, len(classList))
- # NOTE: We clobber out-of-range things here. There are legit uses for those,
- # but none that we have seen in the wild.
- endID = len(glyphOrder)
-
- for glyphID, cls in zip(range(startID, endID), classList):
+ glyphNames = font.getGlyphNameMany(range(startID, endID))
+ for glyphName, cls in zip(glyphNames, classList):
if cls:
- classDefs[glyphOrder[glyphID]] = cls
+ classDefs[glyphName] = cls
elif self.Format == 2:
records = rawTable["ClassRangeRecord"]
for rec in records:
- start = rec.Start
- end = rec.End
cls = rec.Class
- try:
- startID = font.getGlyphID(start, requireReal=True)
- except KeyError:
- log.warning("ClassDef table has start glyph ID out of range: %s.", start)
+ if not cls:
continue
- try:
- endID = font.getGlyphID(end, requireReal=True) + 1
- except KeyError:
- # Apparently some tools use 65535 to "match all" the range
- if end != 'glyph65535':
- log.warning("ClassDef table has end glyph ID out of range: %s.", end)
- # NOTE: We clobber out-of-range things here. There are legit uses for those,
- # but none that we have seen in the wild.
- endID = len(glyphOrder)
- for glyphID in range(startID, endID):
- if cls:
- classDefs[glyphOrder[glyphID]] = cls
+ start = rec.Start
+ end = rec.End
+ startID = font.getGlyphID(start)
+ endID = font.getGlyphID(end) + 1
+ glyphNames = font.getGlyphNameMany(range(startID, endID))
+ for glyphName in glyphNames:
+ classDefs[glyphName] = cls
else:
log.warning("Unknown ClassDef format: %s", self.Format)
self.classDefs = classDefs
@@ -1179,7 +1182,6 @@ class COLR(BaseTable):
if conv.name != "LayerRecordCount":
subReader.advance(conv.staticSize)
continue
- conv = self.getConverterByName("LayerRecordCount")
reader[conv.name] = conv.read(subReader, font, tableDict={})
break
else:
@@ -1245,51 +1247,176 @@ class BaseGlyphRecordArray(BaseTable):
return self.__dict__.copy()
-class BaseGlyphV1List(BaseTable):
+class BaseGlyphList(BaseTable):
def preWrite(self, font):
- self.BaseGlyphV1Record = sorted(
- self.BaseGlyphV1Record,
+ self.BaseGlyphPaintRecord = sorted(
+ self.BaseGlyphPaintRecord,
key=lambda rec: font.getGlyphID(rec.BaseGlyph)
)
return self.__dict__.copy()
+class ClipBox(getFormatSwitchingBaseTableClass("uint8")):
-class VariableValue(namedtuple("VariableValue", ["value", "varIdx"])):
- __slots__ = ()
+ def as_tuple(self):
+ return tuple(getattr(self, conv.name) for conv in self.getConverters())
- _value_mapper = None
+ def __repr__(self):
+ return f"{self.__class__.__name__}{self.as_tuple()}"
- def __new__(cls, value, varIdx=0):
- return super().__new__(
- cls,
- cls._value_mapper(value) if cls._value_mapper else value,
- varIdx
- )
- @classmethod
- def _make(cls, iterable):
- if cls._value_mapper:
- it = iter(iterable)
- try:
- value = next(it)
- except StopIteration:
- pass
- else:
- value = cls._value_mapper(value)
- iterable = itertools.chain((value,), it)
- return super()._make(iterable)
+class ClipList(getFormatSwitchingBaseTableClass("uint8")):
+ def populateDefaults(self, propagator=None):
+ if not hasattr(self, "clips"):
+ self.clips = {}
-class VariableFloat(VariableValue):
- __slots__ = ()
- _value_mapper = float
+ def postRead(self, rawTable, font):
+ clips = {}
+ glyphOrder = font.getGlyphOrder()
+ for i, rec in enumerate(rawTable["ClipRecord"]):
+ if rec.StartGlyphID > rec.EndGlyphID:
+ log.warning(
+ "invalid ClipRecord[%i].StartGlyphID (%i) > "
+ "EndGlyphID (%i); skipped",
+ i,
+ rec.StartGlyphID,
+ rec.EndGlyphID,
+ )
+ continue
+ redefinedGlyphs = []
+ missingGlyphs = []
+ for glyphID in range(rec.StartGlyphID, rec.EndGlyphID + 1):
+ try:
+ glyph = glyphOrder[glyphID]
+ except IndexError:
+ missingGlyphs.append(glyphID)
+ continue
+ if glyph not in clips:
+ clips[glyph] = copy.copy(rec.ClipBox)
+ else:
+ redefinedGlyphs.append(glyphID)
+ if redefinedGlyphs:
+ log.warning(
+ "ClipRecord[%i] overlaps previous records; "
+ "ignoring redefined clip boxes for the "
+ "following glyph ID range: [%i-%i]",
+ i,
+ min(redefinedGlyphs),
+ max(redefinedGlyphs),
+ )
+ if missingGlyphs:
+ log.warning(
+ "ClipRecord[%i] range references missing "
+ "glyph IDs: [%i-%i]",
+ i,
+ min(missingGlyphs),
+ max(missingGlyphs),
+ )
+ self.clips = clips
+
+ def groups(self):
+ glyphsByClip = defaultdict(list)
+ uniqueClips = {}
+ for glyphName, clipBox in self.clips.items():
+ key = clipBox.as_tuple()
+ glyphsByClip[key].append(glyphName)
+ if key not in uniqueClips:
+ uniqueClips[key] = clipBox
+ return {
+ frozenset(glyphs): uniqueClips[key]
+ for key, glyphs in glyphsByClip.items()
+ }
+
+ def preWrite(self, font):
+ if not hasattr(self, "clips"):
+ self.clips = {}
+ clipBoxRanges = {}
+ glyphMap = font.getReverseGlyphMap()
+ for glyphs, clipBox in self.groups().items():
+ glyphIDs = sorted(
+ glyphMap[glyphName] for glyphName in glyphs
+ if glyphName in glyphMap
+ )
+ if not glyphIDs:
+ continue
+ last = glyphIDs[0]
+ ranges = [[last]]
+ for glyphID in glyphIDs[1:]:
+ if glyphID != last + 1:
+ ranges[-1].append(last)
+ ranges.append([glyphID])
+ last = glyphID
+ ranges[-1].append(last)
+ for start, end in ranges:
+ assert (start, end) not in clipBoxRanges
+ clipBoxRanges[(start, end)] = clipBox
+
+ clipRecords = []
+ for (start, end), clipBox in sorted(clipBoxRanges.items()):
+ record = ClipRecord()
+ record.StartGlyphID = start
+ record.EndGlyphID = end
+ record.ClipBox = clipBox
+ clipRecords.append(record)
+ rawTable = {
+ "ClipCount": len(clipRecords),
+ "ClipRecord": clipRecords,
+ }
+ return rawTable
+ def toXML(self, xmlWriter, font, attrs=None, name=None):
+ tableName = name if name else self.__class__.__name__
+ if attrs is None:
+ attrs = []
+ if hasattr(self, "Format"):
+ attrs.append(("Format", self.Format))
+ xmlWriter.begintag(tableName, attrs)
+ xmlWriter.newline()
+ # sort clips alphabetically to ensure deterministic XML dump
+ for glyphs, clipBox in sorted(
+ self.groups().items(), key=lambda item: min(item[0])
+ ):
+ xmlWriter.begintag("Clip")
+ xmlWriter.newline()
+ for glyphName in sorted(glyphs):
+ xmlWriter.simpletag("Glyph", value=glyphName)
+ xmlWriter.newline()
+ xmlWriter.begintag("ClipBox", [("Format", clipBox.Format)])
+ xmlWriter.newline()
+ clipBox.toXML2(xmlWriter, font)
+ xmlWriter.endtag("ClipBox")
+ xmlWriter.newline()
+ xmlWriter.endtag("Clip")
+ xmlWriter.newline()
+ xmlWriter.endtag(tableName)
+ xmlWriter.newline()
-class VariableInt(VariableValue):
- __slots__ = ()
- _value_mapper = otRound
+ def fromXML(self, name, attrs, content, font):
+ clips = getattr(self, "clips", None)
+ if clips is None:
+ self.clips = clips = {}
+ assert name == "Clip"
+ glyphs = []
+ clipBox = None
+ for elem in content:
+ if not isinstance(elem, tuple):
+ continue
+ name, attrs, content = elem
+ if name == "Glyph":
+ glyphs.append(attrs["value"])
+ elif name == "ClipBox":
+ clipBox = ClipBox()
+ clipBox.Format = safeEval(attrs["Format"])
+ for elem in content:
+ if not isinstance(elem, tuple):
+ continue
+ name, attrs, content = elem
+ clipBox.fromXML(name, attrs, content, font)
+ if clipBox:
+ for glyphName in glyphs:
+ clips[glyphName] = clipBox
class ExtendMode(IntEnum):
@@ -1313,21 +1440,22 @@ class CompositeMode(IntEnum):
SRC_ATOP = 9
DEST_ATOP = 10
XOR = 11
- SCREEN = 12
- OVERLAY = 13
- DARKEN = 14
- LIGHTEN = 15
- COLOR_DODGE = 16
- COLOR_BURN = 17
- HARD_LIGHT = 18
- SOFT_LIGHT = 19
- DIFFERENCE = 20
- EXCLUSION = 21
- MULTIPLY = 22
- HSL_HUE = 23
- HSL_SATURATION = 24
- HSL_COLOR = 25
- HSL_LUMINOSITY = 26
+ PLUS = 12
+ SCREEN = 13
+ OVERLAY = 14
+ DARKEN = 15
+ LIGHTEN = 16
+ COLOR_DODGE = 17
+ COLOR_BURN = 18
+ HARD_LIGHT = 19
+ SOFT_LIGHT = 20
+ DIFFERENCE = 21
+ EXCLUSION = 22
+ MULTIPLY = 23
+ HSL_HUE = 24
+ HSL_SATURATION = 25
+ HSL_COLOR = 26
+ HSL_LUMINOSITY = 27
class PaintFormat(IntEnum):
@@ -1346,11 +1474,23 @@ class PaintFormat(IntEnum):
PaintVarTransform = 13
PaintTranslate = 14
PaintVarTranslate = 15
- PaintRotate = 16
- PaintVarRotate = 17
- PaintSkew = 18
- PaintVarSkew = 19
- PaintComposite = 20
+ PaintScale = 16
+ PaintVarScale = 17
+ PaintScaleAroundCenter = 18
+ PaintVarScaleAroundCenter = 19
+ PaintScaleUniform = 20
+ PaintVarScaleUniform = 21
+ PaintScaleUniformAroundCenter = 22
+ PaintVarScaleUniformAroundCenter = 23
+ PaintRotate = 24
+ PaintVarRotate = 25
+ PaintRotateAroundCenter = 26
+ PaintVarRotateAroundCenter = 27
+ PaintSkew = 28
+ PaintVarSkew = 29
+ PaintSkewAroundCenter = 30
+ PaintVarSkewAroundCenter = 31
+ PaintComposite = 32
class Paint(getFormatSwitchingBaseTableClass("uint8")):
@@ -1375,16 +1515,20 @@ class Paint(getFormatSwitchingBaseTableClass("uint8")):
def getChildren(self, colr):
if self.Format == PaintFormat.PaintColrLayers:
- return colr.LayerV1List.Paint[
+ # https://github.com/fonttools/fonttools/issues/2438: don't die when no LayerList exists
+ layers = []
+ if colr.LayerList is not None:
+ layers = colr.LayerList.Paint
+ return layers[
self.FirstLayerIndex : self.FirstLayerIndex + self.NumLayers
]
if self.Format == PaintFormat.PaintColrGlyph:
- for record in colr.BaseGlyphV1List.BaseGlyphV1Record:
+ for record in colr.BaseGlyphList.BaseGlyphPaintRecord:
if record.BaseGlyph == self.Glyph:
return [record.Paint]
else:
- raise KeyError(f"{self.Glyph!r} not in colr.BaseGlyphV1List")
+ raise KeyError(f"{self.Glyph!r} not in colr.BaseGlyphList")
children = []
for conv in self.getConverters():
@@ -1490,20 +1634,22 @@ def fixLookupOverFlows(ttf, overflowRecord):
return ok
lookup = lookups[lookupIndex]
- lookup.LookupType = extType
- for si in range(len(lookup.SubTable)):
- subTable = lookup.SubTable[si]
- extSubTableClass = lookupTypes[overflowRecord.tableType][extType]
- extSubTable = extSubTableClass()
- extSubTable.Format = 1
- extSubTable.ExtSubTable = subTable
- lookup.SubTable[si] = extSubTable
+ for lookupIndex in range(lookupIndex, len(lookups)):
+ lookup = lookups[lookupIndex]
+ if lookup.LookupType != extType:
+ lookup.LookupType = extType
+ for si in range(len(lookup.SubTable)):
+ subTable = lookup.SubTable[si]
+ extSubTableClass = lookupTypes[overflowRecord.tableType][extType]
+ extSubTable = extSubTableClass()
+ extSubTable.Format = 1
+ extSubTable.ExtSubTable = subTable
+ lookup.SubTable[si] = extSubTable
ok = 1
return ok
def splitMultipleSubst(oldSubTable, newSubTable, overflowRecord):
ok = 1
- newSubTable.Format = oldSubTable.Format
oldMapping = sorted(oldSubTable.mapping.items())
oldLen = len(oldMapping)
@@ -1529,7 +1675,6 @@ def splitMultipleSubst(oldSubTable, newSubTable, overflowRecord):
def splitAlternateSubst(oldSubTable, newSubTable, overflowRecord):
ok = 1
- newSubTable.Format = oldSubTable.Format
if hasattr(oldSubTable, 'sortCoverageLast'):
newSubTable.sortCoverageLast = oldSubTable.sortCoverageLast
@@ -1559,7 +1704,6 @@ def splitAlternateSubst(oldSubTable, newSubTable, overflowRecord):
def splitLigatureSubst(oldSubTable, newSubTable, overflowRecord):
ok = 1
- newSubTable.Format = oldSubTable.Format
oldLigs = sorted(oldSubTable.ligatures.items())
oldLen = len(oldLigs)
diff --git a/Lib/fontTools/ttLib/tables/ttProgram.py b/Lib/fontTools/ttLib/tables/ttProgram.py
index a1dfa3c5..72377583 100644
--- a/Lib/fontTools/ttLib/tables/ttProgram.py
+++ b/Lib/fontTools/ttLib/tables/ttProgram.py
@@ -1,7 +1,6 @@
"""ttLib.tables.ttProgram.py -- Assembler/disassembler for TrueType bytecode programs."""
-from fontTools.misc.py23 import strjoin
-from fontTools.misc.textTools import num2binary, binary2num, readHex
+from fontTools.misc.textTools import num2binary, binary2num, readHex, strjoin
import array
from io import StringIO
import re
diff --git a/Lib/fontTools/ttLib/ttCollection.py b/Lib/fontTools/ttLib/ttCollection.py
index 3db4c8cd..f0922127 100644
--- a/Lib/fontTools/ttLib/ttCollection.py
+++ b/Lib/fontTools/ttLib/ttCollection.py
@@ -26,8 +26,10 @@ class TTCollection(object):
assert 'fontNumber' not in kwargs, kwargs
+ closeStream = False
if not hasattr(file, "read"):
file = open(file, "rb")
+ closeStream = True
tableCache = {} if shareTables else None
@@ -35,13 +37,21 @@ class TTCollection(object):
for i in range(header.numFonts):
font = TTFont(file, fontNumber=i, _tableCache=tableCache, **kwargs)
fonts.append(font)
-
+
+ # don't close file if lazy=True, as the TTFont hold a reference to the original
+ # file; the file will be closed once the TTFonts are closed in the
+ # TTCollection.close(). We still want to close the file if lazy is None or
+ # False, because in that case the TTFont no longer need the original file
+ # and we want to avoid 'ResourceWarning: unclosed file'.
+ if not kwargs.get("lazy") and closeStream:
+ file.close()
+
def __enter__(self):
return self
-
+
def __exit__(self, type, value, traceback):
self.close()
-
+
def close(self):
for font in self.fonts:
font.close()
@@ -76,7 +86,7 @@ class TTCollection(object):
final.write(file.getvalue())
file.close()
- def saveXML(self, fileOrPath, newlinestr=None, writeVersion=True, **kwargs):
+ def saveXML(self, fileOrPath, newlinestr="\n", writeVersion=True, **kwargs):
from fontTools.misc import xmlWriter
writer = xmlWriter.XMLWriter(fileOrPath, newlinestr=newlinestr)
diff --git a/Lib/fontTools/ttLib/ttFont.py b/Lib/fontTools/ttLib/ttFont.py
index 41a48751..3929e2f3 100644
--- a/Lib/fontTools/ttLib/ttFont.py
+++ b/Lib/fontTools/ttLib/ttFont.py
@@ -1,5 +1,5 @@
from fontTools.misc import xmlWriter
-from fontTools.misc.py23 import Tag, byteord, tostr
+from fontTools.misc.textTools import Tag, byteord, tostr
from fontTools.misc.loggingTools import deprecateArgument
from fontTools.ttLib import TTLibError
from fontTools.ttLib.sfnt import SFNTReader, SFNTWriter
@@ -12,75 +12,84 @@ log = logging.getLogger(__name__)
class TTFont(object):
- """The main font object. It manages file input and output, and offers
- a convenient way of accessing tables.
- Tables will be only decompiled when necessary, ie. when they're actually
- accessed. This means that simple operations can be extremely fast.
+ """Represents a TrueType font.
+
+ The object manages file input and output, and offers a convenient way of
+ accessing tables. Tables will be only decompiled when necessary, ie. when
+ they're actually accessed. This means that simple operations can be extremely fast.
+
+ Example usage::
+
+ >> from fontTools import ttLib
+ >> tt = ttLib.TTFont("afont.ttf") # Load an existing font file
+ >> tt['maxp'].numGlyphs
+ 242
+ >> tt['OS/2'].achVendID
+ 'B&H\000'
+ >> tt['head'].unitsPerEm
+ 2048
+
+ For details of the objects returned when accessing each table, see :ref:`tables`.
+ To add a table to the font, use the :py:func:`newTable` function::
+
+ >> os2 = newTable("OS/2")
+ >> os2.version = 4
+ >> # set other attributes
+ >> font["OS/2"] = os2
+
+ TrueType fonts can also be serialized to and from XML format (see also the
+ :ref:`ttx` binary)::
+
+ >> tt.saveXML("afont.ttx")
+ Dumping 'LTSH' table...
+ Dumping 'OS/2' table...
+ [...]
+
+ >> tt2 = ttLib.TTFont() # Create a new font object
+ >> tt2.importXML("afont.ttx")
+ >> tt2['maxp'].numGlyphs
+ 242
+
+ The TTFont object may be used as a context manager; this will cause the file
+ reader to be closed after the context ``with`` block is exited::
+
+ with TTFont(filename) as f:
+ # Do stuff
+
+ Args:
+ file: When reading a font from disk, either a pathname pointing to a file,
+ or a readable file object.
+ res_name_or_index: If running on a Macintosh, either a sfnt resource name or
+ an sfnt resource index number. If the index number is zero, TTLib will
+ autodetect whether the file is a flat file or a suitcase. (If it is a suitcase,
+ only the first 'sfnt' resource will be read.)
+ sfntVersion (str): When constructing a font object from scratch, sets the four-byte
+ sfnt magic number to be used. Defaults to ``\0\1\0\0`` (TrueType). To create
+ an OpenType file, use ``OTTO``.
+ flavor (str): Set this to ``woff`` when creating a WOFF file or ``woff2`` for a WOFF2
+ file.
+ checkChecksums (int): How checksum data should be treated. Default is 0
+ (no checking). Set to 1 to check and warn on wrong checksums; set to 2 to
+ raise an exception if any wrong checksums are found.
+ recalcBBoxes (bool): If true (the default), recalculates ``glyf``, ``CFF ``,
+ ``head`` bounding box values and ``hhea``/``vhea`` min/max values on save.
+ Also compiles the glyphs on importing, which saves memory consumption and
+ time.
+ ignoreDecompileErrors (bool): If true, exceptions raised during table decompilation
+ will be ignored, and the binary data will be returned for those tables instead.
+ recalcTimestamp (bool): If true (the default), sets the ``modified`` timestamp in
+ the ``head`` table on save.
+ fontNumber (int): The index of the font in a TrueType Collection file.
+ lazy (bool): If lazy is set to True, many data structures are loaded lazily, upon
+ access only. If it is set to False, many data structures are loaded immediately.
+ The default is ``lazy=None`` which is somewhere in between.
"""
def __init__(self, file=None, res_name_or_index=None,
sfntVersion="\000\001\000\000", flavor=None, checkChecksums=0,
- verbose=None, recalcBBoxes=True, allowVID=False, ignoreDecompileErrors=False,
+ verbose=None, recalcBBoxes=True, allowVID=NotImplemented, ignoreDecompileErrors=False,
recalcTimestamp=True, fontNumber=-1, lazy=None, quiet=None,
_tableCache=None):
-
- """The constructor can be called with a few different arguments.
- When reading a font from disk, 'file' should be either a pathname
- pointing to a file, or a readable file object.
-
- It we're running on a Macintosh, 'res_name_or_index' maybe an sfnt
- resource name or an sfnt resource index number or zero. The latter
- case will cause TTLib to autodetect whether the file is a flat file
- or a suitcase. (If it's a suitcase, only the first 'sfnt' resource
- will be read!)
-
- The 'checkChecksums' argument is used to specify how sfnt
- checksums are treated upon reading a file from disk:
- 0: don't check (default)
- 1: check, print warnings if a wrong checksum is found
- 2: check, raise an exception if a wrong checksum is found.
-
- The TTFont constructor can also be called without a 'file'
- argument: this is the way to create a new empty font.
- In this case you can optionally supply the 'sfntVersion' argument,
- and a 'flavor' which can be None, 'woff', or 'woff2'.
-
- If the recalcBBoxes argument is false, a number of things will *not*
- be recalculated upon save/compile:
- 1) 'glyf' glyph bounding boxes
- 2) 'CFF ' font bounding box
- 3) 'head' font bounding box
- 4) 'hhea' min/max values
- 5) 'vhea' min/max values
- (1) is needed for certain kinds of CJK fonts (ask Werner Lemberg ;-).
- Additionally, upon importing an TTX file, this option cause glyphs
- to be compiled right away. This should reduce memory consumption
- greatly, and therefore should have some impact on the time needed
- to parse/compile large fonts.
-
- If the recalcTimestamp argument is false, the modified timestamp in the
- 'head' table will *not* be recalculated upon save/compile.
-
- If the allowVID argument is set to true, then virtual GID's are
- supported. Asking for a glyph ID with a glyph name or GID that is not in
- the font will return a virtual GID. This is valid for GSUB and cmap
- tables. For SING glyphlets, the cmap table is used to specify Unicode
- values for virtual GI's used in GSUB/GPOS rules. If the gid N is requested
- and does not exist in the font, or the glyphname has the form glyphN
- and does not exist in the font, then N is used as the virtual GID.
- Else, the first virtual GID is assigned as 0x1000 -1; for subsequent new
- virtual GIDs, the next is one less than the previous.
-
- If ignoreDecompileErrors is set to True, exceptions raised in
- individual tables during decompilation will be ignored, falling
- back to the DefaultTable implementation, which simply keeps the
- binary data.
-
- If lazy is set to True, many data structures are loaded lazily, upon
- access only. If it is set to False, many data structures are loaded
- immediately. The default is lazy=None which is somewhere in between.
- """
-
for name in ("verbose", "quiet"):
val = locals().get(name)
if val is not None:
@@ -92,12 +101,6 @@ class TTFont(object):
self.recalcTimestamp = recalcTimestamp
self.tables = {}
self.reader = None
-
- # Permit the user to reference glyphs that are not int the font.
- self.last_vid = 0xFFFE # Can't make it be 0xFFFF, as the world is full unsigned short integer counters that get incremented after the last seen GID value.
- self.reverseVIDDict = {}
- self.VIDDict = {}
- self.allowVID = allowVID
self.ignoreDecompileErrors = ignoreDecompileErrors
if not file:
@@ -154,9 +157,15 @@ class TTFont(object):
self.reader.close()
def save(self, file, reorderTables=True):
- """Save the font to disk. Similarly to the constructor,
- the 'file' argument can be either a pathname or a writable
- file object.
+ """Save the font to disk.
+
+ Args:
+ file: Similarly to the constructor, can be either a pathname or a writable
+ file object.
+ reorderTables (Option[bool]): If true (the default), reorder the tables,
+ sorting them by tag (recommended by the OpenType specification). If
+ false, retain the original font order. If None, reorder by table
+ dependency (fastest).
"""
if not hasattr(file, "write"):
if self.lazy and self.reader.file.name == file:
@@ -215,7 +224,7 @@ class TTFont(object):
return writer.reordersTables()
- def saveXML(self, fileOrPath, newlinestr=None, **kwargs):
+ def saveXML(self, fileOrPath, newlinestr="\n", **kwargs):
"""Export the font as TTX (an XML-based text file), or as a series of text
files when splitTables is true. In the latter case, the 'fileOrPath'
argument should be a path to a directory.
@@ -336,11 +345,15 @@ class TTFont(object):
reader.read()
def isLoaded(self, tag):
- """Return true if the table identified by 'tag' has been
+ """Return true if the table identified by ``tag`` has been
decompiled and loaded into memory."""
return tag in self.tables
def has_key(self, tag):
+ """Test if the table identified by ``tag`` is present in the font.
+
+ As well as this method, ``tag in font`` can also be used to determine the
+ presence of the table."""
if self.isLoaded(tag):
return True
elif self.reader and tag in self.reader:
@@ -353,6 +366,7 @@ class TTFont(object):
__contains__ = has_key
def keys(self):
+ """Returns the list of tables in the font, along with the ``GlyphOrder`` pseudo-table."""
keys = list(self.tables.keys())
if self.reader:
for key in list(self.reader.keys()):
@@ -364,6 +378,14 @@ class TTFont(object):
keys = sortedTagList(keys)
return ["GlyphOrder"] + keys
+ def ensureDecompiled(self):
+ """Decompile all the tables, even if a TTFont was opened in 'lazy' mode."""
+ for tag in self.keys():
+ table = self[tag]
+ if self.lazy is not False and hasattr(table, "ensureDecompiled"):
+ table.ensureDecompiled()
+ self.lazy = False
+
def __len__(self):
return len(list(self.keys()))
@@ -422,15 +444,26 @@ class TTFont(object):
del self.reader[tag]
def get(self, tag, default=None):
+ """Returns the table if it exists or (optionally) a default if it doesn't."""
try:
return self[tag]
except KeyError:
return default
def setGlyphOrder(self, glyphOrder):
+ """Set the glyph order
+
+ Args:
+ glyphOrder ([str]): List of glyph names in order.
+ """
self.glyphOrder = glyphOrder
+ if hasattr(self, '_reverseGlyphOrderDict'):
+ del self._reverseGlyphOrderDict
+ if self.isLoaded("glyf"):
+ self["glyf"].setGlyphOrder(glyphOrder)
def getGlyphOrder(self):
+ """Returns a list of glyph names ordered by their position in the font."""
try:
return self.glyphOrder
except AttributeError:
@@ -544,78 +577,55 @@ class TTFont(object):
from fontTools.misc import textTools
return textTools.caselessSort(self.getGlyphOrder())
- def getGlyphName(self, glyphID, requireReal=False):
+ def getGlyphName(self, glyphID):
+ """Returns the name for the glyph with the given ID.
+
+ If no name is available, synthesises one with the form ``glyphXXXXX``` where
+ ```XXXXX`` is the zero-padded glyph ID.
+ """
try:
return self.getGlyphOrder()[glyphID]
except IndexError:
- if requireReal or not self.allowVID:
- # XXX The ??.W8.otf font that ships with OSX uses higher glyphIDs in
- # the cmap table than there are glyphs. I don't think it's legal...
- return "glyph%.5d" % glyphID
- else:
- # user intends virtual GID support
+ return "glyph%.5d" % glyphID
+
+ def getGlyphNameMany(self, lst):
+ """Converts a list of glyph IDs into a list of glyph names."""
+ glyphOrder = self.getGlyphOrder();
+ cnt = len(glyphOrder)
+ return [glyphOrder[gid] if gid < cnt else "glyph%.5d" % gid
+ for gid in lst]
+
+ def getGlyphID(self, glyphName):
+ """Returns the ID of the glyph with the given name."""
+ try:
+ return self.getReverseGlyphMap()[glyphName]
+ except KeyError:
+ if glyphName[:5] == "glyph":
try:
- glyphName = self.VIDDict[glyphID]
- except KeyError:
- glyphName ="glyph%.5d" % glyphID
- self.last_vid = min(glyphID, self.last_vid )
- self.reverseVIDDict[glyphName] = glyphID
- self.VIDDict[glyphID] = glyphName
- return glyphName
-
- def getGlyphID(self, glyphName, requireReal=False):
- if not hasattr(self, "_reverseGlyphOrderDict"):
- self._buildReverseGlyphOrderDict()
- glyphOrder = self.getGlyphOrder()
- d = self._reverseGlyphOrderDict
- if glyphName not in d:
- if glyphName in glyphOrder:
- self._buildReverseGlyphOrderDict()
- return self.getGlyphID(glyphName)
- else:
- if requireReal:
+ return int(glyphName[5:])
+ except (NameError, ValueError):
raise KeyError(glyphName)
- elif not self.allowVID:
- # Handle glyphXXX only
- if glyphName[:5] == "glyph":
- try:
- return int(glyphName[5:])
- except (NameError, ValueError):
- raise KeyError(glyphName)
- else:
- # user intends virtual GID support
- try:
- glyphID = self.reverseVIDDict[glyphName]
- except KeyError:
- # if name is in glyphXXX format, use the specified name.
- if glyphName[:5] == "glyph":
- try:
- glyphID = int(glyphName[5:])
- except (NameError, ValueError):
- glyphID = None
- if glyphID is None:
- glyphID = self.last_vid -1
- self.last_vid = glyphID
- self.reverseVIDDict[glyphName] = glyphID
- self.VIDDict[glyphID] = glyphName
- return glyphID
-
- glyphID = d[glyphName]
- if glyphName != glyphOrder[glyphID]:
- self._buildReverseGlyphOrderDict()
- return self.getGlyphID(glyphName)
- return glyphID
+
+ def getGlyphIDMany(self, lst):
+ """Converts a list of glyph names into a list of glyph IDs."""
+ d = self.getReverseGlyphMap()
+ try:
+ return [d[glyphName] for glyphName in lst]
+ except KeyError:
+ getGlyphID = self.getGlyphID
+ return [getGlyphID(glyphName) for glyphName in lst]
def getReverseGlyphMap(self, rebuild=False):
+ """Returns a mapping of glyph names to glyph IDs."""
if rebuild or not hasattr(self, "_reverseGlyphOrderDict"):
self._buildReverseGlyphOrderDict()
return self._reverseGlyphOrderDict
def _buildReverseGlyphOrderDict(self):
self._reverseGlyphOrderDict = d = {}
- glyphOrder = self.getGlyphOrder()
- for glyphID in range(len(glyphOrder)):
- d[glyphOrder[glyphID]] = glyphID
+ for glyphID,glyphName in enumerate(self.getGlyphOrder()):
+ d[glyphName] = glyphID
+ return d
def _writeTable(self, tag, writer, done, tableCache=None):
"""Internal helper function for self.save(). Keeps track of
@@ -644,7 +654,11 @@ class TTFont(object):
tableCache[(Tag(tag), tabledata)] = writer[tag]
def getTableData(self, tag):
- """Returns raw table data, whether compiled or directly read from disk.
+ """Returns the binary representation of a table.
+
+ If the table is currently loaded and in memory, the data is compiled to
+ binary and returned; if it is not currently loaded, the binary data is
+ read from the font file and returned.
"""
tag = Tag(tag)
if self.isLoaded(tag):
@@ -688,9 +702,18 @@ class TTFont(object):
or None, if no unicode cmap subtable is available.
By default it will search for the following (platformID, platEncID)
- pairs:
- (3, 10), (0, 6), (0, 4), (3, 1), (0, 3), (0, 2), (0, 1), (0, 0)
- This can be customized via the cmapPreferences argument.
+ pairs::
+
+ (3, 10),
+ (0, 6),
+ (0, 4),
+ (3, 1),
+ (0, 3),
+ (0, 2),
+ (0, 1),
+ (0, 0)
+
+ This can be customized via the ``cmapPreferences`` argument.
"""
return self["cmap"].getBestCmap(cmapPreferences=cmapPreferences)
@@ -820,9 +843,9 @@ class GlyphOrder(object):
def fromXML(self, name, attrs, content, ttFont):
if not hasattr(self, "glyphOrder"):
self.glyphOrder = []
- ttFont.setGlyphOrder(self.glyphOrder)
if name == "GlyphID":
self.glyphOrder.append(attrs["name"])
+ ttFont.setGlyphOrder(self.glyphOrder)
def getTableModule(tag):
@@ -854,12 +877,13 @@ _customTableRegistry = {}
def registerCustomTableClass(tag, moduleName, className=None):
"""Register a custom packer/unpacker class for a table.
+
The 'moduleName' must be an importable module. If no 'className'
is given, it is derived from the tag, for example it will be
- table_C_U_S_T_ for a 'CUST' tag.
+ ``table_C_U_S_T_`` for a 'CUST' tag.
The registered table class should be a subclass of
- fontTools.ttLib.tables.DefaultTable.DefaultTable
+ :py:class:`fontTools.ttLib.tables.DefaultTable.DefaultTable`
"""
if className is None:
className = "table_" + tagToIdentifier(tag)
@@ -930,10 +954,14 @@ def tagToIdentifier(tag):
letters get an underscore after the letter. Trailing spaces are
trimmed. Illegal characters are escaped as two hex bytes. If the
result starts with a number (as the result of a hex escape), an
- extra underscore is prepended. Examples:
- 'glyf' -> '_g_l_y_f'
- 'cvt ' -> '_c_v_t'
- 'OS/2' -> 'O_S_2f_2'
+ extra underscore is prepended. Examples::
+
+ >>> tagToIdentifier('glyf')
+ '_g_l_y_f'
+ >>> tagToIdentifier('cvt ')
+ '_c_v_t'
+ >>> tagToIdentifier('OS/2')
+ 'O_S_2f_2'
"""
import re
tag = Tag(tag)
diff --git a/Lib/fontTools/ttLib/woff2.py b/Lib/fontTools/ttLib/woff2.py
index cc58afa5..b66661ab 100644
--- a/Lib/fontTools/ttLib/woff2.py
+++ b/Lib/fontTools/ttLib/woff2.py
@@ -1,4 +1,3 @@
-from fontTools.misc.py23 import Tag, bytechr, byteord, bytesjoin
from io import BytesIO
import sys
import array
@@ -6,7 +5,7 @@ import struct
from collections import OrderedDict
from fontTools.misc import sstruct
from fontTools.misc.arrayTools import calcIntBounds
-from fontTools.misc.textTools import pad
+from fontTools.misc.textTools import Tag, bytechr, byteord, bytesjoin, pad
from fontTools.ttLib import (TTFont, TTLibError, getTableModule, getTableClass,
getSearchRange)
from fontTools.ttLib.sfnt import (SFNTReader, SFNTWriter, DirectoryEntry,
diff --git a/Lib/fontTools/ttx.py b/Lib/fontTools/ttx.py
index 2eed0c5c..3f06c58b 100644
--- a/Lib/fontTools/ttx.py
+++ b/Lib/fontTools/ttx.py
@@ -1,95 +1,112 @@
"""\
usage: ttx [options] inputfile1 [... inputfileN]
- TTX -- From OpenType To XML And Back
-
- If an input file is a TrueType or OpenType font file, it will be
- decompiled to a TTX file (an XML-based text format).
- If an input file is a TTX file, it will be compiled to whatever
- format the data is in, a TrueType or OpenType/CFF font file.
-
- Output files are created so they are unique: an existing file is
- never overwritten.
-
- General options:
- -h Help: print this message.
- --version: show version and exit.
- -d <outputfolder> Specify a directory where the output files are
- to be created.
- -o <outputfile> Specify a file to write the output to. A special
- value of - would use the standard output.
- -f Overwrite existing output file(s), ie. don't append numbers.
- -v Verbose: more messages will be written to stdout about what
- is being done.
- -q Quiet: No messages will be written to stdout about what
- is being done.
- -a allow virtual glyphs ID's on compile or decompile.
-
- Dump options:
- -l List table info: instead of dumping to a TTX file, list some
- minimal info about each table.
- -t <table> Specify a table to dump. Multiple -t options
- are allowed. When no -t option is specified, all tables
- will be dumped.
- -x <table> Specify a table to exclude from the dump. Multiple
- -x options are allowed. -t and -x are mutually exclusive.
- -s Split tables: save the TTX data into separate TTX files per
- table and write one small TTX file that contains references
- to the individual table dumps. This file can be used as
- input to ttx, as long as the table files are in the
- same directory.
- -g Split glyf table: Save the glyf data into separate TTX files
- per glyph and write a small TTX for the glyf table which
- contains references to the individual TTGlyph elements.
- NOTE: specifying -g implies -s (no need for -s together with -g)
- -i Do NOT disassemble TT instructions: when this option is given,
- all TrueType programs (glyph programs, the font program and the
- pre-program) will be written to the TTX file as hex data
- instead of assembly. This saves some time and makes the TTX
- file smaller.
- -z <format> Specify a bitmap data export option for EBDT:
- {'raw', 'row', 'bitwise', 'extfile'} or for the CBDT:
- {'raw', 'extfile'} Each option does one of the following:
- -z raw
- * export the bitmap data as a hex dump
- -z row
- * export each row as hex data
- -z bitwise
- * export each row as binary in an ASCII art style
- -z extfile
- * export the data as external files with XML references
- If no export format is specified 'raw' format is used.
- -e Don't ignore decompilation errors, but show a full traceback
- and abort.
- -y <number> Select font number for TrueType Collection (.ttc/.otc),
- starting from 0.
- --unicodedata <UnicodeData.txt> Use custom database file to write
- character names in the comments of the cmap TTX output.
- --newline <value> Control how line endings are written in the XML
- file. It can be 'LF', 'CR', or 'CRLF'. If not specified, the
- default platform-specific line endings are used.
-
- Compile options:
- -m Merge with TrueType-input-file: specify a TrueType or OpenType
- font file to be merged with the TTX file. This option is only
- valid when at most one TTX file is specified.
- -b Don't recalc glyph bounding boxes: use the values in the TTX
- file as-is.
- --recalc-timestamp Set font 'modified' timestamp to current time.
- By default, the modification time of the TTX file will be used.
- --no-recalc-timestamp Keep the original font 'modified' timestamp.
- --flavor <type> Specify flavor of output font file. May be 'woff'
- or 'woff2'. Note that WOFF2 requires the Brotli Python extension,
- available at https://github.com/google/brotli
- --with-zopfli Use Zopfli instead of Zlib to compress WOFF. The Python
- extension is available at https://pypi.python.org/pypi/zopfli
+TTX -- From OpenType To XML And Back
+
+If an input file is a TrueType or OpenType font file, it will be
+decompiled to a TTX file (an XML-based text format).
+If an input file is a TTX file, it will be compiled to whatever
+format the data is in, a TrueType or OpenType/CFF font file.
+
+Output files are created so they are unique: an existing file is
+never overwritten.
+
+General options
+===============
+
+-h Help print this message.
+--version show version and exit.
+-d <outputfolder> Specify a directory where the output files are
+ to be created.
+-o <outputfile> Specify a file to write the output to. A special
+ value of - would use the standard output.
+-f Overwrite existing output file(s), ie. don't append
+ numbers.
+-v Verbose: more messages will be written to stdout
+ about what is being done.
+-q Quiet: No messages will be written to stdout about
+ what is being done.
+-a allow virtual glyphs ID's on compile or decompile.
+
+Dump options
+============
+
+-l List table info: instead of dumping to a TTX file, list
+ some minimal info about each table.
+-t <table> Specify a table to dump. Multiple -t options
+ are allowed. When no -t option is specified, all tables
+ will be dumped.
+-x <table> Specify a table to exclude from the dump. Multiple
+ -x options are allowed. -t and -x are mutually exclusive.
+-s Split tables: save the TTX data into separate TTX files per
+ table and write one small TTX file that contains references
+ to the individual table dumps. This file can be used as
+ input to ttx, as long as the table files are in the
+ same directory.
+-g Split glyf table: Save the glyf data into separate TTX files
+ per glyph and write a small TTX for the glyf table which
+ contains references to the individual TTGlyph elements.
+ NOTE: specifying -g implies -s (no need for -s together
+ with -g)
+-i Do NOT disassemble TT instructions: when this option is
+ given, all TrueType programs (glyph programs, the font
+ program and the pre-program) will be written to the TTX
+ file as hex data instead of assembly. This saves some time
+ and makes the TTX file smaller.
+-z <format> Specify a bitmap data export option for EBDT:
+ {'raw', 'row', 'bitwise', 'extfile'} or for the CBDT:
+ {'raw', 'extfile'} Each option does one of the following:
+
+ -z raw
+ export the bitmap data as a hex dump
+ -z row
+ export each row as hex data
+ -z bitwise
+ export each row as binary in an ASCII art style
+ -z extfile
+ export the data as external files with XML references
+
+ If no export format is specified 'raw' format is used.
+-e Don't ignore decompilation errors, but show a full traceback
+ and abort.
+-y <number> Select font number for TrueType Collection (.ttc/.otc),
+ starting from 0.
+--unicodedata <UnicodeData.txt>
+ Use custom database file to write character names in the
+ comments of the cmap TTX output.
+--newline <value>
+ Control how line endings are written in the XML file. It
+ can be 'LF', 'CR', or 'CRLF'. If not specified, the
+ default platform-specific line endings are used.
+
+Compile options
+===============
+
+-m Merge with TrueType-input-file: specify a TrueType or
+ OpenType font file to be merged with the TTX file. This
+ option is only valid when at most one TTX file is specified.
+-b Don't recalc glyph bounding boxes: use the values in the
+ TTX file as-is.
+--recalc-timestamp
+ Set font 'modified' timestamp to current time.
+ By default, the modification time of the TTX file will be
+ used.
+--no-recalc-timestamp
+ Keep the original font 'modified' timestamp.
+--flavor <type>
+ Specify flavor of output font file. May be 'woff' or 'woff2'.
+ Note that WOFF2 requires the Brotli Python extension,
+ available at https://github.com/google/brotli
+--with-zopfli
+ Use Zopfli instead of Zlib to compress WOFF. The Python
+ extension is available at https://pypi.python.org/pypi/zopfli
"""
-from fontTools.misc.py23 import Tag, tostr
from fontTools.ttLib import TTFont, TTLibError
from fontTools.misc.macCreatorType import getMacCreatorAndType
from fontTools.unicode import setUnicodeData
+from fontTools.misc.textTools import Tag, tostr
from fontTools.misc.timeTools import timestampSinceEpoch
from fontTools.misc.loggingTools import Timer
from fontTools.misc.cliTools import makeOutputFileName
@@ -118,11 +135,10 @@ class Options(object):
disassembleInstructions = True
mergeFile = None
recalcBBoxes = True
- allowVID = False
ignoreDecompileErrors = True
bitmapGlyphDataFormat = 'raw'
unicodedata = None
- newlinestr = None
+ newlinestr = "\n"
recalcTimestamp = None
flavor = None
useZopfli = False
@@ -184,8 +200,6 @@ class Options(object):
self.mergeFile = value
elif option == "-b":
self.recalcBBoxes = False
- elif option == "-a":
- self.allowVID = True
elif option == "-e":
self.ignoreDecompileErrors = False
elif option == "--unicodedata":
@@ -258,7 +272,7 @@ def ttDump(input, output, options):
log.info('Dumping "%s" to "%s"...', input, output)
if options.unicodedata:
setUnicodeData(options.unicodedata)
- ttf = TTFont(input, 0, allowVID=options.allowVID,
+ ttf = TTFont(input, 0,
ignoreDecompileErrors=options.ignoreDecompileErrors,
fontNumber=options.fontNumber)
ttf.saveXML(output,
@@ -280,8 +294,7 @@ def ttCompile(input, output, options):
sfnt.USE_ZOPFLI = True
ttf = TTFont(options.mergeFile, flavor=options.flavor,
recalcBBoxes=options.recalcBBoxes,
- recalcTimestamp=options.recalcTimestamp,
- allowVID=options.allowVID)
+ recalcTimestamp=options.recalcTimestamp)
ttf.importXML(input)
if options.recalcTimestamp is None and 'head' in ttf:
@@ -374,15 +387,6 @@ def process(jobs, options):
action(input, output, options)
-def waitForKeyPress():
- """Force the DOS Prompt window to stay open so the user gets
- a chance to see what's wrong."""
- import msvcrt
- print('(Hit any key to exit)', file=sys.stderr)
- while not msvcrt.kbhit():
- pass
-
-
def main(args=None):
"""Convert OpenType fonts to XML and back"""
from fontTools import configLogger
@@ -403,16 +407,12 @@ def main(args=None):
log.error("(Cancelled.)")
sys.exit(1)
except SystemExit:
- if sys.platform == "win32":
- waitForKeyPress()
raise
except TTLibError as e:
log.error(e)
sys.exit(1)
except:
log.exception('Unhandled exception has occurred')
- if sys.platform == "win32":
- waitForKeyPress()
sys.exit(1)
diff --git a/Lib/fontTools/ufoLib/__init__.py b/Lib/fontTools/ufoLib/__init__.py
index e846d085..bd04dd7a 100755
--- a/Lib/fontTools/ufoLib/__init__.py
+++ b/Lib/fontTools/ufoLib/__init__.py
@@ -491,7 +491,7 @@ class UFOReader(_UFOBaseIO):
"""
Get maps defining the renaming that was done during any
needed kerning group conversion. This method returns a
- dictionary of this form:
+ dictionary of this form::
{
"side1" : {"old group name" : "new group name"},
@@ -1173,7 +1173,7 @@ class UFOWriter(UFOReader):
when writing groups and kerning in UFO 1 and UFO 2.
This will effectively undo the conversion done when
UFOReader reads this data. The dictionary should have
- this form:
+ this form::
{
"side1" : {"group name to use when writing" : "group name in data"},
diff --git a/Lib/fontTools/ufoLib/filenames.py b/Lib/fontTools/ufoLib/filenames.py
index 2815469f..baf22076 100644
--- a/Lib/fontTools/ufoLib/filenames.py
+++ b/Lib/fontTools/ufoLib/filenames.py
@@ -3,11 +3,88 @@ User name to file name conversion.
This was taken from the UFO 3 spec.
"""
-illegalCharacters = r"\" * + / : < > ? [ \ ] | \0".split(" ")
-illegalCharacters += [chr(i) for i in range(1, 32)]
-illegalCharacters += [chr(0x7F)]
-reservedFileNames = "CON PRN AUX CLOCK$ NUL A:-Z: COM1".lower().split(" ")
-reservedFileNames += "LPT1 LPT2 LPT3 COM2 COM3 COM4".lower().split(" ")
+# Restrictions are taken mostly from
+# https://docs.microsoft.com/en-gb/windows/win32/fileio/naming-a-file#naming-conventions.
+#
+# 1. Integer value zero, sometimes referred to as the ASCII NUL character.
+# 2. Characters whose integer representations are in the range 1 to 31,
+# inclusive.
+# 3. Various characters that (mostly) Windows and POSIX-y filesystems don't
+# allow, plus "(" and ")", as per the specification.
+illegalCharacters = {
+ "\x00",
+ "\x01",
+ "\x02",
+ "\x03",
+ "\x04",
+ "\x05",
+ "\x06",
+ "\x07",
+ "\x08",
+ "\t",
+ "\n",
+ "\x0b",
+ "\x0c",
+ "\r",
+ "\x0e",
+ "\x0f",
+ "\x10",
+ "\x11",
+ "\x12",
+ "\x13",
+ "\x14",
+ "\x15",
+ "\x16",
+ "\x17",
+ "\x18",
+ "\x19",
+ "\x1a",
+ "\x1b",
+ "\x1c",
+ "\x1d",
+ "\x1e",
+ "\x1f",
+ '"',
+ "*",
+ "+",
+ "/",
+ ":",
+ "<",
+ ">",
+ "?",
+ "[",
+ "\\",
+ "]",
+ "(",
+ ")",
+ "|",
+ "\x7f",
+}
+reservedFileNames = {
+ "aux",
+ "clock$",
+ "com1",
+ "com2",
+ "com3",
+ "com4",
+ "com5",
+ "com6",
+ "com7",
+ "com8",
+ "com9",
+ "con",
+ "lpt1",
+ "lpt2",
+ "lpt3",
+ "lpt4",
+ "lpt5",
+ "lpt6",
+ "lpt7",
+ "lpt8",
+ "lpt9",
+ "nul",
+ "prn",
+}
maxFileNameLength = 255
@@ -15,10 +92,9 @@ class NameTranslationError(Exception):
pass
-def userNameToFileName(userName: str, existing=[], prefix="", suffix=""):
+def userNameToFileName(userName: str, existing=(), prefix="", suffix=""):
"""
- existing should be a case-insensitive list
- of all existing file names.
+ `existing` should be a set-like object.
>>> userNameToFileName("a") == "a"
True
diff --git a/Lib/fontTools/ufoLib/glifLib.py b/Lib/fontTools/ufoLib/glifLib.py
index 3003110e..44622a14 100755
--- a/Lib/fontTools/ufoLib/glifLib.py
+++ b/Lib/fontTools/ufoLib/glifLib.py
@@ -10,6 +10,8 @@ in a folder. It offers two ways to read glyph data, and one way to write
glyph data. See the class doc string for details.
"""
+from __future__ import annotations
+
import logging
import enum
from warnings import warn
@@ -19,7 +21,7 @@ import fs.base
import fs.errors
import fs.osfs
import fs.path
-from fontTools.misc.py23 import tobytes
+from fontTools.misc.textTools import tobytes
from fontTools.misc import plistlib
from fontTools.pens.pointPen import AbstractPointPen, PointToSegmentPen
from fontTools.ufoLib.errors import GlifLibError
@@ -205,7 +207,7 @@ class GlyphSet(_UFOBaseIO):
self.glyphNameToFileName = glyphNameToFileNameFunc
self._validateRead = validateRead
self._validateWrite = validateWrite
- self._existingFileNames = None
+ self._existingFileNames: set[str] | None = None
self._reverseContents = None
self.rebuildContents()
@@ -358,23 +360,33 @@ class GlyphSet(_UFOBaseIO):
'glyphObject' argument can be any kind of object (even None);
the readGlyph() method will attempt to set the following
attributes on it:
- "width" the advance width of the glyph
- "height" the advance height of the glyph
- "unicodes" a list of unicode values for this glyph
- "note" a string
- "lib" a dictionary containing custom data
- "image" a dictionary containing image data
- "guidelines" a list of guideline data dictionaries
- "anchors" a list of anchor data dictionaries
+
+ width
+ the advance width of the glyph
+ height
+ the advance height of the glyph
+ unicodes
+ a list of unicode values for this glyph
+ note
+ a string
+ lib
+ a dictionary containing custom data
+ image
+ a dictionary containing image data
+ guidelines
+ a list of guideline data dictionaries
+ anchors
+ a list of anchor data dictionaries
All attributes are optional, in two ways:
- 1) An attribute *won't* be set if the .glif file doesn't
- contain data for it. 'glyphObject' will have to deal
- with default values itself.
- 2) If setting the attribute fails with an AttributeError
- (for example if the 'glyphObject' attribute is read-
- only), readGlyph() will not propagate that exception,
- but ignore that attribute.
+
+ 1) An attribute *won't* be set if the .glif file doesn't
+ contain data for it. 'glyphObject' will have to deal
+ with default values itself.
+ 2) If setting the attribute fails with an AttributeError
+ (for example if the 'glyphObject' attribute is read-
+ only), readGlyph() will not propagate that exception,
+ but ignore that attribute.
To retrieve outline information, you need to pass an object
conforming to the PointPen protocol as the 'pointPen' argument.
@@ -399,14 +411,23 @@ class GlyphSet(_UFOBaseIO):
'glyphObject' argument can be any kind of object (even None);
the writeGlyph() method will attempt to get the following
attributes from it:
- "width" the advance with of the glyph
- "height" the advance height of the glyph
- "unicodes" a list of unicode values for this glyph
- "note" a string
- "lib" a dictionary containing custom data
- "image" a dictionary containing image data
- "guidelines" a list of guideline data dictionaries
- "anchors" a list of anchor data dictionaries
+
+ width
+ the advance width of the glyph
+ height
+ the advance height of the glyph
+ unicodes
+ a list of unicode values for this glyph
+ note
+ a string
+ lib
+ a dictionary containing custom data
+ image
+ a dictionary containing image data
+ guidelines
+ a list of guideline data dictionaries
+ anchors
+ a list of anchor data dictionaries
All attributes are optional: if 'glyphObject' doesn't
have the attribute, it will simply be skipped.
@@ -455,12 +476,12 @@ class GlyphSet(_UFOBaseIO):
fileName = self.contents.get(glyphName)
if fileName is None:
if self._existingFileNames is None:
- self._existingFileNames = {}
- for fileName in self.contents.values():
- self._existingFileNames[fileName] = fileName.lower()
- fileName = self.glyphNameToFileName(glyphName, self._existingFileNames.values())
+ self._existingFileNames = {
+ fileName.lower() for fileName in self.contents.values()
+ }
+ fileName = self.glyphNameToFileName(glyphName, self._existingFileNames)
self.contents[glyphName] = fileName
- self._existingFileNames[fileName] = fileName.lower()
+ self._existingFileNames.add(fileName.lower())
if self._reverseContents is not None:
self._reverseContents[fileName.lower()] = glyphName
data = _writeGlyphToBytes(
@@ -485,9 +506,9 @@ class GlyphSet(_UFOBaseIO):
fileName = self.contents[glyphName]
self.fs.remove(fileName)
if self._existingFileNames is not None:
- del self._existingFileNames[fileName]
+ self._existingFileNames.remove(fileName.lower())
if self._reverseContents is not None:
- del self._reverseContents[self.contents[glyphName].lower()]
+ del self._reverseContents[fileName.lower()]
del self.contents[glyphName]
# dict-like support
@@ -573,9 +594,12 @@ class GlyphSet(_UFOBaseIO):
def glyphNameToFileName(glyphName, existingFileNames):
"""
Wrapper around the userNameToFileName function in filenames.py
+
+ Note that existingFileNames should be a set for large glyphsets
+ or performance will suffer.
"""
if existingFileNames is None:
- existingFileNames = []
+ existingFileNames = set()
return userNameToFileName(glyphName, existing=existingFileNames, suffix=".glif")
# -----------------------
@@ -595,23 +619,33 @@ def readGlyphFromString(
The 'glyphObject' argument can be any kind of object (even None);
the readGlyphFromString() method will attempt to set the following
attributes on it:
- "width" the advance with of the glyph
- "height" the advance height of the glyph
- "unicodes" a list of unicode values for this glyph
- "note" a string
- "lib" a dictionary containing custom data
- "image" a dictionary containing image data
- "guidelines" a list of guideline data dictionaries
- "anchors" a list of anchor data dictionaries
+
+ width
+ the advance width of the glyph
+ height
+ the advance height of the glyph
+ unicodes
+ a list of unicode values for this glyph
+ note
+ a string
+ lib
+ a dictionary containing custom data
+ image
+ a dictionary containing image data
+ guidelines
+ a list of guideline data dictionaries
+ anchors
+ a list of anchor data dictionaries
All attributes are optional, in two ways:
- 1) An attribute *won't* be set if the .glif file doesn't
- contain data for it. 'glyphObject' will have to deal
- with default values itself.
- 2) If setting the attribute fails with an AttributeError
- (for example if the 'glyphObject' attribute is read-
- only), readGlyphFromString() will not propagate that
- exception, but ignore that attribute.
+
+ 1) An attribute *won't* be set if the .glif file doesn't
+ contain data for it. 'glyphObject' will have to deal
+ with default values itself.
+ 2) If setting the attribute fails with an AttributeError
+ (for example if the 'glyphObject' attribute is read-
+ only), readGlyphFromString() will not propagate that
+ exception, but ignore that attribute.
To retrieve outline information, you need to pass an object
conforming to the PointPen protocol as the 'pointPen' argument.
@@ -728,14 +762,23 @@ def writeGlyphToString(
The 'glyphObject' argument can be any kind of object (even None);
the writeGlyphToString() method will attempt to get the following
attributes from it:
- "width" the advance width of the glyph
- "height" the advance height of the glyph
- "unicodes" a list of unicode values for this glyph
- "note" a string
- "lib" a dictionary containing custom data
- "image" a dictionary containing image data
- "guidelines" a list of guideline data dictionaries
- "anchors" a list of anchor data dictionaries
+
+ width
+ the advance width of the glyph
+ height
+ the advance height of the glyph
+ unicodes
+ a list of unicode values for this glyph
+ note
+ a string
+ lib
+ a dictionary containing custom data
+ image
+ a dictionary containing image data
+ guidelines
+ a list of guideline data dictionaries
+ anchors
+ a list of anchor data dictionaries
All attributes are optional: if 'glyphObject' doesn't
have the attribute, it will simply be skipped.
diff --git a/Lib/fontTools/ufoLib/plistlib.py b/Lib/fontTools/ufoLib/plistlib.py
index 76381687..1f52f20a 100644
--- a/Lib/fontTools/ufoLib/plistlib.py
+++ b/Lib/fontTools/ufoLib/plistlib.py
@@ -3,7 +3,7 @@ for the old ufoLib.plistlib module, which was moved to fontTools.misc.plistlib.
Please use the latter instead.
"""
from fontTools.misc.plistlib import dump, dumps, load, loads
-from fontTools.misc.py23 import tobytes
+from fontTools.misc.textTools import tobytes
# The following functions were part of the old py2-like ufoLib.plistlib API.
# They are kept only for backward compatiblity.
diff --git a/Lib/fontTools/unicodedata/Blocks.py b/Lib/fontTools/unicodedata/Blocks.py
index 0755074b..2b30be67 100644
--- a/Lib/fontTools/unicodedata/Blocks.py
+++ b/Lib/fontTools/unicodedata/Blocks.py
@@ -4,9 +4,9 @@
# Source: https://unicode.org/Public/UNIDATA/Blocks.txt
# License: http://unicode.org/copyright.html#License
#
-# Blocks-13.0.0.txt
-# Date: 2019-07-10, 19:06:00 GMT [KW]
-# © 2019 Unicode®, Inc.
+# Blocks-14.0.0.txt
+# Date: 2021-01-22, 23:29:00 GMT [KW]
+# © 2021 Unicode®, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
@@ -37,7 +37,7 @@ RANGES = [
0x0800, # .. 0x083F ; Samaritan
0x0840, # .. 0x085F ; Mandaic
0x0860, # .. 0x086F ; Syriac Supplement
- 0x0870, # .. 0x089F ; No_Block
+ 0x0870, # .. 0x089F ; Arabic Extended-B
0x08A0, # .. 0x08FF ; Arabic Extended-A
0x0900, # .. 0x097F ; Devanagari
0x0980, # .. 0x09FF ; Bengali
@@ -204,9 +204,11 @@ RANGES = [
0x104B0, # .. 0x104FF ; Osage
0x10500, # .. 0x1052F ; Elbasan
0x10530, # .. 0x1056F ; Caucasian Albanian
- 0x10570, # .. 0x105FF ; No_Block
+ 0x10570, # .. 0x105BF ; Vithkuqi
+ 0x105C0, # .. 0x105FF ; No_Block
0x10600, # .. 0x1077F ; Linear A
- 0x10780, # .. 0x107FF ; No_Block
+ 0x10780, # .. 0x107BF ; Latin Extended-F
+ 0x107C0, # .. 0x107FF ; No_Block
0x10800, # .. 0x1083F ; Cypriot Syllabary
0x10840, # .. 0x1085F ; Imperial Aramaic
0x10860, # .. 0x1087F ; Palmyrene
@@ -238,7 +240,7 @@ RANGES = [
0x10EC0, # .. 0x10EFF ; No_Block
0x10F00, # .. 0x10F2F ; Old Sogdian
0x10F30, # .. 0x10F6F ; Sogdian
- 0x10F70, # .. 0x10FAF ; No_Block
+ 0x10F70, # .. 0x10FAF ; Old Uyghur
0x10FB0, # .. 0x10FDF ; Chorasmian
0x10FE0, # .. 0x10FFF ; Elymaic
0x11000, # .. 0x1107F ; Brahmi
@@ -262,8 +264,8 @@ RANGES = [
0x11660, # .. 0x1167F ; Mongolian Supplement
0x11680, # .. 0x116CF ; Takri
0x116D0, # .. 0x116FF ; No_Block
- 0x11700, # .. 0x1173F ; Ahom
- 0x11740, # .. 0x117FF ; No_Block
+ 0x11700, # .. 0x1174F ; Ahom
+ 0x11750, # .. 0x117FF ; No_Block
0x11800, # .. 0x1184F ; Dogra
0x11850, # .. 0x1189F ; No_Block
0x118A0, # .. 0x118FF ; Warang Citi
@@ -272,7 +274,7 @@ RANGES = [
0x119A0, # .. 0x119FF ; Nandinagari
0x11A00, # .. 0x11A4F ; Zanabazar Square
0x11A50, # .. 0x11AAF ; Soyombo
- 0x11AB0, # .. 0x11ABF ; No_Block
+ 0x11AB0, # .. 0x11ABF ; Unified Canadian Aboriginal Syllabics Extended-A
0x11AC0, # .. 0x11AFF ; Pau Cin Hau
0x11B00, # .. 0x11BFF ; No_Block
0x11C00, # .. 0x11C6F ; Bhaiksuki
@@ -288,7 +290,8 @@ RANGES = [
0x12000, # .. 0x123FF ; Cuneiform
0x12400, # .. 0x1247F ; Cuneiform Numbers and Punctuation
0x12480, # .. 0x1254F ; Early Dynastic Cuneiform
- 0x12550, # .. 0x12FFF ; No_Block
+ 0x12550, # .. 0x12F8F ; No_Block
+ 0x12F90, # .. 0x12FFF ; Cypro-Minoan
0x13000, # .. 0x1342F ; Egyptian Hieroglyphs
0x13430, # .. 0x1343F ; Egyptian Hieroglyph Format Controls
0x13440, # .. 0x143FF ; No_Block
@@ -296,7 +299,7 @@ RANGES = [
0x14680, # .. 0x167FF ; No_Block
0x16800, # .. 0x16A3F ; Bamum Supplement
0x16A40, # .. 0x16A6F ; Mro
- 0x16A70, # .. 0x16ACF ; No_Block
+ 0x16A70, # .. 0x16ACF ; Tangsa
0x16AD0, # .. 0x16AFF ; Bassa Vah
0x16B00, # .. 0x16B8F ; Pahawh Hmong
0x16B90, # .. 0x16E3F ; No_Block
@@ -308,8 +311,9 @@ RANGES = [
0x17000, # .. 0x187FF ; Tangut
0x18800, # .. 0x18AFF ; Tangut Components
0x18B00, # .. 0x18CFF ; Khitan Small Script
- 0x18D00, # .. 0x18D8F ; Tangut Supplement
- 0x18D90, # .. 0x1AFFF ; No_Block
+ 0x18D00, # .. 0x18D7F ; Tangut Supplement
+ 0x18D80, # .. 0x1AFEF ; No_Block
+ 0x1AFF0, # .. 0x1AFFF ; Kana Extended-B
0x1B000, # .. 0x1B0FF ; Kana Supplement
0x1B100, # .. 0x1B12F ; Kana Extended-A
0x1B130, # .. 0x1B16F ; Small Kana Extension
@@ -317,7 +321,9 @@ RANGES = [
0x1B300, # .. 0x1BBFF ; No_Block
0x1BC00, # .. 0x1BC9F ; Duployan
0x1BCA0, # .. 0x1BCAF ; Shorthand Format Controls
- 0x1BCB0, # .. 0x1CFFF ; No_Block
+ 0x1BCB0, # .. 0x1CEFF ; No_Block
+ 0x1CF00, # .. 0x1CFCF ; Znamenny Musical Notation
+ 0x1CFD0, # .. 0x1CFFF ; No_Block
0x1D000, # .. 0x1D0FF ; Byzantine Musical Symbols
0x1D100, # .. 0x1D1FF ; Musical Symbols
0x1D200, # .. 0x1D24F ; Ancient Greek Musical Notation
@@ -328,13 +334,16 @@ RANGES = [
0x1D380, # .. 0x1D3FF ; No_Block
0x1D400, # .. 0x1D7FF ; Mathematical Alphanumeric Symbols
0x1D800, # .. 0x1DAAF ; Sutton SignWriting
- 0x1DAB0, # .. 0x1DFFF ; No_Block
+ 0x1DAB0, # .. 0x1DEFF ; No_Block
+ 0x1DF00, # .. 0x1DFFF ; Latin Extended-G
0x1E000, # .. 0x1E02F ; Glagolitic Supplement
0x1E030, # .. 0x1E0FF ; No_Block
0x1E100, # .. 0x1E14F ; Nyiakeng Puachue Hmong
- 0x1E150, # .. 0x1E2BF ; No_Block
+ 0x1E150, # .. 0x1E28F ; No_Block
+ 0x1E290, # .. 0x1E2BF ; Toto
0x1E2C0, # .. 0x1E2FF ; Wancho
- 0x1E300, # .. 0x1E7FF ; No_Block
+ 0x1E300, # .. 0x1E7DF ; No_Block
+ 0x1E7E0, # .. 0x1E7FF ; Ethiopic Extended-B
0x1E800, # .. 0x1E8DF ; Mende Kikakui
0x1E8E0, # .. 0x1E8FF ; No_Block
0x1E900, # .. 0x1E95F ; Adlam
@@ -382,366 +391,375 @@ RANGES = [
]
VALUES = [
- 'Basic Latin', # 0000..007F
- 'Latin-1 Supplement', # 0080..00FF
- 'Latin Extended-A', # 0100..017F
- 'Latin Extended-B', # 0180..024F
- 'IPA Extensions', # 0250..02AF
- 'Spacing Modifier Letters', # 02B0..02FF
- 'Combining Diacritical Marks', # 0300..036F
- 'Greek and Coptic', # 0370..03FF
- 'Cyrillic', # 0400..04FF
- 'Cyrillic Supplement', # 0500..052F
- 'Armenian', # 0530..058F
- 'Hebrew', # 0590..05FF
- 'Arabic', # 0600..06FF
- 'Syriac', # 0700..074F
- 'Arabic Supplement', # 0750..077F
- 'Thaana', # 0780..07BF
- 'NKo', # 07C0..07FF
- 'Samaritan', # 0800..083F
- 'Mandaic', # 0840..085F
- 'Syriac Supplement', # 0860..086F
- 'No_Block', # 0870..089F
- 'Arabic Extended-A', # 08A0..08FF
- 'Devanagari', # 0900..097F
- 'Bengali', # 0980..09FF
- 'Gurmukhi', # 0A00..0A7F
- 'Gujarati', # 0A80..0AFF
- 'Oriya', # 0B00..0B7F
- 'Tamil', # 0B80..0BFF
- 'Telugu', # 0C00..0C7F
- 'Kannada', # 0C80..0CFF
- 'Malayalam', # 0D00..0D7F
- 'Sinhala', # 0D80..0DFF
- 'Thai', # 0E00..0E7F
- 'Lao', # 0E80..0EFF
- 'Tibetan', # 0F00..0FFF
- 'Myanmar', # 1000..109F
- 'Georgian', # 10A0..10FF
- 'Hangul Jamo', # 1100..11FF
- 'Ethiopic', # 1200..137F
- 'Ethiopic Supplement', # 1380..139F
- 'Cherokee', # 13A0..13FF
- 'Unified Canadian Aboriginal Syllabics', # 1400..167F
- 'Ogham', # 1680..169F
- 'Runic', # 16A0..16FF
- 'Tagalog', # 1700..171F
- 'Hanunoo', # 1720..173F
- 'Buhid', # 1740..175F
- 'Tagbanwa', # 1760..177F
- 'Khmer', # 1780..17FF
- 'Mongolian', # 1800..18AF
- 'Unified Canadian Aboriginal Syllabics Extended', # 18B0..18FF
- 'Limbu', # 1900..194F
- 'Tai Le', # 1950..197F
- 'New Tai Lue', # 1980..19DF
- 'Khmer Symbols', # 19E0..19FF
- 'Buginese', # 1A00..1A1F
- 'Tai Tham', # 1A20..1AAF
- 'Combining Diacritical Marks Extended', # 1AB0..1AFF
- 'Balinese', # 1B00..1B7F
- 'Sundanese', # 1B80..1BBF
- 'Batak', # 1BC0..1BFF
- 'Lepcha', # 1C00..1C4F
- 'Ol Chiki', # 1C50..1C7F
- 'Cyrillic Extended-C', # 1C80..1C8F
- 'Georgian Extended', # 1C90..1CBF
- 'Sundanese Supplement', # 1CC0..1CCF
- 'Vedic Extensions', # 1CD0..1CFF
- 'Phonetic Extensions', # 1D00..1D7F
- 'Phonetic Extensions Supplement', # 1D80..1DBF
- 'Combining Diacritical Marks Supplement', # 1DC0..1DFF
- 'Latin Extended Additional', # 1E00..1EFF
- 'Greek Extended', # 1F00..1FFF
- 'General Punctuation', # 2000..206F
- 'Superscripts and Subscripts', # 2070..209F
- 'Currency Symbols', # 20A0..20CF
- 'Combining Diacritical Marks for Symbols', # 20D0..20FF
- 'Letterlike Symbols', # 2100..214F
- 'Number Forms', # 2150..218F
- 'Arrows', # 2190..21FF
- 'Mathematical Operators', # 2200..22FF
- 'Miscellaneous Technical', # 2300..23FF
- 'Control Pictures', # 2400..243F
- 'Optical Character Recognition', # 2440..245F
- 'Enclosed Alphanumerics', # 2460..24FF
- 'Box Drawing', # 2500..257F
- 'Block Elements', # 2580..259F
- 'Geometric Shapes', # 25A0..25FF
- 'Miscellaneous Symbols', # 2600..26FF
- 'Dingbats', # 2700..27BF
- 'Miscellaneous Mathematical Symbols-A', # 27C0..27EF
- 'Supplemental Arrows-A', # 27F0..27FF
- 'Braille Patterns', # 2800..28FF
- 'Supplemental Arrows-B', # 2900..297F
- 'Miscellaneous Mathematical Symbols-B', # 2980..29FF
- 'Supplemental Mathematical Operators', # 2A00..2AFF
- 'Miscellaneous Symbols and Arrows', # 2B00..2BFF
- 'Glagolitic', # 2C00..2C5F
- 'Latin Extended-C', # 2C60..2C7F
- 'Coptic', # 2C80..2CFF
- 'Georgian Supplement', # 2D00..2D2F
- 'Tifinagh', # 2D30..2D7F
- 'Ethiopic Extended', # 2D80..2DDF
- 'Cyrillic Extended-A', # 2DE0..2DFF
- 'Supplemental Punctuation', # 2E00..2E7F
- 'CJK Radicals Supplement', # 2E80..2EFF
- 'Kangxi Radicals', # 2F00..2FDF
- 'No_Block', # 2FE0..2FEF
- 'Ideographic Description Characters', # 2FF0..2FFF
- 'CJK Symbols and Punctuation', # 3000..303F
- 'Hiragana', # 3040..309F
- 'Katakana', # 30A0..30FF
- 'Bopomofo', # 3100..312F
- 'Hangul Compatibility Jamo', # 3130..318F
- 'Kanbun', # 3190..319F
- 'Bopomofo Extended', # 31A0..31BF
- 'CJK Strokes', # 31C0..31EF
- 'Katakana Phonetic Extensions', # 31F0..31FF
- 'Enclosed CJK Letters and Months', # 3200..32FF
- 'CJK Compatibility', # 3300..33FF
- 'CJK Unified Ideographs Extension A', # 3400..4DBF
- 'Yijing Hexagram Symbols', # 4DC0..4DFF
- 'CJK Unified Ideographs', # 4E00..9FFF
- 'Yi Syllables', # A000..A48F
- 'Yi Radicals', # A490..A4CF
- 'Lisu', # A4D0..A4FF
- 'Vai', # A500..A63F
- 'Cyrillic Extended-B', # A640..A69F
- 'Bamum', # A6A0..A6FF
- 'Modifier Tone Letters', # A700..A71F
- 'Latin Extended-D', # A720..A7FF
- 'Syloti Nagri', # A800..A82F
- 'Common Indic Number Forms', # A830..A83F
- 'Phags-pa', # A840..A87F
- 'Saurashtra', # A880..A8DF
- 'Devanagari Extended', # A8E0..A8FF
- 'Kayah Li', # A900..A92F
- 'Rejang', # A930..A95F
- 'Hangul Jamo Extended-A', # A960..A97F
- 'Javanese', # A980..A9DF
- 'Myanmar Extended-B', # A9E0..A9FF
- 'Cham', # AA00..AA5F
- 'Myanmar Extended-A', # AA60..AA7F
- 'Tai Viet', # AA80..AADF
- 'Meetei Mayek Extensions', # AAE0..AAFF
- 'Ethiopic Extended-A', # AB00..AB2F
- 'Latin Extended-E', # AB30..AB6F
- 'Cherokee Supplement', # AB70..ABBF
- 'Meetei Mayek', # ABC0..ABFF
- 'Hangul Syllables', # AC00..D7AF
- 'Hangul Jamo Extended-B', # D7B0..D7FF
- 'High Surrogates', # D800..DB7F
- 'High Private Use Surrogates', # DB80..DBFF
- 'Low Surrogates', # DC00..DFFF
- 'Private Use Area', # E000..F8FF
- 'CJK Compatibility Ideographs', # F900..FAFF
- 'Alphabetic Presentation Forms', # FB00..FB4F
- 'Arabic Presentation Forms-A', # FB50..FDFF
- 'Variation Selectors', # FE00..FE0F
- 'Vertical Forms', # FE10..FE1F
- 'Combining Half Marks', # FE20..FE2F
- 'CJK Compatibility Forms', # FE30..FE4F
- 'Small Form Variants', # FE50..FE6F
- 'Arabic Presentation Forms-B', # FE70..FEFF
- 'Halfwidth and Fullwidth Forms', # FF00..FFEF
- 'Specials', # FFF0..FFFF
- 'Linear B Syllabary', # 10000..1007F
- 'Linear B Ideograms', # 10080..100FF
- 'Aegean Numbers', # 10100..1013F
- 'Ancient Greek Numbers', # 10140..1018F
- 'Ancient Symbols', # 10190..101CF
- 'Phaistos Disc', # 101D0..101FF
- 'No_Block', # 10200..1027F
- 'Lycian', # 10280..1029F
- 'Carian', # 102A0..102DF
- 'Coptic Epact Numbers', # 102E0..102FF
- 'Old Italic', # 10300..1032F
- 'Gothic', # 10330..1034F
- 'Old Permic', # 10350..1037F
- 'Ugaritic', # 10380..1039F
- 'Old Persian', # 103A0..103DF
- 'No_Block', # 103E0..103FF
- 'Deseret', # 10400..1044F
- 'Shavian', # 10450..1047F
- 'Osmanya', # 10480..104AF
- 'Osage', # 104B0..104FF
- 'Elbasan', # 10500..1052F
- 'Caucasian Albanian', # 10530..1056F
- 'No_Block', # 10570..105FF
- 'Linear A', # 10600..1077F
- 'No_Block', # 10780..107FF
- 'Cypriot Syllabary', # 10800..1083F
- 'Imperial Aramaic', # 10840..1085F
- 'Palmyrene', # 10860..1087F
- 'Nabataean', # 10880..108AF
- 'No_Block', # 108B0..108DF
- 'Hatran', # 108E0..108FF
- 'Phoenician', # 10900..1091F
- 'Lydian', # 10920..1093F
- 'No_Block', # 10940..1097F
- 'Meroitic Hieroglyphs', # 10980..1099F
- 'Meroitic Cursive', # 109A0..109FF
- 'Kharoshthi', # 10A00..10A5F
- 'Old South Arabian', # 10A60..10A7F
- 'Old North Arabian', # 10A80..10A9F
- 'No_Block', # 10AA0..10ABF
- 'Manichaean', # 10AC0..10AFF
- 'Avestan', # 10B00..10B3F
- 'Inscriptional Parthian', # 10B40..10B5F
- 'Inscriptional Pahlavi', # 10B60..10B7F
- 'Psalter Pahlavi', # 10B80..10BAF
- 'No_Block', # 10BB0..10BFF
- 'Old Turkic', # 10C00..10C4F
- 'No_Block', # 10C50..10C7F
- 'Old Hungarian', # 10C80..10CFF
- 'Hanifi Rohingya', # 10D00..10D3F
- 'No_Block', # 10D40..10E5F
- 'Rumi Numeral Symbols', # 10E60..10E7F
- 'Yezidi', # 10E80..10EBF
- 'No_Block', # 10EC0..10EFF
- 'Old Sogdian', # 10F00..10F2F
- 'Sogdian', # 10F30..10F6F
- 'No_Block', # 10F70..10FAF
- 'Chorasmian', # 10FB0..10FDF
- 'Elymaic', # 10FE0..10FFF
- 'Brahmi', # 11000..1107F
- 'Kaithi', # 11080..110CF
- 'Sora Sompeng', # 110D0..110FF
- 'Chakma', # 11100..1114F
- 'Mahajani', # 11150..1117F
- 'Sharada', # 11180..111DF
- 'Sinhala Archaic Numbers', # 111E0..111FF
- 'Khojki', # 11200..1124F
- 'No_Block', # 11250..1127F
- 'Multani', # 11280..112AF
- 'Khudawadi', # 112B0..112FF
- 'Grantha', # 11300..1137F
- 'No_Block', # 11380..113FF
- 'Newa', # 11400..1147F
- 'Tirhuta', # 11480..114DF
- 'No_Block', # 114E0..1157F
- 'Siddham', # 11580..115FF
- 'Modi', # 11600..1165F
- 'Mongolian Supplement', # 11660..1167F
- 'Takri', # 11680..116CF
- 'No_Block', # 116D0..116FF
- 'Ahom', # 11700..1173F
- 'No_Block', # 11740..117FF
- 'Dogra', # 11800..1184F
- 'No_Block', # 11850..1189F
- 'Warang Citi', # 118A0..118FF
- 'Dives Akuru', # 11900..1195F
- 'No_Block', # 11960..1199F
- 'Nandinagari', # 119A0..119FF
- 'Zanabazar Square', # 11A00..11A4F
- 'Soyombo', # 11A50..11AAF
- 'No_Block', # 11AB0..11ABF
- 'Pau Cin Hau', # 11AC0..11AFF
- 'No_Block', # 11B00..11BFF
- 'Bhaiksuki', # 11C00..11C6F
- 'Marchen', # 11C70..11CBF
- 'No_Block', # 11CC0..11CFF
- 'Masaram Gondi', # 11D00..11D5F
- 'Gunjala Gondi', # 11D60..11DAF
- 'No_Block', # 11DB0..11EDF
- 'Makasar', # 11EE0..11EFF
- 'No_Block', # 11F00..11FAF
- 'Lisu Supplement', # 11FB0..11FBF
- 'Tamil Supplement', # 11FC0..11FFF
- 'Cuneiform', # 12000..123FF
- 'Cuneiform Numbers and Punctuation', # 12400..1247F
- 'Early Dynastic Cuneiform', # 12480..1254F
- 'No_Block', # 12550..12FFF
- 'Egyptian Hieroglyphs', # 13000..1342F
- 'Egyptian Hieroglyph Format Controls', # 13430..1343F
- 'No_Block', # 13440..143FF
- 'Anatolian Hieroglyphs', # 14400..1467F
- 'No_Block', # 14680..167FF
- 'Bamum Supplement', # 16800..16A3F
- 'Mro', # 16A40..16A6F
- 'No_Block', # 16A70..16ACF
- 'Bassa Vah', # 16AD0..16AFF
- 'Pahawh Hmong', # 16B00..16B8F
- 'No_Block', # 16B90..16E3F
- 'Medefaidrin', # 16E40..16E9F
- 'No_Block', # 16EA0..16EFF
- 'Miao', # 16F00..16F9F
- 'No_Block', # 16FA0..16FDF
- 'Ideographic Symbols and Punctuation', # 16FE0..16FFF
- 'Tangut', # 17000..187FF
- 'Tangut Components', # 18800..18AFF
- 'Khitan Small Script', # 18B00..18CFF
- 'Tangut Supplement', # 18D00..18D8F
- 'No_Block', # 18D90..1AFFF
- 'Kana Supplement', # 1B000..1B0FF
- 'Kana Extended-A', # 1B100..1B12F
- 'Small Kana Extension', # 1B130..1B16F
- 'Nushu', # 1B170..1B2FF
- 'No_Block', # 1B300..1BBFF
- 'Duployan', # 1BC00..1BC9F
- 'Shorthand Format Controls', # 1BCA0..1BCAF
- 'No_Block', # 1BCB0..1CFFF
- 'Byzantine Musical Symbols', # 1D000..1D0FF
- 'Musical Symbols', # 1D100..1D1FF
- 'Ancient Greek Musical Notation', # 1D200..1D24F
- 'No_Block', # 1D250..1D2DF
- 'Mayan Numerals', # 1D2E0..1D2FF
- 'Tai Xuan Jing Symbols', # 1D300..1D35F
- 'Counting Rod Numerals', # 1D360..1D37F
- 'No_Block', # 1D380..1D3FF
- 'Mathematical Alphanumeric Symbols', # 1D400..1D7FF
- 'Sutton SignWriting', # 1D800..1DAAF
- 'No_Block', # 1DAB0..1DFFF
- 'Glagolitic Supplement', # 1E000..1E02F
- 'No_Block', # 1E030..1E0FF
- 'Nyiakeng Puachue Hmong', # 1E100..1E14F
- 'No_Block', # 1E150..1E2BF
- 'Wancho', # 1E2C0..1E2FF
- 'No_Block', # 1E300..1E7FF
- 'Mende Kikakui', # 1E800..1E8DF
- 'No_Block', # 1E8E0..1E8FF
- 'Adlam', # 1E900..1E95F
- 'No_Block', # 1E960..1EC6F
- 'Indic Siyaq Numbers', # 1EC70..1ECBF
- 'No_Block', # 1ECC0..1ECFF
- 'Ottoman Siyaq Numbers', # 1ED00..1ED4F
- 'No_Block', # 1ED50..1EDFF
- 'Arabic Mathematical Alphabetic Symbols', # 1EE00..1EEFF
- 'No_Block', # 1EF00..1EFFF
- 'Mahjong Tiles', # 1F000..1F02F
- 'Domino Tiles', # 1F030..1F09F
- 'Playing Cards', # 1F0A0..1F0FF
- 'Enclosed Alphanumeric Supplement', # 1F100..1F1FF
- 'Enclosed Ideographic Supplement', # 1F200..1F2FF
- 'Miscellaneous Symbols and Pictographs', # 1F300..1F5FF
- 'Emoticons', # 1F600..1F64F
- 'Ornamental Dingbats', # 1F650..1F67F
- 'Transport and Map Symbols', # 1F680..1F6FF
- 'Alchemical Symbols', # 1F700..1F77F
- 'Geometric Shapes Extended', # 1F780..1F7FF
- 'Supplemental Arrows-C', # 1F800..1F8FF
- 'Supplemental Symbols and Pictographs', # 1F900..1F9FF
- 'Chess Symbols', # 1FA00..1FA6F
- 'Symbols and Pictographs Extended-A', # 1FA70..1FAFF
- 'Symbols for Legacy Computing', # 1FB00..1FBFF
- 'No_Block', # 1FC00..1FFFF
- 'CJK Unified Ideographs Extension B', # 20000..2A6DF
- 'No_Block', # 2A6E0..2A6FF
- 'CJK Unified Ideographs Extension C', # 2A700..2B73F
- 'CJK Unified Ideographs Extension D', # 2B740..2B81F
- 'CJK Unified Ideographs Extension E', # 2B820..2CEAF
- 'CJK Unified Ideographs Extension F', # 2CEB0..2EBEF
- 'No_Block', # 2EBF0..2F7FF
- 'CJK Compatibility Ideographs Supplement', # 2F800..2FA1F
- 'No_Block', # 2FA20..2FFFF
- 'CJK Unified Ideographs Extension G', # 30000..3134F
- 'No_Block', # 31350..DFFFF
- 'Tags', # E0000..E007F
- 'No_Block', # E0080..E00FF
- 'Variation Selectors Supplement', # E0100..E01EF
- 'No_Block', # E01F0..EFFFF
- 'Supplementary Private Use Area-A', # F0000..FFFFF
- 'Supplementary Private Use Area-B', # 100000..10FFFF
+ 'Basic Latin', # 0000..007F
+ 'Latin-1 Supplement', # 0080..00FF
+ 'Latin Extended-A', # 0100..017F
+ 'Latin Extended-B', # 0180..024F
+ 'IPA Extensions', # 0250..02AF
+ 'Spacing Modifier Letters', # 02B0..02FF
+ 'Combining Diacritical Marks', # 0300..036F
+ 'Greek and Coptic', # 0370..03FF
+ 'Cyrillic', # 0400..04FF
+ 'Cyrillic Supplement', # 0500..052F
+ 'Armenian', # 0530..058F
+ 'Hebrew', # 0590..05FF
+ 'Arabic', # 0600..06FF
+ 'Syriac', # 0700..074F
+ 'Arabic Supplement', # 0750..077F
+ 'Thaana', # 0780..07BF
+ 'NKo', # 07C0..07FF
+ 'Samaritan', # 0800..083F
+ 'Mandaic', # 0840..085F
+ 'Syriac Supplement', # 0860..086F
+ 'Arabic Extended-B', # 0870..089F
+ 'Arabic Extended-A', # 08A0..08FF
+ 'Devanagari', # 0900..097F
+ 'Bengali', # 0980..09FF
+ 'Gurmukhi', # 0A00..0A7F
+ 'Gujarati', # 0A80..0AFF
+ 'Oriya', # 0B00..0B7F
+ 'Tamil', # 0B80..0BFF
+ 'Telugu', # 0C00..0C7F
+ 'Kannada', # 0C80..0CFF
+ 'Malayalam', # 0D00..0D7F
+ 'Sinhala', # 0D80..0DFF
+ 'Thai', # 0E00..0E7F
+ 'Lao', # 0E80..0EFF
+ 'Tibetan', # 0F00..0FFF
+ 'Myanmar', # 1000..109F
+ 'Georgian', # 10A0..10FF
+ 'Hangul Jamo', # 1100..11FF
+ 'Ethiopic', # 1200..137F
+ 'Ethiopic Supplement', # 1380..139F
+ 'Cherokee', # 13A0..13FF
+ 'Unified Canadian Aboriginal Syllabics', # 1400..167F
+ 'Ogham', # 1680..169F
+ 'Runic', # 16A0..16FF
+ 'Tagalog', # 1700..171F
+ 'Hanunoo', # 1720..173F
+ 'Buhid', # 1740..175F
+ 'Tagbanwa', # 1760..177F
+ 'Khmer', # 1780..17FF
+ 'Mongolian', # 1800..18AF
+ 'Unified Canadian Aboriginal Syllabics Extended', # 18B0..18FF
+ 'Limbu', # 1900..194F
+ 'Tai Le', # 1950..197F
+ 'New Tai Lue', # 1980..19DF
+ 'Khmer Symbols', # 19E0..19FF
+ 'Buginese', # 1A00..1A1F
+ 'Tai Tham', # 1A20..1AAF
+ 'Combining Diacritical Marks Extended', # 1AB0..1AFF
+ 'Balinese', # 1B00..1B7F
+ 'Sundanese', # 1B80..1BBF
+ 'Batak', # 1BC0..1BFF
+ 'Lepcha', # 1C00..1C4F
+ 'Ol Chiki', # 1C50..1C7F
+ 'Cyrillic Extended-C', # 1C80..1C8F
+ 'Georgian Extended', # 1C90..1CBF
+ 'Sundanese Supplement', # 1CC0..1CCF
+ 'Vedic Extensions', # 1CD0..1CFF
+ 'Phonetic Extensions', # 1D00..1D7F
+ 'Phonetic Extensions Supplement', # 1D80..1DBF
+ 'Combining Diacritical Marks Supplement', # 1DC0..1DFF
+ 'Latin Extended Additional', # 1E00..1EFF
+ 'Greek Extended', # 1F00..1FFF
+ 'General Punctuation', # 2000..206F
+ 'Superscripts and Subscripts', # 2070..209F
+ 'Currency Symbols', # 20A0..20CF
+ 'Combining Diacritical Marks for Symbols', # 20D0..20FF
+ 'Letterlike Symbols', # 2100..214F
+ 'Number Forms', # 2150..218F
+ 'Arrows', # 2190..21FF
+ 'Mathematical Operators', # 2200..22FF
+ 'Miscellaneous Technical', # 2300..23FF
+ 'Control Pictures', # 2400..243F
+ 'Optical Character Recognition', # 2440..245F
+ 'Enclosed Alphanumerics', # 2460..24FF
+ 'Box Drawing', # 2500..257F
+ 'Block Elements', # 2580..259F
+ 'Geometric Shapes', # 25A0..25FF
+ 'Miscellaneous Symbols', # 2600..26FF
+ 'Dingbats', # 2700..27BF
+ 'Miscellaneous Mathematical Symbols-A', # 27C0..27EF
+ 'Supplemental Arrows-A', # 27F0..27FF
+ 'Braille Patterns', # 2800..28FF
+ 'Supplemental Arrows-B', # 2900..297F
+ 'Miscellaneous Mathematical Symbols-B', # 2980..29FF
+ 'Supplemental Mathematical Operators', # 2A00..2AFF
+ 'Miscellaneous Symbols and Arrows', # 2B00..2BFF
+ 'Glagolitic', # 2C00..2C5F
+ 'Latin Extended-C', # 2C60..2C7F
+ 'Coptic', # 2C80..2CFF
+ 'Georgian Supplement', # 2D00..2D2F
+ 'Tifinagh', # 2D30..2D7F
+ 'Ethiopic Extended', # 2D80..2DDF
+ 'Cyrillic Extended-A', # 2DE0..2DFF
+ 'Supplemental Punctuation', # 2E00..2E7F
+ 'CJK Radicals Supplement', # 2E80..2EFF
+ 'Kangxi Radicals', # 2F00..2FDF
+ 'No_Block', # 2FE0..2FEF
+ 'Ideographic Description Characters', # 2FF0..2FFF
+ 'CJK Symbols and Punctuation', # 3000..303F
+ 'Hiragana', # 3040..309F
+ 'Katakana', # 30A0..30FF
+ 'Bopomofo', # 3100..312F
+ 'Hangul Compatibility Jamo', # 3130..318F
+ 'Kanbun', # 3190..319F
+ 'Bopomofo Extended', # 31A0..31BF
+ 'CJK Strokes', # 31C0..31EF
+ 'Katakana Phonetic Extensions', # 31F0..31FF
+ 'Enclosed CJK Letters and Months', # 3200..32FF
+ 'CJK Compatibility', # 3300..33FF
+ 'CJK Unified Ideographs Extension A', # 3400..4DBF
+ 'Yijing Hexagram Symbols', # 4DC0..4DFF
+ 'CJK Unified Ideographs', # 4E00..9FFF
+ 'Yi Syllables', # A000..A48F
+ 'Yi Radicals', # A490..A4CF
+ 'Lisu', # A4D0..A4FF
+ 'Vai', # A500..A63F
+ 'Cyrillic Extended-B', # A640..A69F
+ 'Bamum', # A6A0..A6FF
+ 'Modifier Tone Letters', # A700..A71F
+ 'Latin Extended-D', # A720..A7FF
+ 'Syloti Nagri', # A800..A82F
+ 'Common Indic Number Forms', # A830..A83F
+ 'Phags-pa', # A840..A87F
+ 'Saurashtra', # A880..A8DF
+ 'Devanagari Extended', # A8E0..A8FF
+ 'Kayah Li', # A900..A92F
+ 'Rejang', # A930..A95F
+ 'Hangul Jamo Extended-A', # A960..A97F
+ 'Javanese', # A980..A9DF
+ 'Myanmar Extended-B', # A9E0..A9FF
+ 'Cham', # AA00..AA5F
+ 'Myanmar Extended-A', # AA60..AA7F
+ 'Tai Viet', # AA80..AADF
+ 'Meetei Mayek Extensions', # AAE0..AAFF
+ 'Ethiopic Extended-A', # AB00..AB2F
+ 'Latin Extended-E', # AB30..AB6F
+ 'Cherokee Supplement', # AB70..ABBF
+ 'Meetei Mayek', # ABC0..ABFF
+ 'Hangul Syllables', # AC00..D7AF
+ 'Hangul Jamo Extended-B', # D7B0..D7FF
+ 'High Surrogates', # D800..DB7F
+ 'High Private Use Surrogates', # DB80..DBFF
+ 'Low Surrogates', # DC00..DFFF
+ 'Private Use Area', # E000..F8FF
+ 'CJK Compatibility Ideographs', # F900..FAFF
+ 'Alphabetic Presentation Forms', # FB00..FB4F
+ 'Arabic Presentation Forms-A', # FB50..FDFF
+ 'Variation Selectors', # FE00..FE0F
+ 'Vertical Forms', # FE10..FE1F
+ 'Combining Half Marks', # FE20..FE2F
+ 'CJK Compatibility Forms', # FE30..FE4F
+ 'Small Form Variants', # FE50..FE6F
+ 'Arabic Presentation Forms-B', # FE70..FEFF
+ 'Halfwidth and Fullwidth Forms', # FF00..FFEF
+ 'Specials', # FFF0..FFFF
+ 'Linear B Syllabary', # 10000..1007F
+ 'Linear B Ideograms', # 10080..100FF
+ 'Aegean Numbers', # 10100..1013F
+ 'Ancient Greek Numbers', # 10140..1018F
+ 'Ancient Symbols', # 10190..101CF
+ 'Phaistos Disc', # 101D0..101FF
+ 'No_Block', # 10200..1027F
+ 'Lycian', # 10280..1029F
+ 'Carian', # 102A0..102DF
+ 'Coptic Epact Numbers', # 102E0..102FF
+ 'Old Italic', # 10300..1032F
+ 'Gothic', # 10330..1034F
+ 'Old Permic', # 10350..1037F
+ 'Ugaritic', # 10380..1039F
+ 'Old Persian', # 103A0..103DF
+ 'No_Block', # 103E0..103FF
+ 'Deseret', # 10400..1044F
+ 'Shavian', # 10450..1047F
+ 'Osmanya', # 10480..104AF
+ 'Osage', # 104B0..104FF
+ 'Elbasan', # 10500..1052F
+ 'Caucasian Albanian', # 10530..1056F
+ 'Vithkuqi', # 10570..105BF
+ 'No_Block', # 105C0..105FF
+ 'Linear A', # 10600..1077F
+ 'Latin Extended-F', # 10780..107BF
+ 'No_Block', # 107C0..107FF
+ 'Cypriot Syllabary', # 10800..1083F
+ 'Imperial Aramaic', # 10840..1085F
+ 'Palmyrene', # 10860..1087F
+ 'Nabataean', # 10880..108AF
+ 'No_Block', # 108B0..108DF
+ 'Hatran', # 108E0..108FF
+ 'Phoenician', # 10900..1091F
+ 'Lydian', # 10920..1093F
+ 'No_Block', # 10940..1097F
+ 'Meroitic Hieroglyphs', # 10980..1099F
+ 'Meroitic Cursive', # 109A0..109FF
+ 'Kharoshthi', # 10A00..10A5F
+ 'Old South Arabian', # 10A60..10A7F
+ 'Old North Arabian', # 10A80..10A9F
+ 'No_Block', # 10AA0..10ABF
+ 'Manichaean', # 10AC0..10AFF
+ 'Avestan', # 10B00..10B3F
+ 'Inscriptional Parthian', # 10B40..10B5F
+ 'Inscriptional Pahlavi', # 10B60..10B7F
+ 'Psalter Pahlavi', # 10B80..10BAF
+ 'No_Block', # 10BB0..10BFF
+ 'Old Turkic', # 10C00..10C4F
+ 'No_Block', # 10C50..10C7F
+ 'Old Hungarian', # 10C80..10CFF
+ 'Hanifi Rohingya', # 10D00..10D3F
+ 'No_Block', # 10D40..10E5F
+ 'Rumi Numeral Symbols', # 10E60..10E7F
+ 'Yezidi', # 10E80..10EBF
+ 'No_Block', # 10EC0..10EFF
+ 'Old Sogdian', # 10F00..10F2F
+ 'Sogdian', # 10F30..10F6F
+ 'Old Uyghur', # 10F70..10FAF
+ 'Chorasmian', # 10FB0..10FDF
+ 'Elymaic', # 10FE0..10FFF
+ 'Brahmi', # 11000..1107F
+ 'Kaithi', # 11080..110CF
+ 'Sora Sompeng', # 110D0..110FF
+ 'Chakma', # 11100..1114F
+ 'Mahajani', # 11150..1117F
+ 'Sharada', # 11180..111DF
+ 'Sinhala Archaic Numbers', # 111E0..111FF
+ 'Khojki', # 11200..1124F
+ 'No_Block', # 11250..1127F
+ 'Multani', # 11280..112AF
+ 'Khudawadi', # 112B0..112FF
+ 'Grantha', # 11300..1137F
+ 'No_Block', # 11380..113FF
+ 'Newa', # 11400..1147F
+ 'Tirhuta', # 11480..114DF
+ 'No_Block', # 114E0..1157F
+ 'Siddham', # 11580..115FF
+ 'Modi', # 11600..1165F
+ 'Mongolian Supplement', # 11660..1167F
+ 'Takri', # 11680..116CF
+ 'No_Block', # 116D0..116FF
+ 'Ahom', # 11700..1174F
+ 'No_Block', # 11750..117FF
+ 'Dogra', # 11800..1184F
+ 'No_Block', # 11850..1189F
+ 'Warang Citi', # 118A0..118FF
+ 'Dives Akuru', # 11900..1195F
+ 'No_Block', # 11960..1199F
+ 'Nandinagari', # 119A0..119FF
+ 'Zanabazar Square', # 11A00..11A4F
+ 'Soyombo', # 11A50..11AAF
+ 'Unified Canadian Aboriginal Syllabics Extended-A', # 11AB0..11ABF
+ 'Pau Cin Hau', # 11AC0..11AFF
+ 'No_Block', # 11B00..11BFF
+ 'Bhaiksuki', # 11C00..11C6F
+ 'Marchen', # 11C70..11CBF
+ 'No_Block', # 11CC0..11CFF
+ 'Masaram Gondi', # 11D00..11D5F
+ 'Gunjala Gondi', # 11D60..11DAF
+ 'No_Block', # 11DB0..11EDF
+ 'Makasar', # 11EE0..11EFF
+ 'No_Block', # 11F00..11FAF
+ 'Lisu Supplement', # 11FB0..11FBF
+ 'Tamil Supplement', # 11FC0..11FFF
+ 'Cuneiform', # 12000..123FF
+ 'Cuneiform Numbers and Punctuation', # 12400..1247F
+ 'Early Dynastic Cuneiform', # 12480..1254F
+ 'No_Block', # 12550..12F8F
+ 'Cypro-Minoan', # 12F90..12FFF
+ 'Egyptian Hieroglyphs', # 13000..1342F
+ 'Egyptian Hieroglyph Format Controls', # 13430..1343F
+ 'No_Block', # 13440..143FF
+ 'Anatolian Hieroglyphs', # 14400..1467F
+ 'No_Block', # 14680..167FF
+ 'Bamum Supplement', # 16800..16A3F
+ 'Mro', # 16A40..16A6F
+ 'Tangsa', # 16A70..16ACF
+ 'Bassa Vah', # 16AD0..16AFF
+ 'Pahawh Hmong', # 16B00..16B8F
+ 'No_Block', # 16B90..16E3F
+ 'Medefaidrin', # 16E40..16E9F
+ 'No_Block', # 16EA0..16EFF
+ 'Miao', # 16F00..16F9F
+ 'No_Block', # 16FA0..16FDF
+ 'Ideographic Symbols and Punctuation', # 16FE0..16FFF
+ 'Tangut', # 17000..187FF
+ 'Tangut Components', # 18800..18AFF
+ 'Khitan Small Script', # 18B00..18CFF
+ 'Tangut Supplement', # 18D00..18D7F
+ 'No_Block', # 18D80..1AFEF
+ 'Kana Extended-B', # 1AFF0..1AFFF
+ 'Kana Supplement', # 1B000..1B0FF
+ 'Kana Extended-A', # 1B100..1B12F
+ 'Small Kana Extension', # 1B130..1B16F
+ 'Nushu', # 1B170..1B2FF
+ 'No_Block', # 1B300..1BBFF
+ 'Duployan', # 1BC00..1BC9F
+ 'Shorthand Format Controls', # 1BCA0..1BCAF
+ 'No_Block', # 1BCB0..1CEFF
+ 'Znamenny Musical Notation', # 1CF00..1CFCF
+ 'No_Block', # 1CFD0..1CFFF
+ 'Byzantine Musical Symbols', # 1D000..1D0FF
+ 'Musical Symbols', # 1D100..1D1FF
+ 'Ancient Greek Musical Notation', # 1D200..1D24F
+ 'No_Block', # 1D250..1D2DF
+ 'Mayan Numerals', # 1D2E0..1D2FF
+ 'Tai Xuan Jing Symbols', # 1D300..1D35F
+ 'Counting Rod Numerals', # 1D360..1D37F
+ 'No_Block', # 1D380..1D3FF
+ 'Mathematical Alphanumeric Symbols', # 1D400..1D7FF
+ 'Sutton SignWriting', # 1D800..1DAAF
+ 'No_Block', # 1DAB0..1DEFF
+ 'Latin Extended-G', # 1DF00..1DFFF
+ 'Glagolitic Supplement', # 1E000..1E02F
+ 'No_Block', # 1E030..1E0FF
+ 'Nyiakeng Puachue Hmong', # 1E100..1E14F
+ 'No_Block', # 1E150..1E28F
+ 'Toto', # 1E290..1E2BF
+ 'Wancho', # 1E2C0..1E2FF
+ 'No_Block', # 1E300..1E7DF
+ 'Ethiopic Extended-B', # 1E7E0..1E7FF
+ 'Mende Kikakui', # 1E800..1E8DF
+ 'No_Block', # 1E8E0..1E8FF
+ 'Adlam', # 1E900..1E95F
+ 'No_Block', # 1E960..1EC6F
+ 'Indic Siyaq Numbers', # 1EC70..1ECBF
+ 'No_Block', # 1ECC0..1ECFF
+ 'Ottoman Siyaq Numbers', # 1ED00..1ED4F
+ 'No_Block', # 1ED50..1EDFF
+ 'Arabic Mathematical Alphabetic Symbols', # 1EE00..1EEFF
+ 'No_Block', # 1EF00..1EFFF
+ 'Mahjong Tiles', # 1F000..1F02F
+ 'Domino Tiles', # 1F030..1F09F
+ 'Playing Cards', # 1F0A0..1F0FF
+ 'Enclosed Alphanumeric Supplement', # 1F100..1F1FF
+ 'Enclosed Ideographic Supplement', # 1F200..1F2FF
+ 'Miscellaneous Symbols and Pictographs', # 1F300..1F5FF
+ 'Emoticons', # 1F600..1F64F
+ 'Ornamental Dingbats', # 1F650..1F67F
+ 'Transport and Map Symbols', # 1F680..1F6FF
+ 'Alchemical Symbols', # 1F700..1F77F
+ 'Geometric Shapes Extended', # 1F780..1F7FF
+ 'Supplemental Arrows-C', # 1F800..1F8FF
+ 'Supplemental Symbols and Pictographs', # 1F900..1F9FF
+ 'Chess Symbols', # 1FA00..1FA6F
+ 'Symbols and Pictographs Extended-A', # 1FA70..1FAFF
+ 'Symbols for Legacy Computing', # 1FB00..1FBFF
+ 'No_Block', # 1FC00..1FFFF
+ 'CJK Unified Ideographs Extension B', # 20000..2A6DF
+ 'No_Block', # 2A6E0..2A6FF
+ 'CJK Unified Ideographs Extension C', # 2A700..2B73F
+ 'CJK Unified Ideographs Extension D', # 2B740..2B81F
+ 'CJK Unified Ideographs Extension E', # 2B820..2CEAF
+ 'CJK Unified Ideographs Extension F', # 2CEB0..2EBEF
+ 'No_Block', # 2EBF0..2F7FF
+ 'CJK Compatibility Ideographs Supplement', # 2F800..2FA1F
+ 'No_Block', # 2FA20..2FFFF
+ 'CJK Unified Ideographs Extension G', # 30000..3134F
+ 'No_Block', # 31350..DFFFF
+ 'Tags', # E0000..E007F
+ 'No_Block', # E0080..E00FF
+ 'Variation Selectors Supplement', # E0100..E01EF
+ 'No_Block', # E01F0..EFFFF
+ 'Supplementary Private Use Area-A', # F0000..FFFFF
+ 'Supplementary Private Use Area-B', # 100000..10FFFF
]
diff --git a/Lib/fontTools/unicodedata/OTTags.py b/Lib/fontTools/unicodedata/OTTags.py
index 39226805..a9d8cd1c 100644
--- a/Lib/fontTools/unicodedata/OTTags.py
+++ b/Lib/fontTools/unicodedata/OTTags.py
@@ -11,6 +11,10 @@
DEFAULT_SCRIPT = "DFLT"
+SCRIPT_ALIASES = {
+ "jamo": "hang",
+}
+
SCRIPT_EXCEPTIONS = {
"Hira": "kana",
"Hrkt": "kana",
diff --git a/Lib/fontTools/unicodedata/ScriptExtensions.py b/Lib/fontTools/unicodedata/ScriptExtensions.py
index b4e09cd2..b078c13e 100644
--- a/Lib/fontTools/unicodedata/ScriptExtensions.py
+++ b/Lib/fontTools/unicodedata/ScriptExtensions.py
@@ -4,9 +4,9 @@
# Source: https://unicode.org/Public/UNIDATA/ScriptExtensions.txt
# License: http://unicode.org/copyright.html#License
#
-# ScriptExtensions-13.0.0.txt
-# Date: 2020-01-22, 00:07:43 GMT
-# © 2020 Unicode®, Inc.
+# ScriptExtensions-14.0.0.txt
+# Date: 2021-06-04, 02:19:38 GMT
+# © 2021 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see http://www.unicode.org/terms_of_use.html
#
@@ -17,10 +17,10 @@
# with more than one script, but with a limited number of scripts.
# For each code point, there is one or more property values. Each such value is a Script property value.
# For more information, see:
-# UAX #24, Unicode Script Property: http://www.unicode.org/reports/tr24/
+# UAX #24, Unicode Script Property: https://www.unicode.org/reports/tr24/
# Especially the sections:
-# http://www.unicode.org/reports/tr24/#Assignment_Script_Values
-# http://www.unicode.org/reports/tr24/#Assignment_ScriptX_Values
+# https://www.unicode.org/reports/tr24/#Assignment_Script_Values
+# https://www.unicode.org/reports/tr24/#Assignment_ScriptX_Values
#
# Each Script_Extensions value in this file consists of a set
# of one or more abbreviated Script property values. The ordering of the
@@ -53,14 +53,14 @@ RANGES = [
0x0485, # .. 0x0486 ; {'Cyrl', 'Latn'}
0x0487, # .. 0x0487 ; {'Cyrl', 'Glag'}
0x0488, # .. 0x060B ; None
- 0x060C, # .. 0x060C ; {'Arab', 'Rohg', 'Syrc', 'Thaa', 'Yezi'}
+ 0x060C, # .. 0x060C ; {'Arab', 'Nkoo', 'Rohg', 'Syrc', 'Thaa', 'Yezi'}
0x060D, # .. 0x061A ; None
- 0x061B, # .. 0x061B ; {'Arab', 'Rohg', 'Syrc', 'Thaa', 'Yezi'}
+ 0x061B, # .. 0x061B ; {'Arab', 'Nkoo', 'Rohg', 'Syrc', 'Thaa', 'Yezi'}
0x061C, # .. 0x061C ; {'Arab', 'Syrc', 'Thaa'}
0x061D, # .. 0x061E ; None
- 0x061F, # .. 0x061F ; {'Arab', 'Rohg', 'Syrc', 'Thaa', 'Yezi'}
+ 0x061F, # .. 0x061F ; {'Adlm', 'Arab', 'Nkoo', 'Rohg', 'Syrc', 'Thaa', 'Yezi'}
0x0620, # .. 0x063F ; None
- 0x0640, # .. 0x0640 ; {'Adlm', 'Arab', 'Mand', 'Mani', 'Phlp', 'Rohg', 'Sogd', 'Syrc'}
+ 0x0640, # .. 0x0640 ; {'Adlm', 'Arab', 'Mand', 'Mani', 'Ougr', 'Phlp', 'Rohg', 'Sogd', 'Syrc'}
0x0641, # .. 0x064A ; None
0x064B, # .. 0x0655 ; {'Arab', 'Syrc'}
0x0656, # .. 0x065F ; None
@@ -129,7 +129,9 @@ RANGES = [
0x1DC0, # .. 0x1DC1 ; {'Grek'}
0x1DC2, # .. 0x1DF7 ; None
0x1DF8, # .. 0x1DF8 ; {'Cyrl', 'Syrc'}
- 0x1DF9, # .. 0x202E ; None
+ 0x1DF9, # .. 0x1DF9 ; None
+ 0x1DFA, # .. 0x1DFA ; {'Syrc'}
+ 0x1DFB, # .. 0x202E ; None
0x202F, # .. 0x202F ; {'Latn', 'Mong'}
0x2030, # .. 0x20EF ; None
0x20F0, # .. 0x20F0 ; {'Deva', 'Gran', 'Latn'}
@@ -197,7 +199,9 @@ RANGES = [
0xA92E, # .. 0xA92E ; {'Kali', 'Latn', 'Mymr'}
0xA92F, # .. 0xA9CE ; None
0xA9CF, # .. 0xA9CF ; {'Bugi', 'Java'}
- 0xA9D0, # .. 0xFDF1 ; None
+ 0xA9D0, # .. 0xFD3D ; None
+ 0xFD3E, # .. 0xFD3F ; {'Arab', 'Nkoo'}
+ 0xFD40, # .. 0xFDF1 ; None
0xFDF2, # .. 0xFDF2 ; {'Arab', 'Thaa'}
0xFDF3, # .. 0xFDFC ; None
0xFDFD, # .. 0xFDFD ; {'Arab', 'Thaa'}
@@ -210,14 +214,17 @@ RANGES = [
0xFF71, # .. 0xFF9D ; None
0xFF9E, # .. 0xFF9F ; {'Hira', 'Kana'}
0xFFA0, # .. 0x100FF ; None
- 0x10100, # .. 0x10102 ; {'Cprt', 'Linb'}
+ 0x10100, # .. 0x10101 ; {'Cpmn', 'Cprt', 'Linb'}
+ 0x10102, # .. 0x10102 ; {'Cprt', 'Linb'}
0x10103, # .. 0x10106 ; None
0x10107, # .. 0x10133 ; {'Cprt', 'Lina', 'Linb'}
0x10134, # .. 0x10136 ; None
0x10137, # .. 0x1013F ; {'Cprt', 'Linb'}
0x10140, # .. 0x102DF ; None
0x102E0, # .. 0x102FB ; {'Arab', 'Copt'}
- 0x102FC, # .. 0x11300 ; None
+ 0x102FC, # .. 0x10AF1 ; None
+ 0x10AF2, # .. 0x10AF2 ; {'Mani', 'Ougr'}
+ 0x10AF3, # .. 0x11300 ; None
0x11301, # .. 0x11301 ; {'Gran', 'Taml'}
0x11302, # .. 0x11302 ; None
0x11303, # .. 0x11303 ; {'Gran', 'Taml'}
@@ -249,14 +256,14 @@ VALUES = [
{'Cyrl', 'Latn'}, # 0485..0486
{'Cyrl', 'Glag'}, # 0487..0487
None, # 0488..060B
- {'Arab', 'Rohg', 'Syrc', 'Thaa', 'Yezi'}, # 060C..060C
+ {'Arab', 'Nkoo', 'Rohg', 'Syrc', 'Thaa', 'Yezi'}, # 060C..060C
None, # 060D..061A
- {'Arab', 'Rohg', 'Syrc', 'Thaa', 'Yezi'}, # 061B..061B
+ {'Arab', 'Nkoo', 'Rohg', 'Syrc', 'Thaa', 'Yezi'}, # 061B..061B
{'Arab', 'Syrc', 'Thaa'}, # 061C..061C
None, # 061D..061E
- {'Arab', 'Rohg', 'Syrc', 'Thaa', 'Yezi'}, # 061F..061F
+ {'Adlm', 'Arab', 'Nkoo', 'Rohg', 'Syrc', 'Thaa', 'Yezi'}, # 061F..061F
None, # 0620..063F
- {'Adlm', 'Arab', 'Mand', 'Mani', 'Phlp', 'Rohg', 'Sogd', 'Syrc'}, # 0640..0640
+ {'Adlm', 'Arab', 'Mand', 'Mani', 'Ougr', 'Phlp', 'Rohg', 'Sogd', 'Syrc'}, # 0640..0640
None, # 0641..064A
{'Arab', 'Syrc'}, # 064B..0655
None, # 0656..065F
@@ -325,7 +332,9 @@ VALUES = [
{'Grek'}, # 1DC0..1DC1
None, # 1DC2..1DF7
{'Cyrl', 'Syrc'}, # 1DF8..1DF8
- None, # 1DF9..202E
+ None, # 1DF9..1DF9
+ {'Syrc'}, # 1DFA..1DFA
+ None, # 1DFB..202E
{'Latn', 'Mong'}, # 202F..202F
None, # 2030..20EF
{'Deva', 'Gran', 'Latn'}, # 20F0..20F0
@@ -393,7 +402,9 @@ VALUES = [
{'Kali', 'Latn', 'Mymr'}, # A92E..A92E
None, # A92F..A9CE
{'Bugi', 'Java'}, # A9CF..A9CF
- None, # A9D0..FDF1
+ None, # A9D0..FD3D
+ {'Arab', 'Nkoo'}, # FD3E..FD3F
+ None, # FD40..FDF1
{'Arab', 'Thaa'}, # FDF2..FDF2
None, # FDF3..FDFC
{'Arab', 'Thaa'}, # FDFD..FDFD
@@ -406,14 +417,17 @@ VALUES = [
None, # FF71..FF9D
{'Hira', 'Kana'}, # FF9E..FF9F
None, # FFA0..100FF
- {'Cprt', 'Linb'}, # 10100..10102
+ {'Cpmn', 'Cprt', 'Linb'}, # 10100..10101
+ {'Cprt', 'Linb'}, # 10102..10102
None, # 10103..10106
{'Cprt', 'Lina', 'Linb'}, # 10107..10133
None, # 10134..10136
{'Cprt', 'Linb'}, # 10137..1013F
None, # 10140..102DF
{'Arab', 'Copt'}, # 102E0..102FB
- None, # 102FC..11300
+ None, # 102FC..10AF1
+ {'Mani', 'Ougr'}, # 10AF2..10AF2
+ None, # 10AF3..11300
{'Gran', 'Taml'}, # 11301..11301
None, # 11302..11302
{'Gran', 'Taml'}, # 11303..11303
diff --git a/Lib/fontTools/unicodedata/Scripts.py b/Lib/fontTools/unicodedata/Scripts.py
index 12f9a0e3..18cada93 100644
--- a/Lib/fontTools/unicodedata/Scripts.py
+++ b/Lib/fontTools/unicodedata/Scripts.py
@@ -4,19 +4,19 @@
# Source: https://unicode.org/Public/UNIDATA/Scripts.txt
# License: http://unicode.org/copyright.html#License
#
-# Scripts-13.0.0.txt
-# Date: 2020-01-22, 00:07:43 GMT
-# © 2020 Unicode®, Inc.
+# Scripts-14.0.0.txt
+# Date: 2021-07-10, 00:35:31 GMT
+# © 2021 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
# For terms of use, see http://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
# For documentation, see http://www.unicode.org/reports/tr44/
# For more information, see:
-# UAX #24, Unicode Script Property: http://www.unicode.org/reports/tr24/
+# UAX #24, Unicode Script Property: https://www.unicode.org/reports/tr24/
# Especially the sections:
-# http://www.unicode.org/reports/tr24/#Assignment_Script_Values
-# http://www.unicode.org/reports/tr24/#Assignment_ScriptX_Values
+# https://www.unicode.org/reports/tr24/#Assignment_Script_Values
+# https://www.unicode.org/reports/tr24/#Assignment_ScriptX_Values
#
@@ -84,9 +84,7 @@ RANGES = [
0x060C, # .. 0x060C ; Common
0x060D, # .. 0x061A ; Arabic
0x061B, # .. 0x061B ; Common
- 0x061C, # .. 0x061C ; Arabic
- 0x061D, # .. 0x061D ; Unknown
- 0x061E, # .. 0x061E ; Arabic
+ 0x061C, # .. 0x061E ; Arabic
0x061F, # .. 0x061F ; Common
0x0620, # .. 0x063F ; Arabic
0x0640, # .. 0x0640 ; Common
@@ -117,12 +115,12 @@ RANGES = [
0x085E, # .. 0x085E ; Mandaic
0x085F, # .. 0x085F ; Unknown
0x0860, # .. 0x086A ; Syriac
- 0x086B, # .. 0x089F ; Unknown
- 0x08A0, # .. 0x08B4 ; Arabic
- 0x08B5, # .. 0x08B5 ; Unknown
- 0x08B6, # .. 0x08C7 ; Arabic
- 0x08C8, # .. 0x08D2 ; Unknown
- 0x08D3, # .. 0x08E1 ; Arabic
+ 0x086B, # .. 0x086F ; Unknown
+ 0x0870, # .. 0x088E ; Arabic
+ 0x088F, # .. 0x088F ; Unknown
+ 0x0890, # .. 0x0891 ; Arabic
+ 0x0892, # .. 0x0897 ; Unknown
+ 0x0898, # .. 0x08E1 ; Arabic
0x08E2, # .. 0x08E2 ; Common
0x08E3, # .. 0x08FF ; Arabic
0x0900, # .. 0x0950 ; Devanagari
@@ -285,8 +283,8 @@ RANGES = [
0x0C12, # .. 0x0C28 ; Telugu
0x0C29, # .. 0x0C29 ; Unknown
0x0C2A, # .. 0x0C39 ; Telugu
- 0x0C3A, # .. 0x0C3C ; Unknown
- 0x0C3D, # .. 0x0C44 ; Telugu
+ 0x0C3A, # .. 0x0C3B ; Unknown
+ 0x0C3C, # .. 0x0C44 ; Telugu
0x0C45, # .. 0x0C45 ; Unknown
0x0C46, # .. 0x0C48 ; Telugu
0x0C49, # .. 0x0C49 ; Unknown
@@ -295,7 +293,9 @@ RANGES = [
0x0C55, # .. 0x0C56 ; Telugu
0x0C57, # .. 0x0C57 ; Unknown
0x0C58, # .. 0x0C5A ; Telugu
- 0x0C5B, # .. 0x0C5F ; Unknown
+ 0x0C5B, # .. 0x0C5C ; Unknown
+ 0x0C5D, # .. 0x0C5D ; Telugu
+ 0x0C5E, # .. 0x0C5F ; Unknown
0x0C60, # .. 0x0C63 ; Telugu
0x0C64, # .. 0x0C65 ; Unknown
0x0C66, # .. 0x0C6F ; Telugu
@@ -318,8 +318,8 @@ RANGES = [
0x0CCA, # .. 0x0CCD ; Kannada
0x0CCE, # .. 0x0CD4 ; Unknown
0x0CD5, # .. 0x0CD6 ; Kannada
- 0x0CD7, # .. 0x0CDD ; Unknown
- 0x0CDE, # .. 0x0CDE ; Kannada
+ 0x0CD7, # .. 0x0CDC ; Unknown
+ 0x0CDD, # .. 0x0CDE ; Kannada
0x0CDF, # .. 0x0CDF ; Unknown
0x0CE0, # .. 0x0CE3 ; Kannada
0x0CE4, # .. 0x0CE5 ; Unknown
@@ -464,10 +464,9 @@ RANGES = [
0x16EB, # .. 0x16ED ; Common
0x16EE, # .. 0x16F8 ; Runic
0x16F9, # .. 0x16FF ; Unknown
- 0x1700, # .. 0x170C ; Tagalog
- 0x170D, # .. 0x170D ; Unknown
- 0x170E, # .. 0x1714 ; Tagalog
- 0x1715, # .. 0x171F ; Unknown
+ 0x1700, # .. 0x1715 ; Tagalog
+ 0x1716, # .. 0x171E ; Unknown
+ 0x171F, # .. 0x171F ; Tagalog
0x1720, # .. 0x1734 ; Hanunoo
0x1735, # .. 0x1736 ; Common
0x1737, # .. 0x173F ; Unknown
@@ -489,9 +488,7 @@ RANGES = [
0x1802, # .. 0x1803 ; Common
0x1804, # .. 0x1804 ; Mongolian
0x1805, # .. 0x1805 ; Common
- 0x1806, # .. 0x180E ; Mongolian
- 0x180F, # .. 0x180F ; Unknown
- 0x1810, # .. 0x1819 ; Mongolian
+ 0x1806, # .. 0x1819 ; Mongolian
0x181A, # .. 0x181F ; Unknown
0x1820, # .. 0x1878 ; Mongolian
0x1879, # .. 0x187F ; Unknown
@@ -533,12 +530,12 @@ RANGES = [
0x1A9A, # .. 0x1A9F ; Unknown
0x1AA0, # .. 0x1AAD ; Tai_Tham
0x1AAE, # .. 0x1AAF ; Unknown
- 0x1AB0, # .. 0x1AC0 ; Inherited
- 0x1AC1, # .. 0x1AFF ; Unknown
- 0x1B00, # .. 0x1B4B ; Balinese
- 0x1B4C, # .. 0x1B4F ; Unknown
- 0x1B50, # .. 0x1B7C ; Balinese
- 0x1B7D, # .. 0x1B7F ; Unknown
+ 0x1AB0, # .. 0x1ACE ; Inherited
+ 0x1ACF, # .. 0x1AFF ; Unknown
+ 0x1B00, # .. 0x1B4C ; Balinese
+ 0x1B4D, # .. 0x1B4F ; Unknown
+ 0x1B50, # .. 0x1B7E ; Balinese
+ 0x1B7F, # .. 0x1B7F ; Unknown
0x1B80, # .. 0x1BBF ; Sundanese
0x1BC0, # .. 0x1BF3 ; Batak
0x1BF4, # .. 0x1BFB ; Unknown
@@ -580,9 +577,7 @@ RANGES = [
0x1D78, # .. 0x1D78 ; Cyrillic
0x1D79, # .. 0x1DBE ; Latin
0x1DBF, # .. 0x1DBF ; Greek
- 0x1DC0, # .. 0x1DF9 ; Inherited
- 0x1DFA, # .. 0x1DFA ; Unknown
- 0x1DFB, # .. 0x1DFF ; Inherited
+ 0x1DC0, # .. 0x1DFF ; Inherited
0x1E00, # .. 0x1EFF ; Latin
0x1F00, # .. 0x1F15 ; Greek
0x1F16, # .. 0x1F17 ; Unknown
@@ -629,8 +624,8 @@ RANGES = [
0x208F, # .. 0x208F ; Unknown
0x2090, # .. 0x209C ; Latin
0x209D, # .. 0x209F ; Unknown
- 0x20A0, # .. 0x20BF ; Common
- 0x20C0, # .. 0x20CF ; Unknown
+ 0x20A0, # .. 0x20C0 ; Common
+ 0x20C1, # .. 0x20CF ; Unknown
0x20D0, # .. 0x20F0 ; Inherited
0x20F1, # .. 0x20FF ; Unknown
0x2100, # .. 0x2125 ; Common
@@ -656,10 +651,7 @@ RANGES = [
0x2B76, # .. 0x2B95 ; Common
0x2B96, # .. 0x2B96 ; Unknown
0x2B97, # .. 0x2BFF ; Common
- 0x2C00, # .. 0x2C2E ; Glagolitic
- 0x2C2F, # .. 0x2C2F ; Unknown
- 0x2C30, # .. 0x2C5E ; Glagolitic
- 0x2C5F, # .. 0x2C5F ; Unknown
+ 0x2C00, # .. 0x2C5F ; Glagolitic
0x2C60, # .. 0x2C7F ; Latin
0x2C80, # .. 0x2CF3 ; Coptic
0x2CF4, # .. 0x2CF8 ; Unknown
@@ -694,8 +686,8 @@ RANGES = [
0x2DD8, # .. 0x2DDE ; Ethiopic
0x2DDF, # .. 0x2DDF ; Unknown
0x2DE0, # .. 0x2DFF ; Cyrillic
- 0x2E00, # .. 0x2E52 ; Common
- 0x2E53, # .. 0x2E7F ; Unknown
+ 0x2E00, # .. 0x2E5D ; Common
+ 0x2E5E, # .. 0x2E7F ; Unknown
0x2E80, # .. 0x2E99 ; Han
0x2E9A, # .. 0x2E9A ; Unknown
0x2E9B, # .. 0x2EF3 ; Han
@@ -746,8 +738,7 @@ RANGES = [
0x3358, # .. 0x33FF ; Common
0x3400, # .. 0x4DBF ; Han
0x4DC0, # .. 0x4DFF ; Common
- 0x4E00, # .. 0x9FFC ; Han
- 0x9FFD, # .. 0x9FFF ; Unknown
+ 0x4E00, # .. 0x9FFF ; Han
0xA000, # .. 0xA48C ; Yi
0xA48D, # .. 0xA48F ; Unknown
0xA490, # .. 0xA4C6 ; Yi
@@ -761,11 +752,15 @@ RANGES = [
0xA700, # .. 0xA721 ; Common
0xA722, # .. 0xA787 ; Latin
0xA788, # .. 0xA78A ; Common
- 0xA78B, # .. 0xA7BF ; Latin
- 0xA7C0, # .. 0xA7C1 ; Unknown
- 0xA7C2, # .. 0xA7CA ; Latin
- 0xA7CB, # .. 0xA7F4 ; Unknown
- 0xA7F5, # .. 0xA7FF ; Latin
+ 0xA78B, # .. 0xA7CA ; Latin
+ 0xA7CB, # .. 0xA7CF ; Unknown
+ 0xA7D0, # .. 0xA7D1 ; Latin
+ 0xA7D2, # .. 0xA7D2 ; Unknown
+ 0xA7D3, # .. 0xA7D3 ; Latin
+ 0xA7D4, # .. 0xA7D4 ; Unknown
+ 0xA7D5, # .. 0xA7D9 ; Latin
+ 0xA7DA, # .. 0xA7F1 ; Unknown
+ 0xA7F2, # .. 0xA7FF ; Latin
0xA800, # .. 0xA82C ; Syloti_Nagri
0xA82D, # .. 0xA82F ; Unknown
0xA830, # .. 0xA839 ; Common
@@ -853,17 +848,17 @@ RANGES = [
0xFB43, # .. 0xFB44 ; Hebrew
0xFB45, # .. 0xFB45 ; Unknown
0xFB46, # .. 0xFB4F ; Hebrew
- 0xFB50, # .. 0xFBC1 ; Arabic
- 0xFBC2, # .. 0xFBD2 ; Unknown
+ 0xFB50, # .. 0xFBC2 ; Arabic
+ 0xFBC3, # .. 0xFBD2 ; Unknown
0xFBD3, # .. 0xFD3D ; Arabic
0xFD3E, # .. 0xFD3F ; Common
- 0xFD40, # .. 0xFD4F ; Unknown
- 0xFD50, # .. 0xFD8F ; Arabic
+ 0xFD40, # .. 0xFD8F ; Arabic
0xFD90, # .. 0xFD91 ; Unknown
0xFD92, # .. 0xFDC7 ; Arabic
- 0xFDC8, # .. 0xFDEF ; Unknown
- 0xFDF0, # .. 0xFDFD ; Arabic
- 0xFDFE, # .. 0xFDFF ; Unknown
+ 0xFDC8, # .. 0xFDCE ; Unknown
+ 0xFDCF, # .. 0xFDCF ; Arabic
+ 0xFDD0, # .. 0xFDEF ; Unknown
+ 0xFDF0, # .. 0xFDFF ; Arabic
0xFE00, # .. 0xFE0F ; Inherited
0xFE10, # .. 0xFE19 ; Common
0xFE1A, # .. 0xFE1F ; Unknown
@@ -970,13 +965,34 @@ RANGES = [
0x10530, # .. 0x10563 ; Caucasian_Albanian
0x10564, # .. 0x1056E ; Unknown
0x1056F, # .. 0x1056F ; Caucasian_Albanian
- 0x10570, # .. 0x105FF ; Unknown
+ 0x10570, # .. 0x1057A ; Vithkuqi
+ 0x1057B, # .. 0x1057B ; Unknown
+ 0x1057C, # .. 0x1058A ; Vithkuqi
+ 0x1058B, # .. 0x1058B ; Unknown
+ 0x1058C, # .. 0x10592 ; Vithkuqi
+ 0x10593, # .. 0x10593 ; Unknown
+ 0x10594, # .. 0x10595 ; Vithkuqi
+ 0x10596, # .. 0x10596 ; Unknown
+ 0x10597, # .. 0x105A1 ; Vithkuqi
+ 0x105A2, # .. 0x105A2 ; Unknown
+ 0x105A3, # .. 0x105B1 ; Vithkuqi
+ 0x105B2, # .. 0x105B2 ; Unknown
+ 0x105B3, # .. 0x105B9 ; Vithkuqi
+ 0x105BA, # .. 0x105BA ; Unknown
+ 0x105BB, # .. 0x105BC ; Vithkuqi
+ 0x105BD, # .. 0x105FF ; Unknown
0x10600, # .. 0x10736 ; Linear_A
0x10737, # .. 0x1073F ; Unknown
0x10740, # .. 0x10755 ; Linear_A
0x10756, # .. 0x1075F ; Unknown
0x10760, # .. 0x10767 ; Linear_A
- 0x10768, # .. 0x107FF ; Unknown
+ 0x10768, # .. 0x1077F ; Unknown
+ 0x10780, # .. 0x10785 ; Latin
+ 0x10786, # .. 0x10786 ; Unknown
+ 0x10787, # .. 0x107B0 ; Latin
+ 0x107B1, # .. 0x107B1 ; Unknown
+ 0x107B2, # .. 0x107BA ; Latin
+ 0x107BB, # .. 0x107FF ; Unknown
0x10800, # .. 0x10805 ; Cypriot
0x10806, # .. 0x10807 ; Unknown
0x10808, # .. 0x10808 ; Cypriot
@@ -1074,18 +1090,20 @@ RANGES = [
0x10F00, # .. 0x10F27 ; Old_Sogdian
0x10F28, # .. 0x10F2F ; Unknown
0x10F30, # .. 0x10F59 ; Sogdian
- 0x10F5A, # .. 0x10FAF ; Unknown
+ 0x10F5A, # .. 0x10F6F ; Unknown
+ 0x10F70, # .. 0x10F89 ; Old_Uyghur
+ 0x10F8A, # .. 0x10FAF ; Unknown
0x10FB0, # .. 0x10FCB ; Chorasmian
0x10FCC, # .. 0x10FDF ; Unknown
0x10FE0, # .. 0x10FF6 ; Elymaic
0x10FF7, # .. 0x10FFF ; Unknown
0x11000, # .. 0x1104D ; Brahmi
0x1104E, # .. 0x11051 ; Unknown
- 0x11052, # .. 0x1106F ; Brahmi
- 0x11070, # .. 0x1107E ; Unknown
+ 0x11052, # .. 0x11075 ; Brahmi
+ 0x11076, # .. 0x1107E ; Unknown
0x1107F, # .. 0x1107F ; Brahmi
- 0x11080, # .. 0x110C1 ; Kaithi
- 0x110C2, # .. 0x110CC ; Unknown
+ 0x11080, # .. 0x110C2 ; Kaithi
+ 0x110C3, # .. 0x110CC ; Unknown
0x110CD, # .. 0x110CD ; Kaithi
0x110CE, # .. 0x110CF ; Unknown
0x110D0, # .. 0x110E8 ; Sora_Sompeng
@@ -1169,16 +1187,16 @@ RANGES = [
0x1165A, # .. 0x1165F ; Unknown
0x11660, # .. 0x1166C ; Mongolian
0x1166D, # .. 0x1167F ; Unknown
- 0x11680, # .. 0x116B8 ; Takri
- 0x116B9, # .. 0x116BF ; Unknown
+ 0x11680, # .. 0x116B9 ; Takri
+ 0x116BA, # .. 0x116BF ; Unknown
0x116C0, # .. 0x116C9 ; Takri
0x116CA, # .. 0x116FF ; Unknown
0x11700, # .. 0x1171A ; Ahom
0x1171B, # .. 0x1171C ; Unknown
0x1171D, # .. 0x1172B ; Ahom
0x1172C, # .. 0x1172F ; Unknown
- 0x11730, # .. 0x1173F ; Ahom
- 0x11740, # .. 0x117FF ; Unknown
+ 0x11730, # .. 0x11746 ; Ahom
+ 0x11747, # .. 0x117FF ; Unknown
0x11800, # .. 0x1183B ; Dogra
0x1183C, # .. 0x1189F ; Unknown
0x118A0, # .. 0x118F2 ; Warang_Citi
@@ -1209,7 +1227,8 @@ RANGES = [
0x11A00, # .. 0x11A47 ; Zanabazar_Square
0x11A48, # .. 0x11A4F ; Unknown
0x11A50, # .. 0x11AA2 ; Soyombo
- 0x11AA3, # .. 0x11ABF ; Unknown
+ 0x11AA3, # .. 0x11AAF ; Unknown
+ 0x11AB0, # .. 0x11ABF ; Canadian_Aboriginal
0x11AC0, # .. 0x11AF8 ; Pau_Cin_Hau
0x11AF9, # .. 0x11BFF ; Unknown
0x11C00, # .. 0x11C08 ; Bhaiksuki
@@ -1266,7 +1285,9 @@ RANGES = [
0x12470, # .. 0x12474 ; Cuneiform
0x12475, # .. 0x1247F ; Unknown
0x12480, # .. 0x12543 ; Cuneiform
- 0x12544, # .. 0x12FFF ; Unknown
+ 0x12544, # .. 0x12F8F ; Unknown
+ 0x12F90, # .. 0x12FF2 ; Cypro_Minoan
+ 0x12FF3, # .. 0x12FFF ; Unknown
0x13000, # .. 0x1342E ; Egyptian_Hieroglyphs
0x1342F, # .. 0x1342F ; Unknown
0x13430, # .. 0x13438 ; Egyptian_Hieroglyphs
@@ -1280,7 +1301,10 @@ RANGES = [
0x16A60, # .. 0x16A69 ; Mro
0x16A6A, # .. 0x16A6D ; Unknown
0x16A6E, # .. 0x16A6F ; Mro
- 0x16A70, # .. 0x16ACF ; Unknown
+ 0x16A70, # .. 0x16ABE ; Tangsa
+ 0x16ABF, # .. 0x16ABF ; Unknown
+ 0x16AC0, # .. 0x16AC9 ; Tangsa
+ 0x16ACA, # .. 0x16ACF ; Unknown
0x16AD0, # .. 0x16AED ; Bassa_Vah
0x16AEE, # .. 0x16AEF ; Unknown
0x16AF0, # .. 0x16AF5 ; Bassa_Vah
@@ -1305,7 +1329,7 @@ RANGES = [
0x16FA0, # .. 0x16FDF ; Unknown
0x16FE0, # .. 0x16FE0 ; Tangut
0x16FE1, # .. 0x16FE1 ; Nushu
- 0x16FE2, # .. 0x16FE3 ; Common
+ 0x16FE2, # .. 0x16FE3 ; Han
0x16FE4, # .. 0x16FE4 ; Khitan_Small_Script
0x16FE5, # .. 0x16FEF ; Unknown
0x16FF0, # .. 0x16FF1 ; Han
@@ -1316,10 +1340,17 @@ RANGES = [
0x18B00, # .. 0x18CD5 ; Khitan_Small_Script
0x18CD6, # .. 0x18CFF ; Unknown
0x18D00, # .. 0x18D08 ; Tangut
- 0x18D09, # .. 0x1AFFF ; Unknown
+ 0x18D09, # .. 0x1AFEF ; Unknown
+ 0x1AFF0, # .. 0x1AFF3 ; Katakana
+ 0x1AFF4, # .. 0x1AFF4 ; Unknown
+ 0x1AFF5, # .. 0x1AFFB ; Katakana
+ 0x1AFFC, # .. 0x1AFFC ; Unknown
+ 0x1AFFD, # .. 0x1AFFE ; Katakana
+ 0x1AFFF, # .. 0x1AFFF ; Unknown
0x1B000, # .. 0x1B000 ; Katakana
- 0x1B001, # .. 0x1B11E ; Hiragana
- 0x1B11F, # .. 0x1B14F ; Unknown
+ 0x1B001, # .. 0x1B11F ; Hiragana
+ 0x1B120, # .. 0x1B122 ; Katakana
+ 0x1B123, # .. 0x1B14F ; Unknown
0x1B150, # .. 0x1B152 ; Hiragana
0x1B153, # .. 0x1B163 ; Unknown
0x1B164, # .. 0x1B167 ; Katakana
@@ -1336,7 +1367,13 @@ RANGES = [
0x1BC9A, # .. 0x1BC9B ; Unknown
0x1BC9C, # .. 0x1BC9F ; Duployan
0x1BCA0, # .. 0x1BCA3 ; Common
- 0x1BCA4, # .. 0x1CFFF ; Unknown
+ 0x1BCA4, # .. 0x1CEFF ; Unknown
+ 0x1CF00, # .. 0x1CF2D ; Inherited
+ 0x1CF2E, # .. 0x1CF2F ; Unknown
+ 0x1CF30, # .. 0x1CF46 ; Inherited
+ 0x1CF47, # .. 0x1CF4F ; Unknown
+ 0x1CF50, # .. 0x1CFC3 ; Common
+ 0x1CFC4, # .. 0x1CFFF ; Unknown
0x1D000, # .. 0x1D0F5 ; Common
0x1D0F6, # .. 0x1D0FF ; Unknown
0x1D100, # .. 0x1D126 ; Common
@@ -1349,8 +1386,8 @@ RANGES = [
0x1D185, # .. 0x1D18B ; Inherited
0x1D18C, # .. 0x1D1A9 ; Common
0x1D1AA, # .. 0x1D1AD ; Inherited
- 0x1D1AE, # .. 0x1D1E8 ; Common
- 0x1D1E9, # .. 0x1D1FF ; Unknown
+ 0x1D1AE, # .. 0x1D1EA ; Common
+ 0x1D1EB, # .. 0x1D1FF ; Unknown
0x1D200, # .. 0x1D245 ; Greek
0x1D246, # .. 0x1D2DF ; Unknown
0x1D2E0, # .. 0x1D2F3 ; Common
@@ -1405,7 +1442,9 @@ RANGES = [
0x1DA9B, # .. 0x1DA9F ; SignWriting
0x1DAA0, # .. 0x1DAA0 ; Unknown
0x1DAA1, # .. 0x1DAAF ; SignWriting
- 0x1DAB0, # .. 0x1DFFF ; Unknown
+ 0x1DAB0, # .. 0x1DEFF ; Unknown
+ 0x1DF00, # .. 0x1DF1E ; Latin
+ 0x1DF1F, # .. 0x1DFFF ; Unknown
0x1E000, # .. 0x1E006 ; Glagolitic
0x1E007, # .. 0x1E007 ; Unknown
0x1E008, # .. 0x1E018 ; Glagolitic
@@ -1423,11 +1462,21 @@ RANGES = [
0x1E140, # .. 0x1E149 ; Nyiakeng_Puachue_Hmong
0x1E14A, # .. 0x1E14D ; Unknown
0x1E14E, # .. 0x1E14F ; Nyiakeng_Puachue_Hmong
- 0x1E150, # .. 0x1E2BF ; Unknown
+ 0x1E150, # .. 0x1E28F ; Unknown
+ 0x1E290, # .. 0x1E2AE ; Toto
+ 0x1E2AF, # .. 0x1E2BF ; Unknown
0x1E2C0, # .. 0x1E2F9 ; Wancho
0x1E2FA, # .. 0x1E2FE ; Unknown
0x1E2FF, # .. 0x1E2FF ; Wancho
- 0x1E300, # .. 0x1E7FF ; Unknown
+ 0x1E300, # .. 0x1E7DF ; Unknown
+ 0x1E7E0, # .. 0x1E7E6 ; Ethiopic
+ 0x1E7E7, # .. 0x1E7E7 ; Unknown
+ 0x1E7E8, # .. 0x1E7EB ; Ethiopic
+ 0x1E7EC, # .. 0x1E7EC ; Unknown
+ 0x1E7ED, # .. 0x1E7EE ; Ethiopic
+ 0x1E7EF, # .. 0x1E7EF ; Unknown
+ 0x1E7F0, # .. 0x1E7FE ; Ethiopic
+ 0x1E7FF, # .. 0x1E7FF ; Unknown
0x1E800, # .. 0x1E8C4 ; Mende_Kikakui
0x1E8C5, # .. 0x1E8C6 ; Unknown
0x1E8C7, # .. 0x1E8D6 ; Mende_Kikakui
@@ -1537,8 +1586,8 @@ RANGES = [
0x1F260, # .. 0x1F265 ; Common
0x1F266, # .. 0x1F2FF ; Unknown
0x1F300, # .. 0x1F6D7 ; Common
- 0x1F6D8, # .. 0x1F6DF ; Unknown
- 0x1F6E0, # .. 0x1F6EC ; Common
+ 0x1F6D8, # .. 0x1F6DC ; Unknown
+ 0x1F6DD, # .. 0x1F6EC ; Common
0x1F6ED, # .. 0x1F6EF ; Unknown
0x1F6F0, # .. 0x1F6FC ; Common
0x1F6FD, # .. 0x1F6FF ; Unknown
@@ -1547,7 +1596,9 @@ RANGES = [
0x1F780, # .. 0x1F7D8 ; Common
0x1F7D9, # .. 0x1F7DF ; Unknown
0x1F7E0, # .. 0x1F7EB ; Common
- 0x1F7EC, # .. 0x1F7FF ; Unknown
+ 0x1F7EC, # .. 0x1F7EF ; Unknown
+ 0x1F7F0, # .. 0x1F7F0 ; Common
+ 0x1F7F1, # .. 0x1F7FF ; Unknown
0x1F800, # .. 0x1F80B ; Common
0x1F80C, # .. 0x1F80F ; Unknown
0x1F810, # .. 0x1F847 ; Common
@@ -1560,38 +1611,38 @@ RANGES = [
0x1F8AE, # .. 0x1F8AF ; Unknown
0x1F8B0, # .. 0x1F8B1 ; Common
0x1F8B2, # .. 0x1F8FF ; Unknown
- 0x1F900, # .. 0x1F978 ; Common
- 0x1F979, # .. 0x1F979 ; Unknown
- 0x1F97A, # .. 0x1F9CB ; Common
- 0x1F9CC, # .. 0x1F9CC ; Unknown
- 0x1F9CD, # .. 0x1FA53 ; Common
+ 0x1F900, # .. 0x1FA53 ; Common
0x1FA54, # .. 0x1FA5F ; Unknown
0x1FA60, # .. 0x1FA6D ; Common
0x1FA6E, # .. 0x1FA6F ; Unknown
0x1FA70, # .. 0x1FA74 ; Common
0x1FA75, # .. 0x1FA77 ; Unknown
- 0x1FA78, # .. 0x1FA7A ; Common
- 0x1FA7B, # .. 0x1FA7F ; Unknown
+ 0x1FA78, # .. 0x1FA7C ; Common
+ 0x1FA7D, # .. 0x1FA7F ; Unknown
0x1FA80, # .. 0x1FA86 ; Common
0x1FA87, # .. 0x1FA8F ; Unknown
- 0x1FA90, # .. 0x1FAA8 ; Common
- 0x1FAA9, # .. 0x1FAAF ; Unknown
- 0x1FAB0, # .. 0x1FAB6 ; Common
- 0x1FAB7, # .. 0x1FABF ; Unknown
- 0x1FAC0, # .. 0x1FAC2 ; Common
- 0x1FAC3, # .. 0x1FACF ; Unknown
- 0x1FAD0, # .. 0x1FAD6 ; Common
- 0x1FAD7, # .. 0x1FAFF ; Unknown
+ 0x1FA90, # .. 0x1FAAC ; Common
+ 0x1FAAD, # .. 0x1FAAF ; Unknown
+ 0x1FAB0, # .. 0x1FABA ; Common
+ 0x1FABB, # .. 0x1FABF ; Unknown
+ 0x1FAC0, # .. 0x1FAC5 ; Common
+ 0x1FAC6, # .. 0x1FACF ; Unknown
+ 0x1FAD0, # .. 0x1FAD9 ; Common
+ 0x1FADA, # .. 0x1FADF ; Unknown
+ 0x1FAE0, # .. 0x1FAE7 ; Common
+ 0x1FAE8, # .. 0x1FAEF ; Unknown
+ 0x1FAF0, # .. 0x1FAF6 ; Common
+ 0x1FAF7, # .. 0x1FAFF ; Unknown
0x1FB00, # .. 0x1FB92 ; Common
0x1FB93, # .. 0x1FB93 ; Unknown
0x1FB94, # .. 0x1FBCA ; Common
0x1FBCB, # .. 0x1FBEF ; Unknown
0x1FBF0, # .. 0x1FBF9 ; Common
0x1FBFA, # .. 0x1FFFF ; Unknown
- 0x20000, # .. 0x2A6DD ; Han
- 0x2A6DE, # .. 0x2A6FF ; Unknown
- 0x2A700, # .. 0x2B734 ; Han
- 0x2B735, # .. 0x2B73F ; Unknown
+ 0x20000, # .. 0x2A6DF ; Han
+ 0x2A6E0, # .. 0x2A6FF ; Unknown
+ 0x2A700, # .. 0x2B738 ; Han
+ 0x2B739, # .. 0x2B73F ; Unknown
0x2B740, # .. 0x2B81D ; Han
0x2B81E, # .. 0x2B81F ; Unknown
0x2B820, # .. 0x2CEA1 ; Han
@@ -1674,9 +1725,7 @@ VALUES = [
'Zyyy', # 060C..060C ; Common
'Arab', # 060D..061A ; Arabic
'Zyyy', # 061B..061B ; Common
- 'Arab', # 061C..061C ; Arabic
- 'Zzzz', # 061D..061D ; Unknown
- 'Arab', # 061E..061E ; Arabic
+ 'Arab', # 061C..061E ; Arabic
'Zyyy', # 061F..061F ; Common
'Arab', # 0620..063F ; Arabic
'Zyyy', # 0640..0640 ; Common
@@ -1707,12 +1756,12 @@ VALUES = [
'Mand', # 085E..085E ; Mandaic
'Zzzz', # 085F..085F ; Unknown
'Syrc', # 0860..086A ; Syriac
- 'Zzzz', # 086B..089F ; Unknown
- 'Arab', # 08A0..08B4 ; Arabic
- 'Zzzz', # 08B5..08B5 ; Unknown
- 'Arab', # 08B6..08C7 ; Arabic
- 'Zzzz', # 08C8..08D2 ; Unknown
- 'Arab', # 08D3..08E1 ; Arabic
+ 'Zzzz', # 086B..086F ; Unknown
+ 'Arab', # 0870..088E ; Arabic
+ 'Zzzz', # 088F..088F ; Unknown
+ 'Arab', # 0890..0891 ; Arabic
+ 'Zzzz', # 0892..0897 ; Unknown
+ 'Arab', # 0898..08E1 ; Arabic
'Zyyy', # 08E2..08E2 ; Common
'Arab', # 08E3..08FF ; Arabic
'Deva', # 0900..0950 ; Devanagari
@@ -1875,8 +1924,8 @@ VALUES = [
'Telu', # 0C12..0C28 ; Telugu
'Zzzz', # 0C29..0C29 ; Unknown
'Telu', # 0C2A..0C39 ; Telugu
- 'Zzzz', # 0C3A..0C3C ; Unknown
- 'Telu', # 0C3D..0C44 ; Telugu
+ 'Zzzz', # 0C3A..0C3B ; Unknown
+ 'Telu', # 0C3C..0C44 ; Telugu
'Zzzz', # 0C45..0C45 ; Unknown
'Telu', # 0C46..0C48 ; Telugu
'Zzzz', # 0C49..0C49 ; Unknown
@@ -1885,7 +1934,9 @@ VALUES = [
'Telu', # 0C55..0C56 ; Telugu
'Zzzz', # 0C57..0C57 ; Unknown
'Telu', # 0C58..0C5A ; Telugu
- 'Zzzz', # 0C5B..0C5F ; Unknown
+ 'Zzzz', # 0C5B..0C5C ; Unknown
+ 'Telu', # 0C5D..0C5D ; Telugu
+ 'Zzzz', # 0C5E..0C5F ; Unknown
'Telu', # 0C60..0C63 ; Telugu
'Zzzz', # 0C64..0C65 ; Unknown
'Telu', # 0C66..0C6F ; Telugu
@@ -1908,8 +1959,8 @@ VALUES = [
'Knda', # 0CCA..0CCD ; Kannada
'Zzzz', # 0CCE..0CD4 ; Unknown
'Knda', # 0CD5..0CD6 ; Kannada
- 'Zzzz', # 0CD7..0CDD ; Unknown
- 'Knda', # 0CDE..0CDE ; Kannada
+ 'Zzzz', # 0CD7..0CDC ; Unknown
+ 'Knda', # 0CDD..0CDE ; Kannada
'Zzzz', # 0CDF..0CDF ; Unknown
'Knda', # 0CE0..0CE3 ; Kannada
'Zzzz', # 0CE4..0CE5 ; Unknown
@@ -2054,10 +2105,9 @@ VALUES = [
'Zyyy', # 16EB..16ED ; Common
'Runr', # 16EE..16F8 ; Runic
'Zzzz', # 16F9..16FF ; Unknown
- 'Tglg', # 1700..170C ; Tagalog
- 'Zzzz', # 170D..170D ; Unknown
- 'Tglg', # 170E..1714 ; Tagalog
- 'Zzzz', # 1715..171F ; Unknown
+ 'Tglg', # 1700..1715 ; Tagalog
+ 'Zzzz', # 1716..171E ; Unknown
+ 'Tglg', # 171F..171F ; Tagalog
'Hano', # 1720..1734 ; Hanunoo
'Zyyy', # 1735..1736 ; Common
'Zzzz', # 1737..173F ; Unknown
@@ -2079,9 +2129,7 @@ VALUES = [
'Zyyy', # 1802..1803 ; Common
'Mong', # 1804..1804 ; Mongolian
'Zyyy', # 1805..1805 ; Common
- 'Mong', # 1806..180E ; Mongolian
- 'Zzzz', # 180F..180F ; Unknown
- 'Mong', # 1810..1819 ; Mongolian
+ 'Mong', # 1806..1819 ; Mongolian
'Zzzz', # 181A..181F ; Unknown
'Mong', # 1820..1878 ; Mongolian
'Zzzz', # 1879..187F ; Unknown
@@ -2123,12 +2171,12 @@ VALUES = [
'Zzzz', # 1A9A..1A9F ; Unknown
'Lana', # 1AA0..1AAD ; Tai_Tham
'Zzzz', # 1AAE..1AAF ; Unknown
- 'Zinh', # 1AB0..1AC0 ; Inherited
- 'Zzzz', # 1AC1..1AFF ; Unknown
- 'Bali', # 1B00..1B4B ; Balinese
- 'Zzzz', # 1B4C..1B4F ; Unknown
- 'Bali', # 1B50..1B7C ; Balinese
- 'Zzzz', # 1B7D..1B7F ; Unknown
+ 'Zinh', # 1AB0..1ACE ; Inherited
+ 'Zzzz', # 1ACF..1AFF ; Unknown
+ 'Bali', # 1B00..1B4C ; Balinese
+ 'Zzzz', # 1B4D..1B4F ; Unknown
+ 'Bali', # 1B50..1B7E ; Balinese
+ 'Zzzz', # 1B7F..1B7F ; Unknown
'Sund', # 1B80..1BBF ; Sundanese
'Batk', # 1BC0..1BF3 ; Batak
'Zzzz', # 1BF4..1BFB ; Unknown
@@ -2170,9 +2218,7 @@ VALUES = [
'Cyrl', # 1D78..1D78 ; Cyrillic
'Latn', # 1D79..1DBE ; Latin
'Grek', # 1DBF..1DBF ; Greek
- 'Zinh', # 1DC0..1DF9 ; Inherited
- 'Zzzz', # 1DFA..1DFA ; Unknown
- 'Zinh', # 1DFB..1DFF ; Inherited
+ 'Zinh', # 1DC0..1DFF ; Inherited
'Latn', # 1E00..1EFF ; Latin
'Grek', # 1F00..1F15 ; Greek
'Zzzz', # 1F16..1F17 ; Unknown
@@ -2219,8 +2265,8 @@ VALUES = [
'Zzzz', # 208F..208F ; Unknown
'Latn', # 2090..209C ; Latin
'Zzzz', # 209D..209F ; Unknown
- 'Zyyy', # 20A0..20BF ; Common
- 'Zzzz', # 20C0..20CF ; Unknown
+ 'Zyyy', # 20A0..20C0 ; Common
+ 'Zzzz', # 20C1..20CF ; Unknown
'Zinh', # 20D0..20F0 ; Inherited
'Zzzz', # 20F1..20FF ; Unknown
'Zyyy', # 2100..2125 ; Common
@@ -2246,10 +2292,7 @@ VALUES = [
'Zyyy', # 2B76..2B95 ; Common
'Zzzz', # 2B96..2B96 ; Unknown
'Zyyy', # 2B97..2BFF ; Common
- 'Glag', # 2C00..2C2E ; Glagolitic
- 'Zzzz', # 2C2F..2C2F ; Unknown
- 'Glag', # 2C30..2C5E ; Glagolitic
- 'Zzzz', # 2C5F..2C5F ; Unknown
+ 'Glag', # 2C00..2C5F ; Glagolitic
'Latn', # 2C60..2C7F ; Latin
'Copt', # 2C80..2CF3 ; Coptic
'Zzzz', # 2CF4..2CF8 ; Unknown
@@ -2284,8 +2327,8 @@ VALUES = [
'Ethi', # 2DD8..2DDE ; Ethiopic
'Zzzz', # 2DDF..2DDF ; Unknown
'Cyrl', # 2DE0..2DFF ; Cyrillic
- 'Zyyy', # 2E00..2E52 ; Common
- 'Zzzz', # 2E53..2E7F ; Unknown
+ 'Zyyy', # 2E00..2E5D ; Common
+ 'Zzzz', # 2E5E..2E7F ; Unknown
'Hani', # 2E80..2E99 ; Han
'Zzzz', # 2E9A..2E9A ; Unknown
'Hani', # 2E9B..2EF3 ; Han
@@ -2336,8 +2379,7 @@ VALUES = [
'Zyyy', # 3358..33FF ; Common
'Hani', # 3400..4DBF ; Han
'Zyyy', # 4DC0..4DFF ; Common
- 'Hani', # 4E00..9FFC ; Han
- 'Zzzz', # 9FFD..9FFF ; Unknown
+ 'Hani', # 4E00..9FFF ; Han
'Yiii', # A000..A48C ; Yi
'Zzzz', # A48D..A48F ; Unknown
'Yiii', # A490..A4C6 ; Yi
@@ -2351,11 +2393,15 @@ VALUES = [
'Zyyy', # A700..A721 ; Common
'Latn', # A722..A787 ; Latin
'Zyyy', # A788..A78A ; Common
- 'Latn', # A78B..A7BF ; Latin
- 'Zzzz', # A7C0..A7C1 ; Unknown
- 'Latn', # A7C2..A7CA ; Latin
- 'Zzzz', # A7CB..A7F4 ; Unknown
- 'Latn', # A7F5..A7FF ; Latin
+ 'Latn', # A78B..A7CA ; Latin
+ 'Zzzz', # A7CB..A7CF ; Unknown
+ 'Latn', # A7D0..A7D1 ; Latin
+ 'Zzzz', # A7D2..A7D2 ; Unknown
+ 'Latn', # A7D3..A7D3 ; Latin
+ 'Zzzz', # A7D4..A7D4 ; Unknown
+ 'Latn', # A7D5..A7D9 ; Latin
+ 'Zzzz', # A7DA..A7F1 ; Unknown
+ 'Latn', # A7F2..A7FF ; Latin
'Sylo', # A800..A82C ; Syloti_Nagri
'Zzzz', # A82D..A82F ; Unknown
'Zyyy', # A830..A839 ; Common
@@ -2443,17 +2489,17 @@ VALUES = [
'Hebr', # FB43..FB44 ; Hebrew
'Zzzz', # FB45..FB45 ; Unknown
'Hebr', # FB46..FB4F ; Hebrew
- 'Arab', # FB50..FBC1 ; Arabic
- 'Zzzz', # FBC2..FBD2 ; Unknown
+ 'Arab', # FB50..FBC2 ; Arabic
+ 'Zzzz', # FBC3..FBD2 ; Unknown
'Arab', # FBD3..FD3D ; Arabic
'Zyyy', # FD3E..FD3F ; Common
- 'Zzzz', # FD40..FD4F ; Unknown
- 'Arab', # FD50..FD8F ; Arabic
+ 'Arab', # FD40..FD8F ; Arabic
'Zzzz', # FD90..FD91 ; Unknown
'Arab', # FD92..FDC7 ; Arabic
- 'Zzzz', # FDC8..FDEF ; Unknown
- 'Arab', # FDF0..FDFD ; Arabic
- 'Zzzz', # FDFE..FDFF ; Unknown
+ 'Zzzz', # FDC8..FDCE ; Unknown
+ 'Arab', # FDCF..FDCF ; Arabic
+ 'Zzzz', # FDD0..FDEF ; Unknown
+ 'Arab', # FDF0..FDFF ; Arabic
'Zinh', # FE00..FE0F ; Inherited
'Zyyy', # FE10..FE19 ; Common
'Zzzz', # FE1A..FE1F ; Unknown
@@ -2560,13 +2606,34 @@ VALUES = [
'Aghb', # 10530..10563 ; Caucasian_Albanian
'Zzzz', # 10564..1056E ; Unknown
'Aghb', # 1056F..1056F ; Caucasian_Albanian
- 'Zzzz', # 10570..105FF ; Unknown
+ 'Vith', # 10570..1057A ; Vithkuqi
+ 'Zzzz', # 1057B..1057B ; Unknown
+ 'Vith', # 1057C..1058A ; Vithkuqi
+ 'Zzzz', # 1058B..1058B ; Unknown
+ 'Vith', # 1058C..10592 ; Vithkuqi
+ 'Zzzz', # 10593..10593 ; Unknown
+ 'Vith', # 10594..10595 ; Vithkuqi
+ 'Zzzz', # 10596..10596 ; Unknown
+ 'Vith', # 10597..105A1 ; Vithkuqi
+ 'Zzzz', # 105A2..105A2 ; Unknown
+ 'Vith', # 105A3..105B1 ; Vithkuqi
+ 'Zzzz', # 105B2..105B2 ; Unknown
+ 'Vith', # 105B3..105B9 ; Vithkuqi
+ 'Zzzz', # 105BA..105BA ; Unknown
+ 'Vith', # 105BB..105BC ; Vithkuqi
+ 'Zzzz', # 105BD..105FF ; Unknown
'Lina', # 10600..10736 ; Linear_A
'Zzzz', # 10737..1073F ; Unknown
'Lina', # 10740..10755 ; Linear_A
'Zzzz', # 10756..1075F ; Unknown
'Lina', # 10760..10767 ; Linear_A
- 'Zzzz', # 10768..107FF ; Unknown
+ 'Zzzz', # 10768..1077F ; Unknown
+ 'Latn', # 10780..10785 ; Latin
+ 'Zzzz', # 10786..10786 ; Unknown
+ 'Latn', # 10787..107B0 ; Latin
+ 'Zzzz', # 107B1..107B1 ; Unknown
+ 'Latn', # 107B2..107BA ; Latin
+ 'Zzzz', # 107BB..107FF ; Unknown
'Cprt', # 10800..10805 ; Cypriot
'Zzzz', # 10806..10807 ; Unknown
'Cprt', # 10808..10808 ; Cypriot
@@ -2664,18 +2731,20 @@ VALUES = [
'Sogo', # 10F00..10F27 ; Old_Sogdian
'Zzzz', # 10F28..10F2F ; Unknown
'Sogd', # 10F30..10F59 ; Sogdian
- 'Zzzz', # 10F5A..10FAF ; Unknown
+ 'Zzzz', # 10F5A..10F6F ; Unknown
+ 'Ougr', # 10F70..10F89 ; Old_Uyghur
+ 'Zzzz', # 10F8A..10FAF ; Unknown
'Chrs', # 10FB0..10FCB ; Chorasmian
'Zzzz', # 10FCC..10FDF ; Unknown
'Elym', # 10FE0..10FF6 ; Elymaic
'Zzzz', # 10FF7..10FFF ; Unknown
'Brah', # 11000..1104D ; Brahmi
'Zzzz', # 1104E..11051 ; Unknown
- 'Brah', # 11052..1106F ; Brahmi
- 'Zzzz', # 11070..1107E ; Unknown
+ 'Brah', # 11052..11075 ; Brahmi
+ 'Zzzz', # 11076..1107E ; Unknown
'Brah', # 1107F..1107F ; Brahmi
- 'Kthi', # 11080..110C1 ; Kaithi
- 'Zzzz', # 110C2..110CC ; Unknown
+ 'Kthi', # 11080..110C2 ; Kaithi
+ 'Zzzz', # 110C3..110CC ; Unknown
'Kthi', # 110CD..110CD ; Kaithi
'Zzzz', # 110CE..110CF ; Unknown
'Sora', # 110D0..110E8 ; Sora_Sompeng
@@ -2759,16 +2828,16 @@ VALUES = [
'Zzzz', # 1165A..1165F ; Unknown
'Mong', # 11660..1166C ; Mongolian
'Zzzz', # 1166D..1167F ; Unknown
- 'Takr', # 11680..116B8 ; Takri
- 'Zzzz', # 116B9..116BF ; Unknown
+ 'Takr', # 11680..116B9 ; Takri
+ 'Zzzz', # 116BA..116BF ; Unknown
'Takr', # 116C0..116C9 ; Takri
'Zzzz', # 116CA..116FF ; Unknown
'Ahom', # 11700..1171A ; Ahom
'Zzzz', # 1171B..1171C ; Unknown
'Ahom', # 1171D..1172B ; Ahom
'Zzzz', # 1172C..1172F ; Unknown
- 'Ahom', # 11730..1173F ; Ahom
- 'Zzzz', # 11740..117FF ; Unknown
+ 'Ahom', # 11730..11746 ; Ahom
+ 'Zzzz', # 11747..117FF ; Unknown
'Dogr', # 11800..1183B ; Dogra
'Zzzz', # 1183C..1189F ; Unknown
'Wara', # 118A0..118F2 ; Warang_Citi
@@ -2799,7 +2868,8 @@ VALUES = [
'Zanb', # 11A00..11A47 ; Zanabazar_Square
'Zzzz', # 11A48..11A4F ; Unknown
'Soyo', # 11A50..11AA2 ; Soyombo
- 'Zzzz', # 11AA3..11ABF ; Unknown
+ 'Zzzz', # 11AA3..11AAF ; Unknown
+ 'Cans', # 11AB0..11ABF ; Canadian_Aboriginal
'Pauc', # 11AC0..11AF8 ; Pau_Cin_Hau
'Zzzz', # 11AF9..11BFF ; Unknown
'Bhks', # 11C00..11C08 ; Bhaiksuki
@@ -2856,7 +2926,9 @@ VALUES = [
'Xsux', # 12470..12474 ; Cuneiform
'Zzzz', # 12475..1247F ; Unknown
'Xsux', # 12480..12543 ; Cuneiform
- 'Zzzz', # 12544..12FFF ; Unknown
+ 'Zzzz', # 12544..12F8F ; Unknown
+ 'Cpmn', # 12F90..12FF2 ; Cypro_Minoan
+ 'Zzzz', # 12FF3..12FFF ; Unknown
'Egyp', # 13000..1342E ; Egyptian_Hieroglyphs
'Zzzz', # 1342F..1342F ; Unknown
'Egyp', # 13430..13438 ; Egyptian_Hieroglyphs
@@ -2870,7 +2942,10 @@ VALUES = [
'Mroo', # 16A60..16A69 ; Mro
'Zzzz', # 16A6A..16A6D ; Unknown
'Mroo', # 16A6E..16A6F ; Mro
- 'Zzzz', # 16A70..16ACF ; Unknown
+ 'Tnsa', # 16A70..16ABE ; Tangsa
+ 'Zzzz', # 16ABF..16ABF ; Unknown
+ 'Tnsa', # 16AC0..16AC9 ; Tangsa
+ 'Zzzz', # 16ACA..16ACF ; Unknown
'Bass', # 16AD0..16AED ; Bassa_Vah
'Zzzz', # 16AEE..16AEF ; Unknown
'Bass', # 16AF0..16AF5 ; Bassa_Vah
@@ -2895,7 +2970,7 @@ VALUES = [
'Zzzz', # 16FA0..16FDF ; Unknown
'Tang', # 16FE0..16FE0 ; Tangut
'Nshu', # 16FE1..16FE1 ; Nushu
- 'Zyyy', # 16FE2..16FE3 ; Common
+ 'Hani', # 16FE2..16FE3 ; Han
'Kits', # 16FE4..16FE4 ; Khitan_Small_Script
'Zzzz', # 16FE5..16FEF ; Unknown
'Hani', # 16FF0..16FF1 ; Han
@@ -2906,10 +2981,17 @@ VALUES = [
'Kits', # 18B00..18CD5 ; Khitan_Small_Script
'Zzzz', # 18CD6..18CFF ; Unknown
'Tang', # 18D00..18D08 ; Tangut
- 'Zzzz', # 18D09..1AFFF ; Unknown
+ 'Zzzz', # 18D09..1AFEF ; Unknown
+ 'Kana', # 1AFF0..1AFF3 ; Katakana
+ 'Zzzz', # 1AFF4..1AFF4 ; Unknown
+ 'Kana', # 1AFF5..1AFFB ; Katakana
+ 'Zzzz', # 1AFFC..1AFFC ; Unknown
+ 'Kana', # 1AFFD..1AFFE ; Katakana
+ 'Zzzz', # 1AFFF..1AFFF ; Unknown
'Kana', # 1B000..1B000 ; Katakana
- 'Hira', # 1B001..1B11E ; Hiragana
- 'Zzzz', # 1B11F..1B14F ; Unknown
+ 'Hira', # 1B001..1B11F ; Hiragana
+ 'Kana', # 1B120..1B122 ; Katakana
+ 'Zzzz', # 1B123..1B14F ; Unknown
'Hira', # 1B150..1B152 ; Hiragana
'Zzzz', # 1B153..1B163 ; Unknown
'Kana', # 1B164..1B167 ; Katakana
@@ -2926,7 +3008,13 @@ VALUES = [
'Zzzz', # 1BC9A..1BC9B ; Unknown
'Dupl', # 1BC9C..1BC9F ; Duployan
'Zyyy', # 1BCA0..1BCA3 ; Common
- 'Zzzz', # 1BCA4..1CFFF ; Unknown
+ 'Zzzz', # 1BCA4..1CEFF ; Unknown
+ 'Zinh', # 1CF00..1CF2D ; Inherited
+ 'Zzzz', # 1CF2E..1CF2F ; Unknown
+ 'Zinh', # 1CF30..1CF46 ; Inherited
+ 'Zzzz', # 1CF47..1CF4F ; Unknown
+ 'Zyyy', # 1CF50..1CFC3 ; Common
+ 'Zzzz', # 1CFC4..1CFFF ; Unknown
'Zyyy', # 1D000..1D0F5 ; Common
'Zzzz', # 1D0F6..1D0FF ; Unknown
'Zyyy', # 1D100..1D126 ; Common
@@ -2939,8 +3027,8 @@ VALUES = [
'Zinh', # 1D185..1D18B ; Inherited
'Zyyy', # 1D18C..1D1A9 ; Common
'Zinh', # 1D1AA..1D1AD ; Inherited
- 'Zyyy', # 1D1AE..1D1E8 ; Common
- 'Zzzz', # 1D1E9..1D1FF ; Unknown
+ 'Zyyy', # 1D1AE..1D1EA ; Common
+ 'Zzzz', # 1D1EB..1D1FF ; Unknown
'Grek', # 1D200..1D245 ; Greek
'Zzzz', # 1D246..1D2DF ; Unknown
'Zyyy', # 1D2E0..1D2F3 ; Common
@@ -2995,7 +3083,9 @@ VALUES = [
'Sgnw', # 1DA9B..1DA9F ; SignWriting
'Zzzz', # 1DAA0..1DAA0 ; Unknown
'Sgnw', # 1DAA1..1DAAF ; SignWriting
- 'Zzzz', # 1DAB0..1DFFF ; Unknown
+ 'Zzzz', # 1DAB0..1DEFF ; Unknown
+ 'Latn', # 1DF00..1DF1E ; Latin
+ 'Zzzz', # 1DF1F..1DFFF ; Unknown
'Glag', # 1E000..1E006 ; Glagolitic
'Zzzz', # 1E007..1E007 ; Unknown
'Glag', # 1E008..1E018 ; Glagolitic
@@ -3013,11 +3103,21 @@ VALUES = [
'Hmnp', # 1E140..1E149 ; Nyiakeng_Puachue_Hmong
'Zzzz', # 1E14A..1E14D ; Unknown
'Hmnp', # 1E14E..1E14F ; Nyiakeng_Puachue_Hmong
- 'Zzzz', # 1E150..1E2BF ; Unknown
+ 'Zzzz', # 1E150..1E28F ; Unknown
+ 'Toto', # 1E290..1E2AE ; Toto
+ 'Zzzz', # 1E2AF..1E2BF ; Unknown
'Wcho', # 1E2C0..1E2F9 ; Wancho
'Zzzz', # 1E2FA..1E2FE ; Unknown
'Wcho', # 1E2FF..1E2FF ; Wancho
- 'Zzzz', # 1E300..1E7FF ; Unknown
+ 'Zzzz', # 1E300..1E7DF ; Unknown
+ 'Ethi', # 1E7E0..1E7E6 ; Ethiopic
+ 'Zzzz', # 1E7E7..1E7E7 ; Unknown
+ 'Ethi', # 1E7E8..1E7EB ; Ethiopic
+ 'Zzzz', # 1E7EC..1E7EC ; Unknown
+ 'Ethi', # 1E7ED..1E7EE ; Ethiopic
+ 'Zzzz', # 1E7EF..1E7EF ; Unknown
+ 'Ethi', # 1E7F0..1E7FE ; Ethiopic
+ 'Zzzz', # 1E7FF..1E7FF ; Unknown
'Mend', # 1E800..1E8C4 ; Mende_Kikakui
'Zzzz', # 1E8C5..1E8C6 ; Unknown
'Mend', # 1E8C7..1E8D6 ; Mende_Kikakui
@@ -3127,8 +3227,8 @@ VALUES = [
'Zyyy', # 1F260..1F265 ; Common
'Zzzz', # 1F266..1F2FF ; Unknown
'Zyyy', # 1F300..1F6D7 ; Common
- 'Zzzz', # 1F6D8..1F6DF ; Unknown
- 'Zyyy', # 1F6E0..1F6EC ; Common
+ 'Zzzz', # 1F6D8..1F6DC ; Unknown
+ 'Zyyy', # 1F6DD..1F6EC ; Common
'Zzzz', # 1F6ED..1F6EF ; Unknown
'Zyyy', # 1F6F0..1F6FC ; Common
'Zzzz', # 1F6FD..1F6FF ; Unknown
@@ -3137,7 +3237,9 @@ VALUES = [
'Zyyy', # 1F780..1F7D8 ; Common
'Zzzz', # 1F7D9..1F7DF ; Unknown
'Zyyy', # 1F7E0..1F7EB ; Common
- 'Zzzz', # 1F7EC..1F7FF ; Unknown
+ 'Zzzz', # 1F7EC..1F7EF ; Unknown
+ 'Zyyy', # 1F7F0..1F7F0 ; Common
+ 'Zzzz', # 1F7F1..1F7FF ; Unknown
'Zyyy', # 1F800..1F80B ; Common
'Zzzz', # 1F80C..1F80F ; Unknown
'Zyyy', # 1F810..1F847 ; Common
@@ -3150,38 +3252,38 @@ VALUES = [
'Zzzz', # 1F8AE..1F8AF ; Unknown
'Zyyy', # 1F8B0..1F8B1 ; Common
'Zzzz', # 1F8B2..1F8FF ; Unknown
- 'Zyyy', # 1F900..1F978 ; Common
- 'Zzzz', # 1F979..1F979 ; Unknown
- 'Zyyy', # 1F97A..1F9CB ; Common
- 'Zzzz', # 1F9CC..1F9CC ; Unknown
- 'Zyyy', # 1F9CD..1FA53 ; Common
+ 'Zyyy', # 1F900..1FA53 ; Common
'Zzzz', # 1FA54..1FA5F ; Unknown
'Zyyy', # 1FA60..1FA6D ; Common
'Zzzz', # 1FA6E..1FA6F ; Unknown
'Zyyy', # 1FA70..1FA74 ; Common
'Zzzz', # 1FA75..1FA77 ; Unknown
- 'Zyyy', # 1FA78..1FA7A ; Common
- 'Zzzz', # 1FA7B..1FA7F ; Unknown
+ 'Zyyy', # 1FA78..1FA7C ; Common
+ 'Zzzz', # 1FA7D..1FA7F ; Unknown
'Zyyy', # 1FA80..1FA86 ; Common
'Zzzz', # 1FA87..1FA8F ; Unknown
- 'Zyyy', # 1FA90..1FAA8 ; Common
- 'Zzzz', # 1FAA9..1FAAF ; Unknown
- 'Zyyy', # 1FAB0..1FAB6 ; Common
- 'Zzzz', # 1FAB7..1FABF ; Unknown
- 'Zyyy', # 1FAC0..1FAC2 ; Common
- 'Zzzz', # 1FAC3..1FACF ; Unknown
- 'Zyyy', # 1FAD0..1FAD6 ; Common
- 'Zzzz', # 1FAD7..1FAFF ; Unknown
+ 'Zyyy', # 1FA90..1FAAC ; Common
+ 'Zzzz', # 1FAAD..1FAAF ; Unknown
+ 'Zyyy', # 1FAB0..1FABA ; Common
+ 'Zzzz', # 1FABB..1FABF ; Unknown
+ 'Zyyy', # 1FAC0..1FAC5 ; Common
+ 'Zzzz', # 1FAC6..1FACF ; Unknown
+ 'Zyyy', # 1FAD0..1FAD9 ; Common
+ 'Zzzz', # 1FADA..1FADF ; Unknown
+ 'Zyyy', # 1FAE0..1FAE7 ; Common
+ 'Zzzz', # 1FAE8..1FAEF ; Unknown
+ 'Zyyy', # 1FAF0..1FAF6 ; Common
+ 'Zzzz', # 1FAF7..1FAFF ; Unknown
'Zyyy', # 1FB00..1FB92 ; Common
'Zzzz', # 1FB93..1FB93 ; Unknown
'Zyyy', # 1FB94..1FBCA ; Common
'Zzzz', # 1FBCB..1FBEF ; Unknown
'Zyyy', # 1FBF0..1FBF9 ; Common
'Zzzz', # 1FBFA..1FFFF ; Unknown
- 'Hani', # 20000..2A6DD ; Han
- 'Zzzz', # 2A6DE..2A6FF ; Unknown
- 'Hani', # 2A700..2B734 ; Han
- 'Zzzz', # 2B735..2B73F ; Unknown
+ 'Hani', # 20000..2A6DF ; Han
+ 'Zzzz', # 2A6E0..2A6FF ; Unknown
+ 'Hani', # 2A700..2B738 ; Han
+ 'Zzzz', # 2B739..2B73F ; Unknown
'Hani', # 2B740..2B81D ; Han
'Zzzz', # 2B81E..2B81F ; Unknown
'Hani', # 2B820..2CEA1 ; Han
@@ -3226,6 +3328,7 @@ NAMES = {
'Cher': 'Cherokee',
'Chrs': 'Chorasmian',
'Copt': 'Coptic',
+ 'Cpmn': 'Cypro_Minoan',
'Cprt': 'Cypriot',
'Cyrl': 'Cyrillic',
'Deva': 'Devanagari',
@@ -3305,6 +3408,7 @@ NAMES = {
'Orya': 'Oriya',
'Osge': 'Osage',
'Osma': 'Osmanya',
+ 'Ougr': 'Old_Uyghur',
'Palm': 'Palmyrene',
'Pauc': 'Pau_Cin_Hau',
'Perm': 'Old_Permic',
@@ -3347,8 +3451,11 @@ NAMES = {
'Thai': 'Thai',
'Tibt': 'Tibetan',
'Tirh': 'Tirhuta',
+ 'Tnsa': 'Tangsa',
+ 'Toto': 'Toto',
'Ugar': 'Ugaritic',
'Vaii': 'Vai',
+ 'Vith': 'Vithkuqi',
'Wara': 'Warang_Citi',
'Wcho': 'Wancho',
'Xpeo': 'Old_Persian',
diff --git a/Lib/fontTools/unicodedata/__init__.py b/Lib/fontTools/unicodedata/__init__.py
index 8845b829..4546ef3f 100644
--- a/Lib/fontTools/unicodedata/__init__.py
+++ b/Lib/fontTools/unicodedata/__init__.py
@@ -1,11 +1,11 @@
-from fontTools.misc.py23 import byteord, tostr
+from fontTools.misc.textTools import byteord, tostr
import re
from bisect import bisect_right
try:
# use unicodedata backport compatible with python2:
- # https://github.com/mikekap/unicodedata2
+ # https://github.com/fonttools/unicodedata2
from unicodedata2 import *
except ImportError: # pragma: no cover
# fall back to built-in unicodedata (possibly outdated)
@@ -73,7 +73,7 @@ def script_extension(char):
>>> script_extension("a") == {'Latn'}
True
- >>> script_extension(chr(0x060C)) == {'Rohg', 'Syrc', 'Yezi', 'Arab', 'Thaa'}
+ >>> script_extension(chr(0x060C)) == {'Rohg', 'Syrc', 'Yezi', 'Arab', 'Thaa', 'Nkoo'}
True
>>> script_extension(chr(0x10FFFF)) == {'Zzzz'}
True
@@ -134,8 +134,10 @@ def script_code(script_name, default=KeyError):
return default
-# The data on script direction is taken from CLDR 37:
-# https://github.com/unicode-org/cldr/blob/release-37/common/properties/scriptMetadata.txt
+# The data on script direction is taken from Harfbuzz source code:
+# https://github.com/harfbuzz/harfbuzz/blob/3.2.0/src/hb-common.cc#L514-L613
+# This in turn references the following "Script_Metadata" document:
+# https://docs.google.com/spreadsheets/d/1Y90M0Ie3MUJ6UVCRDOypOtijlMDLNNyyLk36T6iMu0o
RTL_SCRIPTS = {
# Unicode-1.1 additions
'Arab', # Arabic
@@ -200,6 +202,9 @@ RTL_SCRIPTS = {
# Unicode-13.0 additions
'Chrs', # Chorasmian
'Yezi', # Yezidi
+
+ # Unicode-14.0 additions
+ 'Ougr', # Old Uyghur
}
def script_horizontal_direction(script_code, default=KeyError):
@@ -259,6 +264,9 @@ def ot_tag_to_script(tag):
if not tag or " " in tag or len(tag) > 4:
raise ValueError("invalid OpenType tag: %r" % tag)
+ if tag in OTTags.SCRIPT_ALIASES:
+ tag = OTTags.SCRIPT_ALIASES[tag]
+
while len(tag) != 4:
tag += str(" ") # pad with spaces
diff --git a/Lib/fontTools/varLib/__init__.py b/Lib/fontTools/varLib/__init__.py
index 36ff0d97..15c2e700 100644
--- a/Lib/fontTools/varLib/__init__.py
+++ b/Lib/fontTools/varLib/__init__.py
@@ -18,9 +18,9 @@ Then you can make a variable-font this way:
API *will* change in near future.
"""
-from fontTools.misc.py23 import Tag, tostr
-from fontTools.misc.roundTools import noRound, otRound
from fontTools.misc.vector import Vector
+from fontTools.misc.roundTools import noRound, otRound
+from fontTools.misc.textTools import Tag, tostr
from fontTools.ttLib import TTFont, newTable
from fontTools.ttLib.tables._f_v_a_r import Axis, NamedInstance
from fontTools.ttLib.tables._g_l_y_f import GlyphCoordinates
@@ -212,6 +212,7 @@ def _add_stat(font, axes):
axes = [dict(tag=a.axisTag, name=a.axisNameID) for a in fvarTable.axes]
buildStatTable(font, axes)
+_MasterData = namedtuple('_MasterData', ['glyf', 'hMetrics', 'vMetrics'])
def _add_gvar(font, masterModel, master_ttfs, tolerance=0.5, optimize=True):
if tolerance < 0:
@@ -223,15 +224,18 @@ def _add_gvar(font, masterModel, master_ttfs, tolerance=0.5, optimize=True):
glyf = font['glyf']
defaultMasterIndex = masterModel.reverseMapping[0]
- # use hhea.ascent of base master as default vertical origin when vmtx is missing
- baseAscent = font['hhea'].ascent
- for glyph in font.getGlyphOrder():
+ master_datas = [_MasterData(m['glyf'],
+ m['hmtx'].metrics,
+ getattr(m.get('vmtx'), 'metrics', None))
+ for m in master_ttfs]
+ for glyph in font.getGlyphOrder():
+ log.debug("building gvar for glyph '%s'", glyph)
isComposite = glyf[glyph].isComposite()
allData = [
- m["glyf"].getCoordinatesAndControls(glyph, m, defaultVerticalOrigin=baseAscent)
- for m in master_ttfs
+ m.glyf._getCoordinatesAndControls(glyph, m.hMetrics, m.vMetrics)
+ for m in master_datas
]
if allData[defaultMasterIndex][1].numberOfContours != 0:
@@ -284,9 +288,9 @@ def _add_gvar(font, masterModel, master_ttfs, tolerance=0.5, optimize=True):
var_opt = TupleVariation(support, delta_opt)
axis_tags = sorted(support.keys()) # Shouldn't matter that this is different from fvar...?
- tupleData, auxData, _ = var.compile(axis_tags, [], None)
+ tupleData, auxData = var.compile(axis_tags)
unoptimized_len = len(tupleData) + len(auxData)
- tupleData, auxData, _ = var_opt.compile(axis_tags, [], None)
+ tupleData, auxData = var_opt.compile(axis_tags)
optimized_len = len(tupleData) + len(auxData)
if optimized_len < unoptimized_len:
@@ -299,9 +303,10 @@ def _remove_TTHinting(font):
for tag in ("cvar", "cvt ", "fpgm", "prep"):
if tag in font:
del font[tag]
+ maxp = font['maxp']
for attr in ("maxTwilightPoints", "maxStorage", "maxFunctionDefs", "maxInstructionDefs", "maxStackElements", "maxSizeOfInstructions"):
- setattr(font["maxp"], attr, 0)
- font["maxp"].maxZones = 1
+ setattr(maxp, attr, 0)
+ maxp.maxZones = 1
font["glyf"].removeHinting()
# TODO: Modify gasp table to deactivate gridfitting for all ranges?
@@ -316,12 +321,9 @@ def _merge_TTHinting(font, masterModel, master_ttfs):
for tag in ("fpgm", "prep"):
all_pgms = [m[tag].program for m in master_ttfs if tag in m]
- if len(all_pgms) == 0:
+ if not all_pgms:
continue
- if tag in font:
- font_pgm = font[tag].program
- else:
- font_pgm = Program()
+ font_pgm = getattr(font.get(tag), 'program', None)
if any(pgm != font_pgm for pgm in all_pgms):
log.warning("Masters have incompatible %s tables, hinting is discarded." % tag)
_remove_TTHinting(font)
@@ -329,19 +331,17 @@ def _merge_TTHinting(font, masterModel, master_ttfs):
# glyf table
- for name, glyph in font["glyf"].glyphs.items():
+ font_glyf = font['glyf']
+ master_glyfs = [m['glyf'] for m in master_ttfs]
+ for name, glyph in font_glyf.glyphs.items():
all_pgms = [
- m["glyf"][name].program
- for m in master_ttfs
- if name in m['glyf'] and hasattr(m["glyf"][name], "program")
+ getattr(glyf.get(name), 'program', None)
+ for glyf in master_glyfs
]
if not any(all_pgms):
continue
- glyph.expand(font["glyf"])
- if hasattr(glyph, "program"):
- font_pgm = glyph.program
- else:
- font_pgm = Program()
+ glyph.expand(font_glyf)
+ font_pgm = getattr(glyph, 'program', None)
if any(pgm != font_pgm for pgm in all_pgms if pgm):
log.warning("Masters have incompatible glyph programs in glyph '%s', hinting is discarded." % name)
# TODO Only drop hinting from this glyph.
diff --git a/Lib/fontTools/varLib/builder.py b/Lib/fontTools/varLib/builder.py
index 152336b0..60d7172e 100644
--- a/Lib/fontTools/varLib/builder.py
+++ b/Lib/fontTools/varLib/builder.py
@@ -26,39 +26,54 @@ def buildVarRegionList(supports, axisTags):
return self
-def _reorderItem(lst, narrows, zeroes):
- out = []
- count = len(lst)
- for i in range(count):
- if i not in narrows:
- out.append(lst[i])
- for i in range(count):
- if i in narrows and i not in zeroes:
- out.append(lst[i])
- return out
+def _reorderItem(lst, mapping):
+ return [lst[i] for i in mapping]
def VarData_calculateNumShorts(self, optimize=False):
count = self.VarRegionCount
items = self.Item
- narrows = set(range(count))
- zeroes = set(range(count))
+ bit_lengths = [0] * count
for item in items:
- wides = [i for i in narrows if not (-128 <= item[i] <= 127)]
- narrows.difference_update(wides)
- nonzeroes = [i for i in zeroes if item[i]]
- zeroes.difference_update(nonzeroes)
- if not narrows and not zeroes:
- break
+ # The "+ (i < -1)" magic is to handle two's-compliment.
+ # That is, we want to get back 7 for -128, whereas
+ # bit_length() returns 8. Similarly for -65536.
+ # The reason "i < -1" is used instead of "i < 0" is that
+ # the latter would make it return 0 for "-1" instead of 1.
+ bl = [(i + (i < -1)).bit_length() for i in item]
+ bit_lengths = [max(*pair) for pair in zip(bl, bit_lengths)]
+ # The addition of 8, instead of seven, is to account for the sign bit.
+ # This "((b + 8) >> 3) if b else 0" when combined with the above
+ # "(i + (i < -1)).bit_length()" is a faster way to compute byte-lengths
+ # conforming to:
+ #
+ # byte_length = (0 if i == 0 else
+ # 1 if -128 <= i < 128 else
+ # 2 if -65536 <= i < 65536 else
+ # ...)
+ byte_lengths = [((b + 8) >> 3) if b else 0 for b in bit_lengths]
+
+ # https://github.com/fonttools/fonttools/issues/2279
+ longWords = any(b > 2 for b in byte_lengths)
+
if optimize:
- # Reorder columns such that all SHORT columns come before UINT8
- self.VarRegionIndex = _reorderItem(self.VarRegionIndex, narrows, zeroes)
+ # Reorder columns such that wider columns come before narrower columns
+ mapping = []
+ mapping.extend(i for i,b in enumerate(byte_lengths) if b > 2)
+ mapping.extend(i for i,b in enumerate(byte_lengths) if b == 2)
+ mapping.extend(i for i,b in enumerate(byte_lengths) if b == 1)
+
+ byte_lengths = _reorderItem(byte_lengths, mapping)
+ self.VarRegionIndex = _reorderItem(self.VarRegionIndex, mapping)
self.VarRegionCount = len(self.VarRegionIndex)
for i in range(len(items)):
- items[i] = _reorderItem(items[i], narrows, zeroes)
- self.NumShorts = count - len(narrows)
+ items[i] = _reorderItem(items[i], mapping)
+
+ if longWords:
+ self.NumShorts = max((i for i,b in enumerate(byte_lengths) if b > 2), default=-1) + 1
+ self.NumShorts |= 0x8000
else:
- wides = set(range(count)) - narrows
- self.NumShorts = 1+max(wides) if wides else 0
+ self.NumShorts = max((i for i,b in enumerate(byte_lengths) if b > 1), default=-1) + 1
+
self.VarRegionCount = len(self.VarRegionIndex)
return self
@@ -106,6 +121,14 @@ def buildVarIdxMap(varIdxes, glyphOrder):
self.mapping = {g:v for g,v in zip(glyphOrder, varIdxes)}
return self
+
+def buildDeltaSetIndexMap(varIdxes):
+ self = ot.DeltaSetIndexMap()
+ self.mapping = list(varIdxes)
+ self.Format = 1 if len(varIdxes) > 0xFFFF else 0
+ return self
+
+
def buildVarDevTable(varIdx):
self = ot.Device()
self.DeltaFormat = 0x8000
diff --git a/Lib/fontTools/varLib/cff.py b/Lib/fontTools/varLib/cff.py
index 4eed8b33..08ddfc41 100644
--- a/Lib/fontTools/varLib/cff.py
+++ b/Lib/fontTools/varLib/cff.py
@@ -163,15 +163,17 @@ def merge_PrivateDicts(top_dicts, vsindex_dict, var_model, fd_map):
"""
I step through the FontDicts in the FDArray of the varfont TopDict.
For each varfont FontDict:
- step through each key in FontDict.Private.
- For each key, step through each relevant source font Private dict, and
+
+ * step through each key in FontDict.Private.
+ * For each key, step through each relevant source font Private dict, and
build a list of values to blend.
+
The 'relevant' source fonts are selected by first getting the right
- submodel using vsindex_dict[vsindex]. The indices of the
- subModel.locations are mapped to source font list indices by
+ submodel using ``vsindex_dict[vsindex]``. The indices of the
+ ``subModel.locations`` are mapped to source font list indices by
assuming the latter order is the same as the order of the
- var_model.locations. I can then get the index of each subModel
- location in the list of var_model.locations.
+ ``var_model.locations``. I can then get the index of each subModel
+ location in the list of ``var_model.locations``.
"""
topDict = top_dicts[0]
@@ -591,19 +593,24 @@ class CFF2CharStringMergePen(T2CharStringPen):
def reorder_blend_args(self, commands, get_delta_func):
"""
We first re-order the master coordinate values.
- For a moveto to lineto, the args are now arranged as:
+ For a moveto to lineto, the args are now arranged as::
+
[ [master_0 x,y], [master_1 x,y], [master_2 x,y] ]
- We re-arrange this to
- [ [master_0 x, master_1 x, master_2 x],
- [master_0 y, master_1 y, master_2 y]
- ]
+
+ We re-arrange this to::
+
+ [ [master_0 x, master_1 x, master_2 x],
+ [master_0 y, master_1 y, master_2 y]
+ ]
+
If the master values are all the same, we collapse the list to
as single value instead of a list.
- We then convert this to:
- [ [master_0 x] + [x delta tuple] + [numBlends=1]
- [master_0 y] + [y delta tuple] + [numBlends=1]
- ]
+ We then convert this to::
+
+ [ [master_0 x] + [x delta tuple] + [numBlends=1]
+ [master_0 y] + [y delta tuple] + [numBlends=1]
+ ]
"""
for cmd in commands:
# arg[i] is the set of arguments for this operator from master i.
diff --git a/Lib/fontTools/varLib/errors.py b/Lib/fontTools/varLib/errors.py
index 5840070f..c5a149cb 100644
--- a/Lib/fontTools/varLib/errors.py
+++ b/Lib/fontTools/varLib/errors.py
@@ -12,7 +12,7 @@ class VarLibValidationError(VarLibError):
class VarLibMergeError(VarLibError):
"""Raised when input data cannot be merged into a variable font."""
- def __init__(self, merger, **kwargs):
+ def __init__(self, merger=None, **kwargs):
self.merger = merger
if not kwargs:
kwargs = {}
@@ -28,17 +28,17 @@ class VarLibMergeError(VarLibError):
return self.__doc__
def _master_name(self, ix):
- ttf = self.merger.ttfs[ix]
- if (
- "name" in ttf
- and ttf["name"].getDebugName(1)
- and ttf["name"].getDebugName(2)
- ):
- return ttf["name"].getDebugName(1) + " " + ttf["name"].getDebugName(2)
- elif hasattr(ttf.reader, "file") and hasattr(ttf.reader.file, "name"):
- return ttf.reader.file.name
- else:
- return "master number %i" % ix
+ if self.merger is not None:
+ ttf = self.merger.ttfs[ix]
+ if (
+ "name" in ttf
+ and ttf["name"].getDebugName(1)
+ and ttf["name"].getDebugName(2)
+ ):
+ return ttf["name"].getDebugName(1) + " " + ttf["name"].getDebugName(2)
+ elif hasattr(ttf.reader, "file") and hasattr(ttf.reader.file, "name"):
+ return ttf.reader.file.name
+ return f"master number {ix}"
@property
def offender(self):
@@ -76,7 +76,7 @@ class ShouldBeConstant(VarLibMergeError):
@property
def details(self):
- if self.stack[0] != ".FeatureCount":
+ if self.stack[0] != ".FeatureCount" or self.merger is None:
return super().details
offender_index, offender = self.offender
bad_ttf = self.merger.ttfs[offender_index]
@@ -102,13 +102,12 @@ class FoundANone(VarLibMergeError):
@property
def offender(self):
- cause = self.argv[0]
- index = [x is None for x in cause["got"]].index(True)
+ index = [x is None for x in self.cause["got"]].index(True)
return index, self._master_name(index)
@property
def details(self):
- cause, stack = self.args[0], self.args[1:]
+ cause, stack = self.cause, self.stack
return f"{stack[0]}=={cause['got']}\n"
@@ -137,8 +136,7 @@ class UnsupportedFormat(VarLibMergeError):
@property
def reason(self):
- cause, stack = self.args[0], self.args[1:]
- return self.__doc__ % cause["subtable"]
+ return self.__doc__ % self.cause["subtable"]
class UnsupportedFormat(UnsupportedFormat):
diff --git a/Lib/fontTools/varLib/featureVars.py b/Lib/fontTools/varLib/featureVars.py
index 45f3d839..e3366327 100644
--- a/Lib/fontTools/varLib/featureVars.py
+++ b/Lib/fontTools/varLib/featureVars.py
@@ -44,8 +44,26 @@ def addFeatureVariations(font, conditionalSubstitutions, featureTag='rvrn'):
# >>> f.save(dstPath)
"""
- addFeatureVariationsRaw(font,
- overlayFeatureVariations(conditionalSubstitutions),
+
+ substitutions = overlayFeatureVariations(conditionalSubstitutions)
+
+ # turn substitution dicts into tuples of tuples, so they are hashable
+ conditionalSubstitutions, allSubstitutions = makeSubstitutionsHashable(substitutions)
+ if "GSUB" not in font:
+ font["GSUB"] = buildGSUB()
+
+ # setup lookups
+ lookupMap = buildSubstitutionLookups(font["GSUB"].table, allSubstitutions)
+
+ # addFeatureVariationsRaw takes a list of
+ # ( {condition}, [ lookup indices ] )
+ # so rearrange our lookups to match
+ conditionsAndLookups = []
+ for conditionSet, substitutions in conditionalSubstitutions:
+ conditionsAndLookups.append((conditionSet, [lookupMap[s] for s in substitutions]))
+
+ addFeatureVariationsRaw(font, font["GSUB"].table,
+ conditionsAndLookups,
featureTag)
def overlayFeatureVariations(conditionalSubstitutions):
@@ -76,20 +94,22 @@ def overlayFeatureVariations(conditionalSubstitutions):
substitution dictionaries. These dictionaries are not merged to allow data
sharing when they are converted into font tables.
- Example:
- >>> condSubst = [
- ... # A list of (Region, Substitution) tuples.
- ... ([{"wght": (0.5, 1.0)}], {"dollar": "dollar.rvrn"}),
- ... ([{"wght": (0.5, 1.0)}], {"dollar": "dollar.rvrn"}),
- ... ([{"wdth": (0.5, 1.0)}], {"cent": "cent.rvrn"}),
- ... ([{"wght": (0.5, 1.0), "wdth": (-1, 1.0)}], {"dollar": "dollar.rvrn"}),
- ... ]
- >>> from pprint import pprint
- >>> pprint(overlayFeatureVariations(condSubst))
- [({'wdth': (0.5, 1.0), 'wght': (0.5, 1.0)},
- [{'dollar': 'dollar.rvrn'}, {'cent': 'cent.rvrn'}]),
- ({'wdth': (0.5, 1.0)}, [{'cent': 'cent.rvrn'}]),
- ({'wght': (0.5, 1.0)}, [{'dollar': 'dollar.rvrn'}])]
+ Example::
+
+ >>> condSubst = [
+ ... # A list of (Region, Substitution) tuples.
+ ... ([{"wght": (0.5, 1.0)}], {"dollar": "dollar.rvrn"}),
+ ... ([{"wght": (0.5, 1.0)}], {"dollar": "dollar.rvrn"}),
+ ... ([{"wdth": (0.5, 1.0)}], {"cent": "cent.rvrn"}),
+ ... ([{"wght": (0.5, 1.0), "wdth": (-1, 1.0)}], {"dollar": "dollar.rvrn"}),
+ ... ]
+ >>> from pprint import pprint
+ >>> pprint(overlayFeatureVariations(condSubst))
+ [({'wdth': (0.5, 1.0), 'wght': (0.5, 1.0)},
+ [{'dollar': 'dollar.rvrn'}, {'cent': 'cent.rvrn'}]),
+ ({'wdth': (0.5, 1.0)}, [{'cent': 'cent.rvrn'}]),
+ ({'wght': (0.5, 1.0)}, [{'dollar': 'dollar.rvrn'}])]
+
"""
# Merge same-substitutions rules, as this creates fewer number oflookups.
@@ -166,11 +186,12 @@ def overlayFeatureVariations(conditionalSubstitutions):
#
def overlayBox(top, bot):
- """Overlays `top` box on top of `bot` box.
+ """Overlays ``top`` box on top of ``bot`` box.
Returns two items:
- - Box for intersection of `top` and `bot`, or None if they don't intersect.
- - Box for remainder of `bot`. Remainder box might not be exact (since the
+
+ * Box for intersection of ``top`` and ``bot``, or None if they don't intersect.
+ * Box for remainder of ``bot``. Remainder box might not be exact (since the
remainder might not be a simple box), but is inclusive of the exact
remainder.
"""
@@ -261,7 +282,7 @@ def cleanupBox(box):
# Low level implementation
#
-def addFeatureVariationsRaw(font, conditionalSubstitutions, featureTag='rvrn'):
+def addFeatureVariationsRaw(font, table, conditionalSubstitutions, featureTag='rvrn'):
"""Low level implementation of addFeatureVariations that directly
models the possibilities of the FeatureVariations table."""
@@ -273,31 +294,25 @@ def addFeatureVariationsRaw(font, conditionalSubstitutions, featureTag='rvrn'):
# make lookups
# add feature variations
#
+ if table.Version < 0x00010001:
+ table.Version = 0x00010001 # allow table.FeatureVariations
- if "GSUB" not in font:
- font["GSUB"] = buildGSUB()
-
- gsub = font["GSUB"].table
-
- if gsub.Version < 0x00010001:
- gsub.Version = 0x00010001 # allow gsub.FeatureVariations
-
- gsub.FeatureVariations = None # delete any existing FeatureVariations
+ table.FeatureVariations = None # delete any existing FeatureVariations
varFeatureIndices = []
- for index, feature in enumerate(gsub.FeatureList.FeatureRecord):
+ for index, feature in enumerate(table.FeatureList.FeatureRecord):
if feature.FeatureTag == featureTag:
varFeatureIndices.append(index)
if not varFeatureIndices:
varFeature = buildFeatureRecord(featureTag, [])
- gsub.FeatureList.FeatureRecord.append(varFeature)
- gsub.FeatureList.FeatureCount = len(gsub.FeatureList.FeatureRecord)
+ table.FeatureList.FeatureRecord.append(varFeature)
+ table.FeatureList.FeatureCount = len(table.FeatureList.FeatureRecord)
- sortFeatureList(gsub)
- varFeatureIndex = gsub.FeatureList.FeatureRecord.index(varFeature)
+ sortFeatureList(table)
+ varFeatureIndex = table.FeatureList.FeatureRecord.index(varFeature)
- for scriptRecord in gsub.ScriptList.ScriptRecord:
+ for scriptRecord in table.ScriptList.ScriptRecord:
if scriptRecord.Script.DefaultLangSys is None:
raise VarLibError(
"Feature variations require that the script "
@@ -309,17 +324,10 @@ def addFeatureVariationsRaw(font, conditionalSubstitutions, featureTag='rvrn'):
varFeatureIndices = [varFeatureIndex]
- # setup lookups
-
- # turn substitution dicts into tuples of tuples, so they are hashable
- conditionalSubstitutions, allSubstitutions = makeSubstitutionsHashable(conditionalSubstitutions)
-
- lookupMap = buildSubstitutionLookups(gsub, allSubstitutions)
-
axisIndices = {axis.axisTag: axisIndex for axisIndex, axis in enumerate(font["fvar"].axes)}
featureVariationRecords = []
- for conditionSet, substitutions in conditionalSubstitutions:
+ for conditionSet, lookupIndices in conditionalSubstitutions:
conditionTable = []
for axisTag, (minValue, maxValue) in sorted(conditionSet.items()):
if minValue > maxValue:
@@ -328,15 +336,13 @@ def addFeatureVariationsRaw(font, conditionalSubstitutions, featureTag='rvrn'):
)
ct = buildConditionTable(axisIndices[axisTag], minValue, maxValue)
conditionTable.append(ct)
-
- lookupIndices = [lookupMap[subst] for subst in substitutions]
records = []
for varFeatureIndex in varFeatureIndices:
- existingLookupIndices = gsub.FeatureList.FeatureRecord[varFeatureIndex].Feature.LookupListIndex
+ existingLookupIndices = table.FeatureList.FeatureRecord[varFeatureIndex].Feature.LookupListIndex
records.append(buildFeatureTableSubstitutionRecord(varFeatureIndex, existingLookupIndices + lookupIndices))
featureVariationRecords.append(buildFeatureVariationRecord(conditionTable, records))
- gsub.FeatureVariations = buildFeatureVariations(featureVariationRecords)
+ table.FeatureVariations = buildFeatureVariations(featureVariationRecords)
#
@@ -413,6 +419,7 @@ def buildFeatureVariations(featureVariationRecords):
fv = ot.FeatureVariations()
fv.Version = 0x00010000
fv.FeatureVariationRecord = featureVariationRecords
+ fv.FeatureVariationCount = len(featureVariationRecords)
return fv
@@ -431,9 +438,11 @@ def buildFeatureVariationRecord(conditionTable, substitutionRecords):
fvr = ot.FeatureVariationRecord()
fvr.ConditionSet = ot.ConditionSet()
fvr.ConditionSet.ConditionTable = conditionTable
+ fvr.ConditionSet.ConditionCount = len(conditionTable)
fvr.FeatureTableSubstitution = ot.FeatureTableSubstitution()
fvr.FeatureTableSubstitution.Version = 0x00010000
fvr.FeatureTableSubstitution.SubstitutionRecord = substitutionRecords
+ fvr.FeatureTableSubstitution.SubstitutionCount = len(substitutionRecords)
return fvr
@@ -443,6 +452,7 @@ def buildFeatureTableSubstitutionRecord(featureIndex, lookupListIndices):
ftsr.FeatureIndex = featureIndex
ftsr.Feature = ot.Feature()
ftsr.Feature.LookupListIndex = lookupListIndices
+ ftsr.Feature.LookupCount = len(lookupListIndices)
return ftsr
diff --git a/Lib/fontTools/varLib/instancer/__init__.py b/Lib/fontTools/varLib/instancer/__init__.py
index 9bd30f19..cec802f3 100644
--- a/Lib/fontTools/varLib/instancer/__init__.py
+++ b/Lib/fontTools/varLib/instancer/__init__.py
@@ -5,9 +5,9 @@ create full instances (i.e. static fonts) from variable fonts, as well as "parti
variable fonts that only contain a subset of the original variation space.
For example, if you wish to pin the width axis to a given location while also
-restricting the weight axis to 400..700 range, you can do:
+restricting the weight axis to 400..700 range, you can do::
-$ fonttools varLib.instancer ./NotoSans-VF.ttf wdth=85 wght=400:700
+ $ fonttools varLib.instancer ./NotoSans-VF.ttf wdth=85 wght=400:700
See `fonttools varLib.instancer --help` for more info on the CLI options.
@@ -17,7 +17,7 @@ and returns a new TTFont representing either a partial VF, or full instance if a
the VF axes were given an explicit coordinate.
E.g. here's how to pin the wght axis at a given location in a wght+wdth variable
-font, keeping only the deltas associated with the wdth axis:
+font, keeping only the deltas associated with the wdth axis::
| >>> from fontTools import ttLib
| >>> from fontTools.varLib import instancer
@@ -53,12 +53,17 @@ whereas mutator implicitly drops the axis at its default coordinate.
The module currently supports only the first three "levels" of partial instancing,
with the rest planned to be implemented in the future, namely:
-L1) dropping one or more axes while leaving the default tables unmodified;
-L2) dropping one or more axes while pinning them at non-default locations;
-L3) restricting the range of variation of one or more axes, by setting either
+
+L1
+ dropping one or more axes while leaving the default tables unmodified;
+L2
+ dropping one or more axes while pinning them at non-default locations;
+L3
+ restricting the range of variation of one or more axes, by setting either
a new minimum or maximum, potentially -- though not necessarily -- dropping
entire regions of variations that fall completely outside this new range.
-L4) moving the default location of an axis.
+L4
+ moving the default location of an axis.
Currently only TrueType-flavored variable fonts (i.e. containing 'glyf' table)
are supported, but support for CFF2 variable fonts will be added soon.
@@ -127,6 +132,7 @@ class OverlapMode(IntEnum):
KEEP_AND_DONT_SET_FLAGS = 0
KEEP_AND_SET_FLAGS = 1
REMOVE = 2
+ REMOVE_AND_IGNORE_ERRORS = 3
def instantiateTupleVariationStore(
@@ -156,7 +162,7 @@ def instantiateTupleVariationStore(
axisLimits: Dict[str, Union[float, NormalizedAxisRange]]: axes' coordinates for
the full or partial instance, or ranges for restricting an axis' min/max.
origCoords: GlyphCoordinates: default instance's coordinates for computing 'gvar'
- inferred points (cf. table__g_l_y_f.getCoordinatesAndControls).
+ inferred points (cf. table__g_l_y_f._getCoordinatesAndControls).
endPts: List[int]: indices of contour end points, for inferring 'gvar' deltas.
Returns:
@@ -323,14 +329,11 @@ def limitTupleVariationAxisRange(var, axisTag, axisRange):
return [var, newVar]
-def instantiateGvarGlyph(varfont, glyphname, axisLimits, optimize=True):
- glyf = varfont["glyf"]
- coordinates, ctrl = glyf.getCoordinatesAndControls(glyphname, varfont)
+def _instantiateGvarGlyph(glyphname, glyf, gvar, hMetrics, vMetrics, axisLimits, optimize=True):
+ coordinates, ctrl = glyf._getCoordinatesAndControls(glyphname, hMetrics, vMetrics)
endPts = ctrl.endPts
- gvar = varfont["gvar"]
- # when exporting to TTX, a glyph with no variations is omitted; thus when loading
- # a TTFont from TTX, a glyph that's present in glyf table may be missing from gvar.
+ # Not every glyph may have variations
tupleVarStore = gvar.variations.get(glyphname)
if tupleVarStore:
@@ -341,7 +344,7 @@ def instantiateGvarGlyph(varfont, glyphname, axisLimits, optimize=True):
if defaultDeltas:
coordinates += _g_l_y_f.GlyphCoordinates(defaultDeltas)
- # setCoordinates also sets the hmtx/vmtx advance widths and sidebearings from
+ # _setCoordinates also sets the hmtx/vmtx advance widths and sidebearings from
# the four phantom points and glyph bounding boxes.
# We call it unconditionally even if a glyph has no variations or no deltas are
# applied at this location, in case the glyph's xMin and in turn its sidebearing
@@ -350,7 +353,7 @@ def instantiateGvarGlyph(varfont, glyphname, axisLimits, optimize=True):
# gvar table is empty; however, the composite's base glyph may have deltas
# applied, hence the composite's bbox and left/top sidebearings may need updating
# in the instanced font.
- glyf.setCoordinates(glyphname, coordinates, varfont)
+ glyf._setCoordinates(glyphname, coordinates, hMetrics, vMetrics)
if not tupleVarStore:
if glyphname in gvar.variations:
@@ -362,12 +365,22 @@ def instantiateGvarGlyph(varfont, glyphname, axisLimits, optimize=True):
for var in tupleVarStore:
var.optimize(coordinates, endPts, isComposite)
+def instantiateGvarGlyph(varfont, glyphname, axisLimits, optimize=True):
+ """Remove?
+ https://github.com/fonttools/fonttools/pull/2266"""
+ gvar = varfont["gvar"]
+ glyf = varfont["glyf"]
+ hMetrics = varfont['hmtx'].metrics
+ vMetrics = getattr(varfont.get('vmtx'), 'metrics', None)
+ _instantiateGvarGlyph(glyphname, glyf, gvar, hMetrics, vMetrics, axisLimits, optimize=optimize)
def instantiateGvar(varfont, axisLimits, optimize=True):
log.info("Instantiating glyf/gvar tables")
gvar = varfont["gvar"]
glyf = varfont["glyf"]
+ hMetrics = varfont['hmtx'].metrics
+ vMetrics = getattr(varfont.get('vmtx'), 'metrics', None)
# Get list of glyph names sorted by component depth.
# If a composite glyph is processed before its base glyph, the bounds may
# be calculated incorrectly because deltas haven't been applied to the
@@ -382,7 +395,7 @@ def instantiateGvar(varfont, axisLimits, optimize=True):
),
)
for glyphname in glyphnames:
- instantiateGvarGlyph(varfont, glyphname, axisLimits, optimize=optimize)
+ _instantiateGvarGlyph(glyphname, glyf, gvar, hMetrics, vMetrics, axisLimits, optimize=optimize)
if not gvar.variations:
del varfont["gvar"]
@@ -1163,7 +1176,8 @@ def instantiateVariableFont(
If the value is `None`, the default coordinate as per 'fvar' table for
that axis is used.
The limit values can also be (min, max) tuples for restricting an
- axis's variation range, but this is not implemented yet.
+ axis's variation range. The default axis value must be included in
+ the new range.
inplace (bool): whether to modify input TTFont object in-place instead of
returning a distinct object.
optimize (bool): if False, do not perform IUP-delta optimization on the
@@ -1177,7 +1191,8 @@ def instantiateVariableFont(
on all glyphs to maximise cross-compatibility of the generated instance.
You can disable this by passing OverlapMode.KEEP_AND_DONT_SET_FLAGS.
If you want to remove the overlaps altogether and merge overlapping
- contours and components, you can pass OverlapMode.REMOVE. Note that this
+ contours and components, you can pass OverlapMode.REMOVE (or
+ REMOVE_AND_IGNORE_ERRORS to not hard-fail on tricky glyphs). Note that this
requires the skia-pathops package (available to pip install).
The overlap parameter only has effect when generating full static instances.
updateFontNames (bool): if True, update the instantiated font's name table using
@@ -1236,11 +1251,14 @@ def instantiateVariableFont(
if "glyf" in varfont:
if overlap == OverlapMode.KEEP_AND_SET_FLAGS:
setMacOverlapFlags(varfont["glyf"])
- elif overlap == OverlapMode.REMOVE:
+ elif overlap in (OverlapMode.REMOVE, OverlapMode.REMOVE_AND_IGNORE_ERRORS):
from fontTools.ttLib.removeOverlaps import removeOverlaps
log.info("Removing overlaps from glyf table")
- removeOverlaps(varfont)
+ removeOverlaps(
+ varfont,
+ ignoreErrors=(overlap == OverlapMode.REMOVE_AND_IGNORE_ERRORS),
+ )
varLib.set_default_weight_width_slant(
varfont,
@@ -1348,6 +1366,12 @@ def parseArgs(args):
"when generating a full instance). Requires skia-pathops",
)
parser.add_argument(
+ "--ignore-overlap-errors",
+ dest="ignore_overlap_errors",
+ action="store_true",
+ help="Don't crash if the remove-overlaps operation fails for some glyphs.",
+ )
+ parser.add_argument(
"--update-name-table",
action="store_true",
help="Update the instantiated font's `name` table. Input font must have "
@@ -1363,7 +1387,10 @@ def parseArgs(args):
options = parser.parse_args(args)
if options.remove_overlaps:
- options.overlap = OverlapMode.REMOVE
+ if options.ignore_overlap_errors:
+ options.overlap = OverlapMode.REMOVE_AND_IGNORE_ERRORS
+ else:
+ options.overlap = OverlapMode.REMOVE
else:
options.overlap = OverlapMode(int(options.overlap))
diff --git a/Lib/fontTools/varLib/merger.py b/Lib/fontTools/varLib/merger.py
index c9d14381..5a3a4f34 100644
--- a/Lib/fontTools/varLib/merger.py
+++ b/Lib/fontTools/varLib/merger.py
@@ -1,8 +1,10 @@
"""
Merge OpenType Layout tables (GDEF / GPOS / GSUB).
"""
+import os
import copy
from operator import ior
+import logging
from fontTools.misc import classifyTools
from fontTools.misc.roundTools import otRound
from fontTools.ttLib.tables import otTables as ot
@@ -13,6 +15,13 @@ from fontTools.varLib.models import nonNone, allNone, allEqual, allEqualTo
from fontTools.varLib.varStore import VarStoreInstancer
from functools import reduce
from fontTools.otlLib.builder import buildSinglePos
+from fontTools.otlLib.optimize.gpos import (
+ compact_pair_pos,
+ GPOS_COMPACT_MODE_DEFAULT,
+ GPOS_COMPACT_MODE_ENV_KEY,
+)
+
+log = logging.getLogger("fontTools.varLib.merger")
from .errors import (
ShouldBeConstant,
@@ -143,7 +152,7 @@ class AligningMerger(Merger):
def merge(merger, self, lst):
if self is None:
if not allNone(lst):
- raise NotANone(self, expected=None, got=lst)
+ raise NotANone(merger, expected=None, got=lst)
return
lst = [l.classDefs for l in lst]
@@ -156,7 +165,7 @@ def merge(merger, self, lst):
for k in allKeys:
allValues = nonNone(l.get(k) for l in lst)
if not allEqual(allValues):
- raise ShouldBeConstant(self, expected=allValues[0], got=lst, stack="."+k)
+ raise ShouldBeConstant(merger, expected=allValues[0], got=lst, stack=["." + k])
if not allValues:
self[k] = None
else:
@@ -193,7 +202,7 @@ def _merge_GlyphOrders(font, lst, values_lst=None, default=None):
order = sorted(combined, key=sortKey)
# Make sure all input glyphsets were in proper order
if not all(sorted(vs, key=sortKey) == vs for vs in lst):
- raise InconsistentGlyphOrder(self)
+ raise InconsistentGlyphOrder()
del combined
paddedValues = None
@@ -208,7 +217,7 @@ def _merge_GlyphOrders(font, lst, values_lst=None, default=None):
for dict_set in dict_sets]
return order, padded
-def _Lookup_SinglePos_get_effective_value(subtables, glyph):
+def _Lookup_SinglePos_get_effective_value(merger, subtables, glyph):
for self in subtables:
if self is None or \
type(self) != ot.SinglePos or \
@@ -220,10 +229,10 @@ def _Lookup_SinglePos_get_effective_value(subtables, glyph):
elif self.Format == 2:
return self.Value[self.Coverage.glyphs.index(glyph)]
else:
- raise UnsupportedFormat(self, subtable="single positioning lookup")
+ raise UnsupportedFormat(merger, subtable="single positioning lookup")
return None
-def _Lookup_PairPos_get_effective_value_pair(subtables, firstGlyph, secondGlyph):
+def _Lookup_PairPos_get_effective_value_pair(merger, subtables, firstGlyph, secondGlyph):
for self in subtables:
if self is None or \
type(self) != ot.PairPos or \
@@ -242,20 +251,21 @@ def _Lookup_PairPos_get_effective_value_pair(subtables, firstGlyph, secondGlyph)
klass2 = self.ClassDef2.classDefs.get(secondGlyph, 0)
return self.Class1Record[klass1].Class2Record[klass2]
else:
- raise UnsupportedFormat(self, subtable="pair positioning lookup")
+ raise UnsupportedFormat(merger, subtable="pair positioning lookup")
return None
@AligningMerger.merger(ot.SinglePos)
def merge(merger, self, lst):
self.ValueFormat = valueFormat = reduce(int.__or__, [l.ValueFormat for l in lst], 0)
if not (len(lst) == 1 or (valueFormat & ~0xF == 0)):
- raise UnsupportedFormat(self, subtable="single positioning lookup")
+ raise UnsupportedFormat(merger, subtable="single positioning lookup")
# If all have same coverage table and all are format 1,
coverageGlyphs = self.Coverage.glyphs
if all(v.Format == 1 for v in lst) and all(coverageGlyphs == v.Coverage.glyphs for v in lst):
- self.Value = otBase.ValueRecord(valueFormat)
- merger.mergeThings(self.Value, [v.Value for v in lst])
+ self.Value = otBase.ValueRecord(valueFormat, self.Value)
+ if valueFormat != 0:
+ merger.mergeThings(self.Value, [v.Value for v in lst])
self.ValueFormat = self.Value.getFormat()
return
@@ -279,7 +289,7 @@ def merge(merger, self, lst):
# Note!!! This *might* result in behavior change if ValueFormat2-zeroedness
# is different between used subtable and current subtable!
# TODO(behdad) Check and warn if that happens?
- v = _Lookup_SinglePos_get_effective_value(merger.lookup_subtables[i], glyph)
+ v = _Lookup_SinglePos_get_effective_value(merger, merger.lookup_subtables[i], glyph)
if v is None:
v = otBase.ValueRecord(valueFormat)
values[j] = v
@@ -288,8 +298,8 @@ def merge(merger, self, lst):
# Merge everything else; though, there shouldn't be anything else. :)
merger.mergeObjects(self, lst,
- exclude=('Format', 'Coverage', 'Value', 'ValueCount'))
- self.ValueFormat = reduce(int.__or__, [v.getFormat() for v in self.Value], 0)
+ exclude=('Format', 'Coverage', 'Value', 'ValueCount', 'ValueFormat'))
+ self.ValueFormat = reduce(int.__or__, [v.getEffectiveFormat() for v in self.Value], 0)
@AligningMerger.merger(ot.PairSet)
def merge(merger, self, lst):
@@ -315,7 +325,9 @@ def merge(merger, self, lst):
if values[j] is not None:
vpair = values[j]
else:
- vpair = _Lookup_PairPos_get_effective_value_pair(merger.lookup_subtables[i], self._firstGlyph, glyph)
+ vpair = _Lookup_PairPos_get_effective_value_pair(
+ merger, merger.lookup_subtables[i], self._firstGlyph, glyph
+ )
if vpair is None:
v1, v2 = None, None
else:
@@ -518,7 +530,7 @@ def merge(merger, self, lst):
elif self.Format == 2:
_PairPosFormat2_merge(self, lst, merger)
else:
- raise UnsupportedFormat(self, subtable="pair positioning lookup")
+ raise UnsupportedFormat(merger, subtable="pair positioning lookup")
del merger.valueFormat1, merger.valueFormat2
@@ -584,8 +596,7 @@ def _MarkBasePosFormat1_merge(self, lst, merger, Mark='Mark', Base='Base'):
# input masters.
if not allEqual(allClasses):
- raise allClasses(self, allClasses)
- rec = None
+ raise ShouldBeConstant(merger, expected=allClasses[0], got=allClasses)
else:
rec = ot.MarkRecord()
rec.Class = allClasses[0]
@@ -633,7 +644,8 @@ def _MarkBasePosFormat1_merge(self, lst, merger, Mark='Mark', Base='Base'):
@AligningMerger.merger(ot.MarkBasePos)
def merge(merger, self, lst):
if not allEqualTo(self.Format, (l.Format for l in lst)):
- raise InconsistentFormats(self,
+ raise InconsistentFormats(
+ merger,
subtable="mark-to-base positioning lookup",
expected=self.Format,
got=[l.Format for l in lst]
@@ -641,12 +653,13 @@ def merge(merger, self, lst):
if self.Format == 1:
_MarkBasePosFormat1_merge(self, lst, merger)
else:
- raise UnsupportedFormat(self, subtable="mark-to-base positioning lookup")
+ raise UnsupportedFormat(merger, subtable="mark-to-base positioning lookup")
@AligningMerger.merger(ot.MarkMarkPos)
def merge(merger, self, lst):
if not allEqualTo(self.Format, (l.Format for l in lst)):
- raise InconsistentFormats(self,
+ raise InconsistentFormats(
+ merger,
subtable="mark-to-mark positioning lookup",
expected=self.Format,
got=[l.Format for l in lst]
@@ -654,7 +667,7 @@ def merge(merger, self, lst):
if self.Format == 1:
_MarkBasePosFormat1_merge(self, lst, merger, 'Mark1', 'Mark2')
else:
- raise UnsupportedFormat(self, subtable="mark-to-mark positioning lookup")
+ raise UnsupportedFormat(merger, subtable="mark-to-mark positioning lookup")
def _PairSet_flatten(lst, font):
self = ot.PairSet()
@@ -780,12 +793,13 @@ def merge(merger, self, lst):
continue
if sts[0].__class__.__name__.startswith('Extension'):
if not allEqual([st.__class__ for st in sts]):
- raise InconsistentExtensions(self,
+ raise InconsistentExtensions(
+ merger,
expected="Extension",
got=[st.__class__.__name__ for st in sts]
)
if not allEqual([st.ExtensionLookupType for st in sts]):
- raise InconsistentExtensions(self)
+ raise InconsistentExtensions(merger)
l.LookupType = sts[0].ExtensionLookupType
new_sts = [st.ExtSubTable for st in sts]
del sts[:]
@@ -833,6 +847,15 @@ def merge(merger, self, lst):
self.SubTable.pop(-1)
self.SubTableCount -= 1
+ # Compact the merged subtables
+ # This is a good moment to do it because the compaction should create
+ # smaller subtables, which may prevent overflows from happening.
+ mode = os.environ.get(GPOS_COMPACT_MODE_ENV_KEY, GPOS_COMPACT_MODE_DEFAULT)
+ if mode and mode != "0":
+ log.info("Compacting GPOS...")
+ self.SubTable = compact_pair_pos(merger.font, mode, self.SubTable)
+ self.SubTableCount = len(self.SubTable)
+
elif isSinglePos and flattened:
singlePosTable = self.SubTable[0]
glyphs = singlePosTable.Coverage.glyphs
@@ -847,7 +870,6 @@ def merge(merger, self, lst):
del merger.lookup_subtables
-
#
# InstancerMerger
#
@@ -989,7 +1011,7 @@ def merge(merger, self, lst):
varidx = (dev.StartSize << 16) + dev.EndSize
delta = otRound(instancer[varidx])
- setattr(self, name, getattr(self, name) + delta)
+ setattr(self, name, getattr(self, name, 0) + delta)
#
@@ -1035,7 +1057,7 @@ def buildVarDevTable(store_builder, master_values):
@VariationMerger.merger(ot.BaseCoord)
def merge(merger, self, lst):
if self.Format != 1:
- raise UnsupportedFormat(self, subtable="a baseline coordinate")
+ raise UnsupportedFormat(merger, subtable="a baseline coordinate")
self.Coordinate, DeviceTable = buildVarDevTable(merger.store_builder, [a.Coordinate for a in lst])
if DeviceTable:
self.Format = 3
@@ -1044,7 +1066,7 @@ def merge(merger, self, lst):
@VariationMerger.merger(ot.CaretValue)
def merge(merger, self, lst):
if self.Format != 1:
- raise UnsupportedFormat(self, subtable="a caret")
+ raise UnsupportedFormat(merger, subtable="a caret")
self.Coordinate, DeviceTable = buildVarDevTable(merger.store_builder, [a.Coordinate for a in lst])
if DeviceTable:
self.Format = 3
@@ -1053,7 +1075,7 @@ def merge(merger, self, lst):
@VariationMerger.merger(ot.Anchor)
def merge(merger, self, lst):
if self.Format != 1:
- raise UnsupportedFormat(self, subtable="an anchor")
+ raise UnsupportedFormat(merger, subtable="an anchor")
self.XCoordinate, XDeviceTable = buildVarDevTable(merger.store_builder, [a.XCoordinate for a in lst])
self.YCoordinate, YDeviceTable = buildVarDevTable(merger.store_builder, [a.YCoordinate for a in lst])
if XDeviceTable or YDeviceTable:
diff --git a/Lib/fontTools/varLib/models.py b/Lib/fontTools/varLib/models.py
index 9296deda..c548fbca 100644
--- a/Lib/fontTools/varLib/models.py
+++ b/Lib/fontTools/varLib/models.py
@@ -1,484 +1,530 @@
"""Variation fonts interpolation models."""
-__all__ = ['nonNone', 'allNone', 'allEqual', 'allEqualTo', 'subList',
- 'normalizeValue', 'normalizeLocation',
- 'supportScalar',
- 'VariationModel']
+__all__ = [
+ "nonNone",
+ "allNone",
+ "allEqual",
+ "allEqualTo",
+ "subList",
+ "normalizeValue",
+ "normalizeLocation",
+ "supportScalar",
+ "VariationModel",
+]
from fontTools.misc.roundTools import noRound
from .errors import VariationModelError
def nonNone(lst):
- return [l for l in lst if l is not None]
+ return [l for l in lst if l is not None]
+
def allNone(lst):
- return all(l is None for l in lst)
+ return all(l is None for l in lst)
+
def allEqualTo(ref, lst, mapper=None):
- if mapper is None:
- return all(ref == item for item in lst)
- else:
- mapped = mapper(ref)
- return all(mapped == mapper(item) for item in lst)
+ if mapper is None:
+ return all(ref == item for item in lst)
+
+ mapped = mapper(ref)
+ return all(mapped == mapper(item) for item in lst)
+
def allEqual(lst, mapper=None):
- if not lst:
- return True
- it = iter(lst)
- try:
- first = next(it)
- except StopIteration:
- return True
- return allEqualTo(first, it, mapper=mapper)
+ if not lst:
+ return True
+ it = iter(lst)
+ try:
+ first = next(it)
+ except StopIteration:
+ return True
+ return allEqualTo(first, it, mapper=mapper)
+
def subList(truth, lst):
- assert len(truth) == len(lst)
- return [l for l,t in zip(lst,truth) if t]
+ assert len(truth) == len(lst)
+ return [l for l, t in zip(lst, truth) if t]
+
def normalizeValue(v, triple):
- """Normalizes value based on a min/default/max triple.
- >>> normalizeValue(400, (100, 400, 900))
- 0.0
- >>> normalizeValue(100, (100, 400, 900))
- -1.0
- >>> normalizeValue(650, (100, 400, 900))
- 0.5
- """
- lower, default, upper = triple
- if not (lower <= default <= upper):
- raise ValueError(
- f"Invalid axis values, must be minimum, default, maximum: "
- f"{lower:3.3f}, {default:3.3f}, {upper:3.3f}"
- )
- v = max(min(v, upper), lower)
- if v == default:
- v = 0.
- elif v < default:
- v = (v - default) / (default - lower)
- else:
- v = (v - default) / (upper - default)
- return v
+ """Normalizes value based on a min/default/max triple.
+ >>> normalizeValue(400, (100, 400, 900))
+ 0.0
+ >>> normalizeValue(100, (100, 400, 900))
+ -1.0
+ >>> normalizeValue(650, (100, 400, 900))
+ 0.5
+ """
+ lower, default, upper = triple
+ if not (lower <= default <= upper):
+ raise ValueError(
+ f"Invalid axis values, must be minimum, default, maximum: "
+ f"{lower:3.3f}, {default:3.3f}, {upper:3.3f}"
+ )
+ v = max(min(v, upper), lower)
+ if v == default:
+ v = 0.0
+ elif v < default:
+ v = (v - default) / (default - lower)
+ else:
+ v = (v - default) / (upper - default)
+ return v
+
def normalizeLocation(location, axes):
- """Normalizes location based on axis min/default/max values from axes.
- >>> axes = {"wght": (100, 400, 900)}
- >>> normalizeLocation({"wght": 400}, axes)
- {'wght': 0.0}
- >>> normalizeLocation({"wght": 100}, axes)
- {'wght': -1.0}
- >>> normalizeLocation({"wght": 900}, axes)
- {'wght': 1.0}
- >>> normalizeLocation({"wght": 650}, axes)
- {'wght': 0.5}
- >>> normalizeLocation({"wght": 1000}, axes)
- {'wght': 1.0}
- >>> normalizeLocation({"wght": 0}, axes)
- {'wght': -1.0}
- >>> axes = {"wght": (0, 0, 1000)}
- >>> normalizeLocation({"wght": 0}, axes)
- {'wght': 0.0}
- >>> normalizeLocation({"wght": -1}, axes)
- {'wght': 0.0}
- >>> normalizeLocation({"wght": 1000}, axes)
- {'wght': 1.0}
- >>> normalizeLocation({"wght": 500}, axes)
- {'wght': 0.5}
- >>> normalizeLocation({"wght": 1001}, axes)
- {'wght': 1.0}
- >>> axes = {"wght": (0, 1000, 1000)}
- >>> normalizeLocation({"wght": 0}, axes)
- {'wght': -1.0}
- >>> normalizeLocation({"wght": -1}, axes)
- {'wght': -1.0}
- >>> normalizeLocation({"wght": 500}, axes)
- {'wght': -0.5}
- >>> normalizeLocation({"wght": 1000}, axes)
- {'wght': 0.0}
- >>> normalizeLocation({"wght": 1001}, axes)
- {'wght': 0.0}
- """
- out = {}
- for tag,triple in axes.items():
- v = location.get(tag, triple[1])
- out[tag] = normalizeValue(v, triple)
- return out
+ """Normalizes location based on axis min/default/max values from axes.
+ >>> axes = {"wght": (100, 400, 900)}
+ >>> normalizeLocation({"wght": 400}, axes)
+ {'wght': 0.0}
+ >>> normalizeLocation({"wght": 100}, axes)
+ {'wght': -1.0}
+ >>> normalizeLocation({"wght": 900}, axes)
+ {'wght': 1.0}
+ >>> normalizeLocation({"wght": 650}, axes)
+ {'wght': 0.5}
+ >>> normalizeLocation({"wght": 1000}, axes)
+ {'wght': 1.0}
+ >>> normalizeLocation({"wght": 0}, axes)
+ {'wght': -1.0}
+ >>> axes = {"wght": (0, 0, 1000)}
+ >>> normalizeLocation({"wght": 0}, axes)
+ {'wght': 0.0}
+ >>> normalizeLocation({"wght": -1}, axes)
+ {'wght': 0.0}
+ >>> normalizeLocation({"wght": 1000}, axes)
+ {'wght': 1.0}
+ >>> normalizeLocation({"wght": 500}, axes)
+ {'wght': 0.5}
+ >>> normalizeLocation({"wght": 1001}, axes)
+ {'wght': 1.0}
+ >>> axes = {"wght": (0, 1000, 1000)}
+ >>> normalizeLocation({"wght": 0}, axes)
+ {'wght': -1.0}
+ >>> normalizeLocation({"wght": -1}, axes)
+ {'wght': -1.0}
+ >>> normalizeLocation({"wght": 500}, axes)
+ {'wght': -0.5}
+ >>> normalizeLocation({"wght": 1000}, axes)
+ {'wght': 0.0}
+ >>> normalizeLocation({"wght": 1001}, axes)
+ {'wght': 0.0}
+ """
+ out = {}
+ for tag, triple in axes.items():
+ v = location.get(tag, triple[1])
+ out[tag] = normalizeValue(v, triple)
+ return out
+
def supportScalar(location, support, ot=True):
- """Returns the scalar multiplier at location, for a master
- with support. If ot is True, then a peak value of zero
- for support of an axis means "axis does not participate". That
- is how OpenType Variation Font technology works.
- >>> supportScalar({}, {})
- 1.0
- >>> supportScalar({'wght':.2}, {})
- 1.0
- >>> supportScalar({'wght':.2}, {'wght':(0,2,3)})
- 0.1
- >>> supportScalar({'wght':2.5}, {'wght':(0,2,4)})
- 0.75
- >>> supportScalar({'wght':2.5, 'wdth':0}, {'wght':(0,2,4), 'wdth':(-1,0,+1)})
- 0.75
- >>> supportScalar({'wght':2.5, 'wdth':.5}, {'wght':(0,2,4), 'wdth':(-1,0,+1)}, ot=False)
- 0.375
- >>> supportScalar({'wght':2.5, 'wdth':0}, {'wght':(0,2,4), 'wdth':(-1,0,+1)})
- 0.75
- >>> supportScalar({'wght':2.5, 'wdth':.5}, {'wght':(0,2,4), 'wdth':(-1,0,+1)})
- 0.75
- """
- scalar = 1.
- for axis,(lower,peak,upper) in support.items():
- if ot:
- # OpenType-specific case handling
- if peak == 0.:
- continue
- if lower > peak or peak > upper:
- continue
- if lower < 0. and upper > 0.:
- continue
- v = location.get(axis, 0.)
- else:
- assert axis in location
- v = location[axis]
- if v == peak:
- continue
- if v <= lower or upper <= v:
- scalar = 0.
- break
- if v < peak:
- scalar *= (v - lower) / (peak - lower)
- else: # v > peak
- scalar *= (v - upper) / (peak - upper)
- return scalar
+ """Returns the scalar multiplier at location, for a master
+ with support. If ot is True, then a peak value of zero
+ for support of an axis means "axis does not participate". That
+ is how OpenType Variation Font technology works.
+ >>> supportScalar({}, {})
+ 1.0
+ >>> supportScalar({'wght':.2}, {})
+ 1.0
+ >>> supportScalar({'wght':.2}, {'wght':(0,2,3)})
+ 0.1
+ >>> supportScalar({'wght':2.5}, {'wght':(0,2,4)})
+ 0.75
+ >>> supportScalar({'wght':2.5, 'wdth':0}, {'wght':(0,2,4), 'wdth':(-1,0,+1)})
+ 0.75
+ >>> supportScalar({'wght':2.5, 'wdth':.5}, {'wght':(0,2,4), 'wdth':(-1,0,+1)}, ot=False)
+ 0.375
+ >>> supportScalar({'wght':2.5, 'wdth':0}, {'wght':(0,2,4), 'wdth':(-1,0,+1)})
+ 0.75
+ >>> supportScalar({'wght':2.5, 'wdth':.5}, {'wght':(0,2,4), 'wdth':(-1,0,+1)})
+ 0.75
+ """
+ scalar = 1.0
+ for axis, (lower, peak, upper) in support.items():
+ if ot:
+ # OpenType-specific case handling
+ if peak == 0.0:
+ continue
+ if lower > peak or peak > upper:
+ continue
+ if lower < 0.0 and upper > 0.0:
+ continue
+ v = location.get(axis, 0.0)
+ else:
+ assert axis in location
+ v = location[axis]
+ if v == peak:
+ continue
+ if v <= lower or upper <= v:
+ scalar = 0.0
+ break
+ if v < peak:
+ scalar *= (v - lower) / (peak - lower)
+ else: # v > peak
+ scalar *= (v - upper) / (peak - upper)
+ return scalar
class VariationModel(object):
- """
- Locations must be in normalized space. Ie. base master
- is at origin (0).
- >>> from pprint import pprint
- >>> locations = [ \
- {'wght':100}, \
- {'wght':-100}, \
- {'wght':-180}, \
- {'wdth':+.3}, \
- {'wght':+120,'wdth':.3}, \
- {'wght':+120,'wdth':.2}, \
- {}, \
- {'wght':+180,'wdth':.3}, \
- {'wght':+180}, \
- ]
- >>> model = VariationModel(locations, axisOrder=['wght'])
- >>> pprint(model.locations)
- [{},
- {'wght': -100},
- {'wght': -180},
- {'wght': 100},
- {'wght': 180},
- {'wdth': 0.3},
- {'wdth': 0.3, 'wght': 180},
- {'wdth': 0.3, 'wght': 120},
- {'wdth': 0.2, 'wght': 120}]
- >>> pprint(model.deltaWeights)
- [{},
- {0: 1.0},
- {0: 1.0},
- {0: 1.0},
- {0: 1.0},
- {0: 1.0},
- {0: 1.0, 4: 1.0, 5: 1.0},
- {0: 1.0, 3: 0.75, 4: 0.25, 5: 1.0, 6: 0.6666666666666666},
- {0: 1.0,
- 3: 0.75,
- 4: 0.25,
- 5: 0.6666666666666667,
- 6: 0.4444444444444445,
- 7: 0.6666666666666667}]
+ """
+ Locations must be in normalized space. Ie. base master
+ is at origin (0)::
+
+ >>> from pprint import pprint
+ >>> locations = [ \
+ {'wght':100}, \
+ {'wght':-100}, \
+ {'wght':-180}, \
+ {'wdth':+.3}, \
+ {'wght':+120,'wdth':.3}, \
+ {'wght':+120,'wdth':.2}, \
+ {}, \
+ {'wght':+180,'wdth':.3}, \
+ {'wght':+180}, \
+ ]
+ >>> model = VariationModel(locations, axisOrder=['wght'])
+ >>> pprint(model.locations)
+ [{},
+ {'wght': -100},
+ {'wght': -180},
+ {'wght': 100},
+ {'wght': 180},
+ {'wdth': 0.3},
+ {'wdth': 0.3, 'wght': 180},
+ {'wdth': 0.3, 'wght': 120},
+ {'wdth': 0.2, 'wght': 120}]
+ >>> pprint(model.deltaWeights)
+ [{},
+ {0: 1.0},
+ {0: 1.0},
+ {0: 1.0},
+ {0: 1.0},
+ {0: 1.0},
+ {0: 1.0, 4: 1.0, 5: 1.0},
+ {0: 1.0, 3: 0.75, 4: 0.25, 5: 1.0, 6: 0.6666666666666666},
+ {0: 1.0,
+ 3: 0.75,
+ 4: 0.25,
+ 5: 0.6666666666666667,
+ 6: 0.4444444444444445,
+ 7: 0.6666666666666667}]
"""
- def __init__(self, locations, axisOrder=None):
- if len(set(tuple(sorted(l.items())) for l in locations)) != len(locations):
- raise VariationModelError("Locations must be unique.")
-
- self.origLocations = locations
- self.axisOrder = axisOrder if axisOrder is not None else []
-
- locations = [{k:v for k,v in loc.items() if v != 0.} for loc in locations]
- keyFunc = self.getMasterLocationsSortKeyFunc(locations, axisOrder=self.axisOrder)
- self.locations = sorted(locations, key=keyFunc)
-
- # Mapping from user's master order to our master order
- self.mapping = [self.locations.index(l) for l in locations]
- self.reverseMapping = [locations.index(l) for l in self.locations]
-
- self._computeMasterSupports(keyFunc.axisPoints)
- self._subModels = {}
-
- def getSubModel(self, items):
- if None not in items:
- return self, items
- key = tuple(v is not None for v in items)
- subModel = self._subModels.get(key)
- if subModel is None:
- subModel = VariationModel(subList(key, self.origLocations), self.axisOrder)
- self._subModels[key] = subModel
- return subModel, subList(key, items)
-
- @staticmethod
- def getMasterLocationsSortKeyFunc(locations, axisOrder=[]):
- if {} not in locations:
- raise VariationModelError("Base master not found.")
- axisPoints = {}
- for loc in locations:
- if len(loc) != 1:
- continue
- axis = next(iter(loc))
- value = loc[axis]
- if axis not in axisPoints:
- axisPoints[axis] = {0.}
- assert value not in axisPoints[axis], (
- 'Value "%s" in axisPoints["%s"] --> %s' % (value, axis, axisPoints)
- )
- axisPoints[axis].add(value)
-
- def getKey(axisPoints, axisOrder):
- def sign(v):
- return -1 if v < 0 else +1 if v > 0 else 0
- def key(loc):
- rank = len(loc)
- onPointAxes = [
- axis for axis, value in loc.items()
- if axis in axisPoints
- and value in axisPoints[axis]
- ]
- orderedAxes = [axis for axis in axisOrder if axis in loc]
- orderedAxes.extend([axis for axis in sorted(loc.keys()) if axis not in axisOrder])
- return (
- rank, # First, order by increasing rank
- -len(onPointAxes), # Next, by decreasing number of onPoint axes
- tuple(axisOrder.index(axis) if axis in axisOrder else 0x10000 for axis in orderedAxes), # Next, by known axes
- tuple(orderedAxes), # Next, by all axes
- tuple(sign(loc[axis]) for axis in orderedAxes), # Next, by signs of axis values
- tuple(abs(loc[axis]) for axis in orderedAxes), # Next, by absolute value of axis values
- )
- return key
-
- ret = getKey(axisPoints, axisOrder)
- ret.axisPoints = axisPoints
- return ret
-
- def reorderMasters(self, master_list, mapping):
- # For changing the master data order without
- # recomputing supports and deltaWeights.
- new_list = [master_list[idx] for idx in mapping]
- self.origLocations = [self.origLocations[idx] for idx in mapping]
- locations = [{k:v for k,v in loc.items() if v != 0.}
- for loc in self.origLocations]
- self.mapping = [self.locations.index(l) for l in locations]
- self.reverseMapping = [locations.index(l) for l in self.locations]
- self._subModels = {}
- return new_list
-
- def _computeMasterSupports(self, axisPoints):
- supports = []
- regions = self._locationsToRegions()
- for i,region in enumerate(regions):
- locAxes = set(region.keys())
- # Walk over previous masters now
- for j,prev_region in enumerate(regions[:i]):
- # Master with extra axes do not participte
- if not set(prev_region.keys()).issubset(locAxes):
- continue
- # If it's NOT in the current box, it does not participate
- relevant = True
- for axis, (lower,peak,upper) in region.items():
- if axis not in prev_region or not (prev_region[axis][1] == peak or lower < prev_region[axis][1] < upper):
- relevant = False
- break
- if not relevant:
- continue
-
- # Split the box for new master; split in whatever direction
- # that has largest range ratio.
- #
- # For symmetry, we actually cut across multiple axes
- # if they have the largest, equal, ratio.
- # https://github.com/fonttools/fonttools/commit/7ee81c8821671157968b097f3e55309a1faa511e#commitcomment-31054804
-
- bestAxes = {}
- bestRatio = -1
- for axis in prev_region.keys():
- val = prev_region[axis][1]
- assert axis in region
- lower,locV,upper = region[axis]
- newLower, newUpper = lower, upper
- if val < locV:
- newLower = val
- ratio = (val - locV) / (lower - locV)
- elif locV < val:
- newUpper = val
- ratio = (val - locV) / (upper - locV)
- else: # val == locV
- # Can't split box in this direction.
- continue
- if ratio > bestRatio:
- bestAxes = {}
- bestRatio = ratio
- if ratio == bestRatio:
- bestAxes[axis] = (newLower, locV, newUpper)
-
- for axis,triple in bestAxes.items ():
- region[axis] = triple
- supports.append(region)
- self.supports = supports
- self._computeDeltaWeights()
-
- def _locationsToRegions(self):
- locations = self.locations
- # Compute min/max across each axis, use it as total range.
- # TODO Take this as input from outside?
- minV = {}
- maxV = {}
- for l in locations:
- for k,v in l.items():
- minV[k] = min(v, minV.get(k, v))
- maxV[k] = max(v, maxV.get(k, v))
-
- regions = []
- for i,loc in enumerate(locations):
- region = {}
- for axis,locV in loc.items():
- if locV > 0:
- region[axis] = (0, locV, maxV[axis])
- else:
- region[axis] = (minV[axis], locV, 0)
- regions.append(region)
- return regions
-
- def _computeDeltaWeights(self):
- deltaWeights = []
- for i,loc in enumerate(self.locations):
- deltaWeight = {}
- # Walk over previous masters now, populate deltaWeight
- for j,m in enumerate(self.locations[:i]):
- scalar = supportScalar(loc, self.supports[j])
- if scalar:
- deltaWeight[j] = scalar
- deltaWeights.append(deltaWeight)
- self.deltaWeights = deltaWeights
-
- def getDeltas(self, masterValues, *, round=noRound):
- assert len(masterValues) == len(self.deltaWeights)
- mapping = self.reverseMapping
- out = []
- for i,weights in enumerate(self.deltaWeights):
- delta = masterValues[mapping[i]]
- for j,weight in weights.items():
- delta -= out[j] * weight
- out.append(round(delta))
- return out
-
- def getDeltasAndSupports(self, items, *, round=noRound):
- model, items = self.getSubModel(items)
- return model.getDeltas(items, round=round), model.supports
-
- def getScalars(self, loc):
- return [supportScalar(loc, support) for support in self.supports]
-
- @staticmethod
- def interpolateFromDeltasAndScalars(deltas, scalars):
- v = None
- assert len(deltas) == len(scalars)
- for delta, scalar in zip(deltas, scalars):
- if not scalar: continue
- contribution = delta * scalar
- if v is None:
- v = contribution
- else:
- v += contribution
- return v
-
- def interpolateFromDeltas(self, loc, deltas):
- scalars = self.getScalars(loc)
- return self.interpolateFromDeltasAndScalars(deltas, scalars)
-
- def interpolateFromMasters(self, loc, masterValues, *, round=noRound):
- deltas = self.getDeltas(masterValues, round=round)
- return self.interpolateFromDeltas(loc, deltas)
-
- def interpolateFromMastersAndScalars(self, masterValues, scalars, *, round=noRound):
- deltas = self.getDeltas(masterValues, round=round)
- return self.interpolateFromDeltasAndScalars(deltas, scalars)
+ def __init__(self, locations, axisOrder=None):
+ if len(set(tuple(sorted(l.items())) for l in locations)) != len(locations):
+ raise VariationModelError("Locations must be unique.")
+
+ self.origLocations = locations
+ self.axisOrder = axisOrder if axisOrder is not None else []
+
+ locations = [{k: v for k, v in loc.items() if v != 0.0} for loc in locations]
+ keyFunc = self.getMasterLocationsSortKeyFunc(
+ locations, axisOrder=self.axisOrder
+ )
+ self.locations = sorted(locations, key=keyFunc)
+
+ # Mapping from user's master order to our master order
+ self.mapping = [self.locations.index(l) for l in locations]
+ self.reverseMapping = [locations.index(l) for l in self.locations]
+
+ self._computeMasterSupports()
+ self._subModels = {}
+
+ def getSubModel(self, items):
+ if None not in items:
+ return self, items
+ key = tuple(v is not None for v in items)
+ subModel = self._subModels.get(key)
+ if subModel is None:
+ subModel = VariationModel(subList(key, self.origLocations), self.axisOrder)
+ self._subModels[key] = subModel
+ return subModel, subList(key, items)
+
+ @staticmethod
+ def getMasterLocationsSortKeyFunc(locations, axisOrder=[]):
+ if {} not in locations:
+ raise VariationModelError("Base master not found.")
+ axisPoints = {}
+ for loc in locations:
+ if len(loc) != 1:
+ continue
+ axis = next(iter(loc))
+ value = loc[axis]
+ if axis not in axisPoints:
+ axisPoints[axis] = {0.0}
+ assert (
+ value not in axisPoints[axis]
+ ), 'Value "%s" in axisPoints["%s"] --> %s' % (value, axis, axisPoints)
+ axisPoints[axis].add(value)
+
+ def getKey(axisPoints, axisOrder):
+ def sign(v):
+ return -1 if v < 0 else +1 if v > 0 else 0
+
+ def key(loc):
+ rank = len(loc)
+ onPointAxes = [
+ axis
+ for axis, value in loc.items()
+ if axis in axisPoints and value in axisPoints[axis]
+ ]
+ orderedAxes = [axis for axis in axisOrder if axis in loc]
+ orderedAxes.extend(
+ [axis for axis in sorted(loc.keys()) if axis not in axisOrder]
+ )
+ return (
+ rank, # First, order by increasing rank
+ -len(onPointAxes), # Next, by decreasing number of onPoint axes
+ tuple(
+ axisOrder.index(axis) if axis in axisOrder else 0x10000
+ for axis in orderedAxes
+ ), # Next, by known axes
+ tuple(orderedAxes), # Next, by all axes
+ tuple(
+ sign(loc[axis]) for axis in orderedAxes
+ ), # Next, by signs of axis values
+ tuple(
+ abs(loc[axis]) for axis in orderedAxes
+ ), # Next, by absolute value of axis values
+ )
+
+ return key
+
+ ret = getKey(axisPoints, axisOrder)
+ return ret
+
+ def reorderMasters(self, master_list, mapping):
+ # For changing the master data order without
+ # recomputing supports and deltaWeights.
+ new_list = [master_list[idx] for idx in mapping]
+ self.origLocations = [self.origLocations[idx] for idx in mapping]
+ locations = [
+ {k: v for k, v in loc.items() if v != 0.0} for loc in self.origLocations
+ ]
+ self.mapping = [self.locations.index(l) for l in locations]
+ self.reverseMapping = [locations.index(l) for l in self.locations]
+ self._subModels = {}
+ return new_list
+
+ def _computeMasterSupports(self):
+ self.supports = []
+ regions = self._locationsToRegions()
+ for i, region in enumerate(regions):
+ locAxes = set(region.keys())
+ # Walk over previous masters now
+ for prev_region in regions[:i]:
+ # Master with extra axes do not participte
+ if not set(prev_region.keys()).issubset(locAxes):
+ continue
+ # If it's NOT in the current box, it does not participate
+ relevant = True
+ for axis, (lower, peak, upper) in region.items():
+ if axis not in prev_region or not (
+ prev_region[axis][1] == peak
+ or lower < prev_region[axis][1] < upper
+ ):
+ relevant = False
+ break
+ if not relevant:
+ continue
+
+ # Split the box for new master; split in whatever direction
+ # that has largest range ratio.
+ #
+ # For symmetry, we actually cut across multiple axes
+ # if they have the largest, equal, ratio.
+ # https://github.com/fonttools/fonttools/commit/7ee81c8821671157968b097f3e55309a1faa511e#commitcomment-31054804
+
+ bestAxes = {}
+ bestRatio = -1
+ for axis in prev_region.keys():
+ val = prev_region[axis][1]
+ assert axis in region
+ lower, locV, upper = region[axis]
+ newLower, newUpper = lower, upper
+ if val < locV:
+ newLower = val
+ ratio = (val - locV) / (lower - locV)
+ elif locV < val:
+ newUpper = val
+ ratio = (val - locV) / (upper - locV)
+ else: # val == locV
+ # Can't split box in this direction.
+ continue
+ if ratio > bestRatio:
+ bestAxes = {}
+ bestRatio = ratio
+ if ratio == bestRatio:
+ bestAxes[axis] = (newLower, locV, newUpper)
+
+ for axis, triple in bestAxes.items():
+ region[axis] = triple
+ self.supports.append(region)
+ self._computeDeltaWeights()
+
+ def _locationsToRegions(self):
+ locations = self.locations
+ # Compute min/max across each axis, use it as total range.
+ # TODO Take this as input from outside?
+ minV = {}
+ maxV = {}
+ for l in locations:
+ for k, v in l.items():
+ minV[k] = min(v, minV.get(k, v))
+ maxV[k] = max(v, maxV.get(k, v))
+
+ regions = []
+ for loc in locations:
+ region = {}
+ for axis, locV in loc.items():
+ if locV > 0:
+ region[axis] = (0, locV, maxV[axis])
+ else:
+ region[axis] = (minV[axis], locV, 0)
+ regions.append(region)
+ return regions
+
+ def _computeDeltaWeights(self):
+ self.deltaWeights = []
+ for i, loc in enumerate(self.locations):
+ deltaWeight = {}
+ # Walk over previous masters now, populate deltaWeight
+ for j, support in enumerate(self.supports[:i]):
+ scalar = supportScalar(loc, support)
+ if scalar:
+ deltaWeight[j] = scalar
+ self.deltaWeights.append(deltaWeight)
+
+ def getDeltas(self, masterValues, *, round=noRound):
+ assert len(masterValues) == len(self.deltaWeights)
+ mapping = self.reverseMapping
+ out = []
+ for i, weights in enumerate(self.deltaWeights):
+ delta = masterValues[mapping[i]]
+ for j, weight in weights.items():
+ if weight == 1:
+ delta -= out[j]
+ else:
+ delta -= out[j] * weight
+ out.append(round(delta))
+ return out
+
+ def getDeltasAndSupports(self, items, *, round=noRound):
+ model, items = self.getSubModel(items)
+ return model.getDeltas(items, round=round), model.supports
+
+ def getScalars(self, loc):
+ return [supportScalar(loc, support) for support in self.supports]
+
+ @staticmethod
+ def interpolateFromDeltasAndScalars(deltas, scalars):
+ v = None
+ assert len(deltas) == len(scalars)
+ for delta, scalar in zip(deltas, scalars):
+ if not scalar:
+ continue
+ contribution = delta * scalar
+ if v is None:
+ v = contribution
+ else:
+ v += contribution
+ return v
+
+ def interpolateFromDeltas(self, loc, deltas):
+ scalars = self.getScalars(loc)
+ return self.interpolateFromDeltasAndScalars(deltas, scalars)
+
+ def interpolateFromMasters(self, loc, masterValues, *, round=noRound):
+ deltas = self.getDeltas(masterValues, round=round)
+ return self.interpolateFromDeltas(loc, deltas)
+
+ def interpolateFromMastersAndScalars(self, masterValues, scalars, *, round=noRound):
+ deltas = self.getDeltas(masterValues, round=round)
+ return self.interpolateFromDeltasAndScalars(deltas, scalars)
def piecewiseLinearMap(v, mapping):
- keys = mapping.keys()
- if not keys:
- return v
- if v in keys:
- return mapping[v]
- k = min(keys)
- if v < k:
- return v + mapping[k] - k
- k = max(keys)
- if v > k:
- return v + mapping[k] - k
- # Interpolate
- a = max(k for k in keys if k < v)
- b = min(k for k in keys if k > v)
- va = mapping[a]
- vb = mapping[b]
- return va + (vb - va) * (v - a) / (b - a)
+ keys = mapping.keys()
+ if not keys:
+ return v
+ if v in keys:
+ return mapping[v]
+ k = min(keys)
+ if v < k:
+ return v + mapping[k] - k
+ k = max(keys)
+ if v > k:
+ return v + mapping[k] - k
+ # Interpolate
+ a = max(k for k in keys if k < v)
+ b = min(k for k in keys if k > v)
+ va = mapping[a]
+ vb = mapping[b]
+ return va + (vb - va) * (v - a) / (b - a)
def main(args=None):
- """Normalize locations on a given designspace"""
- from fontTools import configLogger
- import argparse
-
- parser = argparse.ArgumentParser(
- "fonttools varLib.models",
- description=main.__doc__,
- )
- parser.add_argument('--loglevel', metavar='LEVEL', default="INFO",
- help="Logging level (defaults to INFO)")
-
- group = parser.add_mutually_exclusive_group(required=True)
- group.add_argument('-d', '--designspace',metavar="DESIGNSPACE",type=str)
- group.add_argument('-l', '--locations', metavar='LOCATION', nargs='+',
- help="Master locations as comma-separate coordinates. One must be all zeros.")
-
- args = parser.parse_args(args)
-
- configLogger(level=args.loglevel)
- from pprint import pprint
-
- if args.designspace:
- from fontTools.designspaceLib import DesignSpaceDocument
- doc = DesignSpaceDocument()
- doc.read(args.designspace)
- locs = [s.location for s in doc.sources]
- print("Original locations:")
- pprint(locs)
- doc.normalize()
- print("Normalized locations:")
- locs = [s.location for s in doc.sources]
- pprint(locs)
- else:
- axes = [chr(c) for c in range(ord('A'), ord('Z')+1)]
- locs = [dict(zip(axes, (float(v) for v in s.split(',')))) for s in args.locations]
-
- model = VariationModel(locs)
- print("Sorted locations:")
- pprint(model.locations)
- print("Supports:")
- pprint(model.supports)
+ """Normalize locations on a given designspace"""
+ from fontTools import configLogger
+ import argparse
+
+ parser = argparse.ArgumentParser(
+ "fonttools varLib.models",
+ description=main.__doc__,
+ )
+ parser.add_argument(
+ "--loglevel",
+ metavar="LEVEL",
+ default="INFO",
+ help="Logging level (defaults to INFO)",
+ )
+
+ group = parser.add_mutually_exclusive_group(required=True)
+ group.add_argument("-d", "--designspace", metavar="DESIGNSPACE", type=str)
+ group.add_argument(
+ "-l",
+ "--locations",
+ metavar="LOCATION",
+ nargs="+",
+ help="Master locations as comma-separate coordinates. One must be all zeros.",
+ )
+
+ args = parser.parse_args(args)
+
+ configLogger(level=args.loglevel)
+ from pprint import pprint
+
+ if args.designspace:
+ from fontTools.designspaceLib import DesignSpaceDocument
+
+ doc = DesignSpaceDocument()
+ doc.read(args.designspace)
+ locs = [s.location for s in doc.sources]
+ print("Original locations:")
+ pprint(locs)
+ doc.normalize()
+ print("Normalized locations:")
+ locs = [s.location for s in doc.sources]
+ pprint(locs)
+ else:
+ axes = [chr(c) for c in range(ord("A"), ord("Z") + 1)]
+ locs = [
+ dict(zip(axes, (float(v) for v in s.split(",")))) for s in args.locations
+ ]
+
+ model = VariationModel(locs)
+ print("Sorted locations:")
+ pprint(model.locations)
+ print("Supports:")
+ pprint(model.supports)
+
if __name__ == "__main__":
- import doctest, sys
+ import doctest, sys
- if len(sys.argv) > 1:
- sys.exit(main())
+ if len(sys.argv) > 1:
+ sys.exit(main())
- sys.exit(doctest.testmod().failed)
+ sys.exit(doctest.testmod().failed)
diff --git a/Lib/fontTools/varLib/mutator.py b/Lib/fontTools/varLib/mutator.py
index 02ce4422..263c4e61 100644
--- a/Lib/fontTools/varLib/mutator.py
+++ b/Lib/fontTools/varLib/mutator.py
@@ -138,7 +138,7 @@ def interpolate_cff2_metrics(varfont, topDict, glyphOrder, loc):
# Happens with non-marking glyphs
lsb_delta = 0
else:
- lsb = boundsPen.bounds[0]
+ lsb = otRound(boundsPen.bounds[0])
lsb_delta = entry[1] - lsb
if lsb_delta or width_delta:
@@ -185,6 +185,8 @@ def instantiateVariableFont(varfont, location, inplace=False, overlap=True):
log.info("Mutating glyf/gvar tables")
gvar = varfont['gvar']
glyf = varfont['glyf']
+ hMetrics = varfont['hmtx'].metrics
+ vMetrics = getattr(varfont.get('vmtx'), 'metrics', None)
# get list of glyph names in gvar sorted by component depth
glyphnames = sorted(
gvar.variations.keys(),
@@ -194,7 +196,7 @@ def instantiateVariableFont(varfont, location, inplace=False, overlap=True):
name))
for glyphname in glyphnames:
variations = gvar.variations[glyphname]
- coordinates, _ = glyf.getCoordinatesAndControls(glyphname, varfont)
+ coordinates, _ = glyf._getCoordinatesAndControls(glyphname, hMetrics, vMetrics)
origCoords, endPts = None, None
for var in variations:
scalar = supportScalar(loc, var.axes)
@@ -202,10 +204,10 @@ def instantiateVariableFont(varfont, location, inplace=False, overlap=True):
delta = var.coordinates
if None in delta:
if origCoords is None:
- origCoords, g = glyf.getCoordinatesAndControls(glyphname, varfont)
+ origCoords, g = glyf._getCoordinatesAndControls(glyphname, hMetrics, vMetrics)
delta = iup_delta(delta, origCoords, g.endPts)
coordinates += GlyphCoordinates(delta) * scalar
- glyf.setCoordinates(glyphname, coordinates, varfont)
+ glyf._setCoordinates(glyphname, coordinates, hMetrics, vMetrics)
else:
glyf = None
diff --git a/Lib/fontTools/varLib/varStore.py b/Lib/fontTools/varLib/varStore.py
index 8a382df0..bcf81b39 100644
--- a/Lib/fontTools/varLib/varStore.py
+++ b/Lib/fontTools/varLib/varStore.py
@@ -5,7 +5,6 @@ from fontTools.varLib.builder import (buildVarRegionList, buildVarStore,
buildVarRegion, buildVarData)
from functools import partial
from collections import defaultdict
-from array import array
def _getLocationKey(loc):
@@ -375,12 +374,11 @@ class _Encoding(object):
as a VarData."""
c = 6
while chars:
- if chars & 3:
+ if chars & 0b1111:
c += 2
- chars >>= 2
+ chars >>= 4
return c
-
def _find_yourself_best_new_encoding(self, done_by_width):
self.best_new_encoding = None
for new_width in range(self.width+1, self.width+self.room+1):
@@ -405,14 +403,31 @@ class _EncodingDict(dict):
@staticmethod
def _row_characteristics(row):
"""Returns encoding characteristics for a row."""
+ longWords = False
+
chars = 0
i = 1
for v in row:
if v:
chars += i
if not (-128 <= v <= 127):
- chars += i * 2
- i <<= 2
+ chars += i * 0b0010
+ if not (-32768 <= v <= 32767):
+ longWords = True
+ break
+ i <<= 4
+
+ if longWords:
+ # Redo; only allow 2byte/4byte encoding
+ chars = 0
+ i = 1
+ for v in row:
+ if v:
+ chars += i * 0b0011
+ if not (-32768 <= v <= 32767):
+ chars += i * 0b1100
+ i <<= 4
+
return chars
@@ -423,7 +438,7 @@ def VarStore_optimize(self):
# Check that no two VarRegions are the same; if they are, fold them.
n = len(self.VarRegionList.Region) # Number of columns
- zeroes = array('h', [0]*n)
+ zeroes = [0] * n
front_mapping = {} # Map from old VarIdxes to full row tuples
@@ -435,7 +450,7 @@ def VarStore_optimize(self):
for minor,item in enumerate(data.Item):
- row = array('h', zeroes)
+ row = list(zeroes)
for regionIdx,v in zip(regionIndices, item):
row[regionIdx] += v
row = tuple(row)
diff --git a/METADATA b/METADATA
index 36e572d9..35f87b65 100644
--- a/METADATA
+++ b/METADATA
@@ -10,14 +10,14 @@ third_party {
}
url {
type: ARCHIVE
- value: "https://github.com/fonttools/fonttools/archive/4.22.0.zip"
+ value: "https://github.com/fonttools/fonttools/archive/4.31.2.zip"
}
- version: "4.22.0"
- license_note: "contains OFL fonts"
+ version: "4.31.2"
license_type: BY_EXCEPTION_ONLY
+ license_note: "contains OFL fonts"
last_upgrade_date {
- year: 2021
- month: 4
- day: 1
+ year: 2022
+ month: 3
+ day: 25
}
}
diff --git a/NEWS.rst b/NEWS.rst
index b07f5b18..5971d3cc 100644
--- a/NEWS.rst
+++ b/NEWS.rst
@@ -1,3 +1,293 @@
+4.31.2 (released 2022-03-22)
+----------------------------
+
+- [varLib] fix instantiation of GPOS SinglePos values (#2555).
+
+4.31.1 (released 2022-03-18)
+----------------------------
+
+- [subset] fix subsetting OT-SVG when glyph id attribute is on the root ``<svg>``
+ element (#2553).
+
+4.31.0 (released 2022-03-18)
+----------------------------
+
+- [ttCollection] Fixed 'ResourceWarning: unclosed file' warning (#2549).
+- [varLib.merger] Handle merging SinglePos with valueformat=0 (#2550).
+- [ttFont] Update glyf's glyphOrder when calling TTFont.setGlyphOrder() (#2544).
+- [ttFont] Added ``ensureDecompiled`` method to load all tables irrespective
+ of the ``lazy`` attribute (#2551).
+- [otBase] Added ``iterSubTable`` method to iterate over BaseTable's children of
+ type BaseTable; useful for traversing a tree of otTables (#2551).
+
+4.30.0 (released 2022-03-10)
+----------------------------
+
+- [varLib] Added debug logger showing the glyph name for which ``gvar`` is built (#2542).
+- [varLib.errors] Fixed undefined names in ``FoundANone`` and ``UnsupportedFormat``
+ exceptions (ac4d5611).
+- [otlLib.builder] Added ``windowsNames`` and ``macNames`` (bool) parameters to the
+ ``buildStatTabe`` function, so that one can select whether to only add one or both
+ of the two sets (#2528).
+- [t1Lib] Added the ability to recreate PostScript stream (#2504).
+- [name] Added ``getFirstDebugName``, ``getBest{Family,SubFamily,Full}Name`` methods (#2526).
+
+4.29.1 (released 2022-02-01)
+----------------------------
+
+- [colorLib] Fixed rounding issue with radial gradient's start/end circles inside
+ one another (#2521).
+- [freetypePen] Handle rotate/skew transform when auto-computing width/height of the
+ buffer; raise PenError wen missing moveTo (#2517)
+
+4.29.0 (released 2022-01-24)
+----------------------------
+
+- [ufoLib] Fixed illegal characters and expanded reserved filenames (#2506).
+- [COLRv1] Don't emit useless PaintColrLayers of lenght=1 in LayerListBuilder (#2513).
+- [ttx] Removed legacy ``waitForKeyPress`` method on Windows (#2509).
+- [pens] Added FreeTypePen that uses ``freetype-py`` and the pen protocol for
+ rasterizating outline paths (#2494).
+- [unicodedata] Updated the script direction list to Unicode 14.0 (#2484).
+ Bumped unicodedata2 dependency to 14.0 (#2499).
+- [psLib] Fixed type of ``fontName`` in ``suckfont`` (#2496).
+
+4.28.5 (released 2021-12-19)
+----------------------------
+
+- [svgPathPen] Continuation of #2471: make sure all occurrences of ``str()`` are now
+ replaced with user-defined ``ntos`` callable.
+- [merge] Refactored code into submodules, plus several bugfixes and improvements:
+ fixed duplicate-glyph-resolution GSUB-lookup generation code; use tolerance in glyph
+ comparison for empty glyph's width; ignore space of default ignorable glyphs;
+ downgrade duplicates-resolution missing-GSUB from assert to warn; added --drop-tables
+ option (#2473, #2475, #2476).
+
+4.28.4 (released 2021-12-15)
+----------------------------
+
+- [merge] Merge GDEF marksets in Lookups properly (#2474).
+- [feaLib] Have ``fontTools feaLib`` script exit with error code when build fails (#2459)
+- [svgPathPen] Added ``ntos`` option to customize number formatting (e.g. rounding) (#2471).
+- [subset] Speed up subsetting of large CFF fonts (#2467).
+- [otTables] Speculatively promote lookups to extension to speed up compilation. If the
+ offset to lookup N is too big to fit in a ushort, the offset to lookup N+1 is going to
+ be too big as well, so we promote to extension all lookups from lookup N onwards (#2465).
+
+4.28.3 (released 2021-12-03)
+----------------------------
+
+- [subset] Fixed bug while subsetting ``COLR`` table, whereby incomplete layer records
+ pointing to missing glyphs were being retained leading to ``struct.error`` upon
+ compiling. Make it so that ``glyf`` glyph closure, which follows the ``COLR`` glyph
+ closure, does not influence the ``COLR`` table subsetting (#2461, #2462).
+- [docs] Fully document the ``cmap`` and ``glyf`` tables (#2454, #2457).
+- [colorLib.unbuilder] Fixed CLI by deleting no longer existing parameter (180bb1867).
+
+4.28.2 (released 2021-11-22)
+----------------------------
+
+- [otlLib] Remove duplicates when building coverage (#2433).
+- [docs] Add interrogate configuration (#2443).
+- [docs] Remove comment about missing “start” optional argument to ``calcChecksum`` (#2448).
+- [cu2qu/cli] Adapt to the latest ufoLib2.
+- [subset] Support subsetting SVG table and remove it from the list of drop by default tables (#534).
+- [subset] add ``--pretty-svg`` option to pretty print SVG table contents (#2452).
+- [merge] Support merging ``CFF`` tables (CID-keyed ``CFF`` is still not supported) (#2447).
+- [merge] Support ``--output-file`` (#2447).
+- [docs] Split table docs into individual pages (#2444).
+- [feaLib] Forbid empty classes (#2446).
+- [docs] Improve documentation for ``fontTools.ttLib.ttFont`` (#2442).
+
+4.28.1 (released 2021-11-08)
+----------------------------
+
+- [subset] Fixed AttributeError while traversing a color glyph's Paint graph when there is no
+ LayerList, which is optional (#2441).
+
+4.28.0 (released 2021-11-05)
+----------------------------
+
+- Dropped support for EOL Python 3.6, require Python 3.7 (#2417).
+- [ufoLib/glifLib] Make filename-clash checks faster by using a set instead of a list (#2422).
+- [subset] Don't crash if optional ClipList and LayerList are ``None`` (empty) (#2424, 2439).
+- [OT-SVG] Removed support for old deprecated version 1 and embedded color palettes,
+ which were never officially part of the OpenType SVG spec. Upon compile, reuse offsets
+ to SVG documents that are identical (#2430).
+- [feaLib] Added support for Variable Feature File syntax. This is experimental and subject
+ to change until it is finalized in the Adobe FEA spec (#2432).
+- [unicodedata] Update Scripts/ScriptExtensions/Blocks to UnicodeData 14.0 (#2437).
+
+4.27.1 (released 2021-09-23)
+----------------------------
+
+- [otlLib] Fixed error when chained contextual lookup builder overflows (#2404, #2411).
+- [bezierTools] Fixed two floating-point bugs: one when computing `t` for a point
+ lying on an almost horizontal/vertical line; another when computing the intersection
+ point between a curve and a line (#2413).
+
+4.27.0 (released 2021-09-14)
+----------------------------
+
+- [ttLib/otTables] Cleaned up virtual GID handling: allow virtual GIDs in ``Coverage``
+ and ``ClassDef`` readers; removed unused ``allowVID`` argument from ``TTFont``
+ constructor, and ``requireReal`` argument in ``TTFont.getGlyphID`` method.
+ Make ``TTFont.setGlyphOrder`` clear reverse glyphOrder map, and assume ``glyphOrder``
+ internal attribute is never modified outside setGlyphOrder; added ``TTFont.getGlyphNameMany``
+ and ``getGlyphIDMany`` (#1536, #1654, #2334, #2398).
+- [py23] Dropped internal use of ``fontTools.py23`` module to fix deprecation warnings
+ in client code that imports from fontTools (#2234, #2399, #2400).
+- [subset] Fix subsetting COLRv1 clip boxes when font is loaded lazily (#2408).
+
+4.26.2 (released 2021-08-09)
+----------------------------
+
+- [otTables] Added missing ``CompositeMode.PLUS`` operator (#2390).
+
+4.26.1 (released 2021-08-03)
+----------------------------
+
+- [transform] Added ``transformVector`` and ``transformVectors`` methods to the
+ ``Transform`` class. Similar to ``transformPoint`` but ignore the translation
+ part (#2386).
+
+4.26.0 (released 2021-08-03)
+----------------------------
+
+- [xmlWriter] Default to ``"\n"`` for ``newlinestr`` instead of platform-specific
+ ``os.linesep`` (#2384).
+- [otData] Define COLRv1 ClipList and ClipBox (#2379).
+- [removeOverlaps/instancer] Added --ignore-overlap-errors option to work around
+ Skia PathOps.Simplify bug (#2382, #2363, google/fonts#3365).
+- NOTE: This will be the last version to support Python 3.6. FontTools will require
+ Python 3.7 or above from the next release (#2350)
+
+4.25.2 (released 2021-07-26)
+----------------------------
+
+- [COLRv1] Various changes to sync with the latest CORLv1 draft spec. In particular:
+ define COLR.VarIndexMap, remove/inline ColorIndex struct, add VarIndexBase to ``PaintVar*`` tables (#2372);
+ add reduced-precicion specialized transform Paints;
+ define Angle as fraction of half circle encoded as F2Dot14;
+ use FWORD (int16) for all Paint center coordinates;
+ change PaintTransform to have an offset to Affine2x3;
+- [ttLib] when importing XML, only set sfntVersion if the font has no reader and is empty (#2376)
+
+4.25.1 (released 2021-07-16)
+----------------------------
+
+- [ttGlyphPen] Fixed bug in ``TTGlyphPointPen``, whereby open contours (i.e. starting
+ with segmentType "move") would throw ``NotImplementedError``. They are now treated
+ as if they are closed, like with the ``TTGlyphPen`` (#2364, #2366).
+
+4.25.0 (released 2021-07-05)
+----------------------------
+
+- [tfmLib] Added new library for parsing TeX Font Metric (TFM) files (#2354).
+- [TupleVariation] Make shared tuples order deterministic on python < 3.7 where
+ Counter (subclass of dict) doesn't remember insertion order (#2351, #2353).
+- [otData] Renamed COLRv1 structs to remove 'v1' suffix and match the updated draft
+ spec: 'LayerV1List' -> 'LayerList', 'BaseGlyphV1List' -> 'BaseGlyphList',
+ 'BaseGlyphV1Record' -> 'BaseGlyphPaintRecord' (#2346).
+ Added 8 new ``PaintScale*`` tables: with/without centers, uniform vs non-uniform.
+ Added ``*AroundCenter`` variants to ``PaintRotate`` and ``PaintSkew``: the default
+ versions no longer have centerX/Y, but default to origin.
+ ``PaintRotate``, ``PaintSkew`` and ``PaintComposite`` formats were re-numbered.
+ NOTE: these are breaking changes; clients using the experimental COLRv1 API will
+ have to be updated (#2348).
+- [pointPens] Allow ``GuessSmoothPointPen`` to accept a tolerance. Fixed call to
+ ``math.atan2`` with x/y parameters inverted. Sync the code with fontPens (#2344).
+- [post] Fixed parsing ``post`` table format 2.0 when it contains extra garbage
+ at the end of the stringData array (#2314).
+- [subset] drop empty features unless 'size' with FeatureParams table (#2324).
+- [otlLib] Added ``otlLib.optimize`` module; added GPOS compaction algorithm.
+ The compaction can be run on existing fonts with ``fonttools otlLib.optimize``
+ or using the snippet ``compact_gpos.py``. There's experimental support for
+ compacting fonts at compilation time using an environment variable, but that
+ might be removed later (#2326).
+
+4.24.4 (released 2021-05-25)
+----------------------------
+
+- [subset/instancer] Fixed ``AttributeError`` when instantiating a VF that
+ contains GPOS ValueRecords with ``Device`` tables but without the respective
+ non-Device values (e.g. ``XAdvDevice`` without ``XAdvance``). When not
+ explicitly set, the latter are assumed to be 0 (#2323).
+
+4.24.3 (released 2021-05-20)
+----------------------------
+
+- [otTables] Fixed ``AttributeError`` in methods that split LigatureSubst,
+ MultipleSubst and AlternateSubst subtables when an offset overflow occurs.
+ The ``Format`` attribute was removed in v4.22.0 (#2319).
+
+4.24.2 (released 2021-05-20)
+----------------------------
+
+- [ttGlyphPen] Fixed typing annotation of TTGlyphPen glyphSet parameter (#2315).
+- Fixed two instances of DeprecationWarning: invalid escape sequence (#2311).
+
+4.24.1 (released 2021-05-20)
+----------------------------
+
+- [subset] Fixed AttributeError when SinglePos subtable has None Value (ValueFormat 0)
+ (#2312, #2313).
+
+4.24.0 (released 2021-05-17)
+----------------------------
+
+- [pens] Add ``ttGlyphPen.TTGlyphPointPen`` similar to ``TTGlyphPen`` (#2205).
+
+4.23.1 (released 2021-05-14)
+----------------------------
+
+- [subset] Fix ``KeyError`` after subsetting ``COLR`` table that initially contains
+ both v0 and v1 color glyphs when the subset only requested v1 glyphs; we were
+ not pruning the v0 portion of the table (#2308).
+- [colorLib] Set ``LayerV1List`` attribute to ``None`` when empty, it's optional
+ in CORLv1 (#2308).
+
+4.23.0 (released 2021-05-13)
+----------------------------
+
+- [designspaceLib] Allow to use ``\\UNC`` absolute paths on Windows (#2299, #2306).
+- [varLib.merger] Fixed bug where ``VarLibMergeError`` was raised with incorrect
+ parameters (#2300).
+- [feaLib] Allow substituting a glyph class with ``NULL`` to delete multiple glyphs
+ (#2303).
+- [glyf] Fixed ``NameError`` exception in ``getPhantomPoints`` (#2295, #2305).
+- [removeOverlaps] Retry pathops.simplify after rounding path coordinates to integers
+ if it fails the first time using floats, to work around a rare and hard to debug
+ Skia bug (#2288).
+- [varLib] Added support for building, reading, writing and optimizing 32-bit
+ ``ItemVariationStore`` as used in COLRv1 table (#2285).
+- [otBase/otConverters] Add array readers/writers for int types (#2285).
+- [feaLib] Allow more than one lookahead glyph/class in contextual positioning with
+ "value at end" (#2293, #2294).
+- [COLRv1] Default varIdx should be 0xFFFFFFFF (#2297, #2298).
+- [pens] Make RecordingPointPen actually pass on identifiers; replace asserts with
+ explicit ``PenError`` exception (#2284).
+- [mutator] Round lsb for CF2 fonts as well (#2286).
+
+4.22.1 (released 2021-04-26)
+----------------------------
+
+- [feaLib] Skip references to named lookups if the lookup block definition
+ is empty, similarly to makeotf. This also fixes an ``AttributeError`` while
+ generating ``aalt`` feature (#2276, #2277).
+- [subset] Fixed bug with ``--no-hinting`` implementation for Device tables (#2272,
+ #2275). The previous code was alwyas dropping Device tables if no-hinting was
+ requested, but some Device tables (DeltaFormat=0x8000) are also used to encode
+ variation indices and need to be retained.
+- [otBase] Fixed bug in getting the ValueRecordSize when decompiling ``MVAR``
+ table with ``lazy=True`` (#2273, #2274).
+- [varLib/glyf/gvar] Optimized and simplified ``GlyphCoordinates`` and
+ ``TupleVariation`` classes, use ``bytearray`` where possible, refactored
+ phantom-points calculations. We measured about 30% speedup in total time
+ of loading master ttfs, building gvar, and saving (#2261, #2266).
+- [subset] Fixed ``AssertionError`` while pruning unused CPAL palettes when
+ ``0xFFFF`` is present (#2257, #2259).
+
4.22.0 (released 2021-04-01)
----------------------------
@@ -398,7 +688,7 @@
instance, correctly map the value forward.
- [varLib] The avar table can now contain mapping output values that are greater than
OR EQUAL to the preceeding value, as the avar specification allows this.
-- [varLib] The errors of the module are now ordered hierarchically below VarLibError.
+- [varLib] The errors of the module are now ordered hierarchically below VarLibError.
See #1821.
4.3.0 (released 2020-02-03)
@@ -692,13 +982,13 @@
- [mutator] Set ``OVERLAP_SIMPLE`` and ``OVERLAP_COMPOUND`` glyf flags by
default in ``instantiateVariableFont``. Added ``--no-overlap`` cli option
to disable this (#1518).
-- [subset] Fixed subsetting ``VVAR`` table (#1516, #1517).
+- [subset] Fixed subsetting ``VVAR`` table (#1516, #1517).
Fixed subsetting an ``HVAR`` table that has an ``AdvanceWidthMap`` when the
option ``--retain-gids`` is used.
-- [feaLib] Added ``forceChained`` in MultipleSubstStatement (#1511).
- Fixed double indentation of ``subtable`` statement (#1512).
+- [feaLib] Added ``forceChained`` in MultipleSubstStatement (#1511).
+ Fixed double indentation of ``subtable`` statement (#1512).
Added support for ``subtable`` statement in more places than just PairPos
- lookups (#1520).
+ lookups (#1520).
Handle lookupflag 0 and lookupflag without a value (#1540).
- [varLib] In ``load_designspace``, provide a default English name for the
``ital`` axis tag.
diff --git a/README.rst b/README.rst
index 97d23e4b..fdff2433 100644
--- a/README.rst
+++ b/README.rst
@@ -18,14 +18,8 @@ are available at `Read the Docs <https://fonttools.readthedocs.io/>`_.
Installation
~~~~~~~~~~~~
-FontTools 4.x requires `Python <http://www.python.org/download/>`__ 3.6
-or later. FontTools 3.x requires Python 2.7 or later.
-
-**NOTE** From August 2019, until no later than January 1 2020, the support
-for *Python 2.7* will be limited to only critical bug fixes, and no new features
-will be added to the ``py27`` branch. You can read more `here <https://python3statement.org>`__
-and `here <https://github.com/fonttools/fonttools/issues/765>`__ for the
-reasons behind this decision.
+FontTools requires `Python <http://www.python.org/download/>`__ 3.7
+or later.
The package is listed in the Python Package Index (PyPI), so you can
install it with `pip <https://pip.pypa.io>`__:
@@ -125,8 +119,8 @@ are required to unlock the extra features named "ufo", etc.
To use the latest available data, you can install:
* `unicodedata2 <https://pypi.python.org/pypi/unicodedata2>`__:
- ``unicodedata`` backport for Python 2.7 and 3.x updated to the latest
- Unicode version 12.0. Note this is not necessary if you use Python 3.8
+ ``unicodedata`` backport for Python 3.x updated to the latest Unicode
+ version 14.0. Note this is not necessary if you use Python 3.11
as the latter already comes with an up-to-date ``unicodedata``.
*Extra:* ``unicode``
@@ -205,19 +199,56 @@ are required to unlock the extra features named "ufo", etc.
* `reportlab <https://pypi.python.org/pypi/reportlab>`__: Python toolkit
for generating PDFs and graphics.
+- ``Lib/fontTools/pens/freetypePen.py``
+
+ Pen to drawing glyphs with FreeType as raster images, requires:
+
+ * `freetype-py <https://pypi.python.org/pypi/freetype-py>`__: Python binding
+ for the FreeType library.
+
+How to make a new release
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+1) Update ``NEWS.rst`` with all the changes since the last release. Write a
+ changelog entry for each PR, with one or two short sentences summarizing it,
+ as well as links to the PR and relevant issues addressed by the PR.
+2) Use semantic versioning to decide whether the new release will be a 'major',
+ 'minor' or 'patch' release. It's usually one of the latter two, depending on
+ whether new backward compatible APIs were added, or simply some bugs were fixed.
+3) Run ``python setup.py release`` command from the tip of the ``main`` branch.
+ By default this bumps the third or 'patch' digit only, unless you pass ``--major``
+ or ``--minor`` to bump respectively the first or second digit.
+ This bumps the package version string, extracts the changes since the latest
+ version from ``NEWS.rst``, and uses that text to create an annotated git tag
+ (or a signed git tag if you pass the ``--sign`` option and your git and Github
+ account are configured for `signing commits <https://docs.github.com/en/github/authenticating-to-github/managing-commit-signature-verification/signing-commits>`__
+ using a GPG key).
+ It also commits an additional version bump which opens the main branch for
+ the subsequent developmental cycle
+4) Push both the tag and commit to the upstream repository, by running the command
+ ``git push --follow-tags``.
+5) Let the CI build the wheel and source distribution packages and verify both
+ get uploaded to the Python Package Index (PyPI).
+6) [Optional] Go to fonttools `Github Releases <https://github.com/fonttools/fonttools/releases>`__
+ page and create a new release, copy-pasting the content of the git tag
+ message. This way, the release notes are nicely formatted as markdown, and
+ users watching the repo will get an email notification. One day we shall
+ automate that too.
+
+
Acknowledgements
~~~~~~~~~~~~~~~~
In alphabetical order:
-Olivier Berten, Samyak Bhuta, Erik van Blokland, Petr van Blokland,
+aschmitz, Olivier Berten, Samyak Bhuta, Erik van Blokland, Petr van Blokland,
Jelle Bosma, Sascha Brawer, Tom Byrer, Antonio Cavedoni, Frédéric
Coiffier, Vincent Connare, David Corbett, Simon Cozens, Dave Crossland,
Simon Daniels, Peter Dekkers, Behdad Esfahbod, Behnam Esfahbod, Hannes
-Famira, Sam Fishman, Matt Fontaine, Yannis Haralambous, Greg Hitchcock,
-Jeremie Hornus, Khaled Hosny, John Hudson, Denis Moyogo Jacquerye, Jack
-Jansen, Tom Kacvinsky, Jens Kutilek, Antoine Leca, Werner Lemberg, Tal
-Leming, Peter Lofting, Cosimo Lupo, Masaya Nakamura, Dave Opstad,
+Famira, Sam Fishman, Matt Fontaine, Takaaki Fuji, Yannis Haralambous, Greg
+Hitchcock, Jeremie Hornus, Khaled Hosny, John Hudson, Denis Moyogo Jacquerye,
+Jack Jansen, Tom Kacvinsky, Jens Kutilek, Antoine Leca, Werner Lemberg, Tal
+Leming, Peter Lofting, Cosimo Lupo, Olli Meier, Masaya Nakamura, Dave Opstad,
Laurence Penney, Roozbeh Pournader, Garret Rieger, Read Roberts, Guido
van Rossum, Just van Rossum, Andreas Seidel, Georg Seifert, Chris
Simpkins, Miguel Sousa, Adam Twardoch, Adrien Tétar, Vitaly Volkov,
diff --git a/Snippets/README.md b/Snippets/README.md
index 915b1c38..d2220de6 100644
--- a/Snippets/README.md
+++ b/Snippets/README.md
@@ -9,3 +9,4 @@ If you do and think your work is useful for others, please add a link to it here
* https://github.com/googlei18n/nototools
* https://github.com/googlefonts/fontbakery
* https://github.com/Typefounding/setUseTypoMetricsFalse
+* https://github.com/ftCLI/ftCLI
diff --git a/Snippets/checksum.py b/Snippets/checksum.py
index 53a53183..b965a357 100644
--- a/Snippets/checksum.py
+++ b/Snippets/checksum.py
@@ -29,9 +29,7 @@ def write_checksum(filepaths, stdout_write=False, use_ttx=False, include_tables=
temp_ttx_path = path + ".ttx"
tt = TTFont(path)
- # important to keep the newlinestr value defined here as hash values will change across platforms
- # if platform specific newline values are assumed
- tt.saveXML(temp_ttx_path, newlinestr="\n", skipTables=exclude_tables, tables=include_tables)
+ tt.saveXML(temp_ttx_path, skipTables=exclude_tables, tables=include_tables)
checksum_path = temp_ttx_path
else:
if include_tables is not None:
diff --git a/Snippets/compact_gpos.py b/Snippets/compact_gpos.py
new file mode 100644
index 00000000..a5bd2f8b
--- /dev/null
+++ b/Snippets/compact_gpos.py
@@ -0,0 +1,144 @@
+#! /usr/bin/env python3
+
+"""
+Sample script to use the otlLib.optimize.gpos functions to compact GPOS tables
+of existing fonts. This script takes one or more TTF files as arguments and
+will create compacted copies of the fonts using all available modes of the GPOS
+compaction algorithm. For each copy, it will measure the new size of the GPOS
+table and also the new size of the font in WOFF2 format. All results will be
+printed to stdout in CSV format, so the savings provided by the algorithm in
+each mode can be inspected.
+
+This was initially made to debug the algorithm but can also be used to choose
+a mode value for a specific font (trade-off between bytes saved in TTF format
+vs more bytes in WOFF2 format and more subtables).
+
+Run:
+
+python Snippets/compact_gpos.py MyFont.ttf > results.csv
+"""
+
+import argparse
+from collections import defaultdict
+import csv
+import time
+import sys
+from pathlib import Path
+from typing import Any, Iterable, List, Optional, Sequence, Tuple
+
+from fontTools.ttLib import TTFont
+from fontTools.otlLib.optimize import compact
+
+MODES = [str(c) for c in range(1, 10)]
+
+
+def main(args: Optional[List[str]] = None):
+ parser = argparse.ArgumentParser()
+ parser.add_argument("fonts", type=Path, nargs="+", help="Path to TTFs.")
+ parsed_args = parser.parse_args(args)
+
+ runtimes = defaultdict(list)
+ rows = []
+ font_path: Path
+ for font_path in parsed_args.fonts:
+ font = TTFont(font_path)
+ if "GPOS" not in font:
+ print(f"No GPOS in {font_path.name}, skipping.", file=sys.stderr)
+ continue
+ size_orig = len(font.getTableData("GPOS")) / 1024
+ print(f"Measuring {font_path.name}...", file=sys.stderr)
+
+ fonts = {}
+ font_paths = {}
+ sizes = {}
+ for mode in MODES:
+ print(f" Running mode={mode}", file=sys.stderr)
+ fonts[mode] = TTFont(font_path)
+ before = time.perf_counter()
+ compact(fonts[mode], mode=str(mode))
+ runtimes[mode].append(time.perf_counter() - before)
+ font_paths[mode] = (
+ font_path.parent
+ / "compact"
+ / (font_path.stem + f"_{mode}" + font_path.suffix)
+ )
+ font_paths[mode].parent.mkdir(parents=True, exist_ok=True)
+ fonts[mode].save(font_paths[mode])
+ fonts[mode] = TTFont(font_paths[mode])
+ sizes[mode] = len(fonts[mode].getTableData("GPOS")) / 1024
+
+ print(f" Runtimes:", file=sys.stderr)
+ for mode, times in runtimes.items():
+ print(
+ f" {mode:10} {' '.join(f'{t:5.2f}' for t in times)}",
+ file=sys.stderr,
+ )
+
+ # Bonus: measure WOFF2 file sizes.
+ print(f" Measuring WOFF2 sizes", file=sys.stderr)
+ size_woff_orig = woff_size(font, font_path) / 1024
+ sizes_woff = {
+ mode: woff_size(fonts[mode], font_paths[mode]) / 1024 for mode in MODES
+ }
+
+ rows.append(
+ (
+ font_path.name,
+ size_orig,
+ size_woff_orig,
+ *flatten(
+ (
+ sizes[mode],
+ pct(sizes[mode], size_orig),
+ sizes_woff[mode],
+ pct(sizes_woff[mode], size_woff_orig),
+ )
+ for mode in MODES
+ ),
+ )
+ )
+
+ write_csv(rows)
+
+
+def woff_size(font: TTFont, path: Path) -> int:
+ font.flavor = "woff2"
+ woff_path = path.with_suffix(".woff2")
+ font.save(woff_path)
+ return woff_path.stat().st_size
+
+
+def write_csv(rows: List[Tuple[Any]]) -> None:
+ sys.stdout.reconfigure(encoding="utf-8")
+ sys.stdout.write("\uFEFF")
+ writer = csv.writer(sys.stdout, lineterminator="\n")
+ writer.writerow(
+ [
+ "File",
+ "Original GPOS Size",
+ "Original WOFF2 Size",
+ *flatten(
+ (
+ f"mode={mode}",
+ f"Change {mode}",
+ f"mode={mode} WOFF2 Size",
+ f"Change {mode} WOFF2 Size",
+ )
+ for mode in MODES
+ ),
+ ]
+ )
+ for row in rows:
+ writer.writerow(row)
+
+
+def pct(new: float, old: float) -> float:
+ return -(1 - (new / old))
+
+
+def flatten(seq_seq: Iterable[Iterable[Any]]) -> List[Any]:
+ return [thing for seq in seq_seq for thing in seq]
+
+
+if __name__ == "__main__":
+ main()
diff --git a/Snippets/svg2glif.py b/Snippets/svg2glif.py
index 22fcc7d1..b28cb25d 100755
--- a/Snippets/svg2glif.py
+++ b/Snippets/svg2glif.py
@@ -4,7 +4,7 @@
__requires__ = ["fontTools"]
-from fontTools.misc.py23 import SimpleNamespace
+from types import SimpleNamespace
from fontTools.svgLib import SVGPath
from fontTools.pens.pointPen import SegmentToPointPen
diff --git a/Tests/colorLib/builder_test.py b/Tests/colorLib/builder_test.py
index 81da2818..7259db4d 100644
--- a/Tests/colorLib/builder_test.py
+++ b/Tests/colorLib/builder_test.py
@@ -1,8 +1,9 @@
+from copy import deepcopy
from fontTools.ttLib import newTable
from fontTools.ttLib.tables import otTables as ot
from fontTools.colorLib import builder
from fontTools.colorLib.geometry import round_start_circle_stable_containment, Circle
-from fontTools.colorLib.builder import LayerV1ListBuilder, _build_n_ary_tree
+from fontTools.colorLib.builder import LayerListBuilder, _build_n_ary_tree
from fontTools.colorLib.table_builder import TableBuilder
from fontTools.colorLib.errors import ColorLibError
import pytest
@@ -10,11 +11,11 @@ from typing import List
def _build(cls, source):
- return LayerV1ListBuilder().tableBuilder.build(cls, source)
+ return LayerListBuilder().tableBuilder.build(cls, source)
def _buildPaint(source):
- return LayerV1ListBuilder().buildPaint(source)
+ return LayerListBuilder().buildPaint(source)
def test_buildCOLR_v0():
@@ -231,92 +232,63 @@ def test_buildCPAL_invalid_color():
builder.buildCPAL([[(0, 0, 0, 0)], [(1, 1, -1, 2)]])
-def test_buildColorIndex_Minimal():
- c = _build(ot.ColorIndex, 1)
- assert c.PaletteIndex == 1
- assert c.Alpha == 1.0
-
-
-def test_buildVarColorIndex_Minimal():
- c = _build(ot.VarColorIndex, 1)
- assert c.PaletteIndex == 1
- assert c.Alpha.value == 1.0
- assert c.Alpha.varIdx == 0
-
-
-def test_buildColorIndex():
- c = _build(ot.ColorIndex, (1, 0.5))
- assert c.PaletteIndex == 1
- assert c.Alpha == 0.5
-
-
-def test_buildVarColorIndex():
- c = _build(ot.VarColorIndex, (3, builder.VariableFloat(0.5, varIdx=2)))
- assert c.PaletteIndex == 3
- assert c.Alpha.value == 0.5
- assert c.Alpha.varIdx == 2
-
-
def test_buildPaintSolid():
p = _buildPaint((ot.PaintFormat.PaintSolid, 0))
assert p.Format == ot.PaintFormat.PaintSolid
- assert p.Color.PaletteIndex == 0
- assert p.Color.Alpha == 1.0
+ assert p.PaletteIndex == 0
+ assert p.Alpha == 1.0
def test_buildPaintSolid_Alpha():
- p = _buildPaint((ot.PaintFormat.PaintSolid, (1, 0.5)))
+ p = _buildPaint((ot.PaintFormat.PaintSolid, 1, 0.5))
assert p.Format == ot.PaintFormat.PaintSolid
- assert p.Color.PaletteIndex == 1
- assert p.Color.Alpha == 0.5
+ assert p.PaletteIndex == 1
+ assert p.Alpha == 0.5
def test_buildPaintVarSolid():
- p = _buildPaint(
- (ot.PaintFormat.PaintVarSolid, (3, builder.VariableFloat(0.5, varIdx=2)))
- )
+ p = _buildPaint((ot.PaintFormat.PaintVarSolid, 3, 0.5, 2))
assert p.Format == ot.PaintFormat.PaintVarSolid
- assert p.Color.PaletteIndex == 3
- assert p.Color.Alpha.value == 0.5
- assert p.Color.Alpha.varIdx == 2
+ assert p.PaletteIndex == 3
+ assert p.Alpha == 0.5
+ assert p.VarIndexBase == 2
def test_buildVarColorStop_DefaultAlpha():
s = _build(ot.ColorStop, (0.1, 2))
assert s.StopOffset == 0.1
- assert s.Color.PaletteIndex == 2
- assert s.Color.Alpha == builder._DEFAULT_ALPHA.value
+ assert s.PaletteIndex == 2
+ assert s.Alpha == builder._DEFAULT_ALPHA
def test_buildVarColorStop_DefaultAlpha():
s = _build(ot.VarColorStop, (0.1, 2))
- assert s.StopOffset == builder.VariableFloat(0.1)
- assert s.Color.PaletteIndex == 2
- assert s.Color.Alpha == builder._DEFAULT_ALPHA
+ assert s.StopOffset == 0.1
+ assert s.PaletteIndex == 2
+ assert s.Alpha == builder._DEFAULT_ALPHA
def test_buildColorStop():
- s = _build(
- ot.ColorStop, {"StopOffset": 0.2, "Color": {"PaletteIndex": 3, "Alpha": 0.4}}
- )
+ s = _build(ot.ColorStop, {"StopOffset": 0.2, "PaletteIndex": 3, "Alpha": 0.4})
assert s.StopOffset == 0.2
- assert s.Color == _build(ot.ColorIndex, (3, 0.4))
+ assert s.PaletteIndex == 3
+ assert s.Alpha == 0.4
def test_buildColorStop_Variable():
s = _build(
ot.VarColorStop,
{
- "StopOffset": builder.VariableFloat(0.0, varIdx=1),
- "Color": {
- "PaletteIndex": 0,
- "Alpha": builder.VariableFloat(0.3, varIdx=2),
- },
+ "StopOffset": 0.0,
+ "PaletteIndex": 0,
+ "Alpha": 0.3,
+ "VarIndexBase": 1,
},
)
- assert s.StopOffset == builder.VariableFloat(0.0, varIdx=1)
- assert s.Color.PaletteIndex == 0
- assert s.Color.Alpha == builder.VariableFloat(0.3, varIdx=2)
+ assert s.StopOffset == 0.0
+ assert s.PaletteIndex == 0
+ assert s.Alpha == 0.3
+ assert s.VarIndexBase == 1
def test_buildColorLine_StopList():
@@ -325,7 +297,7 @@ def test_buildColorLine_StopList():
cline = _build(ot.ColorLine, {"ColorStop": stops})
assert cline.Extend == builder.ExtendMode.PAD
assert cline.StopCount == 3
- assert [(cs.StopOffset, cs.Color.PaletteIndex) for cs in cline.ColorStop] == stops
+ assert [(cs.StopOffset, cs.PaletteIndex) for cs in cline.ColorStop] == stops
cline = _build(ot.ColorLine, {"Extend": "pad", "ColorStop": stops})
assert cline.Extend == builder.ExtendMode.PAD
@@ -343,86 +315,98 @@ def test_buildColorLine_StopList():
cline = _build(
ot.ColorLine, {"ColorStop": [_build(ot.ColorStop, s) for s in stops]}
)
- assert [(cs.StopOffset, cs.Color.PaletteIndex) for cs in cline.ColorStop] == stops
+ assert [(cs.StopOffset, cs.PaletteIndex) for cs in cline.ColorStop] == stops
def test_buildVarColorLine_StopMap():
stops = [
- {"StopOffset": (0.0, (1,)), "Color": {"PaletteIndex": 0, "Alpha": (0.5, 2)}},
- {"StopOffset": (1.0, (3,)), "Color": {"PaletteIndex": 1, "Alpha": (0.3, 4)}},
+ {"StopOffset": 0.0, "PaletteIndex": 0, "Alpha": 0.5, "VarIndexBase": 1},
+ {"StopOffset": 1.0, "PaletteIndex": 1, "Alpha": 0.3, "VarIndexBase": 3},
]
cline = _build(ot.VarColorLine, {"ColorStop": stops})
assert [
{
"StopOffset": cs.StopOffset,
- "Color": {
- "PaletteIndex": cs.Color.PaletteIndex,
- "Alpha": cs.Color.Alpha,
- },
+ "PaletteIndex": cs.PaletteIndex,
+ "Alpha": cs.Alpha,
+ "VarIndexBase": cs.VarIndexBase,
}
for cs in cline.ColorStop
] == stops
-def checkBuildAffine2x3(cls, resultMapFn):
+def checkBuildAffine2x3(cls, variable=False):
matrix = _build(cls, (1.5, 0, 0.5, 2.0, 1.0, -3.0))
- assert matrix.xx == resultMapFn(1.5)
- assert matrix.yx == resultMapFn(0.0)
- assert matrix.xy == resultMapFn(0.5)
- assert matrix.yy == resultMapFn(2.0)
- assert matrix.dx == resultMapFn(1.0)
- assert matrix.dy == resultMapFn(-3.0)
+ assert matrix.xx == 1.5
+ assert matrix.yx == 0.0
+ assert matrix.xy == 0.5
+ assert matrix.yy == 2.0
+ assert matrix.dx == 1.0
+ assert matrix.dy == -3.0
+ if variable:
+ assert matrix.VarIndexBase == 0xFFFFFFFF
def test_buildAffine2x3():
- checkBuildAffine2x3(ot.Affine2x3, lambda v: v)
+ checkBuildAffine2x3(ot.Affine2x3)
def test_buildVarAffine2x3():
- checkBuildAffine2x3(ot.VarAffine2x3, builder.VariableFloat)
+ checkBuildAffine2x3(ot.VarAffine2x3, variable=True)
-def _sample_stops(cls):
- return [
- _build(cls, (0.0, 0)),
- _build(cls, (0.5, 1)),
- _build(cls, (1.0, (2, 0.8))),
+def _sample_stops(variable):
+ cls = ot.ColorStop if not variable else ot.VarColorStop
+ stop_sources = [
+ {"StopOffset": 0.0, "PaletteIndex": 0},
+ {"StopOffset": 0.5, "PaletteIndex": 1},
+ {"StopOffset": 1.0, "PaletteIndex": 2, "Alpha": 0.8},
]
+ if variable:
+ for i, src in enumerate(stop_sources, start=123):
+ src["VarIndexBase"] = i
+ return [_build(cls, src) for src in stop_sources]
def _is_var(fmt):
return fmt.name.startswith("PaintVar")
-def checkBuildPaintLinearGradient(fmt):
- if _is_var(fmt):
- inputMapFn = builder.VariableInt
- outputMapFn = lambda v: v.value
- color_stops = _sample_stops(ot.VarColorStop)
- else:
- inputMapFn = outputMapFn = lambda v: v
- color_stops = _sample_stops(ot.ColorStop)
+def _is_around_center(fmt):
+ return fmt.name.endswith("AroundCenter")
- x0, y0, x1, y1, x2, y2 = tuple(inputMapFn(v) for v in (1, 2, 3, 4, 5, 6))
- gradient = _buildPaint(
- {
- "Format": fmt,
- "ColorLine": {"ColorStop": color_stops},
- "x0": x0,
- "y0": y0,
- "x1": x1,
- "y1": y1,
- "x2": x2,
- "y2": y2,
- },
- )
+
+def _is_uniform_scale(fmt):
+ return "ScaleUniform" in fmt.name
+
+
+def checkBuildPaintLinearGradient(fmt):
+ variable = _is_var(fmt)
+ color_stops = _sample_stops(variable)
+
+ x0, y0, x1, y1, x2, y2 = (1, 2, 3, 4, 5, 6)
+ source = {
+ "Format": fmt,
+ "ColorLine": {"ColorStop": color_stops},
+ "x0": x0,
+ "y0": y0,
+ "x1": x1,
+ "y1": y1,
+ "x2": x2,
+ "y2": y2,
+ }
+ if variable:
+ source["VarIndexBase"] = 7
+ gradient = _buildPaint(source)
assert gradient.ColorLine.Extend == builder.ExtendMode.PAD
assert gradient.ColorLine.ColorStop == color_stops
gradient = _buildPaint(gradient)
- assert (outputMapFn(gradient.x0), outputMapFn(gradient.y0)) == (1, 2)
- assert (outputMapFn(gradient.x1), outputMapFn(gradient.y1)) == (3, 4)
- assert (outputMapFn(gradient.x2), outputMapFn(gradient.y2)) == (5, 6)
+ assert (gradient.x0, gradient.y0) == (1, 2)
+ assert (gradient.x1, gradient.y1) == (3, 4)
+ assert (gradient.x2, gradient.y2) == (5, 6)
+ if variable:
+ assert gradient.VarIndexBase == 7
def test_buildPaintLinearGradient():
@@ -430,57 +414,60 @@ def test_buildPaintLinearGradient():
checkBuildPaintLinearGradient(ot.PaintFormat.PaintLinearGradient)
-def test_buildVarPaintLinearGradient():
+def test_buildPaintVarLinearGradient():
assert _is_var(ot.PaintFormat.PaintVarLinearGradient)
checkBuildPaintLinearGradient(ot.PaintFormat.PaintVarLinearGradient)
def checkBuildPaintRadialGradient(fmt):
- if _is_var(fmt):
- inputMapFn = builder.VariableInt
- outputMapFn = lambda v: v
- color_stops = _sample_stops(ot.VarColorStop)
- line_cls = ot.VarColorLine
- else:
- inputMapFn = outputMapFn = lambda v: v
- color_stops = _sample_stops(ot.ColorStop)
- line_cls = ot.ColorLine
+ variable = _is_var(fmt)
+ color_stops = _sample_stops(variable)
+ line_cls = ot.VarColorLine if variable else ot.ColorLine
color_line = _build(
line_cls, {"ColorStop": color_stops, "Extend": builder.ExtendMode.REPEAT}
)
- c0 = (inputMapFn(100), inputMapFn(200))
- c1 = (inputMapFn(150), inputMapFn(250))
- r0 = inputMapFn(10)
- r1 = inputMapFn(5)
+ c0 = (100, 200)
+ c1 = (150, 250)
+ r0 = 10
+ r1 = 5
+ varIndexBase = 0
+
+ source = [fmt, color_line, *c0, r0, *c1, r1]
+ if variable:
+ source.append(varIndexBase)
- gradient = _build(ot.Paint, (fmt, color_line, *c0, r0, *c1, r1))
+ gradient = _build(ot.Paint, tuple(source))
assert gradient.Format == fmt
assert gradient.ColorLine == color_line
- assert (outputMapFn(gradient.x0), outputMapFn(gradient.y0)) == c0
- assert (outputMapFn(gradient.x1), outputMapFn(gradient.y1)) == c1
- assert outputMapFn(gradient.r0) == r0
- assert outputMapFn(gradient.r1) == r1
-
- gradient = _build(
- ot.Paint,
- {
- "Format": fmt,
- "ColorLine": {"ColorStop": color_stops},
- "x0": c0[0],
- "y0": c0[1],
- "x1": c1[0],
- "y1": c1[1],
- "r0": r0,
- "r1": r1,
- },
- )
+ assert (gradient.x0, gradient.y0) == c0
+ assert (gradient.x1, gradient.y1) == c1
+ assert gradient.r0 == r0
+ assert gradient.r1 == r1
+ if variable:
+ assert gradient.VarIndexBase == varIndexBase
+
+ source = {
+ "Format": fmt,
+ "ColorLine": {"ColorStop": color_stops},
+ "x0": c0[0],
+ "y0": c0[1],
+ "x1": c1[0],
+ "y1": c1[1],
+ "r0": r0,
+ "r1": r1,
+ }
+ if variable:
+ source["VarIndexBase"] = varIndexBase
+ gradient = _build(ot.Paint, source)
assert gradient.ColorLine.Extend == builder.ExtendMode.PAD
assert gradient.ColorLine.ColorStop == color_stops
- assert (outputMapFn(gradient.x0), outputMapFn(gradient.y0)) == c0
- assert (outputMapFn(gradient.x1), outputMapFn(gradient.y1)) == c1
- assert outputMapFn(gradient.r0) == r0
- assert outputMapFn(gradient.r1) == r1
+ assert (gradient.x0, gradient.y0) == c0
+ assert (gradient.x1, gradient.y1) == c1
+ assert gradient.r0 == r0
+ assert gradient.r1 == r1
+ if variable:
+ assert gradient.VarIndexBase == varIndexBase
def test_buildPaintRadialGradient():
@@ -494,33 +481,26 @@ def test_buildPaintVarRadialGradient():
def checkPaintSweepGradient(fmt):
- if _is_var(fmt):
- outputMapFn = lambda v: v.value
- else:
- outputMapFn = lambda v: v
-
- paint = _buildPaint(
- {
- "Format": fmt,
- "ColorLine": {
- "ColorStop": (
- (0.0, 0),
- (0.5, 1),
- (1.0, (2, 0.8)),
- )
- },
- "centerX": 127,
- "centerY": 129,
- "startAngle": 15,
- "endAngle": 42,
- }
- )
+ variable = _is_var(fmt)
+ source = {
+ "Format": fmt,
+ "ColorLine": {"ColorStop": _sample_stops(variable)},
+ "centerX": 127,
+ "centerY": 129,
+ "startAngle": 15,
+ "endAngle": 42,
+ }
+ if variable:
+ source["VarIndexBase"] = 666
+ paint = _buildPaint(source)
assert paint.Format == fmt
- assert outputMapFn(paint.centerX) == 127
- assert outputMapFn(paint.centerY) == 129
- assert outputMapFn(paint.startAngle) == 15
- assert outputMapFn(paint.endAngle) == 42
+ assert paint.centerX == 127
+ assert paint.centerY == 129
+ assert paint.startAngle == 15
+ assert paint.endAngle == 42
+ if variable:
+ assert paint.VarIndexBase == 666
def test_buildPaintSweepGradient():
@@ -548,22 +528,19 @@ def test_buildPaintGlyph_Solid():
assert layer.Format == ot.PaintFormat.PaintGlyph
assert layer.Glyph == "a"
assert layer.Paint.Format == ot.PaintFormat.PaintSolid
- assert layer.Paint.Color.PaletteIndex == 2
+ assert layer.Paint.PaletteIndex == 2
layer = _build(
ot.Paint,
(
ot.PaintFormat.PaintGlyph,
- (
- ot.PaintFormat.PaintSolid,
- (3, 0.9),
- ),
+ (ot.PaintFormat.PaintSolid, 3, 0.9),
"a",
),
)
assert layer.Paint.Format == ot.PaintFormat.PaintSolid
- assert layer.Paint.Color.PaletteIndex == 3
- assert layer.Paint.Color.Alpha == 0.9
+ assert layer.Paint.PaletteIndex == 3
+ assert layer.Paint.Alpha == 0.9
def test_buildPaintGlyph_VarLinearGradient():
@@ -586,14 +563,14 @@ def test_buildPaintGlyph_VarLinearGradient():
assert layer.Format == ot.PaintFormat.PaintGlyph
assert layer.Glyph == "a"
assert layer.Paint.Format == ot.PaintFormat.PaintVarLinearGradient
- assert layer.Paint.ColorLine.ColorStop[0].StopOffset.value == 0.0
- assert layer.Paint.ColorLine.ColorStop[0].Color.PaletteIndex == 3
- assert layer.Paint.ColorLine.ColorStop[1].StopOffset.value == 1.0
- assert layer.Paint.ColorLine.ColorStop[1].Color.PaletteIndex == 4
- assert layer.Paint.x0.value == 100
- assert layer.Paint.y0.value == 200
- assert layer.Paint.x1.value == 150
- assert layer.Paint.y1.value == 250
+ assert layer.Paint.ColorLine.ColorStop[0].StopOffset == 0.0
+ assert layer.Paint.ColorLine.ColorStop[0].PaletteIndex == 3
+ assert layer.Paint.ColorLine.ColorStop[1].StopOffset == 1.0
+ assert layer.Paint.ColorLine.ColorStop[1].PaletteIndex == 4
+ assert layer.Paint.x0 == 100
+ assert layer.Paint.y0 == 200
+ assert layer.Paint.x1 == 150
+ assert layer.Paint.y1 == 250
def test_buildPaintGlyph_RadialGradient():
@@ -607,7 +584,7 @@ def test_buildPaintGlyph_RadialGradient():
"pad",
[
(0.0, 5),
- {"StopOffset": 0.5, "Color": {"PaletteIndex": 6, "Alpha": 0.8}},
+ {"StopOffset": 0.5, "PaletteIndex": 6, "Alpha": 0.8},
(1.0, 7),
],
),
@@ -624,12 +601,12 @@ def test_buildPaintGlyph_RadialGradient():
assert layer.Format == ot.PaintFormat.PaintGlyph
assert layer.Paint.Format == ot.PaintFormat.PaintRadialGradient
assert layer.Paint.ColorLine.ColorStop[0].StopOffset == 0.0
- assert layer.Paint.ColorLine.ColorStop[0].Color.PaletteIndex == 5
+ assert layer.Paint.ColorLine.ColorStop[0].PaletteIndex == 5
assert layer.Paint.ColorLine.ColorStop[1].StopOffset == 0.5
- assert layer.Paint.ColorLine.ColorStop[1].Color.PaletteIndex == 6
- assert layer.Paint.ColorLine.ColorStop[1].Color.Alpha == 0.8
+ assert layer.Paint.ColorLine.ColorStop[1].PaletteIndex == 6
+ assert layer.Paint.ColorLine.ColorStop[1].Alpha == 0.8
assert layer.Paint.ColorLine.ColorStop[2].StopOffset == 1.0
- assert layer.Paint.ColorLine.ColorStop[2].Color.PaletteIndex == 7
+ assert layer.Paint.ColorLine.ColorStop[2].PaletteIndex == 7
assert layer.Paint.x0 == 50
assert layer.Paint.y0 == 50
assert layer.Paint.r0 == 30
@@ -651,7 +628,7 @@ def test_buildPaintGlyph_Dict_Solid():
assert layer.Format == ot.PaintFormat.PaintGlyph
assert layer.Glyph == "a"
assert layer.Paint.Format == ot.PaintFormat.PaintSolid
- assert layer.Paint.Color.PaletteIndex == 1
+ assert layer.Paint.PaletteIndex == 1
def test_buildPaintGlyph_Dict_VarLinearGradient():
@@ -673,7 +650,7 @@ def test_buildPaintGlyph_Dict_VarLinearGradient():
assert layer.Format == ot.PaintFormat.PaintGlyph
assert layer.Glyph == "a"
assert layer.Paint.Format == ot.PaintFormat.PaintVarLinearGradient
- assert layer.Paint.ColorLine.ColorStop[0].StopOffset.value == 0.0
+ assert layer.Paint.ColorLine.ColorStop[0].StopOffset == 0.0
def test_buildPaintGlyph_Dict_RadialGradient():
@@ -704,19 +681,21 @@ def test_buildPaintColrGlyph():
def checkBuildPaintTransform(fmt):
- if _is_var(fmt):
- inputMapFn = builder.VariableFloat
- outputMapFn = lambda v: v.value
+ variable = _is_var(fmt)
+ if variable:
affine_cls = ot.VarAffine2x3
else:
- inputMapFn = outputMapFn = lambda v: v
affine_cls = ot.Affine2x3
+ affine_src = [1, 2, 3, 4, 5, 6]
+ if variable:
+ affine_src.append(7)
+
paint = _buildPaint(
(
int(fmt),
- (ot.PaintFormat.PaintGlyph, (ot.PaintFormat.PaintSolid, (0, 1.0)), "a"),
- _build(affine_cls, (1, 2, 3, 4, 5, 6)),
+ (ot.PaintFormat.PaintGlyph, (ot.PaintFormat.PaintSolid, 0, 1.0), "a"),
+ _build(affine_cls, tuple(affine_src)),
),
)
@@ -724,18 +703,23 @@ def checkBuildPaintTransform(fmt):
assert paint.Paint.Format == ot.PaintFormat.PaintGlyph
assert paint.Paint.Paint.Format == ot.PaintFormat.PaintSolid
- assert outputMapFn(paint.Transform.xx) == 1.0
- assert outputMapFn(paint.Transform.yx) == 2.0
- assert outputMapFn(paint.Transform.xy) == 3.0
- assert outputMapFn(paint.Transform.yy) == 4.0
- assert outputMapFn(paint.Transform.dx) == 5.0
- assert outputMapFn(paint.Transform.dy) == 6.0
-
+ assert paint.Transform.xx == 1.0
+ assert paint.Transform.yx == 2.0
+ assert paint.Transform.xy == 3.0
+ assert paint.Transform.yy == 4.0
+ assert paint.Transform.dx == 5.0
+ assert paint.Transform.dy == 6.0
+ if variable:
+ assert paint.Transform.VarIndexBase == 7
+
+ affine_src = [1, 2, 3, 0.3333, 10, 10]
+ if variable:
+ affine_src.append(456) # VarIndexBase
paint = _build(
ot.Paint,
{
"Format": fmt,
- "Transform": (1, 2, 3, 0.3333, 10, 10),
+ "Transform": tuple(affine_src),
"Paint": {
"Format": int(ot.PaintFormat.PaintRadialGradient),
"ColorLine": {"ColorStop": [(0.0, 0), (1.0, 1)]},
@@ -750,12 +734,14 @@ def checkBuildPaintTransform(fmt):
)
assert paint.Format == fmt
- assert outputMapFn(paint.Transform.xx) == 1.0
- assert outputMapFn(paint.Transform.yx) == 2.0
- assert outputMapFn(paint.Transform.xy) == 3.0
- assert outputMapFn(paint.Transform.yy) == 0.3333
- assert outputMapFn(paint.Transform.dx) == 10
- assert outputMapFn(paint.Transform.dy) == 10
+ assert paint.Transform.xx == 1.0
+ assert paint.Transform.yx == 2.0
+ assert paint.Transform.xy == 3.0
+ assert paint.Transform.yy == 0.3333
+ assert paint.Transform.dx == 10
+ assert paint.Transform.dy == 10
+ if variable:
+ assert paint.Transform.VarIndexBase == 456
assert paint.Paint.Format == ot.PaintFormat.PaintRadialGradient
@@ -794,7 +780,8 @@ def test_buildPaintComposite():
"Glyph": "a",
"Paint": {
"Format": ot.PaintFormat.PaintSolid,
- "Color": (0, 1.0),
+ "PaletteIndex": 0,
+ "Alpha": 0.5,
},
},
},
@@ -805,44 +792,44 @@ def test_buildPaintComposite():
assert composite.SourcePaint.SourcePaint.Format == ot.PaintFormat.PaintGlyph
assert composite.SourcePaint.SourcePaint.Glyph == "c"
assert composite.SourcePaint.SourcePaint.Paint.Format == ot.PaintFormat.PaintSolid
- assert composite.SourcePaint.SourcePaint.Paint.Color.PaletteIndex == 2
+ assert composite.SourcePaint.SourcePaint.Paint.PaletteIndex == 2
assert composite.SourcePaint.CompositeMode == ot.CompositeMode.SRC_OVER
assert composite.SourcePaint.BackdropPaint.Format == ot.PaintFormat.PaintGlyph
assert composite.SourcePaint.BackdropPaint.Glyph == "b"
assert composite.SourcePaint.BackdropPaint.Paint.Format == ot.PaintFormat.PaintSolid
- assert composite.SourcePaint.BackdropPaint.Paint.Color.PaletteIndex == 1
+ assert composite.SourcePaint.BackdropPaint.Paint.PaletteIndex == 1
assert composite.CompositeMode == ot.CompositeMode.SRC_OVER
assert composite.BackdropPaint.Format == ot.PaintFormat.PaintGlyph
assert composite.BackdropPaint.Glyph == "a"
assert composite.BackdropPaint.Paint.Format == ot.PaintFormat.PaintSolid
- assert composite.BackdropPaint.Paint.Color.PaletteIndex == 0
+ assert composite.BackdropPaint.Paint.PaletteIndex == 0
+ assert composite.BackdropPaint.Paint.Alpha == 0.5
def checkBuildPaintTranslate(fmt):
- if _is_var(fmt):
- inputMapFn = builder.VariableInt
- outputMapFn = lambda v: v.value
- else:
- inputMapFn = outputMapFn = lambda v: v
+ variable = _is_var(fmt)
- paint = _build(
- ot.Paint,
- {
- "Format": fmt,
- "Paint": (
- ot.PaintFormat.PaintGlyph,
- (ot.PaintFormat.PaintSolid, (0, 1.0)),
- "a",
- ),
- "dx": 123,
- "dy": -345,
- },
- )
+ source = {
+ "Format": fmt,
+ "Paint": (
+ ot.PaintFormat.PaintGlyph,
+ (ot.PaintFormat.PaintSolid, 0, 1.0),
+ "a",
+ ),
+ "dx": 123,
+ "dy": -345,
+ }
+ if variable:
+ source["VarIndexBase"] = 678
+
+ paint = _build(ot.Paint, source)
assert paint.Format == fmt
assert paint.Paint.Format == ot.PaintFormat.PaintGlyph
- assert outputMapFn(paint.dx) == 123
- assert outputMapFn(paint.dy) == -345
+ assert paint.dx == 123
+ assert paint.dy == -345
+ if variable:
+ assert paint.VarIndexBase == 678
def test_buildPaintTranslate():
@@ -855,86 +842,212 @@ def test_buildPaintVarTranslate():
checkBuildPaintTranslate(ot.PaintFormat.PaintVarTranslate)
-def checkBuildPaintRotate(fmt):
- if _is_var(fmt):
- inputMapFn = builder.VariableInt
- outputMapFn = lambda v: v.value
+def checkBuildPaintScale(fmt):
+ variable = _is_var(fmt)
+ around_center = _is_around_center(fmt)
+ uniform = _is_uniform_scale(fmt)
+
+ source = {
+ "Format": fmt,
+ "Paint": (
+ ot.PaintFormat.PaintGlyph,
+ (ot.PaintFormat.PaintSolid, 0, 1.0),
+ "a",
+ ),
+ }
+ if uniform:
+ source["scale"] = 1.5
else:
- inputMapFn = outputMapFn = lambda v: v
+ source["scaleX"] = 1.0
+ source["scaleY"] = 2.0
+ if around_center:
+ source["centerX"] = 127
+ source["centerY"] = 129
+ if variable:
+ source["VarIndexBase"] = 666
- paint = _build(
- ot.Paint,
- {
- "Format": fmt,
- "Paint": (
- ot.PaintFormat.PaintGlyph,
- (ot.PaintFormat.PaintSolid, (0, 1.0)),
- "a",
- ),
- "angle": 15,
- "centerX": 127,
- "centerY": 129,
- },
- )
+ paint = _build(ot.Paint, source)
+
+ assert paint.Format == fmt
+ assert paint.Paint.Format == ot.PaintFormat.PaintGlyph
+ if uniform:
+ assert paint.scale == 1.5
+ else:
+ assert paint.scaleX == 1.0
+ assert paint.scaleY == 2.0
+ if around_center:
+ assert paint.centerX == 127
+ assert paint.centerY == 129
+ if variable:
+ assert paint.VarIndexBase == 666
+
+
+def test_buildPaintScale():
+ assert not _is_var(ot.PaintFormat.PaintScale)
+ assert not _is_uniform_scale(ot.PaintFormat.PaintScale)
+ assert not _is_around_center(ot.PaintFormat.PaintScale)
+ checkBuildPaintScale(ot.PaintFormat.PaintScale)
+
+
+def test_buildPaintVarScale():
+ assert _is_var(ot.PaintFormat.PaintVarScale)
+ assert not _is_uniform_scale(ot.PaintFormat.PaintVarScale)
+ assert not _is_around_center(ot.PaintFormat.PaintVarScale)
+ checkBuildPaintScale(ot.PaintFormat.PaintVarScale)
+
+
+def test_buildPaintScaleAroundCenter():
+ assert not _is_var(ot.PaintFormat.PaintScaleAroundCenter)
+ assert not _is_uniform_scale(ot.PaintFormat.PaintScaleAroundCenter)
+ assert _is_around_center(ot.PaintFormat.PaintScaleAroundCenter)
+ checkBuildPaintScale(ot.PaintFormat.PaintScaleAroundCenter)
+
+
+def test_buildPaintVarScaleAroundCenter():
+ assert _is_var(ot.PaintFormat.PaintVarScaleAroundCenter)
+ assert not _is_uniform_scale(ot.PaintFormat.PaintScaleAroundCenter)
+ assert _is_around_center(ot.PaintFormat.PaintVarScaleAroundCenter)
+ checkBuildPaintScale(ot.PaintFormat.PaintVarScaleAroundCenter)
+
+
+def test_buildPaintScaleUniform():
+ assert not _is_var(ot.PaintFormat.PaintScaleUniform)
+ assert _is_uniform_scale(ot.PaintFormat.PaintScaleUniform)
+ assert not _is_around_center(ot.PaintFormat.PaintScaleUniform)
+ checkBuildPaintScale(ot.PaintFormat.PaintScaleUniform)
+
+
+def test_buildPaintVarScaleUniform():
+ assert _is_var(ot.PaintFormat.PaintVarScaleUniform)
+ assert _is_uniform_scale(ot.PaintFormat.PaintVarScaleUniform)
+ assert not _is_around_center(ot.PaintFormat.PaintVarScaleUniform)
+ checkBuildPaintScale(ot.PaintFormat.PaintVarScaleUniform)
+
+
+def test_buildPaintScaleUniformAroundCenter():
+ assert not _is_var(ot.PaintFormat.PaintScaleUniformAroundCenter)
+ assert _is_uniform_scale(ot.PaintFormat.PaintScaleUniformAroundCenter)
+ assert _is_around_center(ot.PaintFormat.PaintScaleUniformAroundCenter)
+ checkBuildPaintScale(ot.PaintFormat.PaintScaleUniformAroundCenter)
+
+
+def test_buildPaintVarScaleUniformAroundCenter():
+ assert _is_var(ot.PaintFormat.PaintVarScaleUniformAroundCenter)
+ assert _is_uniform_scale(ot.PaintFormat.PaintVarScaleUniformAroundCenter)
+ assert _is_around_center(ot.PaintFormat.PaintVarScaleUniformAroundCenter)
+ checkBuildPaintScale(ot.PaintFormat.PaintVarScaleUniformAroundCenter)
+
+
+def checkBuildPaintRotate(fmt):
+ variable = _is_var(fmt)
+ around_center = _is_around_center(fmt)
+
+ source = {
+ "Format": fmt,
+ "Paint": (
+ ot.PaintFormat.PaintGlyph,
+ (ot.PaintFormat.PaintSolid, 0, 1.0),
+ "a",
+ ),
+ "angle": 15,
+ }
+ if around_center:
+ source["centerX"] = 127
+ source["centerY"] = 129
+
+ paint = _build(ot.Paint, source)
assert paint.Format == fmt
assert paint.Paint.Format == ot.PaintFormat.PaintGlyph
- assert outputMapFn(paint.angle) == 15
- assert outputMapFn(paint.centerX) == 127
- assert outputMapFn(paint.centerY) == 129
+ assert paint.angle == 15
+ if around_center:
+ assert paint.centerX == 127
+ assert paint.centerY == 129
+ if variable:
+ assert paint.VarIndexBase == 0xFFFFFFFF
def test_buildPaintRotate():
assert not _is_var(ot.PaintFormat.PaintRotate)
+ assert not _is_around_center(ot.PaintFormat.PaintRotate)
checkBuildPaintRotate(ot.PaintFormat.PaintRotate)
def test_buildPaintVarRotate():
assert _is_var(ot.PaintFormat.PaintVarRotate)
+ assert not _is_around_center(ot.PaintFormat.PaintVarRotate)
checkBuildPaintRotate(ot.PaintFormat.PaintVarRotate)
+def test_buildPaintRotateAroundCenter():
+ assert not _is_var(ot.PaintFormat.PaintRotateAroundCenter)
+ assert _is_around_center(ot.PaintFormat.PaintRotateAroundCenter)
+ checkBuildPaintRotate(ot.PaintFormat.PaintRotateAroundCenter)
+
+
+def test_buildPaintVarRotateAroundCenter():
+ assert _is_var(ot.PaintFormat.PaintVarRotateAroundCenter)
+ assert _is_around_center(ot.PaintFormat.PaintVarRotateAroundCenter)
+ checkBuildPaintRotate(ot.PaintFormat.PaintVarRotateAroundCenter)
+
+
def checkBuildPaintSkew(fmt):
- if _is_var(fmt):
- inputMapFn = builder.VariableInt
- outputMapFn = lambda v: v.value
- else:
- inputMapFn = outputMapFn = lambda v: v
+ variable = _is_var(fmt)
+ around_center = _is_around_center(fmt)
- paint = _build(
- ot.Paint,
- {
- "Format": fmt,
- "Paint": (
- ot.PaintFormat.PaintGlyph,
- (ot.PaintFormat.PaintSolid, (0, 1.0)),
- "a",
- ),
- "xSkewAngle": 15,
- "ySkewAngle": 42,
- "centerX": 127,
- "centerY": 129,
- },
- )
+ source = {
+ "Format": fmt,
+ "Paint": (
+ ot.PaintFormat.PaintGlyph,
+ (ot.PaintFormat.PaintSolid, 0, 1.0),
+ "a",
+ ),
+ "xSkewAngle": 15,
+ "ySkewAngle": 42,
+ }
+ if around_center:
+ source["centerX"] = 127
+ source["centerY"] = 129
+ if variable:
+ source["VarIndexBase"] = 0
+
+ paint = _build(ot.Paint, source)
assert paint.Format == fmt
assert paint.Paint.Format == ot.PaintFormat.PaintGlyph
- assert outputMapFn(paint.xSkewAngle) == 15
- assert outputMapFn(paint.ySkewAngle) == 42
- assert outputMapFn(paint.centerX) == 127
- assert outputMapFn(paint.centerY) == 129
+ assert paint.xSkewAngle == 15
+ assert paint.ySkewAngle == 42
+ if around_center:
+ assert paint.centerX == 127
+ assert paint.centerY == 129
+ if variable:
+ assert paint.VarIndexBase == 0
def test_buildPaintSkew():
assert not _is_var(ot.PaintFormat.PaintSkew)
+ assert not _is_around_center(ot.PaintFormat.PaintSkew)
checkBuildPaintSkew(ot.PaintFormat.PaintSkew)
def test_buildPaintVarSkew():
assert _is_var(ot.PaintFormat.PaintVarSkew)
+ assert not _is_around_center(ot.PaintFormat.PaintVarSkew)
checkBuildPaintSkew(ot.PaintFormat.PaintVarSkew)
+def test_buildPaintSkewAroundCenter():
+ assert not _is_var(ot.PaintFormat.PaintSkewAroundCenter)
+ assert _is_around_center(ot.PaintFormat.PaintSkewAroundCenter)
+ checkBuildPaintSkew(ot.PaintFormat.PaintSkewAroundCenter)
+
+
+def test_buildPaintVarSkewAroundCenter():
+ assert _is_var(ot.PaintFormat.PaintVarSkewAroundCenter)
+ assert _is_around_center(ot.PaintFormat.PaintVarSkewAroundCenter)
+ checkBuildPaintSkew(ot.PaintFormat.PaintVarSkewAroundCenter)
+
+
def test_buildColrV1():
colorGlyphs = {
"a": (
@@ -951,7 +1064,8 @@ def test_buildColrV1():
ot.PaintFormat.PaintGlyph,
{
"Format": int(ot.PaintFormat.PaintSolid),
- "Color": {"PaletteIndex": 2, "Alpha": 0.8},
+ "PaletteIndex": 2,
+ "Alpha": 0.8,
},
"e",
),
@@ -994,15 +1108,15 @@ def test_buildColrV1():
# TODO(anthrotype) should we split into two tests? - seems two distinct validations
layers, baseGlyphs = builder.buildColrV1(colorGlyphs, glyphMap)
assert baseGlyphs.BaseGlyphCount == len(colorGlyphs)
- assert baseGlyphs.BaseGlyphV1Record[0].BaseGlyph == "d"
- assert baseGlyphs.BaseGlyphV1Record[1].BaseGlyph == "a"
- assert baseGlyphs.BaseGlyphV1Record[2].BaseGlyph == "g"
+ assert baseGlyphs.BaseGlyphPaintRecord[0].BaseGlyph == "d"
+ assert baseGlyphs.BaseGlyphPaintRecord[1].BaseGlyph == "a"
+ assert baseGlyphs.BaseGlyphPaintRecord[2].BaseGlyph == "g"
layers, baseGlyphs = builder.buildColrV1(colorGlyphs)
assert baseGlyphs.BaseGlyphCount == len(colorGlyphs)
- assert baseGlyphs.BaseGlyphV1Record[0].BaseGlyph == "a"
- assert baseGlyphs.BaseGlyphV1Record[1].BaseGlyph == "d"
- assert baseGlyphs.BaseGlyphV1Record[2].BaseGlyph == "g"
+ assert baseGlyphs.BaseGlyphPaintRecord[0].BaseGlyph == "a"
+ assert baseGlyphs.BaseGlyphPaintRecord[1].BaseGlyph == "d"
+ assert baseGlyphs.BaseGlyphPaintRecord[2].BaseGlyph == "g"
def test_buildColrV1_more_than_255_paints():
@@ -1037,16 +1151,17 @@ def test_buildColrV1_more_than_255_paints():
)
assert baseGlyphs.BaseGlyphCount == len(colorGlyphs)
- assert baseGlyphs.BaseGlyphV1Record[0].BaseGlyph == "a"
+ assert baseGlyphs.BaseGlyphPaintRecord[0].BaseGlyph == "a"
assert (
- baseGlyphs.BaseGlyphV1Record[0].Paint.Format == ot.PaintFormat.PaintColrLayers
+ baseGlyphs.BaseGlyphPaintRecord[0].Paint.Format
+ == ot.PaintFormat.PaintColrLayers
)
- assert baseGlyphs.BaseGlyphV1Record[0].Paint.FirstLayerIndex == 255
- assert baseGlyphs.BaseGlyphV1Record[0].Paint.NumLayers == num_paints + 1 - 255
+ assert baseGlyphs.BaseGlyphPaintRecord[0].Paint.FirstLayerIndex == 255
+ assert baseGlyphs.BaseGlyphPaintRecord[0].Paint.NumLayers == num_paints + 1 - 255
def test_split_color_glyphs_by_version():
- layerBuilder = LayerV1ListBuilder()
+ layerBuilder = LayerListBuilder()
colorGlyphs = {
"a": [
("b", 0),
@@ -1113,7 +1228,7 @@ def test_build_layerv1list_empty():
# BaseGlyph, tuple form
"a": (
int(ot.PaintFormat.PaintGlyph),
- (2, (2, 0.8)),
+ (int(ot.PaintFormat.PaintSolid), 2, 0.8),
"b",
),
# BaseGlyph, map form
@@ -1141,16 +1256,15 @@ def test_build_layerv1list_empty():
assertIsColrV1(colr)
assertNoV0Content(colr)
- # 2 v1 glyphs, none in LayerV1List
- assert colr.table.BaseGlyphV1List.BaseGlyphCount == 2
- assert len(colr.table.BaseGlyphV1List.BaseGlyphV1Record) == 2
- assert colr.table.LayerV1List.LayerCount == 0
- assert len(colr.table.LayerV1List.Paint) == 0
+ # 2 v1 glyphs, none in LayerList
+ assert colr.table.BaseGlyphList.BaseGlyphCount == 2
+ assert len(colr.table.BaseGlyphList.BaseGlyphPaintRecord) == 2
+ assert colr.table.LayerList is None
def _paint_names(paints) -> List[str]:
# prints a predictable string from a paint list to enable
- # semi-readable assertions on a LayerV1List order.
+ # semi-readable assertions on a LayerList order.
result = []
for paint in paints:
if paint.Format == int(ot.PaintFormat.PaintGlyph):
@@ -1165,7 +1279,11 @@ def _paint_names(paints) -> List[str]:
def test_build_layerv1list_simple():
# Two colr glyphs, each with two layers the first of which is common
# All layers use the same solid paint
- solid_paint = {"Format": 2, "Color": {"PaletteIndex": 2, "Alpha": 0.8}}
+ solid_paint = {
+ "Format": int(ot.PaintFormat.PaintSolid),
+ "PaletteIndex": 2,
+ "Alpha": 0.8,
+ }
backdrop = {
"Format": int(ot.PaintFormat.PaintGlyph),
"Paint": solid_paint,
@@ -1182,7 +1300,7 @@ def test_build_layerv1list_simple():
"Glyph": "b_fore",
}
- # list => PaintColrLayers, contents should land in LayerV1List
+ # list => PaintColrLayers, contents should land in LayerList
colr = builder.buildCOLR(
{
"a": (
@@ -1206,12 +1324,12 @@ def test_build_layerv1list_simple():
assertIsColrV1(colr)
assertNoV0Content(colr)
- # 2 v1 glyphs, 4 paints in LayerV1List
+ # 2 v1 glyphs, 4 paints in LayerList
# A single shared backdrop isn't worth accessing by slice
- assert colr.table.BaseGlyphV1List.BaseGlyphCount == 2
- assert len(colr.table.BaseGlyphV1List.BaseGlyphV1Record) == 2
- assert colr.table.LayerV1List.LayerCount == 4
- assert _paint_names(colr.table.LayerV1List.Paint) == [
+ assert colr.table.BaseGlyphList.BaseGlyphCount == 2
+ assert len(colr.table.BaseGlyphList.BaseGlyphPaintRecord) == 2
+ assert colr.table.LayerList.LayerCount == 4
+ assert _paint_names(colr.table.LayerList.Paint) == [
"back",
"a_fore",
"back",
@@ -1221,7 +1339,11 @@ def test_build_layerv1list_simple():
def test_build_layerv1list_with_sharing():
# Three colr glyphs, each with two layers in common
- solid_paint = {"Format": 2, "Color": (2, 0.8)}
+ solid_paint = {
+ "Format": int(ot.PaintFormat.PaintSolid),
+ "PaletteIndex": 2,
+ "Alpha": 0.8,
+ }
backdrop = [
{
"Format": int(ot.PaintFormat.PaintGlyph),
@@ -1255,7 +1377,7 @@ def test_build_layerv1list_with_sharing():
"Glyph": "c_back",
}
- # list => PaintColrLayers, which means contents should be in LayerV1List
+ # list => PaintColrLayers, which means contents should be in LayerList
colr = builder.buildCOLR(
{
"a": (ot.PaintFormat.PaintColrLayers, backdrop + [a_foreground]),
@@ -1271,17 +1393,17 @@ def test_build_layerv1list_with_sharing():
assertIsColrV1(colr)
assertNoV0Content(colr)
- # 2 v1 glyphs, 4 paints in LayerV1List
+ # 2 v1 glyphs, 4 paints in LayerList
# A single shared backdrop isn't worth accessing by slice
- baseGlyphs = colr.table.BaseGlyphV1List.BaseGlyphV1Record
- assert colr.table.BaseGlyphV1List.BaseGlyphCount == 3
+ baseGlyphs = colr.table.BaseGlyphList.BaseGlyphPaintRecord
+ assert colr.table.BaseGlyphList.BaseGlyphCount == 3
assert len(baseGlyphs) == 3
assert _paint_names([b.Paint for b in baseGlyphs]) == [
"Layers[0:3]",
"Layers[3:6]",
"Layers[6:8]",
]
- assert _paint_names(colr.table.LayerV1List.Paint) == [
+ assert _paint_names(colr.table.LayerList.Paint) == [
"back1",
"back2",
"a_fore",
@@ -1291,7 +1413,7 @@ def test_build_layerv1list_with_sharing():
"c_back",
"Layers[0:2]",
]
- assert colr.table.LayerV1List.LayerCount == 8
+ assert colr.table.LayerList.LayerCount == 8
def test_build_layerv1list_with_overlaps():
@@ -1300,14 +1422,15 @@ def test_build_layerv1list_with_overlaps():
"Format": ot.PaintFormat.PaintGlyph,
"Paint": {
"Format": ot.PaintFormat.PaintSolid,
- "Color": {"PaletteIndex": 2, "Alpha": 0.8},
+ "PaletteIndex": 2,
+ "Alpha": 0.8,
},
"Glyph": c,
}
for c in "abcdefghi"
]
- # list => PaintColrLayers, which means contents should be in LayerV1List
+ # list => PaintColrLayers, which means contents should be in LayerList
colr = builder.buildCOLR(
{
"a": (ot.PaintFormat.PaintColrLayers, paints[0:4]),
@@ -1320,10 +1443,10 @@ def test_build_layerv1list_with_overlaps():
assertIsColrV1(colr)
assertNoV0Content(colr)
- baseGlyphs = colr.table.BaseGlyphV1List.BaseGlyphV1Record
- # assert colr.table.BaseGlyphV1List.BaseGlyphCount == 2
+ baseGlyphs = colr.table.BaseGlyphList.BaseGlyphPaintRecord
+ # assert colr.table.BaseGlyphList.BaseGlyphCount == 2
- assert _paint_names(colr.table.LayerV1List.Paint) == [
+ assert _paint_names(colr.table.LayerList.Paint) == [
"a",
"b",
"c",
@@ -1341,7 +1464,7 @@ def test_build_layerv1list_with_overlaps():
"Layers[4:7]",
"Layers[7:11]",
]
- assert colr.table.LayerV1List.LayerCount == 11
+ assert colr.table.LayerList.LayerCount == 11
def test_explicit_version_1():
@@ -1397,7 +1520,11 @@ class BuildCOLRTest(object):
),
(
ot.PaintFormat.PaintGlyph,
- {"Format": 2, "Color": {"PaletteIndex": 2, "Alpha": 0.8}},
+ {
+ "Format": ot.PaintFormat.PaintSolid,
+ "PaletteIndex": 2,
+ "Alpha": 0.8,
+ },
"c",
),
],
@@ -1455,7 +1582,7 @@ class BuildCOLRTest(object):
),
(
ot.PaintFormat.PaintGlyph,
- (ot.PaintFormat.PaintSolid, (2, 0.8)),
+ (ot.PaintFormat.PaintSolid, 2, 0.8),
"f",
),
],
@@ -1470,14 +1597,14 @@ class BuildCOLRTest(object):
assert colr.table.LayerRecordCount == 2
assert isinstance(colr.table.LayerRecordArray, ot.LayerRecordArray)
- assert isinstance(colr.table.BaseGlyphV1List, ot.BaseGlyphV1List)
- assert colr.table.BaseGlyphV1List.BaseGlyphCount == 1
+ assert isinstance(colr.table.BaseGlyphList, ot.BaseGlyphList)
+ assert colr.table.BaseGlyphList.BaseGlyphCount == 1
assert isinstance(
- colr.table.BaseGlyphV1List.BaseGlyphV1Record[0], ot.BaseGlyphV1Record
+ colr.table.BaseGlyphList.BaseGlyphPaintRecord[0], ot.BaseGlyphPaintRecord
)
- assert colr.table.BaseGlyphV1List.BaseGlyphV1Record[0].BaseGlyph == "d"
- assert isinstance(colr.table.LayerV1List, ot.LayerV1List)
- assert colr.table.LayerV1List.Paint[0].Glyph == "e"
+ assert colr.table.BaseGlyphList.BaseGlyphPaintRecord[0].BaseGlyph == "d"
+ assert isinstance(colr.table.LayerList, ot.LayerList)
+ assert colr.table.LayerList.Paint[0].Glyph == "e"
def test_explicit_version_0(self):
colr = builder.buildCOLR({"a": [("b", 0), ("c", 1)]}, version=0)
@@ -1528,12 +1655,71 @@ class BuildCOLRTest(object):
},
)
- assert len(colr.table.LayerV1List.Paint) == 0, "PaintColrLayers should be gone"
- assert colr.table.BaseGlyphV1List.BaseGlyphCount == 1
- paint = colr.table.BaseGlyphV1List.BaseGlyphV1Record[0].Paint
+ assert colr.table.LayerList is None, "PaintColrLayers should be gone"
+ assert colr.table.BaseGlyphList.BaseGlyphCount == 1
+ paint = colr.table.BaseGlyphList.BaseGlyphPaintRecord[0].Paint
assert paint.Format == ot.PaintFormat.PaintGlyph
assert paint.Paint.Format == ot.PaintFormat.PaintSolid
+ def test_build_clip_list(self):
+ colr = builder.buildCOLR(
+ {
+ "a": (
+ ot.PaintFormat.PaintGlyph,
+ (ot.PaintFormat.PaintSolid, 0),
+ "b",
+ ),
+ "c": (
+ ot.PaintFormat.PaintGlyph,
+ (ot.PaintFormat.PaintSolid, 1),
+ "d",
+ ),
+ },
+ clipBoxes={
+ "a": (0, 0, 1000, 1000, 0), # optional 5th: varIndexBase
+ "c": (-100.8, -200.4, 1100.1, 1200.5), # floats get rounded
+ "e": (0, 0, 10, 10), # missing base glyph 'e' is ignored
+ },
+ )
+
+ assert colr.table.ClipList.Format == 1
+ clipBoxes = colr.table.ClipList.clips
+ assert [
+ (baseGlyph, clipBox.as_tuple()) for baseGlyph, clipBox in clipBoxes.items()
+ ] == [
+ ("a", (0, 0, 1000, 1000, 0)),
+ ("c", (-101, -201, 1101, 1201)),
+ ]
+ assert clipBoxes["a"].Format == 2
+ assert clipBoxes["c"].Format == 1
+
+ def test_duplicate_base_glyphs(self):
+ # If > 1 base glyphs refer to equivalent list of layers we expect them to share
+ # the same PaintColrLayers.
+ layers = {
+ "Format": ot.PaintFormat.PaintColrLayers,
+ "Layers": [
+ (ot.PaintFormat.PaintGlyph, (ot.PaintFormat.PaintSolid, 0), "d"),
+ (ot.PaintFormat.PaintGlyph, (ot.PaintFormat.PaintSolid, 1), "e"),
+ ],
+ }
+ # I copy the layers to ensure equality is by content, not by identity
+ colr = builder.buildCOLR(
+ {"a": layers, "b": deepcopy(layers), "c": deepcopy(layers)}
+ ).table
+
+ baseGlyphs = colr.BaseGlyphList.BaseGlyphPaintRecord
+ assert len(baseGlyphs) == 3
+
+ assert baseGlyphs[0].BaseGlyph == "a"
+ assert baseGlyphs[1].BaseGlyph == "b"
+ assert baseGlyphs[2].BaseGlyph == "c"
+
+ expected = {"Format": 1, "FirstLayerIndex": 0, "NumLayers": 2}
+ assert baseGlyphs[0].Paint.__dict__ == expected
+ assert baseGlyphs[1].Paint.__dict__ == expected
+ assert baseGlyphs[2].Paint.__dict__ == expected
+
class TrickyRadialGradientTest:
@staticmethod
@@ -1561,6 +1747,16 @@ class TrickyRadialGradientTest:
r1 = 260.0072
assert self.round_start_circle(c0, r0, c1, r1, inside=True) == ((386, 71), 0)
+ def test_noto_emoji_horns_sign_u1f918_1f3fc(self):
+ # This radial gradient is taken from noto-emoji's 'SIGNS OF THE HORNS'
+ # (1f918_1f3fc). We check that c0 is inside c1 both before and after rounding.
+ c0 = (-437.6789059060543, -2116.9237094478003)
+ r0 = 0.0
+ c1 = (-488.7330118252256, -1876.5036857045086)
+ r1 = 245.77147821915673
+ assert self.circle_inside_circle(c0, r0, c1, r1)
+ assert self.circle_inside_circle(c0, r0, c1, r1, rounded=True)
+
@pytest.mark.parametrize(
"c0, r0, c1, r1, inside, expected",
[
diff --git a/Tests/colorLib/unbuilder_test.py b/Tests/colorLib/unbuilder_test.py
index 81169e03..35489680 100644
--- a/Tests/colorLib/unbuilder_test.py
+++ b/Tests/colorLib/unbuilder_test.py
@@ -12,7 +12,8 @@ TEST_COLOR_GLYPHS = {
"Format": int(ot.PaintFormat.PaintGlyph),
"Paint": {
"Format": int(ot.PaintFormat.PaintSolid),
- "Color": {"PaletteIndex": 2, "Alpha": 0.5},
+ "PaletteIndex": 2,
+ "Alpha": 0.5,
},
"Glyph": "glyph00011",
},
@@ -24,25 +25,32 @@ TEST_COLOR_GLYPHS = {
"Extend": "repeat",
"ColorStop": [
{
- "StopOffset": (0.0, 0),
- "Color": {"PaletteIndex": 3, "Alpha": (1.0, 0)},
+ "StopOffset": 0.0,
+ "PaletteIndex": 3,
+ "Alpha": 1.0,
+ "VarIndexBase": 0,
},
{
- "StopOffset": (0.5, 0),
- "Color": {"PaletteIndex": 4, "Alpha": (1.0, 0)},
+ "StopOffset": 0.5,
+ "PaletteIndex": 4,
+ "Alpha": 1.0,
+ "VarIndexBase": 1,
},
{
- "StopOffset": (1.0, 0),
- "Color": {"PaletteIndex": 5, "Alpha": (1.0, 0)},
+ "StopOffset": 1.0,
+ "PaletteIndex": 5,
+ "Alpha": 1.0,
+ "VarIndexBase": 2,
},
],
},
- "x0": (1, 0),
- "y0": (2, 0),
- "x1": (-3, 0),
- "y1": (-4, 0),
- "x2": (5, 0),
- "y2": (6, 0),
+ "x0": 1,
+ "y0": 2,
+ "x1": -3,
+ "y1": -4,
+ "x2": 5,
+ "y2": 6,
+ "VarIndexBase": 0xFFFFFFFF,
},
"Glyph": "glyph00012",
},
@@ -57,11 +65,13 @@ TEST_COLOR_GLYPHS = {
"ColorStop": [
{
"StopOffset": 0,
- "Color": {"PaletteIndex": 6, "Alpha": 1.0},
+ "PaletteIndex": 6,
+ "Alpha": 1.0,
},
{
"StopOffset": 1.0,
- "Color": {"PaletteIndex": 7, "Alpha": 0.4},
+ "PaletteIndex": 7,
+ "Alpha": 0.4,
},
],
},
@@ -73,12 +83,13 @@ TEST_COLOR_GLYPHS = {
"r1": 12,
},
"Transform": {
- "xx": (-13.0, 0),
- "yx": (14.0, 0),
- "xy": (15.0, 0),
- "yy": (-17.0, 0),
- "dx": (18.0, 0),
- "dy": (19.0, 0),
+ "xx": -13.0,
+ "yx": 14.0,
+ "xy": 15.0,
+ "yy": -17.0,
+ "dx": 18.0,
+ "dy": 19.0,
+ "VarIndexBase": 3,
},
},
"Glyph": "glyph00013",
@@ -93,21 +104,20 @@ TEST_COLOR_GLYPHS = {
"Format": int(ot.PaintFormat.PaintGlyph),
"Paint": {
"Format": int(ot.PaintFormat.PaintSolid),
- "Color": {"PaletteIndex": 2, "Alpha": 0.5},
+ "PaletteIndex": 2,
+ "Alpha": 0.5,
},
"Glyph": "glyph00011",
},
- "xSkewAngle": (-11.0, 0),
- "ySkewAngle": (5.0, 0),
- "centerX": (253.0, 0),
- "centerY": (254.0, 0),
+ "xSkewAngle": -11.0,
+ "ySkewAngle": 5.0,
+ "VarIndexBase": 4,
},
"angle": 45.0,
- "centerX": 255.0,
- "centerY": 256.0,
},
- "dx": (257.0, 0),
- "dy": (258.0, 0),
+ "dx": 257.0,
+ "dy": 258.0,
+ "VarIndexBase": 5,
},
],
},
@@ -143,11 +153,13 @@ TEST_COLOR_GLYPHS = {
"ColorStop": [
{
"StopOffset": 0.0,
- "Color": {"PaletteIndex": 3, "Alpha": 1.0},
+ "PaletteIndex": 3,
+ "Alpha": 1.0,
},
{
"StopOffset": 1.0,
- "Color": {"PaletteIndex": 5, "Alpha": 1.0},
+ "PaletteIndex": 5,
+ "Alpha": 1.0,
},
],
},
@@ -165,7 +177,9 @@ TEST_COLOR_GLYPHS = {
"Format": int(ot.PaintFormat.PaintGlyph),
"Paint": {
"Format": int(ot.PaintFormat.PaintVarSolid),
- "Color": {"PaletteIndex": 2, "Alpha": (0.5, 0)},
+ "PaletteIndex": 2,
+ "Alpha": 0.5,
+ "VarIndexBase": 6,
},
"Glyph": "glyph00011",
},
@@ -177,34 +191,46 @@ TEST_COLOR_GLYPHS = {
"Extend": "repeat",
"ColorStop": [
{
- "StopOffset": (0.0, 0),
- "Color": {"PaletteIndex": 3, "Alpha": (1.0, 0)},
+ "StopOffset": 0.0,
+ "PaletteIndex": 3,
+ "Alpha": 1.0,
+ "VarIndexBase": 7,
},
{
- "StopOffset": (0.5, 0),
- "Color": {"PaletteIndex": 4, "Alpha": (1.0, 0)},
+ "StopOffset": 0.5,
+ "PaletteIndex": 4,
+ "Alpha": 1.0,
+ "VarIndexBase": 8,
},
{
- "StopOffset": (1.0, 0),
- "Color": {"PaletteIndex": 5, "Alpha": (1.0, 0)},
+ "StopOffset": 1.0,
+ "PaletteIndex": 5,
+ "Alpha": 1.0,
+ "VarIndexBase": 9,
},
],
},
- "x0": (1, 0),
- "y0": (2, 0),
- "x1": (-3, 0),
- "y1": (-4, 0),
- "x2": (5, 0),
- "y2": (6, 0),
+ "x0": 1,
+ "y0": 2,
+ "x1": -3,
+ "y1": -4,
+ "x2": 5,
+ "y2": 6,
+ "VarIndexBase": 0xFFFFFFFF,
},
"Glyph": "glyph00012",
},
],
- },
+ }
}
def test_unbuildColrV1():
- layersV1, baseGlyphsV1 = buildColrV1(TEST_COLOR_GLYPHS)
- colorGlyphs = unbuildColrV1(layersV1, baseGlyphsV1)
+ layers, baseGlyphs = buildColrV1(TEST_COLOR_GLYPHS)
+ colorGlyphs = unbuildColrV1(layers, baseGlyphs)
assert colorGlyphs == TEST_COLOR_GLYPHS
+
+def test_unbuildColrV1_noLayers():
+ _, baseGlyphsV1 = buildColrV1(TEST_COLOR_GLYPHS)
+ # Just looking to see we don't crash
+ unbuildColrV1(None, baseGlyphsV1) \ No newline at end of file
diff --git a/Tests/designspaceLib/designspace_test.py b/Tests/designspaceLib/designspace_test.py
index 8daf741d..b6ee9d65 100644
--- a/Tests/designspaceLib/designspace_test.py
+++ b/Tests/designspaceLib/designspace_test.py
@@ -830,7 +830,6 @@ def test_updatePaths(tmpdir):
assert s1.filename == name2
-@pytest.mark.skipif(sys.version_info[:2] < (3, 6), reason="pathlib is only tested on 3.6 and up")
def test_read_with_path_object():
import pathlib
source = (pathlib.Path(__file__) / "../data/test.designspace").resolve()
@@ -839,7 +838,6 @@ def test_read_with_path_object():
doc.read(source)
-@pytest.mark.skipif(sys.version_info[:2] < (3, 6), reason="pathlib is only tested on 3.6 and up")
def test_with_with_path_object(tmpdir):
import pathlib
tmpdir = str(tmpdir)
diff --git a/Tests/feaLib/builder_test.py b/Tests/feaLib/builder_test.py
index 0a55239c..5c298e85 100644
--- a/Tests/feaLib/builder_test.py
+++ b/Tests/feaLib/builder_test.py
@@ -1,11 +1,15 @@
from fontTools.misc.loggingTools import CapturingLogHandler
-from fontTools.feaLib.builder import Builder, addOpenTypeFeatures, \
- addOpenTypeFeaturesFromString
+from fontTools.feaLib.builder import (
+ Builder,
+ addOpenTypeFeatures,
+ addOpenTypeFeaturesFromString,
+)
from fontTools.feaLib.error import FeatureLibError
-from fontTools.ttLib import TTFont
+from fontTools.ttLib import TTFont, newTable
from fontTools.feaLib.parser import Parser
from fontTools.feaLib import ast
from fontTools.feaLib.lexer import Lexer
+from fontTools.fontBuilder import addFvar
import difflib
from io import StringIO
import os
@@ -65,7 +69,7 @@ class BuilderTest(unittest.TestCase):
spec9a spec9b spec9c1 spec9c2 spec9c3 spec9d spec9e spec9f spec9g
spec10
bug453 bug457 bug463 bug501 bug502 bug504 bug505 bug506 bug509
- bug512 bug514 bug568 bug633 bug1307 bug1459
+ bug512 bug514 bug568 bug633 bug1307 bug1459 bug2276
name size size2 multiple_feature_blocks omitted_GlyphClassDef
ZeroValue_SinglePos_horizontal ZeroValue_SinglePos_vertical
ZeroValue_PairPos_horizontal ZeroValue_PairPos_vertical
@@ -75,8 +79,14 @@ class BuilderTest(unittest.TestCase):
SingleSubstSubtable aalt_chain_contextual_subst AlternateChained
MultipleLookupsPerGlyph MultipleLookupsPerGlyph2 GSUB_6_formats
GSUB_5_formats delete_glyph STAT_test STAT_test_elidedFallbackNameID
+ variable_scalar_valuerecord variable_scalar_anchor variable_conditionset
""".split()
+ VARFONT_AXES = [
+ ("wght", 200, 200, 1000, "Weight"),
+ ("wdth", 100, 100, 200, "Width"),
+ ]
+
def __init__(self, methodName):
unittest.TestCase.__init__(self, methodName)
# Python 3 renamed assertRaisesRegexp to assertRaisesRegex,
@@ -101,25 +111,36 @@ class BuilderTest(unittest.TestCase):
if not self.tempdir:
self.tempdir = tempfile.mkdtemp()
self.num_tempfiles += 1
- return os.path.join(self.tempdir,
- "tmp%d%s" % (self.num_tempfiles, suffix))
+ return os.path.join(self.tempdir, "tmp%d%s" % (self.num_tempfiles, suffix))
def read_ttx(self, path):
lines = []
with open(path, "r", encoding="utf-8") as ttx:
for line in ttx.readlines():
- # Elide ttFont attributes because ttLibVersion may change,
- # and use os-native line separators so we can run difflib.
+ # Elide ttFont attributes because ttLibVersion may change.
if line.startswith("<ttFont "):
- lines.append("<ttFont>" + os.linesep)
+ lines.append("<ttFont>\n")
else:
- lines.append(line.rstrip() + os.linesep)
+ lines.append(line.rstrip() + "\n")
return lines
def expect_ttx(self, font, expected_ttx, replace=None):
path = self.temp_path(suffix=".ttx")
- font.saveXML(path, tables=['head', 'name', 'BASE', 'GDEF', 'GSUB',
- 'GPOS', 'OS/2', 'STAT', 'hhea', 'vhea'])
+ font.saveXML(
+ path,
+ tables=[
+ "head",
+ "name",
+ "BASE",
+ "GDEF",
+ "GSUB",
+ "GPOS",
+ "OS/2",
+ "STAT",
+ "hhea",
+ "vhea",
+ ],
+ )
actual = self.read_ttx(path)
expected = self.read_ttx(expected_ttx)
if replace:
@@ -128,7 +149,8 @@ class BuilderTest(unittest.TestCase):
expected[i] = expected[i].replace(k, v)
if actual != expected:
for line in difflib.unified_diff(
- expected, actual, fromfile=expected_ttx, tofile=path):
+ expected, actual, fromfile=expected_ttx, tofile=path
+ ):
sys.stderr.write(line)
self.fail("TTX output is different from expected")
@@ -139,13 +161,17 @@ class BuilderTest(unittest.TestCase):
def check_feature_file(self, name):
font = makeTTFont()
+ if name.startswith("variable_"):
+ font["name"] = newTable("name")
+ addFvar(font, self.VARFONT_AXES, [])
+ del font["name"]
feapath = self.getpath("%s.fea" % name)
addOpenTypeFeatures(font, feapath)
self.expect_ttx(font, self.getpath("%s.ttx" % name))
# Check that:
# 1) tables do compile (only G* tables as long as we have a mock font)
# 2) dumping after save-reload yields the same TTX dump as before
- for tag in ('GDEF', 'GSUB', 'GPOS'):
+ for tag in ("GDEF", "GSUB", "GPOS"):
if tag in font:
data = font[tag].compile(font)
font[tag].decompile(data, font)
@@ -154,11 +180,11 @@ class BuilderTest(unittest.TestCase):
debugttx = self.getpath("%s-debug.ttx" % name)
if os.path.exists(debugttx):
addOpenTypeFeatures(font, feapath, debug=True)
- self.expect_ttx(font, debugttx, replace = {"__PATH__": feapath})
+ self.expect_ttx(font, debugttx, replace={"__PATH__": feapath})
def check_fea2fea_file(self, name, base=None, parser=Parser):
font = makeTTFont()
- fname = (name + ".fea") if '.' not in name else name
+ fname = (name + ".fea") if "." not in name else name
p = parser(self.getpath(fname), glyphNames=font.getGlyphOrder())
doc = p.parse()
actual = self.normal_fea(doc.asFea().split("\n"))
@@ -168,12 +194,16 @@ class BuilderTest(unittest.TestCase):
if expected != actual:
fname = name.rsplit(".", 1)[0] + ".fea"
for line in difflib.unified_diff(
- expected, actual,
- fromfile=fname + " (expected)",
- tofile=fname + " (actual)"):
- sys.stderr.write(line+"\n")
- self.fail("Fea2Fea output is different from expected. "
- "Generated:\n{}\n".format("\n".join(actual)))
+ expected,
+ actual,
+ fromfile=fname + " (expected)",
+ tofile=fname + " (actual)",
+ ):
+ sys.stderr.write(line + "\n")
+ self.fail(
+ "Fea2Fea output is different from expected. "
+ "Generated:\n{}\n".format("\n".join(actual))
+ )
def normal_fea(self, lines):
output = []
@@ -198,13 +228,14 @@ class BuilderTest(unittest.TestCase):
def test_alternateSubst_multipleSubstitutionsForSameGlyph(self):
self.assertRaisesRegex(
FeatureLibError,
- "Already defined alternates for glyph \"A\"",
+ 'Already defined alternates for glyph "A"',
self.build,
"feature test {"
" sub A from [A.alt1 A.alt2];"
" sub B from [B.alt1 B.alt2 B.alt3];"
" sub A from [A.alt1 A.alt2];"
- "} test;")
+ "} test;",
+ )
def test_singleSubst_multipleIdenticalSubstitutionsForSameGlyph_info(self):
logger = logging.getLogger("fontTools.feaLib.builder")
@@ -214,19 +245,23 @@ class BuilderTest(unittest.TestCase):
" sub A by A.sc;"
" sub B by B.sc;"
" sub A by A.sc;"
- "} test;")
- captor.assertRegex('Removing duplicate single substitution from glyph "A" to "A.sc"')
+ "} test;"
+ )
+ captor.assertRegex(
+ 'Removing duplicate single substitution from glyph "A" to "A.sc"'
+ )
def test_multipleSubst_multipleSubstitutionsForSameGlyph(self):
self.assertRaisesRegex(
FeatureLibError,
- "Already defined substitution for glyph \"f_f_i\"",
+ 'Already defined substitution for glyph "f_f_i"',
self.build,
"feature test {"
" sub f_f_i by f f i;"
" sub c_t by c t;"
" sub f_f_i by f_f i;"
- "} test;")
+ "} test;",
+ )
def test_multipleSubst_multipleIdenticalSubstitutionsForSameGlyph_info(self):
logger = logging.getLogger("fontTools.feaLib.builder")
@@ -236,8 +271,11 @@ class BuilderTest(unittest.TestCase):
" sub f_f_i by f f i;"
" sub c_t by c t;"
" sub f_f_i by f f i;"
- "} test;")
- captor.assertRegex(r"Removing duplicate multiple substitution from glyph \"f_f_i\" to \('f', 'f', 'i'\)")
+ "} test;"
+ )
+ captor.assertRegex(
+ r"Removing duplicate multiple substitution from glyph \"f_f_i\" to \('f', 'f', 'i'\)"
+ )
def test_pairPos_redefinition_warning(self):
# https://github.com/fonttools/fonttools/issues/1147
@@ -251,17 +289,18 @@ class BuilderTest(unittest.TestCase):
" pos yacute semicolon -70;"
" enum pos @Y_LC semicolon -80;"
" pos @Y_LC @SMALL_PUNC -100;"
- "} kern;")
+ "} kern;"
+ )
captor.assertRegex("Already defined position for pair yacute semicolon")
# the first definition prevails: yacute semicolon -70
st = font["GPOS"].table.LookupList.Lookup[0].SubTable[0]
self.assertEqual(st.Coverage.glyphs[2], "yacute")
- self.assertEqual(st.PairSet[2].PairValueRecord[0].SecondGlyph,
- "semicolon")
- self.assertEqual(vars(st.PairSet[2].PairValueRecord[0].Value1),
- {"XAdvance": -70})
+ self.assertEqual(st.PairSet[2].PairValueRecord[0].SecondGlyph, "semicolon")
+ self.assertEqual(
+ vars(st.PairSet[2].PairValueRecord[0].Value1), {"XAdvance": -70}
+ )
def test_singleSubst_multipleSubstitutionsForSameGlyph(self):
self.assertRaisesRegex(
@@ -271,127 +310,153 @@ class BuilderTest(unittest.TestCase):
"feature test {"
" sub [a-z] by [A.sc-Z.sc];"
" sub e by e.fina;"
- "} test;")
+ "} test;",
+ )
def test_singlePos_redefinition(self):
self.assertRaisesRegex(
FeatureLibError,
- "Already defined different position for glyph \"A\"",
- self.build, "feature test { pos A 123; pos A 456; } test;")
+ 'Already defined different position for glyph "A"',
+ self.build,
+ "feature test { pos A 123; pos A 456; } test;",
+ )
def test_feature_outside_aalt(self):
self.assertRaisesRegex(
FeatureLibError,
'Feature references are only allowed inside "feature aalt"',
- self.build, "feature test { feature test; } test;")
+ self.build,
+ "feature test { feature test; } test;",
+ )
def test_feature_undefinedReference(self):
self.assertRaisesRegex(
- FeatureLibError, 'Feature none has not been defined',
- self.build, "feature aalt { feature none; } aalt;")
+ FeatureLibError,
+ "Feature none has not been defined",
+ self.build,
+ "feature aalt { feature none; } aalt;",
+ )
def test_GlyphClassDef_conflictingClasses(self):
self.assertRaisesRegex(
- FeatureLibError, "Glyph X was assigned to a different class",
+ FeatureLibError,
+ "Glyph X was assigned to a different class",
self.build,
"table GDEF {"
" GlyphClassDef [a b], [X], , ;"
" GlyphClassDef [a b X], , , ;"
- "} GDEF;")
+ "} GDEF;",
+ )
def test_languagesystem(self):
builder = Builder(makeTTFont(), (None, None))
- builder.add_language_system(None, 'latn', 'FRA')
- builder.add_language_system(None, 'cyrl', 'RUS')
- builder.start_feature(location=None, name='test')
- self.assertEqual(builder.language_systems,
- {('latn', 'FRA'), ('cyrl', 'RUS')})
+ builder.add_language_system(None, "latn", "FRA")
+ builder.add_language_system(None, "cyrl", "RUS")
+ builder.start_feature(location=None, name="test")
+ self.assertEqual(builder.language_systems, {("latn", "FRA"), ("cyrl", "RUS")})
def test_languagesystem_duplicate(self):
self.assertRaisesRegex(
FeatureLibError,
'"languagesystem cyrl RUS" has already been specified',
- self.build, "languagesystem cyrl RUS; languagesystem cyrl RUS;")
+ self.build,
+ "languagesystem cyrl RUS; languagesystem cyrl RUS;",
+ )
def test_languagesystem_none_specified(self):
builder = Builder(makeTTFont(), (None, None))
- builder.start_feature(location=None, name='test')
- self.assertEqual(builder.language_systems, {('DFLT', 'dflt')})
+ builder.start_feature(location=None, name="test")
+ self.assertEqual(builder.language_systems, {("DFLT", "dflt")})
def test_languagesystem_DFLT_dflt_not_first(self):
self.assertRaisesRegex(
FeatureLibError,
- "If \"languagesystem DFLT dflt\" is present, "
+ 'If "languagesystem DFLT dflt" is present, '
"it must be the first of the languagesystem statements",
- self.build, "languagesystem latn TRK; languagesystem DFLT dflt;")
+ self.build,
+ "languagesystem latn TRK; languagesystem DFLT dflt;",
+ )
def test_languagesystem_DFLT_not_preceding(self):
self.assertRaisesRegex(
FeatureLibError,
- "languagesystems using the \"DFLT\" script tag must "
+ 'languagesystems using the "DFLT" script tag must '
"precede all other languagesystems",
self.build,
"languagesystem DFLT dflt; "
"languagesystem latn dflt; "
- "languagesystem DFLT fooo; "
+ "languagesystem DFLT fooo; ",
)
def test_script(self):
builder = Builder(makeTTFont(), (None, None))
- builder.start_feature(location=None, name='test')
- builder.set_script(location=None, script='cyrl')
- self.assertEqual(builder.language_systems, {('cyrl', 'dflt')})
+ builder.start_feature(location=None, name="test")
+ builder.set_script(location=None, script="cyrl")
+ self.assertEqual(builder.language_systems, {("cyrl", "dflt")})
def test_script_in_aalt_feature(self):
self.assertRaisesRegex(
FeatureLibError,
- "Script statements are not allowed within \"feature aalt\"",
- self.build, "feature aalt { script latn; } aalt;")
+ 'Script statements are not allowed within "feature aalt"',
+ self.build,
+ "feature aalt { script latn; } aalt;",
+ )
def test_script_in_size_feature(self):
self.assertRaisesRegex(
FeatureLibError,
- "Script statements are not allowed within \"feature size\"",
- self.build, "feature size { script latn; } size;")
+ 'Script statements are not allowed within "feature size"',
+ self.build,
+ "feature size { script latn; } size;",
+ )
def test_script_in_standalone_lookup(self):
self.assertRaisesRegex(
FeatureLibError,
"Script statements are not allowed within standalone lookup blocks",
- self.build, "lookup test { script latn; } test;")
+ self.build,
+ "lookup test { script latn; } test;",
+ )
def test_language(self):
builder = Builder(makeTTFont(), (None, None))
- builder.add_language_system(None, 'latn', 'FRA ')
- builder.start_feature(location=None, name='test')
- builder.set_script(location=None, script='cyrl')
- builder.set_language(location=None, language='RUS ',
- include_default=False, required=False)
- self.assertEqual(builder.language_systems, {('cyrl', 'RUS ')})
- builder.set_language(location=None, language='BGR ',
- include_default=True, required=False)
- self.assertEqual(builder.language_systems,
- {('cyrl', 'BGR ')})
- builder.start_feature(location=None, name='test2')
- self.assertEqual(builder.language_systems, {('latn', 'FRA ')})
+ builder.add_language_system(None, "latn", "FRA ")
+ builder.start_feature(location=None, name="test")
+ builder.set_script(location=None, script="cyrl")
+ builder.set_language(
+ location=None, language="RUS ", include_default=False, required=False
+ )
+ self.assertEqual(builder.language_systems, {("cyrl", "RUS ")})
+ builder.set_language(
+ location=None, language="BGR ", include_default=True, required=False
+ )
+ self.assertEqual(builder.language_systems, {("cyrl", "BGR ")})
+ builder.start_feature(location=None, name="test2")
+ self.assertEqual(builder.language_systems, {("latn", "FRA ")})
def test_language_in_aalt_feature(self):
self.assertRaisesRegex(
FeatureLibError,
- "Language statements are not allowed within \"feature aalt\"",
- self.build, "feature aalt { language FRA; } aalt;")
+ 'Language statements are not allowed within "feature aalt"',
+ self.build,
+ "feature aalt { language FRA; } aalt;",
+ )
def test_language_in_size_feature(self):
self.assertRaisesRegex(
FeatureLibError,
- "Language statements are not allowed within \"feature size\"",
- self.build, "feature size { language FRA; } size;")
+ 'Language statements are not allowed within "feature size"',
+ self.build,
+ "feature size { language FRA; } size;",
+ )
def test_language_in_standalone_lookup(self):
self.assertRaisesRegex(
FeatureLibError,
"Language statements are not allowed within standalone lookup blocks",
- self.build, "lookup test { language FRA; } test;")
+ self.build,
+ "lookup test { language FRA; } test;",
+ )
def test_language_required_duplicate(self):
self.assertRaisesRegex(
@@ -409,13 +474,16 @@ class BuilderTest(unittest.TestCase):
" script latn;"
" language FRA required;"
" substitute [a-z] by [A.sc-Z.sc];"
- "} test;")
+ "} test;",
+ )
def test_lookup_already_defined(self):
self.assertRaisesRegex(
FeatureLibError,
- "Lookup \"foo\" has already been defined",
- self.build, "lookup foo {} foo; lookup foo {} foo;")
+ 'Lookup "foo" has already been defined',
+ self.build,
+ "lookup foo {} foo; lookup foo {} foo;",
+ )
def test_lookup_multiple_flags(self):
self.assertRaisesRegex(
@@ -428,7 +496,8 @@ class BuilderTest(unittest.TestCase):
" sub f i by f_i;"
" lookupflag 2;"
" sub f f i by f_f_i;"
- "} foo;")
+ "} foo;",
+ )
def test_lookup_multiple_types(self):
self.assertRaisesRegex(
@@ -439,13 +508,16 @@ class BuilderTest(unittest.TestCase):
"lookup foo {"
" sub f f i by f_f_i;"
" sub A from [A.alt1 A.alt2];"
- "} foo;")
+ "} foo;",
+ )
def test_lookup_inside_feature_aalt(self):
self.assertRaisesRegex(
FeatureLibError,
"Lookup blocks cannot be placed inside 'aalt' features",
- self.build, "feature aalt {lookup L {} L;} aalt;")
+ self.build,
+ "feature aalt {lookup L {} L;} aalt;",
+ )
def test_chain_subst_refrences_GPOS_looup(self):
self.assertRaisesRegex(
@@ -455,7 +527,7 @@ class BuilderTest(unittest.TestCase):
"lookup dummy { pos a 50; } dummy;"
"feature test {"
" sub a' lookup dummy b;"
- "} test;"
+ "} test;",
)
def test_chain_pos_refrences_GSUB_looup(self):
@@ -466,203 +538,215 @@ class BuilderTest(unittest.TestCase):
"lookup dummy { sub a by A; } dummy;"
"feature test {"
" pos a' lookup dummy b;"
- "} test;"
+ "} test;",
)
def test_STAT_elidedfallbackname_already_defined(self):
self.assertRaisesRegex(
FeatureLibError,
- 'ElidedFallbackName is already set.',
+ "ElidedFallbackName is already set.",
self.build,
- 'table name {'
+ "table name {"
' nameid 256 "Roman"; '
- '} name;'
- 'table STAT {'
+ "} name;"
+ "table STAT {"
' ElidedFallbackName { name "Roman"; };'
- ' ElidedFallbackNameID 256;'
- '} STAT;')
+ " ElidedFallbackNameID 256;"
+ "} STAT;",
+ )
def test_STAT_elidedfallbackname_set_twice(self):
self.assertRaisesRegex(
FeatureLibError,
- 'ElidedFallbackName is already set.',
+ "ElidedFallbackName is already set.",
self.build,
- 'table name {'
+ "table name {"
' nameid 256 "Roman"; '
- '} name;'
- 'table STAT {'
+ "} name;"
+ "table STAT {"
' ElidedFallbackName { name "Roman"; };'
' ElidedFallbackName { name "Italic"; };'
- '} STAT;')
+ "} STAT;",
+ )
def test_STAT_elidedfallbacknameID_already_defined(self):
self.assertRaisesRegex(
FeatureLibError,
- 'ElidedFallbackNameID is already set.',
+ "ElidedFallbackNameID is already set.",
self.build,
- 'table name {'
+ "table name {"
' nameid 256 "Roman"; '
- '} name;'
- 'table STAT {'
- ' ElidedFallbackNameID 256;'
+ "} name;"
+ "table STAT {"
+ " ElidedFallbackNameID 256;"
' ElidedFallbackName { name "Roman"; };'
- '} STAT;')
+ "} STAT;",
+ )
def test_STAT_elidedfallbacknameID_not_in_name_table(self):
self.assertRaisesRegex(
FeatureLibError,
- 'ElidedFallbackNameID 256 points to a nameID that does not '
+ "ElidedFallbackNameID 256 points to a nameID that does not "
'exist in the "name" table',
self.build,
- 'table name {'
+ "table name {"
' nameid 257 "Roman"; '
- '} name;'
- 'table STAT {'
- ' ElidedFallbackNameID 256;'
+ "} name;"
+ "table STAT {"
+ " ElidedFallbackNameID 256;"
' DesignAxis opsz 1 { name "Optical Size"; };'
- '} STAT;')
+ "} STAT;",
+ )
def test_STAT_design_axis_name(self):
self.assertRaisesRegex(
FeatureLibError,
'Expected "name"',
self.build,
- 'table name {'
+ "table name {"
' nameid 256 "Roman"; '
- '} name;'
- 'table STAT {'
+ "} name;"
+ "table STAT {"
' ElidedFallbackName { name "Roman"; };'
' DesignAxis opsz 0 { badtag "Optical Size"; };'
- '} STAT;')
+ "} STAT;",
+ )
def test_STAT_duplicate_design_axis_name(self):
self.assertRaisesRegex(
FeatureLibError,
'DesignAxis already defined for tag "opsz".',
self.build,
- 'table name {'
+ "table name {"
' nameid 256 "Roman"; '
- '} name;'
- 'table STAT {'
+ "} name;"
+ "table STAT {"
' ElidedFallbackName { name "Roman"; };'
' DesignAxis opsz 0 { name "Optical Size"; };'
' DesignAxis opsz 1 { name "Optical Size"; };'
- '} STAT;')
+ "} STAT;",
+ )
def test_STAT_design_axis_duplicate_order(self):
self.assertRaisesRegex(
FeatureLibError,
"DesignAxis already defined for axis number 0.",
self.build,
- 'table name {'
+ "table name {"
' nameid 256 "Roman"; '
- '} name;'
- 'table STAT {'
+ "} name;"
+ "table STAT {"
' ElidedFallbackName { name "Roman"; };'
' DesignAxis opsz 0 { name "Optical Size"; };'
' DesignAxis wdth 0 { name "Width"; };'
- ' AxisValue {'
- ' location opsz 8;'
- ' location wdth 400;'
+ " AxisValue {"
+ " location opsz 8;"
+ " location wdth 400;"
' name "Caption";'
- ' };'
- '} STAT;')
+ " };"
+ "} STAT;",
+ )
def test_STAT_undefined_tag(self):
self.assertRaisesRegex(
FeatureLibError,
- 'DesignAxis not defined for wdth.',
+ "DesignAxis not defined for wdth.",
self.build,
- 'table name {'
+ "table name {"
' nameid 256 "Roman"; '
- '} name;'
- 'table STAT {'
+ "} name;"
+ "table STAT {"
' ElidedFallbackName { name "Roman"; };'
' DesignAxis opsz 0 { name "Optical Size"; };'
- ' AxisValue { '
- ' location wdth 125; '
+ " AxisValue { "
+ " location wdth 125; "
' name "Wide"; '
- ' };'
- '} STAT;')
+ " };"
+ "} STAT;",
+ )
def test_STAT_axis_value_format4(self):
self.assertRaisesRegex(
FeatureLibError,
- 'Axis tag wdth already defined.',
+ "Axis tag wdth already defined.",
self.build,
- 'table name {'
+ "table name {"
' nameid 256 "Roman"; '
- '} name;'
- 'table STAT {'
+ "} name;"
+ "table STAT {"
' ElidedFallbackName { name "Roman"; };'
' DesignAxis opsz 0 { name "Optical Size"; };'
' DesignAxis wdth 1 { name "Width"; };'
' DesignAxis wght 2 { name "Weight"; };'
- ' AxisValue { '
- ' location opsz 8; '
- ' location wdth 125; '
- ' location wdth 125; '
- ' location wght 500; '
+ " AxisValue { "
+ " location opsz 8; "
+ " location wdth 125; "
+ " location wdth 125; "
+ " location wght 500; "
' name "Caption Medium Wide"; '
- ' };'
- '} STAT;')
+ " };"
+ "} STAT;",
+ )
def test_STAT_duplicate_axis_value_record(self):
# Test for Duplicate AxisValueRecords even when the definition order
# is different.
self.assertRaisesRegex(
FeatureLibError,
- 'An AxisValueRecord with these values is already defined.',
+ "An AxisValueRecord with these values is already defined.",
self.build,
- 'table name {'
+ "table name {"
' nameid 256 "Roman"; '
- '} name;'
- 'table STAT {'
+ "} name;"
+ "table STAT {"
' ElidedFallbackName { name "Roman"; };'
' DesignAxis opsz 0 { name "Optical Size"; };'
' DesignAxis wdth 1 { name "Width"; };'
- ' AxisValue {'
- ' location opsz 8;'
- ' location wdth 400;'
+ " AxisValue {"
+ " location opsz 8;"
+ " location wdth 400;"
' name "Caption";'
- ' };'
- ' AxisValue {'
- ' location wdth 400;'
- ' location opsz 8;'
+ " };"
+ " AxisValue {"
+ " location wdth 400;"
+ " location opsz 8;"
' name "Caption";'
- ' };'
- '} STAT;')
+ " };"
+ "} STAT;",
+ )
def test_STAT_axis_value_missing_location(self):
self.assertRaisesRegex(
FeatureLibError,
'Expected "Axis location"',
self.build,
- 'table name {'
+ "table name {"
' nameid 256 "Roman"; '
- '} name;'
- 'table STAT {'
+ "} name;"
+ "table STAT {"
' ElidedFallbackName { name "Roman"; '
- '};'
+ "};"
' DesignAxis opsz 0 { name "Optical Size"; };'
- ' AxisValue { '
+ " AxisValue { "
' name "Wide"; '
- ' };'
- '} STAT;')
+ " };"
+ "} STAT;",
+ )
def test_STAT_invalid_location_tag(self):
self.assertRaisesRegex(
FeatureLibError,
- 'Tags cannot be longer than 4 characters',
+ "Tags cannot be longer than 4 characters",
self.build,
- 'table name {'
+ "table name {"
' nameid 256 "Roman"; '
- '} name;'
- 'table STAT {'
+ "} name;"
+ "table STAT {"
' ElidedFallbackName { name "Roman"; '
' name 3 1 0x0411 "ローマン"; }; '
' DesignAxis width 0 { name "Width"; };'
- '} STAT;')
+ "} STAT;",
+ )
def test_extensions(self):
class ast_BaseClass(ast.MarkClass):
@@ -680,7 +764,9 @@ class BuilderTest(unittest.TestCase):
for bcd in self.base.markClass.definitions:
if res != "":
res += "\n{}".format(indent)
- res += "pos base {} {}".format(bcd.glyphs.asFea(), bcd.anchor.asFea())
+ res += "pos base {} {}".format(
+ bcd.glyphs.asFea(), bcd.anchor.asFea()
+ )
for m in self.marks:
res += " mark @{}".format(m.name)
res += ";"
@@ -693,6 +779,7 @@ class BuilderTest(unittest.TestCase):
class testAst(object):
MarkBasePosStatement = ast_MarkBasePosStatement
+
def __getattr__(self, name):
return getattr(ast, name)
@@ -703,8 +790,9 @@ class BuilderTest(unittest.TestCase):
if enumerated:
raise FeatureLibError(
'"enumerate" is not allowed with '
- 'mark-to-base attachment positioning',
- location)
+ "mark-to-base attachment positioning",
+ location,
+ )
base = self.parse_glyphclass_(accept_glyphname=True)
if self.next_token_ == "<":
marks = self.parse_anchor_marks_()
@@ -715,11 +803,10 @@ class BuilderTest(unittest.TestCase):
m = self.expect_markClass_reference_()
marks.append(m)
self.expect_symbol_(";")
- return self.ast.MarkBasePosStatement(base, marks,
- location=location)
+ return self.ast.MarkBasePosStatement(base, marks, location=location)
def parseBaseClass(self):
- if not hasattr(self.doc_, 'baseClasses'):
+ if not hasattr(self.doc_, "baseClasses"):
self.doc_.baseClasses = {}
location = self.cur_token_location_
glyphs = self.parse_glyphclass_(accept_glyphname=True)
@@ -731,37 +818,39 @@ class BuilderTest(unittest.TestCase):
baseClass = ast_BaseClass(name)
self.doc_.baseClasses[name] = baseClass
self.glyphclasses_.define(name, baseClass)
- bcdef = ast_BaseClassDefinition(baseClass, anchor, glyphs,
- location=location)
+ bcdef = ast_BaseClassDefinition(
+ baseClass, anchor, glyphs, location=location
+ )
baseClass.addDefinition(bcdef)
return bcdef
- extensions = {
- 'baseClass' : lambda s : s.parseBaseClass()
- }
+ extensions = {"baseClass": lambda s: s.parseBaseClass()}
ast = testAst()
self.check_fea2fea_file(
- "baseClass.feax", base="baseClass.fea", parser=testParser)
+ "baseClass.feax", base="baseClass.fea", parser=testParser
+ )
def test_markClass_same_glyph_redefined(self):
self.assertRaisesRegex(
FeatureLibError,
"Glyph acute already defined",
self.build,
- "markClass [acute] <anchor 350 0> @TOP_MARKS;"*2)
+ "markClass [acute] <anchor 350 0> @TOP_MARKS;" * 2,
+ )
def test_markClass_same_glyph_multiple_classes(self):
self.assertRaisesRegex(
FeatureLibError,
- 'Glyph uni0327 cannot be in both @ogonek and @cedilla',
+ "Glyph uni0327 cannot be in both @ogonek and @cedilla",
self.build,
"feature mark {"
" markClass [uni0327 uni0328] <anchor 0 0> @ogonek;"
" pos base [a] <anchor 399 0> mark @ogonek;"
" markClass [uni0327] <anchor 0 0> @cedilla;"
" pos base [a] <anchor 244 0> mark @cedilla;"
- "} mark;")
+ "} mark;",
+ )
def test_build_specific_tables(self):
features = "feature liga {sub f i by f_i;} liga;"
@@ -783,7 +872,7 @@ class BuilderTest(unittest.TestCase):
def test_unsupported_subtable_break(self):
logger = logging.getLogger("fontTools.otlLib.builder")
- with CapturingLogHandler(logger, level='WARNING') as captor:
+ with CapturingLogHandler(logger, level="WARNING") as captor:
self.build(
"feature test {"
" pos a 10;"
@@ -814,10 +903,8 @@ class BuilderTest(unittest.TestCase):
FeatureLibError,
"Already defined different position for glyph",
self.build,
- "lookup foo {"
- " pos A -45; "
- " pos A 45; "
- "} foo;")
+ "lookup foo {" " pos A -45; " " pos A 45; " "} foo;",
+ )
def test_pairPos_enumRuleOverridenBySinglePair_DEBUG(self):
logger = logging.getLogger("fontTools.otlLib.builder")
@@ -826,8 +913,56 @@ class BuilderTest(unittest.TestCase):
"feature test {"
" enum pos A [V Y] -80;"
" pos A V -75;"
- "} test;")
- captor.assertRegex('Already defined position for pair A V at')
+ "} test;"
+ )
+ captor.assertRegex("Already defined position for pair A V at")
+
+ def test_ignore_empty_lookup_block(self):
+ # https://github.com/fonttools/fonttools/pull/2277
+ font = self.build(
+ "lookup EMPTY { ; } EMPTY;" "feature ss01 { lookup EMPTY; } ss01;"
+ )
+ assert "GPOS" not in font
+ assert "GSUB" not in font
+
+ def test_disable_empty_classes(self):
+ for test in [
+ "sub a by c []",
+ "sub f f [] by f",
+ "ignore sub a []'",
+ "ignore sub [] a'",
+ "sub a []' by b",
+ "sub [] a' by b",
+ "rsub [] by a",
+ "pos [] 120",
+ "pos a [] 120",
+ "enum pos a [] 120",
+ "pos cursive [] <anchor NULL> <anchor NULL>",
+ "pos base [] <anchor NULL> mark @TOPMARKS",
+ "pos ligature [] <anchor NULL> mark @TOPMARKS",
+ "pos mark [] <anchor NULL> mark @TOPMARKS",
+ "ignore pos a []'",
+ "ignore pos [] a'",
+ ]:
+ self.assertRaisesRegex(
+ FeatureLibError,
+ "Empty ",
+ self.build,
+ f"markClass a <anchor 150 -10> @TOPMARKS; lookup foo {{ {test}; }} foo;",
+ )
+ self.assertRaisesRegex(
+ FeatureLibError,
+ "Empty glyph class in mark class definition",
+ self.build,
+ "markClass [] <anchor 150 -10> @TOPMARKS;"
+ )
+ self.assertRaisesRegex(
+ FeatureLibError,
+ 'Expected a glyph class with 1 elements after "by", but found a glyph class with 0 elements',
+ self.build,
+ "feature test { sub a by []; test};"
+ )
+
def generate_feature_file_test(name):
@@ -835,8 +970,7 @@ def generate_feature_file_test(name):
for name in BuilderTest.TEST_FEATURE_FILES:
- setattr(BuilderTest, "test_FeatureFile_%s" % name,
- generate_feature_file_test(name))
+ setattr(BuilderTest, "test_FeatureFile_%s" % name, generate_feature_file_test(name))
def generate_fea2fea_file_test(name):
@@ -844,8 +978,11 @@ def generate_fea2fea_file_test(name):
for name in BuilderTest.TEST_FEATURE_FILES:
- setattr(BuilderTest, "test_Fea2feaFile_{}".format(name),
- generate_fea2fea_file_test(name))
+ setattr(
+ BuilderTest,
+ "test_Fea2feaFile_{}".format(name),
+ generate_fea2fea_file_test(name),
+ )
if __name__ == "__main__":
diff --git a/Tests/feaLib/data/PairPosSubtable.fea b/Tests/feaLib/data/PairPosSubtable.fea
index cb78801c..1fcc1eba 100644
--- a/Tests/feaLib/data/PairPosSubtable.fea
+++ b/Tests/feaLib/data/PairPosSubtable.fea
@@ -4,7 +4,6 @@ languagesystem latn dflt;
@group1 = [b o];
@group2 = [c d];
@group3 = [v w];
-@group4 = [];
lookup kernlookup {
pos A V -34;
@@ -13,9 +12,6 @@ lookup kernlookup {
subtable;
pos @group1 @group3 -10;
pos @group3 @group2 -20;
- subtable;
- pos @group4 @group1 -10;
- pos @group4 @group4 -10;
} kernlookup;
feature kern {
diff --git a/Tests/feaLib/data/bug2276.fea b/Tests/feaLib/data/bug2276.fea
new file mode 100644
index 00000000..96f98859
--- /dev/null
+++ b/Tests/feaLib/data/bug2276.fea
@@ -0,0 +1,11 @@
+# https://github.com/fonttools/fonttools/issues/2276
+lookup EMPTY {
+ # pass
+} EMPTY;
+feature ss01 {
+ sub a by a.alt1;
+ lookup EMPTY;
+} ss01;
+feature aalt {
+ feature ss01;
+} aalt;
diff --git a/Tests/feaLib/data/bug2276.ttx b/Tests/feaLib/data/bug2276.ttx
new file mode 100644
index 00000000..57902daf
--- /dev/null
+++ b/Tests/feaLib/data/bug2276.ttx
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ttFont sfntVersion="\x00\x01\x00\x00" ttLibVersion="4.22">
+
+ <GSUB>
+ <Version value="0x00010000"/>
+ <ScriptList>
+ <!-- ScriptCount=1 -->
+ <ScriptRecord index="0">
+ <ScriptTag value="DFLT"/>
+ <Script>
+ <DefaultLangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=2 -->
+ <FeatureIndex index="0" value="0"/>
+ <FeatureIndex index="1" value="1"/>
+ </DefaultLangSys>
+ <!-- LangSysCount=0 -->
+ </Script>
+ </ScriptRecord>
+ </ScriptList>
+ <FeatureList>
+ <!-- FeatureCount=2 -->
+ <FeatureRecord index="0">
+ <FeatureTag value="aalt"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="0"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="1">
+ <FeatureTag value="ss01"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="1"/>
+ </Feature>
+ </FeatureRecord>
+ </FeatureList>
+ <LookupList>
+ <!-- LookupCount=2 -->
+ <Lookup index="0">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="a" out="a.alt1"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="1">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="a" out="a.alt1"/>
+ </SingleSubst>
+ </Lookup>
+ </LookupList>
+ </GSUB>
+
+</ttFont>
diff --git a/Tests/feaLib/data/delete_glyph.fea b/Tests/feaLib/data/delete_glyph.fea
index 36e0f0f9..ab4b93f1 100644
--- a/Tests/feaLib/data/delete_glyph.fea
+++ b/Tests/feaLib/data/delete_glyph.fea
@@ -1,3 +1,7 @@
feature test {
sub a by NULL;
} test;
+
+feature test {
+ sub [a b c] by NULL;
+} test;
diff --git a/Tests/feaLib/data/delete_glyph.ttx b/Tests/feaLib/data/delete_glyph.ttx
index 777f6e36..b28259fb 100644
--- a/Tests/feaLib/data/delete_glyph.ttx
+++ b/Tests/feaLib/data/delete_glyph.ttx
@@ -22,13 +22,14 @@
<FeatureRecord index="0">
<FeatureTag value="test"/>
<Feature>
- <!-- LookupCount=1 -->
+ <!-- LookupCount=2 -->
<LookupListIndex index="0" value="0"/>
+ <LookupListIndex index="1" value="1"/>
</Feature>
</FeatureRecord>
</FeatureList>
<LookupList>
- <!-- LookupCount=1 -->
+ <!-- LookupCount=2 -->
<Lookup index="0">
<LookupType value="2"/>
<LookupFlag value="0"/>
@@ -37,6 +38,16 @@
<Substitution in="a" out=""/>
</MultipleSubst>
</Lookup>
+ <Lookup index="1">
+ <LookupType value="2"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <MultipleSubst index="0">
+ <Substitution in="a" out=""/>
+ <Substitution in="b" out=""/>
+ <Substitution in="c" out=""/>
+ </MultipleSubst>
+ </Lookup>
</LookupList>
</GSUB>
diff --git a/Tests/feaLib/data/variable_conditionset.fea b/Tests/feaLib/data/variable_conditionset.fea
new file mode 100644
index 00000000..7009c62b
--- /dev/null
+++ b/Tests/feaLib/data/variable_conditionset.fea
@@ -0,0 +1,13 @@
+languagesystem DFLT dflt;
+
+lookup symbols_heavy {
+ sub a by b;
+} symbols_heavy;
+
+conditionset heavy {
+ wght 700 900;
+} heavy;
+
+variation rvrn heavy {
+ lookup symbols_heavy;
+} rvrn;
diff --git a/Tests/feaLib/data/variable_conditionset.ttx b/Tests/feaLib/data/variable_conditionset.ttx
new file mode 100644
index 00000000..18b156fa
--- /dev/null
+++ b/Tests/feaLib/data/variable_conditionset.ttx
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ttFont>
+
+ <GSUB>
+ <Version value="0x00010001"/>
+ <ScriptList>
+ <!-- ScriptCount=1 -->
+ <ScriptRecord index="0">
+ <ScriptTag value="DFLT"/>
+ <Script>
+ <DefaultLangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=1 -->
+ <FeatureIndex index="0" value="0"/>
+ </DefaultLangSys>
+ <!-- LangSysCount=0 -->
+ </Script>
+ </ScriptRecord>
+ </ScriptList>
+ <FeatureList>
+ <!-- FeatureCount=1 -->
+ <FeatureRecord index="0">
+ <FeatureTag value="rvrn"/>
+ <Feature>
+ <!-- LookupCount=0 -->
+ </Feature>
+ </FeatureRecord>
+ </FeatureList>
+ <LookupList>
+ <!-- LookupCount=1 -->
+ <Lookup index="0">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="a" out="b"/>
+ </SingleSubst>
+ </Lookup>
+ </LookupList>
+ <FeatureVariations>
+ <Version value="0x00010000"/>
+ <!-- FeatureVariationCount=1 -->
+ <FeatureVariationRecord index="0">
+ <ConditionSet>
+ <!-- ConditionCount=1 -->
+ <ConditionTable index="0" Format="1">
+ <AxisIndex value="0"/>
+ <FilterRangeMinValue value="0.625"/>
+ <FilterRangeMaxValue value="0.875"/>
+ </ConditionTable>
+ </ConditionSet>
+ <FeatureTableSubstitution>
+ <Version value="0x00010000"/>
+ <!-- SubstitutionCount=1 -->
+ <SubstitutionRecord index="0">
+ <FeatureIndex value="0"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="0"/>
+ </Feature>
+ </SubstitutionRecord>
+ </FeatureTableSubstitution>
+ </FeatureVariationRecord>
+ </FeatureVariations>
+ </GSUB>
+
+</ttFont>
diff --git a/Tests/feaLib/data/variable_scalar_anchor.fea b/Tests/feaLib/data/variable_scalar_anchor.fea
new file mode 100644
index 00000000..c4787986
--- /dev/null
+++ b/Tests/feaLib/data/variable_scalar_anchor.fea
@@ -0,0 +1,4 @@
+languagesystem DFLT dflt;
+feature kern {
+ pos cursive one <anchor 0 (wght=200:12 wght=900:22 wdth=150,wght=900:42)> <anchor NULL>;
+} kern;
diff --git a/Tests/feaLib/data/variable_scalar_anchor.ttx b/Tests/feaLib/data/variable_scalar_anchor.ttx
new file mode 100644
index 00000000..6bb55691
--- /dev/null
+++ b/Tests/feaLib/data/variable_scalar_anchor.ttx
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ttFont>
+
+ <GDEF>
+ <Version value="0x00010003"/>
+ <VarStore Format="1">
+ <Format value="1"/>
+ <VarRegionList>
+ <!-- RegionAxisCount=2 -->
+ <!-- RegionCount=2 -->
+ <Region index="0">
+ <VarRegionAxis index="0">
+ <StartCoord value="0.0"/>
+ <PeakCoord value="0.875"/>
+ <EndCoord value="0.875"/>
+ </VarRegionAxis>
+ <VarRegionAxis index="1">
+ <StartCoord value="0.0"/>
+ <PeakCoord value="0.0"/>
+ <EndCoord value="0.0"/>
+ </VarRegionAxis>
+ </Region>
+ <Region index="1">
+ <VarRegionAxis index="0">
+ <StartCoord value="0.0"/>
+ <PeakCoord value="0.875"/>
+ <EndCoord value="0.875"/>
+ </VarRegionAxis>
+ <VarRegionAxis index="1">
+ <StartCoord value="0.0"/>
+ <PeakCoord value="0.5"/>
+ <EndCoord value="0.5"/>
+ </VarRegionAxis>
+ </Region>
+ </VarRegionList>
+ <!-- VarDataCount=1 -->
+ <VarData index="0">
+ <!-- ItemCount=1 -->
+ <NumShorts value="0"/>
+ <!-- VarRegionCount=2 -->
+ <VarRegionIndex index="0" value="0"/>
+ <VarRegionIndex index="1" value="1"/>
+ <Item index="0" value="[10, 20]"/>
+ </VarData>
+ </VarStore>
+ </GDEF>
+
+ <GPOS>
+ <Version value="0x00010000"/>
+ <ScriptList>
+ <!-- ScriptCount=1 -->
+ <ScriptRecord index="0">
+ <ScriptTag value="DFLT"/>
+ <Script>
+ <DefaultLangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=1 -->
+ <FeatureIndex index="0" value="0"/>
+ </DefaultLangSys>
+ <!-- LangSysCount=0 -->
+ </Script>
+ </ScriptRecord>
+ </ScriptList>
+ <FeatureList>
+ <!-- FeatureCount=1 -->
+ <FeatureRecord index="0">
+ <FeatureTag value="kern"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="0"/>
+ </Feature>
+ </FeatureRecord>
+ </FeatureList>
+ <LookupList>
+ <!-- LookupCount=1 -->
+ <Lookup index="0">
+ <LookupType value="3"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <CursivePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="one"/>
+ </Coverage>
+ <!-- EntryExitCount=1 -->
+ <EntryExitRecord index="0">
+ <EntryAnchor Format="3">
+ <XCoordinate value="0"/>
+ <YCoordinate value="12"/>
+ <YDeviceTable>
+ <StartSize value="0"/>
+ <EndSize value="0"/>
+ <DeltaFormat value="32768"/>
+ </YDeviceTable>
+ </EntryAnchor>
+ </EntryExitRecord>
+ </CursivePos>
+ </Lookup>
+ </LookupList>
+ </GPOS>
+
+</ttFont>
diff --git a/Tests/feaLib/data/variable_scalar_valuerecord.fea b/Tests/feaLib/data/variable_scalar_valuerecord.fea
new file mode 100644
index 00000000..bf9a26b7
--- /dev/null
+++ b/Tests/feaLib/data/variable_scalar_valuerecord.fea
@@ -0,0 +1,5 @@
+languagesystem DFLT dflt;
+feature kern {
+ pos one 1;
+ pos two <0 (wght=200:12 wght=900:22 wdth=150,wght=900:42) 0 0>;
+} kern;
diff --git a/Tests/feaLib/data/variable_scalar_valuerecord.ttx b/Tests/feaLib/data/variable_scalar_valuerecord.ttx
new file mode 100644
index 00000000..338b7221
--- /dev/null
+++ b/Tests/feaLib/data/variable_scalar_valuerecord.ttx
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ttFont>
+
+ <GDEF>
+ <Version value="0x00010003"/>
+ <VarStore Format="1">
+ <Format value="1"/>
+ <VarRegionList>
+ <!-- RegionAxisCount=2 -->
+ <!-- RegionCount=2 -->
+ <Region index="0">
+ <VarRegionAxis index="0">
+ <StartCoord value="0.0"/>
+ <PeakCoord value="0.875"/>
+ <EndCoord value="0.875"/>
+ </VarRegionAxis>
+ <VarRegionAxis index="1">
+ <StartCoord value="0.0"/>
+ <PeakCoord value="0.0"/>
+ <EndCoord value="0.0"/>
+ </VarRegionAxis>
+ </Region>
+ <Region index="1">
+ <VarRegionAxis index="0">
+ <StartCoord value="0.0"/>
+ <PeakCoord value="0.875"/>
+ <EndCoord value="0.875"/>
+ </VarRegionAxis>
+ <VarRegionAxis index="1">
+ <StartCoord value="0.0"/>
+ <PeakCoord value="0.5"/>
+ <EndCoord value="0.5"/>
+ </VarRegionAxis>
+ </Region>
+ </VarRegionList>
+ <!-- VarDataCount=1 -->
+ <VarData index="0">
+ <!-- ItemCount=1 -->
+ <NumShorts value="0"/>
+ <!-- VarRegionCount=2 -->
+ <VarRegionIndex index="0" value="0"/>
+ <VarRegionIndex index="1" value="1"/>
+ <Item index="0" value="[10, 20]"/>
+ </VarData>
+ </VarStore>
+ </GDEF>
+
+ <GPOS>
+ <Version value="0x00010000"/>
+ <ScriptList>
+ <!-- ScriptCount=1 -->
+ <ScriptRecord index="0">
+ <ScriptTag value="DFLT"/>
+ <Script>
+ <DefaultLangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=1 -->
+ <FeatureIndex index="0" value="0"/>
+ </DefaultLangSys>
+ <!-- LangSysCount=0 -->
+ </Script>
+ </ScriptRecord>
+ </ScriptList>
+ <FeatureList>
+ <!-- FeatureCount=1 -->
+ <FeatureRecord index="0">
+ <FeatureTag value="kern"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="0"/>
+ </Feature>
+ </FeatureRecord>
+ </FeatureList>
+ <LookupList>
+ <!-- LookupCount=1 -->
+ <Lookup index="0">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=2 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="one"/>
+ </Coverage>
+ <ValueFormat value="4"/>
+ <Value XAdvance="1"/>
+ </SinglePos>
+ <SinglePos index="1" Format="1">
+ <Coverage>
+ <Glyph value="two"/>
+ </Coverage>
+ <ValueFormat value="34"/>
+ <Value YPlacement="12">
+ <YPlaDevice>
+ <StartSize value="0"/>
+ <EndSize value="0"/>
+ <DeltaFormat value="32768"/>
+ </YPlaDevice>
+ </Value>
+ </SinglePos>
+ </Lookup>
+ </LookupList>
+ </GPOS>
+
+</ttFont>
diff --git a/Tests/feaLib/lexer_test.py b/Tests/feaLib/lexer_test.py
index 24dc5dba..3df67f70 100644
--- a/Tests/feaLib/lexer_test.py
+++ b/Tests/feaLib/lexer_test.py
@@ -1,6 +1,6 @@
-from fontTools.misc.py23 import tobytes
from fontTools.feaLib.error import FeatureLibError, IncludedFeaNotFound
from fontTools.feaLib.lexer import IncludingLexer, Lexer
+from fontTools.misc.textTools import tobytes
from io import StringIO
import os
import shutil
diff --git a/Tests/feaLib/parser_test.py b/Tests/feaLib/parser_test.py
index de2bc3ca..fd9dea70 100644
--- a/Tests/feaLib/parser_test.py
+++ b/Tests/feaLib/parser_test.py
@@ -14,8 +14,9 @@ def glyphstr(glyphs):
if len(x) == 1:
return list(x)[0]
else:
- return '[%s]' % ' '.join(sorted(list(x)))
- return ' '.join(f(g.glyphSet()) for g in glyphs)
+ return "[%s]" % " ".join(sorted(list(x)))
+
+ return " ".join(f(g.glyphSet()) for g in glyphs)
def mapping(s):
@@ -30,7 +31,9 @@ def mapping(s):
return dict(zip(b, c))
-GLYPHNAMES = ("""
+GLYPHNAMES = (
+ (
+ """
.notdef space A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
A.sc B.sc C.sc D.sc E.sc F.sc G.sc H.sc I.sc J.sc K.sc L.sc M.sc
N.sc O.sc P.sc Q.sc R.sc S.sc T.sc U.sc V.sc W.sc X.sc Y.sc Z.sc
@@ -48,7 +51,10 @@ GLYPHNAMES = ("""
cid00111 cid00222
comma endash emdash figuredash damma hamza
c_d d.alt n.end s.end f_f
-""").split() + ["foo.%d" % i for i in range(1, 200)]
+"""
+ ).split()
+ + ["foo.%d" % i for i in range(1, 200)]
+)
class ParserTest(unittest.TestCase):
@@ -60,7 +66,7 @@ class ParserTest(unittest.TestCase):
self.assertRaisesRegex = self.assertRaisesRegexp
def test_glyphMap_deprecated(self):
- glyphMap = {'a': 0, 'b': 1, 'c': 2}
+ glyphMap = {"a": 0, "b": 1, "c": 2}
with warnings.catch_warnings(record=True) as w:
warnings.simplefilter("always")
parser = Parser(StringIO(), glyphMap=glyphMap)
@@ -68,22 +74,28 @@ class ParserTest(unittest.TestCase):
self.assertEqual(len(w), 1)
self.assertEqual(w[-1].category, UserWarning)
self.assertIn("deprecated", str(w[-1].message))
- self.assertEqual(parser.glyphNames_, {'a', 'b', 'c'})
+ self.assertEqual(parser.glyphNames_, {"a", "b", "c"})
self.assertRaisesRegex(
- TypeError, "mutually exclusive",
- Parser, StringIO(), ("a",), glyphMap={"a": 0})
+ TypeError,
+ "mutually exclusive",
+ Parser,
+ StringIO(),
+ ("a",),
+ glyphMap={"a": 0},
+ )
self.assertRaisesRegex(
- TypeError, "unsupported keyword argument",
- Parser, StringIO(), foo="bar")
+ TypeError, "unsupported keyword argument", Parser, StringIO(), foo="bar"
+ )
def test_comments(self):
doc = self.parse(
""" # Initial
feature test {
sub A by B; # simple
- } test;""")
+ } test;"""
+ )
c1 = doc.statements[0]
c2 = doc.statements[1].statements[1]
self.assertEqual(type(c1), ast.Comment)
@@ -94,9 +106,11 @@ class ParserTest(unittest.TestCase):
self.assertEqual(doc.statements[1].name, "test")
def test_only_comments(self):
- doc = self.parse("""\
+ doc = self.parse(
+ """\
# Initial
- """)
+ """
+ )
c1 = doc.statements[0]
self.assertEqual(type(c1), ast.Comment)
self.assertEqual(c1.text, "# Initial")
@@ -106,7 +120,8 @@ class ParserTest(unittest.TestCase):
doc = self.parse(
"feature test {"
" pos cursive A <anchor 120 -20> <anchor NULL>;"
- "} test;")
+ "} test;"
+ )
anchor = doc.statements[0].statements[0].entryAnchor
self.assertEqual(type(anchor), ast.Anchor)
self.assertEqual(anchor.x, 120)
@@ -119,7 +134,8 @@ class ParserTest(unittest.TestCase):
doc = self.parse(
"feature test {"
" pos cursive A <anchor 120 -20 contourpoint 5> <anchor NULL>;"
- "} test;")
+ "} test;"
+ )
anchor = doc.statements[0].statements[0].entryAnchor
self.assertEqual(type(anchor), ast.Anchor)
self.assertEqual(anchor.x, 120)
@@ -134,7 +150,8 @@ class ParserTest(unittest.TestCase):
" pos cursive A "
" <anchor 120 -20 <device 11 111, 12 112> <device NULL>>"
" <anchor NULL>;"
- "} test;")
+ "} test;"
+ )
anchor = doc.statements[0].statements[0].entryAnchor
self.assertEqual(type(anchor), ast.Anchor)
self.assertEqual(anchor.x, 120)
@@ -147,7 +164,8 @@ class ParserTest(unittest.TestCase):
doc = self.parse(
"feature test {"
" pos cursive A <anchor 120 -20> <anchor NULL>;"
- "} test;")
+ "} test;"
+ )
anchor = doc.statements[0].statements[0].exitAnchor
self.assertIsNone(anchor)
@@ -156,7 +174,8 @@ class ParserTest(unittest.TestCase):
"feature test {"
" anchorDef 120 -20 contourpoint 7 Foo;"
" pos cursive A <anchor Foo> <anchor NULL>;"
- "} test;")
+ "} test;"
+ )
anchor = doc.statements[0].statements[1].entryAnchor
self.assertEqual(type(anchor), ast.Anchor)
self.assertEqual(anchor.x, 120)
@@ -167,10 +186,25 @@ class ParserTest(unittest.TestCase):
def test_anchor_format_e_undefined(self):
self.assertRaisesRegex(
- FeatureLibError, 'Unknown anchor "UnknownName"', self.parse,
+ FeatureLibError,
+ 'Unknown anchor "UnknownName"',
+ self.parse,
"feature test {"
" position cursive A <anchor UnknownName> <anchor NULL>;"
- "} test;")
+ "} test;",
+ )
+
+ def test_anchor_variable_scalar(self):
+ doc = self.parse(
+ "feature test {"
+ " pos cursive A <anchor (wght=200:-100 wght=900:-150 wdth=150,wght=900:-120) -20> <anchor NULL>;"
+ "} test;"
+ )
+ anchor = doc.statements[0].statements[0].entryAnchor
+ self.assertEqual(
+ anchor.asFea(),
+ "<anchor (wght=200:-100 wght=900:-150 wdth=150,wght=900:-120) -20>",
+ )
def test_anchordef(self):
[foo] = self.parse("anchorDef 123 456 foo;").statements
@@ -203,8 +237,11 @@ class ParserTest(unittest.TestCase):
def test_anon_missingBrace(self):
self.assertRaisesRegex(
- FeatureLibError, "Expected '} TEST;' to terminate anonymous block",
- self.parse, "anon TEST { \n no end in sight")
+ FeatureLibError,
+ "Expected '} TEST;' to terminate anonymous block",
+ self.parse,
+ "anon TEST { \n no end in sight",
+ )
def test_attach(self):
doc = self.parse("table GDEF {Attach [a e] 2;} GDEF;")
@@ -222,8 +259,7 @@ class ParserTest(unittest.TestCase):
[liga] = self.parse("feature liga useExtension {} liga;").statements
self.assertEqual(liga.name, "liga")
self.assertTrue(liga.use_extension)
- self.assertEqual(liga.asFea(),
- "feature liga useExtension {\n \n} liga;\n")
+ self.assertEqual(liga.asFea(), "feature liga useExtension {\n \n} liga;\n")
def test_feature_comment(self):
[liga] = self.parse("feature liga { # Comment\n } liga;").statements
@@ -239,12 +275,16 @@ class ParserTest(unittest.TestCase):
def test_FeatureNames_bad(self):
self.assertRaisesRegex(
- FeatureLibError, 'Expected "name"',
- self.parse, "feature ss01 { featureNames { feature test; } ss01;")
+ FeatureLibError,
+ 'Expected "name"',
+ self.parse,
+ "feature ss01 { featureNames { feature test; } ss01;",
+ )
def test_FeatureNames_comment(self):
[feature] = self.parse(
- "feature ss01 { featureNames { # Comment\n }; } ss01;").statements
+ "feature ss01 { featureNames { # Comment\n }; } ss01;"
+ ).statements
[featureNames] = feature.statements
self.assertIsInstance(featureNames, ast.NestedBlock)
[comment] = featureNames.statements
@@ -253,7 +293,8 @@ class ParserTest(unittest.TestCase):
def test_FeatureNames_emptyStatements(self):
[feature] = self.parse(
- "feature ss01 { featureNames { ;;; }; } ss01;").statements
+ "feature ss01 { featureNames { ;;; }; } ss01;"
+ ).statements
[featureNames] = feature.statements
self.assertIsInstance(featureNames, ast.NestedBlock)
self.assertEqual(featureNames.statements, [])
@@ -266,8 +307,11 @@ class ParserTest(unittest.TestCase):
def test_FontRevision_negative(self):
self.assertRaisesRegex(
- FeatureLibError, "Font revision numbers must be positive",
- self.parse, "table head {FontRevision -17.2;} head;")
+ FeatureLibError,
+ "Font revision numbers must be positive",
+ self.parse,
+ "table head {FontRevision -17.2;} head;",
+ )
def test_strict_glyph_name_check(self):
self.parse("@bad = [a b ccc];", glyphNames=("a", "b", "ccc"))
@@ -282,14 +326,19 @@ class ParserTest(unittest.TestCase):
def test_glyphclass_glyphNameTooLong(self):
self.assertRaisesRegex(
- FeatureLibError, "must not be longer than 63 characters",
- self.parse, "@GlyphClass = [%s];" % ("G" * 64))
+ FeatureLibError,
+ "must not be longer than 63 characters",
+ self.parse,
+ "@GlyphClass = [%s];" % ("G" * 64),
+ )
def test_glyphclass_bad(self):
self.assertRaisesRegex(
FeatureLibError,
"Expected glyph name, glyph range, or glyph class reference",
- self.parse, "@bad = [a 123];")
+ self.parse,
+ "@bad = [a 123];",
+ )
def test_glyphclass_duplicate(self):
# makeotf accepts this, so we should too
@@ -312,9 +361,11 @@ class ParserTest(unittest.TestCase):
"markClass [acute grave] <anchor 500 800> @TOP_MARKS;"
"markClass cedilla <anchor 500 -100> @BOTTOM_MARKS;"
"@MARKS = [@TOP_MARKS @BOTTOM_MARKS ogonek];"
- "@ALL = @MARKS;")
- self.assertEqual(doc.statements[-1].glyphSet(),
- ("acute", "grave", "cedilla", "ogonek"))
+ "@ALL = @MARKS;"
+ )
+ self.assertEqual(
+ doc.statements[-1].glyphSet(), ("acute", "grave", "cedilla", "ogonek")
+ )
def test_glyphclass_range_cid(self):
[gc] = self.parse(r"@GlyphClass = [\999-\1001];").statements
@@ -325,7 +376,9 @@ class ParserTest(unittest.TestCase):
self.assertRaisesRegex(
FeatureLibError,
"Bad range: start should be less than limit",
- self.parse, r"@bad = [\998-\995];")
+ self.parse,
+ r"@bad = [\998-\995];",
+ )
def test_glyphclass_range_uppercase(self):
[gc] = self.parse("@swashes = [X.swash-Z.swash];").statements
@@ -355,7 +408,9 @@ class ParserTest(unittest.TestCase):
# https://github.com/fonttools/fonttools/issues/1768
glyphNames = ()
with CapturingLogHandler("fontTools.feaLib.parser", level="WARNING") as caplog:
- [gc] = self.parse("@class = [A-foo.sc B-foo.sc C D];", glyphNames).statements
+ [gc] = self.parse(
+ "@class = [A-foo.sc B-foo.sc C D];", glyphNames
+ ).statements
self.assertEqual(gc.glyphSet(), ("A-foo.sc", "B-foo.sc", "C", "D"))
self.assertEqual(len(caplog.records), 2)
caplog.assertRegex("Ambiguous glyph name that looks like a range:")
@@ -364,8 +419,7 @@ class ParserTest(unittest.TestCase):
# The OpenType Feature File Specification v1.20 makes it clear
# that if a dashed name could be interpreted either as a glyph name
# or as a range, then the semantics should be the single dashed name.
- glyphNames = (
- "A-foo.sc-C-foo.sc A-foo.sc B-foo.sc C-foo.sc".split())
+ glyphNames = "A-foo.sc-C-foo.sc A-foo.sc B-foo.sc C-foo.sc".split()
[gc] = self.parse("@range = [A-foo.sc-C-foo.sc];", glyphNames).statements
self.assertEqual(gc.glyphSet(), ("A-foo.sc-C-foo.sc",))
@@ -375,7 +429,10 @@ class ParserTest(unittest.TestCase):
FeatureLibError,
'Ambiguous glyph range "A-B-C"; '
'please use "A - B-C" or "A-B - C" to clarify what you mean',
- self.parse, r"@bad = [A-B-C];", glyphNames)
+ self.parse,
+ r"@bad = [A-B-C];",
+ glyphNames,
+ )
def test_glyphclass_range_digit1(self):
[gc] = self.parse("@range = [foo.2-foo.5];").statements
@@ -392,36 +449,50 @@ class ParserTest(unittest.TestCase):
def test_glyphclass_range_bad(self):
self.assertRaisesRegex(
FeatureLibError,
- "Bad range: \"a\" and \"foobar\" should have the same length",
- self.parse, "@bad = [a-foobar];")
+ 'Bad range: "a" and "foobar" should have the same length',
+ self.parse,
+ "@bad = [a-foobar];",
+ )
self.assertRaisesRegex(
- FeatureLibError, "Bad range: \"A.swash-z.swash\"",
- self.parse, "@bad = [A.swash-z.swash];")
+ FeatureLibError,
+ 'Bad range: "A.swash-z.swash"',
+ self.parse,
+ "@bad = [A.swash-z.swash];",
+ )
self.assertRaisesRegex(
- FeatureLibError, "Start of range must be smaller than its end",
- self.parse, "@bad = [B.swash-A.swash];")
+ FeatureLibError,
+ "Start of range must be smaller than its end",
+ self.parse,
+ "@bad = [B.swash-A.swash];",
+ )
self.assertRaisesRegex(
- FeatureLibError, "Bad range: \"foo.1234-foo.9876\"",
- self.parse, "@bad = [foo.1234-foo.9876];")
+ FeatureLibError,
+ 'Bad range: "foo.1234-foo.9876"',
+ self.parse,
+ "@bad = [foo.1234-foo.9876];",
+ )
def test_glyphclass_range_mixed(self):
[gc] = self.parse("@range = [a foo.09-foo.11 X.sc-Z.sc];").statements
- self.assertEqual(gc.glyphSet(), (
- "a", "foo.09", "foo.10", "foo.11", "X.sc", "Y.sc", "Z.sc"
- ))
+ self.assertEqual(
+ gc.glyphSet(), ("a", "foo.09", "foo.10", "foo.11", "X.sc", "Y.sc", "Z.sc")
+ )
def test_glyphclass_reference(self):
[vowels_lc, vowels_uc, vowels] = self.parse(
"@Vowels.lc = [a e i o u]; @Vowels.uc = [A E I O U];"
- "@Vowels = [@Vowels.lc @Vowels.uc y Y];").statements
+ "@Vowels = [@Vowels.lc @Vowels.uc y Y];"
+ ).statements
self.assertEqual(vowels_lc.glyphSet(), tuple("aeiou"))
self.assertEqual(vowels_uc.glyphSet(), tuple("AEIOU"))
self.assertEqual(vowels.glyphSet(), tuple("aeiouAEIOUyY"))
- self.assertEqual(vowels.asFea(),
- "@Vowels = [@Vowels.lc @Vowels.uc y Y];")
+ self.assertEqual(vowels.asFea(), "@Vowels = [@Vowels.lc @Vowels.uc y Y];")
self.assertRaisesRegex(
- FeatureLibError, "Unknown glyph class @unknown",
- self.parse, "@bad = [@unknown];")
+ FeatureLibError,
+ "Unknown glyph class @unknown",
+ self.parse,
+ "@bad = [@unknown];",
+ )
def test_glyphclass_scoping(self):
[foo, liga, smcp] = self.parse(
@@ -439,8 +510,7 @@ class ParserTest(unittest.TestCase):
"feature F1 { lookup L { @GLYPHCLASS = [A B C];} L; } F1;"
"feature F2 { sub @GLYPHCLASS by D; } F2;"
).statements
- self.assertEqual(list(f2.statements[0].glyphs[0].glyphSet()),
- ["A", "B", "C"])
+ self.assertEqual(list(f2.statements[0].glyphs[0].glyphSet()), ["A", "B", "C"])
def test_GlyphClassDef(self):
doc = self.parse("table GDEF {GlyphClassDef [b],[l],[m],[C c];} GDEF;")
@@ -473,9 +543,8 @@ class ParserTest(unittest.TestCase):
def test_ignore_position(self):
doc = self.parse(
- "feature test {"
- " ignore position f [a e] d' [a u]' [e y];"
- "} test;")
+ "feature test {" " ignore position f [a e] d' [a u]' [e y];" "} test;"
+ )
sub = doc.statements[0].statements[0]
self.assertIsInstance(sub, ast.IgnorePosStatement)
[(prefix, glyphs, suffix)] = sub.chainContexts
@@ -489,7 +558,8 @@ class ParserTest(unittest.TestCase):
'No lookups can be specified for "ignore pos"',
self.parse,
"lookup L { pos [A A.sc] -100; } L;"
- "feature test { ignore pos f' i', A' lookup L; } test;")
+ "feature test { ignore pos f' i', A' lookup L; } test;",
+ )
def test_ignore_sub(self):
doc = self.parse("feature test {ignore sub e t' c, q u' u' x;} test;")
@@ -505,9 +575,8 @@ class ParserTest(unittest.TestCase):
def test_ignore_substitute(self):
doc = self.parse(
- "feature test {"
- " ignore substitute f [a e] d' [a u]' [e y];"
- "} test;")
+ "feature test {" " ignore substitute f [a e] d' [a u]' [e y];" "} test;"
+ )
sub = doc.statements[0].statements[0]
self.assertIsInstance(sub, ast.IgnoreSubstStatement)
[(prefix, glyphs, suffix)] = sub.chainContexts
@@ -521,15 +590,19 @@ class ParserTest(unittest.TestCase):
'No lookups can be specified for "ignore sub"',
self.parse,
"lookup L { sub [A A.sc] by a; } L;"
- "feature test { ignore sub f' i', A' lookup L; } test;")
+ "feature test { ignore sub f' i', A' lookup L; } test;",
+ )
def test_include_statement(self):
- doc = self.parse("""\
+ doc = self.parse(
+ """\
include(../family.fea);
include # Comment
(foo)
;
- """, followIncludes=False)
+ """,
+ followIncludes=False,
+ )
s1, s2, s3 = doc.statements
self.assertEqual(type(s1), ast.IncludeStatement)
self.assertEqual(s1.filename, "../family.fea")
@@ -541,9 +614,12 @@ class ParserTest(unittest.TestCase):
self.assertEqual(s3.text, "# Comment")
def test_include_statement_no_semicolon(self):
- doc = self.parse("""\
+ doc = self.parse(
+ """\
include(../family.fea)
- """, followIncludes=False)
+ """,
+ followIncludes=False,
+ )
s1 = doc.statements[0]
self.assertEqual(type(s1), ast.IncludeStatement)
self.assertEqual(s1.filename, "../family.fea")
@@ -566,9 +642,9 @@ class ParserTest(unittest.TestCase):
self.assertFalse(s.required)
def test_language_exclude_dflt_required(self):
- doc = self.parse("feature test {"
- " language DEU exclude_dflt required;"
- "} test;")
+ doc = self.parse(
+ "feature test {" " language DEU exclude_dflt required;" "} test;"
+ )
s = doc.statements[0].statements[0]
self.assertEqual(type(s), ast.LanguageStatement)
self.assertEqual(s.language, "DEU ")
@@ -584,9 +660,9 @@ class ParserTest(unittest.TestCase):
self.assertFalse(s.required)
def test_language_include_dflt_required(self):
- doc = self.parse("feature test {"
- " language DEU include_dflt required;"
- "} test;")
+ doc = self.parse(
+ "feature test {" " language DEU include_dflt required;" "} test;"
+ )
s = doc.statements[0].statements[0]
self.assertEqual(type(s), ast.LanguageStatement)
self.assertEqual(s.language, "DEU ")
@@ -597,7 +673,9 @@ class ParserTest(unittest.TestCase):
self.assertRaisesRegex(
FeatureLibError,
'"DFLT" is not a valid language tag; use "dflt" instead',
- self.parse, "feature test { language DFLT; } test;")
+ self.parse,
+ "feature test { language DFLT; } test;",
+ )
def test_ligatureCaretByIndex_glyphClass(self):
doc = self.parse("table GDEF{LigatureCaretByIndex [c_t f_i] 2;}GDEF;")
@@ -636,20 +714,21 @@ class ParserTest(unittest.TestCase):
[lookup] = self.parse("lookup Foo useExtension {} Foo;").statements
self.assertEqual(lookup.name, "Foo")
self.assertTrue(lookup.use_extension)
- self.assertEqual(lookup.asFea(),
- "lookup Foo useExtension {\n \n} Foo;\n")
+ self.assertEqual(lookup.asFea(), "lookup Foo useExtension {\n \n} Foo;\n")
def test_lookup_block_name_mismatch(self):
self.assertRaisesRegex(
- FeatureLibError, 'Expected "Foo"',
- self.parse, "lookup Foo {} Bar;")
+ FeatureLibError, 'Expected "Foo"', self.parse, "lookup Foo {} Bar;"
+ )
def test_lookup_block_with_horizontal_valueRecordDef(self):
- doc = self.parse("feature liga {"
- " lookup look {"
- " valueRecordDef 123 foo;"
- " } look;"
- "} liga;")
+ doc = self.parse(
+ "feature liga {"
+ " lookup look {"
+ " valueRecordDef 123 foo;"
+ " } look;"
+ "} liga;"
+ )
[liga] = doc.statements
[look] = liga.statements
[foo] = look.statements
@@ -657,11 +736,13 @@ class ParserTest(unittest.TestCase):
self.assertIsNone(foo.value.yAdvance)
def test_lookup_block_with_vertical_valueRecordDef(self):
- doc = self.parse("feature vkrn {"
- " lookup look {"
- " valueRecordDef 123 foo;"
- " } look;"
- "} vkrn;")
+ doc = self.parse(
+ "feature vkrn {"
+ " lookup look {"
+ " valueRecordDef 123 foo;"
+ " } look;"
+ "} vkrn;"
+ )
[vkrn] = doc.statements
[look] = vkrn.statements
[foo] = look.statements
@@ -675,15 +756,17 @@ class ParserTest(unittest.TestCase):
self.assertEqual(comment.text, "# Comment")
def test_lookup_reference(self):
- [foo, bar] = self.parse("lookup Foo {} Foo;"
- "feature Bar {lookup Foo;} Bar;").statements
+ [foo, bar] = self.parse(
+ "lookup Foo {} Foo;" "feature Bar {lookup Foo;} Bar;"
+ ).statements
[ref] = bar.statements
self.assertEqual(type(ref), ast.LookupReferenceStatement)
self.assertEqual(ref.lookup, foo)
def test_lookup_reference_to_lookup_inside_feature(self):
- [qux, bar] = self.parse("feature Qux {lookup Foo {} Foo;} Qux;"
- "feature Bar {lookup Foo;} Bar;").statements
+ [qux, bar] = self.parse(
+ "feature Qux {lookup Foo {} Foo;} Qux;" "feature Bar {lookup Foo;} Bar;"
+ ).statements
[foo] = qux.statements
[ref] = bar.statements
self.assertIsInstance(ref, ast.LookupReferenceStatement)
@@ -691,8 +774,11 @@ class ParserTest(unittest.TestCase):
def test_lookup_reference_unknown(self):
self.assertRaisesRegex(
- FeatureLibError, 'Unknown lookup "Huh"',
- self.parse, "feature liga {lookup Huh;} liga;")
+ FeatureLibError,
+ 'Unknown lookup "Huh"',
+ self.parse,
+ "feature liga {lookup Huh;} liga;",
+ )
def parse_lookupflag_(self, s):
return self.parse("lookup L {%s} L;" % s).statements[0].statements[-1]
@@ -708,52 +794,59 @@ class ParserTest(unittest.TestCase):
def test_lookupflag_format_A_MarkAttachmentType(self):
flag = self.parse_lookupflag_(
"@TOP_MARKS = [acute grave macron];"
- "lookupflag RightToLeft MarkAttachmentType @TOP_MARKS;")
+ "lookupflag RightToLeft MarkAttachmentType @TOP_MARKS;"
+ )
self.assertIsInstance(flag, ast.LookupFlagStatement)
self.assertEqual(flag.value, 1)
self.assertIsInstance(flag.markAttachment, ast.GlyphClassName)
- self.assertEqual(flag.markAttachment.glyphSet(),
- ("acute", "grave", "macron"))
+ self.assertEqual(flag.markAttachment.glyphSet(), ("acute", "grave", "macron"))
self.assertIsNone(flag.markFilteringSet)
- self.assertEqual(flag.asFea(),
- "lookupflag RightToLeft MarkAttachmentType @TOP_MARKS;")
+ self.assertEqual(
+ flag.asFea(), "lookupflag RightToLeft MarkAttachmentType @TOP_MARKS;"
+ )
def test_lookupflag_format_A_MarkAttachmentType_glyphClass(self):
flag = self.parse_lookupflag_(
- "lookupflag RightToLeft MarkAttachmentType [acute grave macron];")
+ "lookupflag RightToLeft MarkAttachmentType [acute grave macron];"
+ )
self.assertIsInstance(flag, ast.LookupFlagStatement)
self.assertEqual(flag.value, 1)
self.assertIsInstance(flag.markAttachment, ast.GlyphClass)
- self.assertEqual(flag.markAttachment.glyphSet(),
- ("acute", "grave", "macron"))
+ self.assertEqual(flag.markAttachment.glyphSet(), ("acute", "grave", "macron"))
self.assertIsNone(flag.markFilteringSet)
- self.assertEqual(flag.asFea(),
- "lookupflag RightToLeft MarkAttachmentType [acute grave macron];")
+ self.assertEqual(
+ flag.asFea(),
+ "lookupflag RightToLeft MarkAttachmentType [acute grave macron];",
+ )
def test_lookupflag_format_A_UseMarkFilteringSet(self):
flag = self.parse_lookupflag_(
"@BOTTOM_MARKS = [cedilla ogonek];"
- "lookupflag UseMarkFilteringSet @BOTTOM_MARKS IgnoreLigatures;")
+ "lookupflag UseMarkFilteringSet @BOTTOM_MARKS IgnoreLigatures;"
+ )
self.assertIsInstance(flag, ast.LookupFlagStatement)
self.assertEqual(flag.value, 4)
self.assertIsNone(flag.markAttachment)
self.assertIsInstance(flag.markFilteringSet, ast.GlyphClassName)
- self.assertEqual(flag.markFilteringSet.glyphSet(),
- ("cedilla", "ogonek"))
- self.assertEqual(flag.asFea(),
- "lookupflag IgnoreLigatures UseMarkFilteringSet @BOTTOM_MARKS;")
+ self.assertEqual(flag.markFilteringSet.glyphSet(), ("cedilla", "ogonek"))
+ self.assertEqual(
+ flag.asFea(),
+ "lookupflag IgnoreLigatures UseMarkFilteringSet @BOTTOM_MARKS;",
+ )
def test_lookupflag_format_A_UseMarkFilteringSet_glyphClass(self):
flag = self.parse_lookupflag_(
- "lookupflag UseMarkFilteringSet [cedilla ogonek] IgnoreLigatures;")
+ "lookupflag UseMarkFilteringSet [cedilla ogonek] IgnoreLigatures;"
+ )
self.assertIsInstance(flag, ast.LookupFlagStatement)
self.assertEqual(flag.value, 4)
self.assertIsNone(flag.markAttachment)
self.assertIsInstance(flag.markFilteringSet, ast.GlyphClass)
- self.assertEqual(flag.markFilteringSet.glyphSet(),
- ("cedilla", "ogonek"))
- self.assertEqual(flag.asFea(),
- "lookupflag IgnoreLigatures UseMarkFilteringSet [cedilla ogonek];")
+ self.assertEqual(flag.markFilteringSet.glyphSet(), ("cedilla", "ogonek"))
+ self.assertEqual(
+ flag.asFea(),
+ "lookupflag IgnoreLigatures UseMarkFilteringSet [cedilla ogonek];",
+ )
def test_lookupflag_format_B(self):
flag = self.parse_lookupflag_("lookupflag 7;")
@@ -761,8 +854,9 @@ class ParserTest(unittest.TestCase):
self.assertEqual(flag.value, 7)
self.assertIsNone(flag.markAttachment)
self.assertIsNone(flag.markFilteringSet)
- self.assertEqual(flag.asFea(),
- "lookupflag RightToLeft IgnoreBaseGlyphs IgnoreLigatures;")
+ self.assertEqual(
+ flag.asFea(), "lookupflag RightToLeft IgnoreBaseGlyphs IgnoreLigatures;"
+ )
def test_lookupflag_format_B_zero(self):
flag = self.parse_lookupflag_("lookupflag 0;")
@@ -775,22 +869,26 @@ class ParserTest(unittest.TestCase):
def test_lookupflag_no_value(self):
self.assertRaisesRegex(
FeatureLibError,
- 'lookupflag must have a value',
+ "lookupflag must have a value",
self.parse,
- "feature test {lookupflag;} test;")
+ "feature test {lookupflag;} test;",
+ )
def test_lookupflag_repeated(self):
self.assertRaisesRegex(
FeatureLibError,
- 'RightToLeft can be specified only once',
+ "RightToLeft can be specified only once",
self.parse,
- "feature test {lookupflag RightToLeft RightToLeft;} test;")
+ "feature test {lookupflag RightToLeft RightToLeft;} test;",
+ )
def test_lookupflag_unrecognized(self):
self.assertRaisesRegex(
FeatureLibError,
'"IgnoreCookies" is not a recognized lookupflag',
- self.parse, "feature test {lookupflag IgnoreCookies;} test;")
+ self.parse,
+ "feature test {lookupflag IgnoreCookies;} test;",
+ )
def test_gpos_type_1_glyph(self):
doc = self.parse("feature kern {pos one <1 2 3 4>;} kern;")
@@ -834,11 +932,15 @@ class ParserTest(unittest.TestCase):
self.assertRaisesRegex(
FeatureLibError,
'"enumerate" is only allowed with pair positionings',
- self.parse, "feature test {enum pos T 100;} test;")
+ self.parse,
+ "feature test {enum pos T 100;} test;",
+ )
self.assertRaisesRegex(
FeatureLibError,
'"enumerate" is only allowed with pair positionings',
- self.parse, "feature test {enumerate pos T 100;} test;")
+ self.parse,
+ "feature test {enumerate pos T 100;} test;",
+ )
def test_gpos_type_1_chained(self):
doc = self.parse("feature kern {pos [A B] [T Y]' 20 comma;} kern;")
@@ -870,10 +972,47 @@ class ParserTest(unittest.TestCase):
self.assertEqual(glyphstr(pos.prefix), "[A B]")
self.assertEqual(glyphstr(pos.suffix), "comma")
+ def test_gpos_type_1_chained_special_kern_format_valuerecord_format_b_bug2293(self):
+ # https://github.com/fonttools/fonttools/issues/2293
+ doc = self.parse("feature kern {pos [A B] [T Y]' comma a <0 0 0 0>;} kern;")
+ pos = doc.statements[0].statements[0]
+ self.assertIsInstance(pos, ast.SinglePosStatement)
+ [(glyphs, value)] = pos.pos
+ self.assertEqual(glyphstr([glyphs]), "[T Y]")
+ self.assertEqual(value.asFea(), "<0 0 0 0>")
+ self.assertEqual(glyphstr(pos.prefix), "[A B]")
+ self.assertEqual(glyphstr(pos.suffix), "comma a")
+
+ def test_gpos_type_1_chained_exception1(self):
+ with self.assertRaisesRegex(FeatureLibError, "Positioning values are allowed"):
+ doc = self.parse(
+ "feature kern {" " pos [A B]' [T Y]' comma a <0 0 0 0>;" "} kern;"
+ )
+
+ def test_gpos_type_1_chained_exception2(self):
+ with self.assertRaisesRegex(FeatureLibError, "Positioning values are allowed"):
+ doc = self.parse(
+ "feature kern {"
+ " pos [A B]' <0 0 0 0> [T Y]' comma a <0 0 0 0>;"
+ "} kern;"
+ )
+
+ def test_gpos_type_1_chained_exception3(self):
+ with self.assertRaisesRegex(FeatureLibError, "Positioning cannot be applied"):
+ doc = self.parse(
+ "feature kern {"
+ " pos [A B] <0 0 0 0> [T Y]' comma a <0 0 0 0>;"
+ "} kern;"
+ )
+
+ def test_gpos_type_1_chained_exception4(self):
+ with self.assertRaisesRegex(FeatureLibError, "Positioning values are allowed"):
+ doc = self.parse("feature kern {" " pos a' b c 123 d;" "} kern;")
+
def test_gpos_type_2_format_a(self):
- doc = self.parse("feature kern {"
- " pos [T V] -60 [a b c] <1 2 3 4>;"
- "} kern;")
+ doc = self.parse(
+ "feature kern {" " pos [T V] -60 [a b c] <1 2 3 4>;" "} kern;"
+ )
pos = doc.statements[0].statements[0]
self.assertEqual(type(pos), ast.PairPosStatement)
self.assertFalse(pos.enumerated)
@@ -883,9 +1022,9 @@ class ParserTest(unittest.TestCase):
self.assertEqual(pos.valuerecord2.asFea(), "<1 2 3 4>")
def test_gpos_type_2_format_a_enumerated(self):
- doc = self.parse("feature kern {"
- " enum pos [T V] -60 [a b c] <1 2 3 4>;"
- "} kern;")
+ doc = self.parse(
+ "feature kern {" " enum pos [T V] -60 [a b c] <1 2 3 4>;" "} kern;"
+ )
pos = doc.statements[0].statements[0]
self.assertEqual(type(pos), ast.PairPosStatement)
self.assertTrue(pos.enumerated)
@@ -895,9 +1034,9 @@ class ParserTest(unittest.TestCase):
self.assertEqual(pos.valuerecord2.asFea(), "<1 2 3 4>")
def test_gpos_type_2_format_a_with_null_first(self):
- doc = self.parse("feature kern {"
- " pos [T V] <NULL> [a b c] <1 2 3 4>;"
- "} kern;")
+ doc = self.parse(
+ "feature kern {" " pos [T V] <NULL> [a b c] <1 2 3 4>;" "} kern;"
+ )
pos = doc.statements[0].statements[0]
self.assertEqual(type(pos), ast.PairPosStatement)
self.assertFalse(pos.enumerated)
@@ -909,9 +1048,9 @@ class ParserTest(unittest.TestCase):
self.assertEqual(pos.asFea(), "pos [T V] <NULL> [a b c] <1 2 3 4>;")
def test_gpos_type_2_format_a_with_null_second(self):
- doc = self.parse("feature kern {"
- " pos [T V] <1 2 3 4> [a b c] <NULL>;"
- "} kern;")
+ doc = self.parse(
+ "feature kern {" " pos [T V] <1 2 3 4> [a b c] <NULL>;" "} kern;"
+ )
pos = doc.statements[0].statements[0]
self.assertEqual(type(pos), ast.PairPosStatement)
self.assertFalse(pos.enumerated)
@@ -922,9 +1061,7 @@ class ParserTest(unittest.TestCase):
self.assertEqual(pos.asFea(), "pos [T V] [a b c] <1 2 3 4>;")
def test_gpos_type_2_format_b(self):
- doc = self.parse("feature kern {"
- " pos [T V] [a b c] <1 2 3 4>;"
- "} kern;")
+ doc = self.parse("feature kern {" " pos [T V] [a b c] <1 2 3 4>;" "} kern;")
pos = doc.statements[0].statements[0]
self.assertEqual(type(pos), ast.PairPosStatement)
self.assertFalse(pos.enumerated)
@@ -934,9 +1071,9 @@ class ParserTest(unittest.TestCase):
self.assertIsNone(pos.valuerecord2)
def test_gpos_type_2_format_b_enumerated(self):
- doc = self.parse("feature kern {"
- " enumerate position [T V] [a b c] <1 2 3 4>;"
- "} kern;")
+ doc = self.parse(
+ "feature kern {" " enumerate position [T V] [a b c] <1 2 3 4>;" "} kern;"
+ )
pos = doc.statements[0].statements[0]
self.assertEqual(type(pos), ast.PairPosStatement)
self.assertTrue(pos.enumerated)
@@ -946,9 +1083,11 @@ class ParserTest(unittest.TestCase):
self.assertIsNone(pos.valuerecord2)
def test_gpos_type_3(self):
- doc = self.parse("feature kern {"
- " position cursive A <anchor 12 -2> <anchor 2 3>;"
- "} kern;")
+ doc = self.parse(
+ "feature kern {"
+ " position cursive A <anchor 12 -2> <anchor 2 3>;"
+ "} kern;"
+ )
pos = doc.statements[0].statements[0]
self.assertEqual(type(pos), ast.CursivePosStatement)
self.assertEqual(pos.glyphclass.glyphSet(), ("A",))
@@ -962,7 +1101,8 @@ class ParserTest(unittest.TestCase):
self.parse,
"feature kern {"
" enumerate position cursive A <anchor 12 -2> <anchor 2 3>;"
- "} kern;")
+ "} kern;",
+ )
def test_gpos_type_4(self):
doc = self.parse(
@@ -973,7 +1113,8 @@ class ParserTest(unittest.TestCase):
" position base [a e o u] "
" <anchor 250 450> mark @TOP_MARKS "
" <anchor 210 -10> mark @BOTTOM_MARKS;"
- "} test;")
+ "} test;"
+ )
pos = doc.statements[-1].statements[0]
self.assertEqual(type(pos), ast.MarkBasePosStatement)
self.assertEqual(pos.base.glyphSet(), ("a", "e", "o", "u"))
@@ -984,21 +1125,24 @@ class ParserTest(unittest.TestCase):
def test_gpos_type_4_enumerated(self):
self.assertRaisesRegex(
FeatureLibError,
- '"enumerate" is not allowed with '
- 'mark-to-base attachment positioning',
+ '"enumerate" is not allowed with ' "mark-to-base attachment positioning",
self.parse,
"feature kern {"
" markClass cedilla <anchor 300 600> @BOTTOM_MARKS;"
" enumerate position base A <anchor 12 -2> mark @BOTTOM_MARKS;"
- "} kern;")
+ "} kern;",
+ )
def test_gpos_type_4_not_markClass(self):
self.assertRaisesRegex(
- FeatureLibError, "@MARKS is not a markClass", self.parse,
+ FeatureLibError,
+ "@MARKS is not a markClass",
+ self.parse,
"@MARKS = [acute grave];"
"feature test {"
" position base [a e o u] <anchor 250 450> mark @MARKS;"
- "} test;")
+ "} test;",
+ )
def test_gpos_type_5(self):
doc = self.parse(
@@ -1015,7 +1159,8 @@ class ParserTest(unittest.TestCase):
" <anchor NULL> "
" ligComponent "
" <anchor 30 -10> mark @BOTTOM_MARKS;"
- "} test;")
+ "} test;"
+ )
pos = doc.statements[-1].statements[0]
self.assertEqual(type(pos), ast.MarkLigPosStatement)
self.assertEqual(pos.ligatures.glyphSet(), ("a_f_f_i", "o_f_f_i"))
@@ -1029,29 +1174,34 @@ class ParserTest(unittest.TestCase):
self.assertRaisesRegex(
FeatureLibError,
'"enumerate" is not allowed with '
- 'mark-to-ligature attachment positioning',
+ "mark-to-ligature attachment positioning",
self.parse,
"feature test {"
" markClass cedilla <anchor 300 600> @MARKS;"
" enumerate position "
" ligature f_i <anchor 100 0> mark @MARKS"
" ligComponent <anchor NULL>;"
- "} test;")
+ "} test;",
+ )
def test_gpos_type_5_not_markClass(self):
self.assertRaisesRegex(
- FeatureLibError, "@MARKS is not a markClass", self.parse,
+ FeatureLibError,
+ "@MARKS is not a markClass",
+ self.parse,
"@MARKS = [acute grave];"
"feature test {"
" position ligature f_i <anchor 250 450> mark @MARKS;"
- "} test;")
+ "} test;",
+ )
def test_gpos_type_6(self):
doc = self.parse(
"markClass damma <anchor 189 -103> @MARK_CLASS_1;"
"feature test {"
" position mark hamza <anchor 221 301> mark @MARK_CLASS_1;"
- "} test;")
+ "} test;"
+ )
pos = doc.statements[-1].statements[0]
self.assertEqual(type(pos), ast.MarkMarkPosStatement)
self.assertEqual(pos.baseMarks.glyphSet(), ("hamza",))
@@ -1061,28 +1211,32 @@ class ParserTest(unittest.TestCase):
def test_gpos_type_6_enumerated(self):
self.assertRaisesRegex(
FeatureLibError,
- '"enumerate" is not allowed with '
- 'mark-to-mark attachment positioning',
+ '"enumerate" is not allowed with ' "mark-to-mark attachment positioning",
self.parse,
"markClass damma <anchor 189 -103> @MARK_CLASS_1;"
"feature test {"
" enum pos mark hamza <anchor 221 301> mark @MARK_CLASS_1;"
- "} test;")
+ "} test;",
+ )
def test_gpos_type_6_not_markClass(self):
self.assertRaisesRegex(
- FeatureLibError, "@MARKS is not a markClass", self.parse,
+ FeatureLibError,
+ "@MARKS is not a markClass",
+ self.parse,
"@MARKS = [acute grave];"
"feature test {"
" position mark cedilla <anchor 250 450> mark @MARKS;"
- "} test;")
+ "} test;",
+ )
def test_gpos_type_8(self):
doc = self.parse(
"lookup L1 {pos one 100;} L1; lookup L2 {pos two 200;} L2;"
"feature test {"
" pos [A a] [B b] I' lookup L1 [N n]' lookup L2 P' [Y y] [Z z];"
- "} test;")
+ "} test;"
+ )
lookup1, lookup2 = doc.statements[0:2]
pos = doc.statements[-1].statements[0]
self.assertEqual(type(pos), ast.ChainContextPosStatement)
@@ -1099,7 +1253,8 @@ class ParserTest(unittest.TestCase):
"lookup L1 {pos one 100;} L1;"
"feature test {"
" pos A' lookup L1 B' 20;"
- "} test;")
+ "} test;",
+ )
def test_markClass(self):
doc = self.parse("markClass [acute grave] <anchor 350 3> @MARKS;")
@@ -1110,8 +1265,7 @@ class ParserTest(unittest.TestCase):
self.assertEqual((mc.anchor.x, mc.anchor.y), (350, 3))
def test_nameid_windows_utf16(self):
- doc = self.parse(
- r'table name { nameid 9 "M\00fcller-Lanc\00e9"; } name;')
+ doc = self.parse(r'table name { nameid 9 "M\00fcller-Lanc\00e9"; } name;')
name = doc.statements[0].statements[0]
self.assertIsInstance(name, ast.NameRecord)
self.assertEqual(name.nameID, 9)
@@ -1128,8 +1282,7 @@ class ParserTest(unittest.TestCase):
self.assertEqual(name.asFea(), r'nameid 9 "Back\005cslash";')
def test_nameid_windows_utf16_quotation_mark(self):
- doc = self.parse(
- r'table name { nameid 9 "Quotation \0022Mark\0022"; } name;')
+ doc = self.parse(r'table name { nameid 9 "Quotation \0022Mark\0022"; } name;')
name = doc.statements[0].statements[0]
self.assertEqual(name.string, 'Quotation "Mark"')
self.assertEqual(name.asFea(), r'nameid 9 "Quotation \0022Mark\0022";')
@@ -1141,8 +1294,7 @@ class ParserTest(unittest.TestCase):
self.assertEqual(name.asFea(), r'nameid 9 "Carrot \d83e\dd55";')
def test_nameid_mac_roman(self):
- doc = self.parse(
- r'table name { nameid 9 1 "Joachim M\9fller-Lanc\8e"; } name;')
+ doc = self.parse(r'table name { nameid 9 1 "Joachim M\9fller-Lanc\8e"; } name;')
name = doc.statements[0].statements[0]
self.assertIsInstance(name, ast.NameRecord)
self.assertEqual(name.nameID, 9)
@@ -1150,12 +1302,10 @@ class ParserTest(unittest.TestCase):
self.assertEqual(name.platEncID, 0)
self.assertEqual(name.langID, 0)
self.assertEqual(name.string, "Joachim Müller-Lancé")
- self.assertEqual(name.asFea(),
- r'nameid 9 1 "Joachim M\9fller-Lanc\8e";')
+ self.assertEqual(name.asFea(), r'nameid 9 1 "Joachim M\9fller-Lanc\8e";')
def test_nameid_mac_croatian(self):
- doc = self.parse(
- r'table name { nameid 9 1 0 18 "Jovica Veljovi\e6"; } name;')
+ doc = self.parse(r'table name { nameid 9 1 0 18 "Jovica Veljovi\e6"; } name;')
name = doc.statements[0].statements[0]
self.assertEqual(name.nameID, 9)
self.assertEqual(name.platformID, 1)
@@ -1166,12 +1316,14 @@ class ParserTest(unittest.TestCase):
def test_nameid_unsupported_platform(self):
self.assertRaisesRegex(
- FeatureLibError, "Expected platform id 1 or 3",
- self.parse, 'table name { nameid 9 666 "Foo"; } name;')
+ FeatureLibError,
+ "Expected platform id 1 or 3",
+ self.parse,
+ 'table name { nameid 9 666 "Foo"; } name;',
+ )
def test_nameid_hexadecimal(self):
- doc = self.parse(
- r'table name { nameid 0x9 0x3 0x1 0x0409 "Test"; } name;')
+ doc = self.parse(r'table name { nameid 0x9 0x3 0x1 0x0409 "Test"; } name;')
name = doc.statements[0].statements[0]
self.assertEqual(name.nameID, 9)
self.assertEqual(name.platformID, 3)
@@ -1179,8 +1331,7 @@ class ParserTest(unittest.TestCase):
self.assertEqual(name.langID, 0x0409)
def test_nameid_octal(self):
- doc = self.parse(
- r'table name { nameid 011 03 012 02011 "Test"; } name;')
+ doc = self.parse(r'table name { nameid 011 03 012 02011 "Test"; } name;')
name = doc.statements[0].statements[0]
self.assertEqual(name.nameID, 9)
self.assertEqual(name.platformID, 3)
@@ -1188,14 +1339,12 @@ class ParserTest(unittest.TestCase):
self.assertEqual(name.langID, 0o2011)
def test_cv_hexadecimal(self):
- doc = self.parse(
- r'feature cv01 { cvParameters { Character 0x5DDE; }; } cv01;')
+ doc = self.parse(r"feature cv01 { cvParameters { Character 0x5DDE; }; } cv01;")
cv = doc.statements[0].statements[0].statements[0]
self.assertEqual(cv.character, 0x5DDE)
def test_cv_octal(self):
- doc = self.parse(
- r'feature cv01 { cvParameters { Character 056736; }; } cv01;')
+ doc = self.parse(r"feature cv01 { cvParameters { Character 056736; }; } cv01;")
cv = doc.statements[0].statements[0].statements[0]
self.assertEqual(cv.character, 0o56736)
@@ -1212,8 +1361,7 @@ class ParserTest(unittest.TestCase):
doc = self.parse(r"feature test {rsub \1 [\2 \3] \4' \5 by \6;} test;")
rsub = doc.statements[0].statements[0]
self.assertEqual(type(rsub), ast.ReverseChainSingleSubstStatement)
- self.assertEqual(glyphstr(rsub.old_prefix),
- "cid00001 [cid00002 cid00003]")
+ self.assertEqual(glyphstr(rsub.old_prefix), "cid00001 [cid00002 cid00003]")
self.assertEqual(rsub.glyphs[0].glyphSet(), ("cid00004",))
self.assertEqual(rsub.replacements[0].glyphSet(), ("cid00006",))
self.assertEqual(glyphstr(rsub.old_suffix), "cid00005")
@@ -1222,51 +1370,53 @@ class ParserTest(unittest.TestCase):
doc = self.parse(
"feature smcp {"
" reversesub A B [one.fitted one.oldstyle]' C [d D] by one;"
- "} smcp;")
+ "} smcp;"
+ )
rsub = doc.statements[0].statements[0]
self.assertEqual(type(rsub), ast.ReverseChainSingleSubstStatement)
self.assertEqual(glyphstr(rsub.old_prefix), "A B")
self.assertEqual(glyphstr(rsub.old_suffix), "C [D d]")
- self.assertEqual(mapping(rsub), {
- "one.fitted": "one",
- "one.oldstyle": "one"
- })
+ self.assertEqual(mapping(rsub), {"one.fitted": "one", "one.oldstyle": "one"})
def test_rsub_format_c(self):
doc = self.parse(
"feature test {"
" reversesub BACK TRACK [a-d]' LOOK AHEAD by [A.sc-D.sc];"
- "} test;")
+ "} test;"
+ )
rsub = doc.statements[0].statements[0]
self.assertEqual(type(rsub), ast.ReverseChainSingleSubstStatement)
self.assertEqual(glyphstr(rsub.old_prefix), "BACK TRACK")
self.assertEqual(glyphstr(rsub.old_suffix), "LOOK AHEAD")
- self.assertEqual(mapping(rsub), {
- "a": "A.sc",
- "b": "B.sc",
- "c": "C.sc",
- "d": "D.sc"
- })
+ self.assertEqual(
+ mapping(rsub), {"a": "A.sc", "b": "B.sc", "c": "C.sc", "d": "D.sc"}
+ )
def test_rsub_from(self):
self.assertRaisesRegex(
FeatureLibError,
'Reverse chaining substitutions do not support "from"',
- self.parse, "feature test {rsub a from [a.1 a.2 a.3];} test;")
+ self.parse,
+ "feature test {rsub a from [a.1 a.2 a.3];} test;",
+ )
def test_rsub_nonsingle(self):
self.assertRaisesRegex(
FeatureLibError,
"In reverse chaining single substitutions, only a single glyph "
"or glyph class can be replaced",
- self.parse, "feature test {rsub c d by c_d;} test;")
+ self.parse,
+ "feature test {rsub c d by c_d;} test;",
+ )
def test_rsub_multiple_replacement_glyphs(self):
self.assertRaisesRegex(
FeatureLibError,
- 'In reverse chaining single substitutions, the replacement '
+ "In reverse chaining single substitutions, the replacement "
r'\(after "by"\) must be a single glyph or glyph class',
- self.parse, "feature test {rsub f_i by f i;} test;")
+ self.parse,
+ "feature test {rsub f_i by f i;} test;",
+ )
def test_script(self):
doc = self.parse("feature test {script cyrl;} test;")
@@ -1278,77 +1428,92 @@ class ParserTest(unittest.TestCase):
self.assertRaisesRegex(
FeatureLibError,
'"dflt" is not a valid script tag; use "DFLT" instead',
- self.parse, "feature test {script dflt;} test;")
+ self.parse,
+ "feature test {script dflt;} test;",
+ )
def test_stat_design_axis(self): # STAT DesignAxis
- doc = self.parse('table STAT { DesignAxis opsz 0 '
- '{name "Optical Size";}; } STAT;')
+ doc = self.parse(
+ "table STAT { DesignAxis opsz 0 " '{name "Optical Size";}; } STAT;'
+ )
da = doc.statements[0].statements[0]
self.assertIsInstance(da, ast.STATDesignAxisStatement)
- self.assertEqual(da.tag, 'opsz')
+ self.assertEqual(da.tag, "opsz")
self.assertEqual(da.axisOrder, 0)
- self.assertEqual(da.names[0].string, 'Optical Size')
+ self.assertEqual(da.names[0].string, "Optical Size")
def test_stat_axis_value_format1(self): # STAT AxisValue
- doc = self.parse('table STAT { DesignAxis opsz 0 '
- '{name "Optical Size";}; '
- 'AxisValue {location opsz 8; name "Caption";}; } '
- 'STAT;')
+ doc = self.parse(
+ "table STAT { DesignAxis opsz 0 "
+ '{name "Optical Size";}; '
+ 'AxisValue {location opsz 8; name "Caption";}; } '
+ "STAT;"
+ )
avr = doc.statements[0].statements[1]
self.assertIsInstance(avr, ast.STATAxisValueStatement)
- self.assertEqual(avr.locations[0].tag, 'opsz')
+ self.assertEqual(avr.locations[0].tag, "opsz")
self.assertEqual(avr.locations[0].values[0], 8)
- self.assertEqual(avr.names[0].string, 'Caption')
+ self.assertEqual(avr.names[0].string, "Caption")
def test_stat_axis_value_format2(self): # STAT AxisValue
- doc = self.parse('table STAT { DesignAxis opsz 0 '
- '{name "Optical Size";}; '
- 'AxisValue {location opsz 8 6 10; name "Caption";}; } '
- 'STAT;')
+ doc = self.parse(
+ "table STAT { DesignAxis opsz 0 "
+ '{name "Optical Size";}; '
+ 'AxisValue {location opsz 8 6 10; name "Caption";}; } '
+ "STAT;"
+ )
avr = doc.statements[0].statements[1]
self.assertIsInstance(avr, ast.STATAxisValueStatement)
- self.assertEqual(avr.locations[0].tag, 'opsz')
+ self.assertEqual(avr.locations[0].tag, "opsz")
self.assertEqual(avr.locations[0].values, [8, 6, 10])
- self.assertEqual(avr.names[0].string, 'Caption')
+ self.assertEqual(avr.names[0].string, "Caption")
def test_stat_axis_value_format2_bad_range(self): # STAT AxisValue
self.assertRaisesRegex(
FeatureLibError,
- 'Default value 5 is outside of specified range 6-10.',
- self.parse, 'table STAT { DesignAxis opsz 0 '
- '{name "Optical Size";}; '
- 'AxisValue {location opsz 5 6 10; name "Caption";}; } '
- 'STAT;')
+ "Default value 5 is outside of specified range 6-10.",
+ self.parse,
+ "table STAT { DesignAxis opsz 0 "
+ '{name "Optical Size";}; '
+ 'AxisValue {location opsz 5 6 10; name "Caption";}; } '
+ "STAT;",
+ )
def test_stat_axis_value_format4(self): # STAT AxisValue
self.assertRaisesRegex(
FeatureLibError,
- 'Only one value is allowed in a Format 4 Axis Value Record, but 3 were found.',
- self.parse, 'table STAT { '
- 'DesignAxis opsz 0 {name "Optical Size";}; '
- 'DesignAxis wdth 0 {name "Width";}; '
- 'AxisValue {'
- 'location opsz 8 6 10; '
- 'location wdth 400; '
- 'name "Caption";}; } '
- 'STAT;')
+ "Only one value is allowed in a Format 4 Axis Value Record, but 3 were found.",
+ self.parse,
+ "table STAT { "
+ 'DesignAxis opsz 0 {name "Optical Size";}; '
+ 'DesignAxis wdth 0 {name "Width";}; '
+ "AxisValue {"
+ "location opsz 8 6 10; "
+ "location wdth 400; "
+ 'name "Caption";}; } '
+ "STAT;",
+ )
def test_stat_elidedfallbackname(self): # STAT ElidedFallbackName
- doc = self.parse('table STAT { ElidedFallbackName {name "Roman"; '
- 'name 3 1 0x0411 "ローマン"; }; '
- '} STAT;')
+ doc = self.parse(
+ 'table STAT { ElidedFallbackName {name "Roman"; '
+ 'name 3 1 0x0411 "ローマン"; }; '
+ "} STAT;"
+ )
nameRecord = doc.statements[0].statements[0]
self.assertIsInstance(nameRecord, ast.ElidedFallbackName)
- self.assertEqual(nameRecord.names[0].string, 'Roman')
- self.assertEqual(nameRecord.names[1].string, 'ローマン')
+ self.assertEqual(nameRecord.names[0].string, "Roman")
+ self.assertEqual(nameRecord.names[1].string, "ローマン")
def test_stat_elidedfallbacknameid(self): # STAT ElidedFallbackNameID
- doc = self.parse('table name { nameid 278 "Roman"; } name; '
- 'table STAT { ElidedFallbackNameID 278; '
- '} STAT;')
+ doc = self.parse(
+ 'table name { nameid 278 "Roman"; } name; '
+ "table STAT { ElidedFallbackNameID 278; "
+ "} STAT;"
+ )
nameRecord = doc.statements[0].statements[0]
self.assertIsInstance(nameRecord, ast.NameRecord)
- self.assertEqual(nameRecord.string, 'Roman')
+ self.assertEqual(nameRecord.string, "Roman")
def test_sub_single_format_a(self): # GSUB LookupType 1
doc = self.parse("feature smcp {substitute a by a.sc;} smcp;")
@@ -1378,13 +1543,11 @@ class ParserTest(unittest.TestCase):
doc = self.parse(
"feature smcp {"
" substitute [one.fitted one.oldstyle] by one;"
- "} smcp;")
+ "} smcp;"
+ )
sub = doc.statements[0].statements[0]
self.assertIsInstance(sub, ast.SingleSubstStatement)
- self.assertEqual(mapping(sub), {
- "one.fitted": "one",
- "one.oldstyle": "one"
- })
+ self.assertEqual(mapping(sub), {"one.fitted": "one", "one.oldstyle": "one"})
self.assertEqual(glyphstr(sub.prefix), "")
self.assertEqual(glyphstr(sub.suffix), "")
@@ -1392,45 +1555,35 @@ class ParserTest(unittest.TestCase):
doc = self.parse(
"feature smcp {"
" substitute PRE FIX [one.fitted one.oldstyle]' SUF FIX by one;"
- "} smcp;")
+ "} smcp;"
+ )
sub = doc.statements[0].statements[0]
self.assertIsInstance(sub, ast.SingleSubstStatement)
- self.assertEqual(mapping(sub), {
- "one.fitted": "one",
- "one.oldstyle": "one"
- })
+ self.assertEqual(mapping(sub), {"one.fitted": "one", "one.oldstyle": "one"})
self.assertEqual(glyphstr(sub.prefix), "PRE FIX")
self.assertEqual(glyphstr(sub.suffix), "SUF FIX")
def test_sub_single_format_c(self): # GSUB LookupType 1
doc = self.parse(
- "feature smcp {"
- " substitute [a-d] by [A.sc-D.sc];"
- "} smcp;")
+ "feature smcp {" " substitute [a-d] by [A.sc-D.sc];" "} smcp;"
+ )
sub = doc.statements[0].statements[0]
self.assertIsInstance(sub, ast.SingleSubstStatement)
- self.assertEqual(mapping(sub), {
- "a": "A.sc",
- "b": "B.sc",
- "c": "C.sc",
- "d": "D.sc"
- })
+ self.assertEqual(
+ mapping(sub), {"a": "A.sc", "b": "B.sc", "c": "C.sc", "d": "D.sc"}
+ )
self.assertEqual(glyphstr(sub.prefix), "")
self.assertEqual(glyphstr(sub.suffix), "")
def test_sub_single_format_c_chained(self): # chain to GSUB LookupType 1
doc = self.parse(
- "feature smcp {"
- " substitute [a-d]' X Y [Z z] by [A.sc-D.sc];"
- "} smcp;")
+ "feature smcp {" " substitute [a-d]' X Y [Z z] by [A.sc-D.sc];" "} smcp;"
+ )
sub = doc.statements[0].statements[0]
self.assertIsInstance(sub, ast.SingleSubstStatement)
- self.assertEqual(mapping(sub), {
- "a": "A.sc",
- "b": "B.sc",
- "c": "C.sc",
- "d": "D.sc"
- })
+ self.assertEqual(
+ mapping(sub), {"a": "A.sc", "b": "B.sc", "c": "C.sc", "d": "D.sc"}
+ )
self.assertEqual(glyphstr(sub.prefix), "")
self.assertEqual(glyphstr(sub.suffix), "X Y [Z z]")
@@ -1438,14 +1591,18 @@ class ParserTest(unittest.TestCase):
self.assertRaisesRegex(
FeatureLibError,
'Expected a glyph class with 4 elements after "by", '
- 'but found a glyph class with 26 elements',
- self.parse, "feature smcp {sub [a-d] by [A.sc-Z.sc];} smcp;")
+ "but found a glyph class with 26 elements",
+ self.parse,
+ "feature smcp {sub [a-d] by [A.sc-Z.sc];} smcp;",
+ )
def test_sub_with_values(self):
self.assertRaisesRegex(
FeatureLibError,
"Substitution statements cannot contain values",
- self.parse, "feature smcp {sub A' 20 by A.sc;} smcp;")
+ self.parse,
+ "feature smcp {sub A' 20 by A.sc;} smcp;",
+ )
def test_substitute_multiple(self): # GSUB LookupType 2
doc = self.parse("lookup Look {substitute f_f_i by f f i;} Look;")
@@ -1475,52 +1632,59 @@ class ParserTest(unittest.TestCase):
"Direct substitution of multiple glyphs by multiple glyphs "
"is not supported",
self.parse,
- "lookup MxM {sub a b c by d e f;} MxM;")
+ "lookup MxM {sub a b c by d e f;} MxM;",
+ )
def test_split_marked_glyphs_runs(self):
self.assertRaisesRegex(
FeatureLibError,
"Unsupported contextual target sequence",
- self.parse, "feature test{"
- " ignore pos a' x x A';"
- "} test;")
+ self.parse,
+ "feature test{" " ignore pos a' x x A';" "} test;",
+ )
self.assertRaisesRegex(
FeatureLibError,
"Unsupported contextual target sequence",
- self.parse, "lookup shift {"
- " pos a <0 -10 0 0>;"
- " pos A <0 10 0 0>;"
- "} shift;"
- "feature test {"
- " sub a' lookup shift x x A' lookup shift;"
- "} test;")
+ self.parse,
+ "lookup shift {"
+ " pos a <0 -10 0 0>;"
+ " pos A <0 10 0 0>;"
+ "} shift;"
+ "feature test {"
+ " sub a' lookup shift x x A' lookup shift;"
+ "} test;",
+ )
self.assertRaisesRegex(
FeatureLibError,
"Unsupported contextual target sequence",
- self.parse, "feature test {"
- " ignore sub a' x x A';"
- "} test;")
+ self.parse,
+ "feature test {" " ignore sub a' x x A';" "} test;",
+ )
self.assertRaisesRegex(
FeatureLibError,
"Unsupported contextual target sequence",
- self.parse, "lookup upper {"
- " sub a by A;"
- "} upper;"
- "lookup lower {"
- " sub A by a;"
- "} lower;"
- "feature test {"
- " sub a' lookup upper x x A' lookup lower;"
- "} test;")
+ self.parse,
+ "lookup upper {"
+ " sub a by A;"
+ "} upper;"
+ "lookup lower {"
+ " sub A by a;"
+ "} lower;"
+ "feature test {"
+ " sub a' lookup upper x x A' lookup lower;"
+ "} test;",
+ )
def test_substitute_mix_single_multiple(self):
- doc = self.parse("lookup Look {"
- " sub f_f by f f;"
- " sub f by f;"
- " sub f_f_i by f f i;"
- " sub [a a.sc] by a;"
- " sub [a a.sc] by [b b.sc];"
- "} Look;")
+ doc = self.parse(
+ "lookup Look {"
+ " sub f_f by f f;"
+ " sub f by f;"
+ " sub f_f_i by f f i;"
+ " sub [a a.sc] by a;"
+ " sub [a a.sc] by [b b.sc];"
+ "} Look;"
+ )
statements = doc.statements[0].statements
for sub in statements:
self.assertIsInstance(sub, ast.MultipleSubstStatement)
@@ -1536,9 +1700,9 @@ class ParserTest(unittest.TestCase):
self.assertEqual(statements[6].replacement, ["b.sc"])
def test_substitute_from(self): # GSUB LookupType 3
- doc = self.parse("feature test {"
- " substitute a from [a.1 a.2 a.3];"
- "} test;")
+ doc = self.parse(
+ "feature test {" " substitute a from [a.1 a.2 a.3];" "} test;"
+ )
sub = doc.statements[0].statements[0]
self.assertIsInstance(sub, ast.AlternateSubstStatement)
self.assertEqual(glyphstr(sub.prefix), "")
@@ -1547,9 +1711,9 @@ class ParserTest(unittest.TestCase):
self.assertEqual(glyphstr([sub.replacement]), "[a.1 a.2 a.3]")
def test_substitute_from_chained(self): # chain to GSUB LookupType 3
- doc = self.parse("feature test {"
- " substitute A B a' [Y y] Z from [a.1 a.2 a.3];"
- "} test;")
+ doc = self.parse(
+ "feature test {" " substitute A B a' [Y y] Z from [a.1 a.2 a.3];" "} test;"
+ )
sub = doc.statements[0].statements[0]
self.assertIsInstance(sub, ast.AlternateSubstStatement)
self.assertEqual(glyphstr(sub.prefix), "A B")
@@ -1558,9 +1722,9 @@ class ParserTest(unittest.TestCase):
self.assertEqual(glyphstr([sub.replacement]), "[a.1 a.2 a.3]")
def test_substitute_from_cid(self): # GSUB LookupType 3
- doc = self.parse(r"feature test {"
- r" substitute \7 from [\111 \222];"
- r"} test;")
+ doc = self.parse(
+ r"feature test {" r" substitute \7 from [\111 \222];" r"} test;"
+ )
sub = doc.statements[0].statements[0]
self.assertIsInstance(sub, ast.AlternateSubstStatement)
self.assertEqual(glyphstr(sub.prefix), "")
@@ -1569,17 +1733,18 @@ class ParserTest(unittest.TestCase):
self.assertEqual(glyphstr([sub.replacement]), "[cid00111 cid00222]")
def test_substitute_from_glyphclass(self): # GSUB LookupType 3
- doc = self.parse("feature test {"
- " @Ampersands = [ampersand.1 ampersand.2];"
- " substitute ampersand from @Ampersands;"
- "} test;")
+ doc = self.parse(
+ "feature test {"
+ " @Ampersands = [ampersand.1 ampersand.2];"
+ " substitute ampersand from @Ampersands;"
+ "} test;"
+ )
[glyphclass, sub] = doc.statements[0].statements
self.assertIsInstance(sub, ast.AlternateSubstStatement)
self.assertEqual(glyphstr(sub.prefix), "")
self.assertEqual(glyphstr([sub.glyph]), "ampersand")
self.assertEqual(glyphstr(sub.suffix), "")
- self.assertEqual(glyphstr([sub.replacement]),
- "[ampersand.1 ampersand.2]")
+ self.assertEqual(glyphstr([sub.replacement]), "[ampersand.1 ampersand.2]")
def test_substitute_ligature(self): # GSUB LookupType 4
doc = self.parse("feature liga {substitute f f i by f_f_i;} liga;")
@@ -1609,13 +1774,15 @@ class ParserTest(unittest.TestCase):
self.assertRaisesRegex(
FeatureLibError,
'Expected "by", "from" or explicit lookup references',
- self.parse, "feature liga {substitute f f i;} liga;")
-
+ self.parse,
+ "feature liga {substitute f f i;} liga;",
+ )
+
def test_substitute_invalid_statement(self):
self.assertRaisesRegex(
FeatureLibError,
"Invalid substitution statement",
- Parser(self.getpath("GSUB_error.fea"), GLYPHNAMES).parse
+ Parser(self.getpath("GSUB_error.fea"), GLYPHNAMES).parse,
)
def test_subtable(self):
@@ -1625,8 +1792,11 @@ class ParserTest(unittest.TestCase):
def test_table_badEnd(self):
self.assertRaisesRegex(
- FeatureLibError, 'Expected "GDEF"', self.parse,
- "table GDEF {LigatureCaretByPos f_i 400;} ABCD;")
+ FeatureLibError,
+ 'Expected "GDEF"',
+ self.parse,
+ "table GDEF {LigatureCaretByPos f_i 400;} ABCD;",
+ )
def test_table_comment(self):
for table in "BASE GDEF OS/2 head hhea name vhea".split():
@@ -1637,8 +1807,11 @@ class ParserTest(unittest.TestCase):
def test_table_unsupported(self):
self.assertRaisesRegex(
- FeatureLibError, '"table Foo" is not supported', self.parse,
- "table Foo {LigatureCaretByPos f_i 400;} Foo;")
+ FeatureLibError,
+ '"table Foo" is not supported',
+ self.parse,
+ "table Foo {LigatureCaretByPos f_i 400;} Foo;",
+ )
def test_valuerecord_format_a_horizontal(self):
doc = self.parse("feature liga {valueRecordDef 123 foo;} liga;")
@@ -1702,12 +1875,13 @@ class ParserTest(unittest.TestCase):
def test_valuerecord_format_a_vertical_contexts_(self):
for tag in "vkrn vpal vhal valt".split():
- doc = self.parse(
- "feature %s {valueRecordDef 77 foo;} %s;" % (tag, tag))
+ doc = self.parse("feature %s {valueRecordDef 77 foo;} %s;" % (tag, tag))
value = doc.statements[0].statements[0].value
if value.yAdvance != 77:
- self.fail(msg="feature %s should be a vertical context "
- "for ValueRecord format A" % tag)
+ self.fail(
+ msg="feature %s should be a vertical context "
+ "for ValueRecord format A" % tag
+ )
def test_valuerecord_format_b(self):
doc = self.parse("feature liga {valueRecordDef <1 2 3 4> foo;} liga;")
@@ -1749,7 +1923,8 @@ class ParserTest(unittest.TestCase):
" <device NULL>"
" <device 33 -113, 44 -114, 55 115>"
" > foo;"
- "} liga;")
+ "} liga;"
+ )
value = doc.statements[0].statements[0].value
self.assertEqual(value.xPlacement, 1)
self.assertEqual(value.yPlacement, 2)
@@ -1759,9 +1934,11 @@ class ParserTest(unittest.TestCase):
self.assertEqual(value.yPlaDevice, ((11, 111), (12, 112)))
self.assertIsNone(value.xAdvDevice)
self.assertEqual(value.yAdvDevice, ((33, -113), (44, -114), (55, 115)))
- self.assertEqual(value.asFea(),
- "<1 2 3 4 <device 8 88> <device 11 111, 12 112>"
- " <device NULL> <device 33 -113, 44 -114, 55 115>>")
+ self.assertEqual(
+ value.asFea(),
+ "<1 2 3 4 <device 8 88> <device 11 111, 12 112>"
+ " <device NULL> <device 33 -113, 44 -114, 55 115>>",
+ )
def test_valuerecord_format_d(self):
doc = self.parse("feature test {valueRecordDef <NULL> foo;} test;")
@@ -1769,9 +1946,21 @@ class ParserTest(unittest.TestCase):
self.assertFalse(value)
self.assertEqual(value.asFea(), "<NULL>")
+ def test_valuerecord_variable_scalar(self):
+ doc = self.parse(
+ "feature test {valueRecordDef <0 (wght=200:-100 wght=900:-150 wdth=150,wght=900:-120) 0 0> foo;} test;"
+ )
+ value = doc.statements[0].statements[0].value
+ self.assertEqual(
+ value.asFea(),
+ "<0 (wght=200:-100 wght=900:-150 wdth=150,wght=900:-120) 0 0>",
+ )
+
def test_valuerecord_named(self):
- doc = self.parse("valueRecordDef <1 2 3 4> foo;"
- "feature liga {valueRecordDef <foo> bar;} liga;")
+ doc = self.parse(
+ "valueRecordDef <1 2 3 4> foo;"
+ "feature liga {valueRecordDef <foo> bar;} liga;"
+ )
value = doc.statements[1].statements[0].value
self.assertEqual(value.xPlacement, 1)
self.assertEqual(value.yPlacement, 2)
@@ -1780,8 +1969,11 @@ class ParserTest(unittest.TestCase):
def test_valuerecord_named_unknown(self):
self.assertRaisesRegex(
- FeatureLibError, "Unknown valueRecordDef \"unknown\"",
- self.parse, "valueRecordDef <unknown> foo;")
+ FeatureLibError,
+ 'Unknown valueRecordDef "unknown"',
+ self.parse,
+ "valueRecordDef <unknown> foo;",
+ )
def test_valuerecord_scoping(self):
[foo, liga, smcp] = self.parse(
@@ -1795,10 +1987,49 @@ class ParserTest(unittest.TestCase):
def test_valuerecord_device_value_out_of_range(self):
self.assertRaisesRegex(
- FeatureLibError, r"Device value out of valid range \(-128..127\)",
+ FeatureLibError,
+ r"Device value out of valid range \(-128..127\)",
self.parse,
"valueRecordDef <1 2 3 4 <device NULL> <device NULL> "
- "<device NULL> <device 11 128>> foo;")
+ "<device NULL> <device 11 128>> foo;",
+ )
+
+ def test_conditionset(self):
+ doc = self.parse("conditionset heavy { wght 700 900; } heavy;")
+ value = doc.statements[0]
+ self.assertEqual(value.conditions["wght"], (700, 900))
+ self.assertEqual(
+ value.asFea(), "conditionset heavy {\n wght 700 900;\n} heavy;\n"
+ )
+
+ doc = self.parse("conditionset heavy { wght 700 900; opsz 17 18;} heavy;")
+ value = doc.statements[0]
+ self.assertEqual(value.conditions["wght"], (700, 900))
+ self.assertEqual(value.conditions["opsz"], (17, 18))
+ self.assertEqual(
+ value.asFea(),
+ "conditionset heavy {\n wght 700 900;\n opsz 17 18;\n} heavy;\n",
+ )
+
+ def test_conditionset_same_axis(self):
+ self.assertRaisesRegex(
+ FeatureLibError,
+ r"Repeated condition for axis wght",
+ self.parse,
+ "conditionset heavy { wght 700 900; wght 100 200; } heavy;",
+ )
+
+ def test_conditionset_float(self):
+ doc = self.parse("conditionset heavy { wght 700.0 900.0; } heavy;")
+ value = doc.statements[0]
+ self.assertEqual(value.conditions["wght"], (700.0, 900.0))
+ self.assertEqual(
+ value.asFea(), "conditionset heavy {\n wght 700.0 900.0;\n} heavy;\n"
+ )
+
+ def test_variation(self):
+ doc = self.parse("variation rvrn heavy { sub a by b; } rvrn;")
+ value = doc.statements[0]
def test_languagesystem(self):
[langsys] = self.parse("languagesystem latn DEU;").statements
@@ -1810,20 +2041,30 @@ class ParserTest(unittest.TestCase):
self.assertRaisesRegex(
FeatureLibError,
'"dflt" is not a valid script tag; use "DFLT" instead',
- self.parse, "languagesystem dflt dflt;")
+ self.parse,
+ "languagesystem dflt dflt;",
+ )
self.assertRaisesRegex(
FeatureLibError,
'"DFLT" is not a valid language tag; use "dflt" instead',
- self.parse, "languagesystem latn DFLT;")
+ self.parse,
+ "languagesystem latn DFLT;",
+ )
self.assertRaisesRegex(
- FeatureLibError, "Expected ';'",
- self.parse, "languagesystem latn DEU")
+ FeatureLibError, "Expected ';'", self.parse, "languagesystem latn DEU"
+ )
self.assertRaisesRegex(
- FeatureLibError, "longer than 4 characters",
- self.parse, "languagesystem foobar DEU;")
+ FeatureLibError,
+ "longer than 4 characters",
+ self.parse,
+ "languagesystem foobar DEU;",
+ )
self.assertRaisesRegex(
- FeatureLibError, "longer than 4 characters",
- self.parse, "languagesystem latn FOOBAR;")
+ FeatureLibError,
+ "longer than 4 characters",
+ self.parse,
+ "languagesystem latn FOOBAR;",
+ )
def test_empty_statement_ignored(self):
doc = self.parse("feature test {;} test;")
@@ -1869,4 +2110,5 @@ class SymbolTableTest(unittest.TestCase):
if __name__ == "__main__":
import sys
+
sys.exit(unittest.main())
diff --git a/Tests/merge/data/CFFFont1.ttx b/Tests/merge/data/CFFFont1.ttx
new file mode 100644
index 00000000..33f8cc6f
--- /dev/null
+++ b/Tests/merge/data/CFFFont1.ttx
@@ -0,0 +1,23445 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ttFont sfntVersion="OTTO" ttLibVersion="4.28">
+
+ <GlyphOrder>
+ <!-- The 'id' attribute is only for humans; it is ignored when parsed. -->
+ <GlyphID id="0" name=".notdef"/>
+ <GlyphID id="1" name="hamza-ar"/>
+ <GlyphID id="2" name="highhamza-ar"/>
+ <GlyphID id="3" name="alef-ar"/>
+ <GlyphID id="4" name="alef-ar.fina"/>
+ <GlyphID id="5" name="alef-ar.fina.lam"/>
+ <GlyphID id="6" name="alefHamzaabove-ar"/>
+ <GlyphID id="7" name="alefHamzabelow-ar"/>
+ <GlyphID id="8" name="alefMadda-ar"/>
+ <GlyphID id="9" name="alefWasla-ar"/>
+ <GlyphID id="10" name="behDotless-ar"/>
+ <GlyphID id="11" name="behDotless-ar.jalt"/>
+ <GlyphID id="12" name="behDotless-ar.fina"/>
+ <GlyphID id="13" name="behDotless-ar.fina.jalt"/>
+ <GlyphID id="14" name="behDotless-ar.medi"/>
+ <GlyphID id="15" name="behDotless-ar.medi.ain"/>
+ <GlyphID id="16" name="behDotless-ar.medi.dal"/>
+ <GlyphID id="17" name="behDotless-ar.medi.feh"/>
+ <GlyphID id="18" name="behDotless-ar.medi.hah"/>
+ <GlyphID id="19" name="behDotless-ar.medi.heh"/>
+ <GlyphID id="20" name="behDotless-ar.medi.high"/>
+ <GlyphID id="21" name="behDotless-ar.medi.high2"/>
+ <GlyphID id="22" name="behDotless-ar.medi.meem"/>
+ <GlyphID id="23" name="behDotless-ar.medi.noon"/>
+ <GlyphID id="24" name="behDotless-ar.medi.ragaa"/>
+ <GlyphID id="25" name="behDotless-ar.medi.reh"/>
+ <GlyphID id="26" name="behDotless-ar.medi.sad"/>
+ <GlyphID id="27" name="behDotless-ar.medi.yeh"/>
+ <GlyphID id="28" name="behDotless-ar.init"/>
+ <GlyphID id="29" name="behDotless-ar.init.ain"/>
+ <GlyphID id="30" name="behDotless-ar.init.ascend"/>
+ <GlyphID id="31" name="behDotless-ar.init.dal"/>
+ <GlyphID id="32" name="behDotless-ar.init.feh"/>
+ <GlyphID id="33" name="behDotless-ar.init.hah"/>
+ <GlyphID id="34" name="behDotless-ar.init.heh"/>
+ <GlyphID id="35" name="behDotless-ar.init.meem"/>
+ <GlyphID id="36" name="behDotless-ar.init.ragaa"/>
+ <GlyphID id="37" name="behDotless-ar.init.reh"/>
+ <GlyphID id="38" name="behDotless-ar.init.sad"/>
+ <GlyphID id="39" name="behDotless-ar.init.yeh"/>
+ <GlyphID id="40" name="beh-ar"/>
+ <GlyphID id="41" name="peh-ar"/>
+ <GlyphID id="42" name="teh-ar"/>
+ <GlyphID id="43" name="theh-ar"/>
+ <GlyphID id="44" name="tteh-ar"/>
+ <GlyphID id="45" name="jeem-ar"/>
+ <GlyphID id="46" name="tcheh-ar"/>
+ <GlyphID id="47" name="hah-ar"/>
+ <GlyphID id="48" name="hah-ar.fina"/>
+ <GlyphID id="49" name="hah-ar.medi"/>
+ <GlyphID id="50" name="hah-ar.medi.ain"/>
+ <GlyphID id="51" name="hah-ar.medi.dal"/>
+ <GlyphID id="52" name="hah-ar.medi.feh"/>
+ <GlyphID id="53" name="hah-ar.medi.hah"/>
+ <GlyphID id="54" name="hah-ar.medi.heh"/>
+ <GlyphID id="55" name="hah-ar.medi.heh.ragaa"/>
+ <GlyphID id="56" name="hah-ar.medi.meem"/>
+ <GlyphID id="57" name="hah-ar.medi.ragaa"/>
+ <GlyphID id="58" name="hah-ar.medi.reh"/>
+ <GlyphID id="59" name="hah-ar.medi.sad"/>
+ <GlyphID id="60" name="hah-ar.medi.yeh"/>
+ <GlyphID id="61" name="hah-ar.init"/>
+ <GlyphID id="62" name="hah-ar.init.ain"/>
+ <GlyphID id="63" name="hah-ar.init.dal"/>
+ <GlyphID id="64" name="hah-ar.init.feh"/>
+ <GlyphID id="65" name="hah-ar.init.hah"/>
+ <GlyphID id="66" name="hah-ar.init.heh"/>
+ <GlyphID id="67" name="hah-ar.init.heh.ragaa"/>
+ <GlyphID id="68" name="hah-ar.init.meem"/>
+ <GlyphID id="69" name="hah-ar.init.ragaa"/>
+ <GlyphID id="70" name="hah-ar.init.reh"/>
+ <GlyphID id="71" name="hah-ar.init.sad"/>
+ <GlyphID id="72" name="hah-ar.init.yeh"/>
+ <GlyphID id="73" name="khah-ar"/>
+ <GlyphID id="74" name="dal-ar"/>
+ <GlyphID id="75" name="dal-ar.fina"/>
+ <GlyphID id="76" name="thal-ar"/>
+ <GlyphID id="77" name="ddal-ar"/>
+ <GlyphID id="78" name="dul-ar"/>
+ <GlyphID id="79" name="reh-ar"/>
+ <GlyphID id="80" name="reh-ar.fina"/>
+ <GlyphID id="81" name="zain-ar"/>
+ <GlyphID id="82" name="rreh-ar"/>
+ <GlyphID id="83" name="rehVbelow-ar"/>
+ <GlyphID id="84" name="jeh-ar"/>
+ <GlyphID id="85" name="seen-ar"/>
+ <GlyphID id="86" name="seen-ar.jalt"/>
+ <GlyphID id="87" name="seen-ar.fina"/>
+ <GlyphID id="88" name="seen-ar.fina.jalt"/>
+ <GlyphID id="89" name="seen-ar.medi"/>
+ <GlyphID id="90" name="seen-ar.medi.ain"/>
+ <GlyphID id="91" name="seen-ar.medi.dal"/>
+ <GlyphID id="92" name="seen-ar.medi.feh"/>
+ <GlyphID id="93" name="seen-ar.medi.hah"/>
+ <GlyphID id="94" name="seen-ar.medi.heh"/>
+ <GlyphID id="95" name="seen-ar.medi.meem"/>
+ <GlyphID id="96" name="seen-ar.medi.ragaa"/>
+ <GlyphID id="97" name="seen-ar.medi.reh"/>
+ <GlyphID id="98" name="seen-ar.medi.sad"/>
+ <GlyphID id="99" name="seen-ar.medi.yeh"/>
+ <GlyphID id="100" name="seen-ar.init"/>
+ <GlyphID id="101" name="seen-ar.init.ain"/>
+ <GlyphID id="102" name="seen-ar.init.dal"/>
+ <GlyphID id="103" name="seen-ar.init.feh"/>
+ <GlyphID id="104" name="seen-ar.init.hah"/>
+ <GlyphID id="105" name="seen-ar.init.heh"/>
+ <GlyphID id="106" name="seen-ar.init.meem"/>
+ <GlyphID id="107" name="seen-ar.init.ragaa"/>
+ <GlyphID id="108" name="seen-ar.init.reh"/>
+ <GlyphID id="109" name="seen-ar.init.sad"/>
+ <GlyphID id="110" name="seen-ar.init.yeh"/>
+ <GlyphID id="111" name="sheen-ar"/>
+ <GlyphID id="112" name="sad-ar"/>
+ <GlyphID id="113" name="sad-ar.jalt"/>
+ <GlyphID id="114" name="sad-ar.fina"/>
+ <GlyphID id="115" name="sad-ar.fina.jalt"/>
+ <GlyphID id="116" name="sad-ar.medi"/>
+ <GlyphID id="117" name="sad-ar.medi.ain"/>
+ <GlyphID id="118" name="sad-ar.medi.dal"/>
+ <GlyphID id="119" name="sad-ar.medi.feh"/>
+ <GlyphID id="120" name="sad-ar.medi.hah"/>
+ <GlyphID id="121" name="sad-ar.medi.heh"/>
+ <GlyphID id="122" name="sad-ar.medi.meem"/>
+ <GlyphID id="123" name="sad-ar.medi.postsad"/>
+ <GlyphID id="124" name="sad-ar.medi.qantara"/>
+ <GlyphID id="125" name="sad-ar.medi.ragaa"/>
+ <GlyphID id="126" name="sad-ar.medi.reh"/>
+ <GlyphID id="127" name="sad-ar.medi.sad"/>
+ <GlyphID id="128" name="sad-ar.medi.yeh"/>
+ <GlyphID id="129" name="sad-ar.init"/>
+ <GlyphID id="130" name="sad-ar.init.ain"/>
+ <GlyphID id="131" name="sad-ar.init.dal"/>
+ <GlyphID id="132" name="sad-ar.init.feh"/>
+ <GlyphID id="133" name="sad-ar.init.hah"/>
+ <GlyphID id="134" name="sad-ar.init.heh"/>
+ <GlyphID id="135" name="sad-ar.init.meem"/>
+ <GlyphID id="136" name="sad-ar.init.qantara"/>
+ <GlyphID id="137" name="sad-ar.init.ragaa"/>
+ <GlyphID id="138" name="sad-ar.init.reh"/>
+ <GlyphID id="139" name="sad-ar.init.sad"/>
+ <GlyphID id="140" name="sad-ar.init.yeh"/>
+ <GlyphID id="141" name="dad-ar"/>
+ <GlyphID id="142" name="tah-ar"/>
+ <GlyphID id="143" name="tah-ar.fina"/>
+ <GlyphID id="144" name="tah-ar.medi"/>
+ <GlyphID id="145" name="tah-ar.medi.ain"/>
+ <GlyphID id="146" name="tah-ar.medi.dal"/>
+ <GlyphID id="147" name="tah-ar.medi.feh"/>
+ <GlyphID id="148" name="tah-ar.medi.hah"/>
+ <GlyphID id="149" name="tah-ar.medi.heh"/>
+ <GlyphID id="150" name="tah-ar.medi.kaf"/>
+ <GlyphID id="151" name="tah-ar.medi.meem"/>
+ <GlyphID id="152" name="tah-ar.medi.postsad"/>
+ <GlyphID id="153" name="tah-ar.medi.qantara"/>
+ <GlyphID id="154" name="tah-ar.medi.ragaa"/>
+ <GlyphID id="155" name="tah-ar.medi.reh"/>
+ <GlyphID id="156" name="tah-ar.medi.sad"/>
+ <GlyphID id="157" name="tah-ar.medi.yeh"/>
+ <GlyphID id="158" name="tah-ar.init"/>
+ <GlyphID id="159" name="tah-ar.init.ain"/>
+ <GlyphID id="160" name="tah-ar.init.dal"/>
+ <GlyphID id="161" name="tah-ar.init.feh"/>
+ <GlyphID id="162" name="tah-ar.init.hah"/>
+ <GlyphID id="163" name="tah-ar.init.heh"/>
+ <GlyphID id="164" name="tah-ar.init.kaf"/>
+ <GlyphID id="165" name="tah-ar.init.meem"/>
+ <GlyphID id="166" name="tah-ar.init.qantara"/>
+ <GlyphID id="167" name="tah-ar.init.ragaa"/>
+ <GlyphID id="168" name="tah-ar.init.reh"/>
+ <GlyphID id="169" name="tah-ar.init.sad"/>
+ <GlyphID id="170" name="tah-ar.init.yeh"/>
+ <GlyphID id="171" name="zah-ar"/>
+ <GlyphID id="172" name="ain-ar"/>
+ <GlyphID id="173" name="ain-ar.fina"/>
+ <GlyphID id="174" name="ain-ar.medi"/>
+ <GlyphID id="175" name="ain-ar.medi.ain"/>
+ <GlyphID id="176" name="ain-ar.medi.dal"/>
+ <GlyphID id="177" name="ain-ar.medi.feh"/>
+ <GlyphID id="178" name="ain-ar.medi.hah"/>
+ <GlyphID id="179" name="ain-ar.medi.heh"/>
+ <GlyphID id="180" name="ain-ar.medi.meem"/>
+ <GlyphID id="181" name="ain-ar.medi.ragaa"/>
+ <GlyphID id="182" name="ain-ar.medi.reh"/>
+ <GlyphID id="183" name="ain-ar.medi.sad"/>
+ <GlyphID id="184" name="ain-ar.medi.yeh"/>
+ <GlyphID id="185" name="ain-ar.init"/>
+ <GlyphID id="186" name="ain-ar.init.ain"/>
+ <GlyphID id="187" name="ain-ar.init.dal"/>
+ <GlyphID id="188" name="ain-ar.init.feh"/>
+ <GlyphID id="189" name="ain-ar.init.hah"/>
+ <GlyphID id="190" name="ain-ar.init.heh"/>
+ <GlyphID id="191" name="ain-ar.init.meem"/>
+ <GlyphID id="192" name="ain-ar.init.ragaa"/>
+ <GlyphID id="193" name="ain-ar.init.reh"/>
+ <GlyphID id="194" name="ain-ar.init.sad"/>
+ <GlyphID id="195" name="ain-ar.init.yeh"/>
+ <GlyphID id="196" name="ainThreedots-ar"/>
+ <GlyphID id="197" name="ghain-ar"/>
+ <GlyphID id="198" name="feh-ar"/>
+ <GlyphID id="199" name="veh-ar"/>
+ <GlyphID id="200" name="fehDotless-ar"/>
+ <GlyphID id="201" name="fehDotless-ar.jalt"/>
+ <GlyphID id="202" name="fehDotless-ar.fina"/>
+ <GlyphID id="203" name="fehDotless-ar.fina.jalt"/>
+ <GlyphID id="204" name="fehDotless-ar.medi"/>
+ <GlyphID id="205" name="fehDotless-ar.medi.ain"/>
+ <GlyphID id="206" name="fehDotless-ar.medi.dal"/>
+ <GlyphID id="207" name="fehDotless-ar.medi.feh"/>
+ <GlyphID id="208" name="fehDotless-ar.medi.hah"/>
+ <GlyphID id="209" name="fehDotless-ar.medi.heh"/>
+ <GlyphID id="210" name="fehDotless-ar.medi.meem"/>
+ <GlyphID id="211" name="fehDotless-ar.medi.ragaa"/>
+ <GlyphID id="212" name="fehDotless-ar.medi.reh"/>
+ <GlyphID id="213" name="fehDotless-ar.medi.sad"/>
+ <GlyphID id="214" name="fehDotless-ar.medi.yeh"/>
+ <GlyphID id="215" name="fehDotless-ar.init"/>
+ <GlyphID id="216" name="fehDotless-ar.init.ain"/>
+ <GlyphID id="217" name="fehDotless-ar.init.dal"/>
+ <GlyphID id="218" name="fehDotless-ar.init.feh"/>
+ <GlyphID id="219" name="fehDotless-ar.init.hah"/>
+ <GlyphID id="220" name="fehDotless-ar.init.heh"/>
+ <GlyphID id="221" name="fehDotless-ar.init.meem"/>
+ <GlyphID id="222" name="fehDotless-ar.init.ragaa"/>
+ <GlyphID id="223" name="fehDotless-ar.init.reh"/>
+ <GlyphID id="224" name="fehDotless-ar.init.sad"/>
+ <GlyphID id="225" name="fehDotless-ar.init.yeh"/>
+ <GlyphID id="226" name="qafDotless-ar"/>
+ <GlyphID id="227" name="qafDotless-ar.jalt"/>
+ <GlyphID id="228" name="qafDotless-ar.fina"/>
+ <GlyphID id="229" name="qafDotless-ar.fina.jalt"/>
+ <GlyphID id="230" name="qaf-ar"/>
+ <GlyphID id="231" name="qaf-ar.fina"/>
+ <GlyphID id="232" name="kaf-ar"/>
+ <GlyphID id="233" name="kaf-ar.jalt"/>
+ <GlyphID id="234" name="kaf-ar.fina"/>
+ <GlyphID id="235" name="kaf-ar.fina.jalt"/>
+ <GlyphID id="236" name="kaf-ar.medi"/>
+ <GlyphID id="237" name="kaf-ar.medi.ain"/>
+ <GlyphID id="238" name="kaf-ar.medi.dal"/>
+ <GlyphID id="239" name="kaf-ar.medi.feh"/>
+ <GlyphID id="240" name="kaf-ar.medi.hah"/>
+ <GlyphID id="241" name="kaf-ar.medi.heh"/>
+ <GlyphID id="242" name="kaf-ar.medi.kaf"/>
+ <GlyphID id="243" name="kaf-ar.medi.meem"/>
+ <GlyphID id="244" name="kaf-ar.medi.ragaa"/>
+ <GlyphID id="245" name="kaf-ar.medi.reh"/>
+ <GlyphID id="246" name="kaf-ar.medi.sad"/>
+ <GlyphID id="247" name="kaf-ar.medi.yeh"/>
+ <GlyphID id="248" name="kaf-ar.init"/>
+ <GlyphID id="249" name="kaf-ar.init.ain"/>
+ <GlyphID id="250" name="kaf-ar.init.alef"/>
+ <GlyphID id="251" name="kaf-ar.init.alef.loop"/>
+ <GlyphID id="252" name="kaf-ar.init.dal"/>
+ <GlyphID id="253" name="kaf-ar.init.feh"/>
+ <GlyphID id="254" name="kaf-ar.init.hah"/>
+ <GlyphID id="255" name="kaf-ar.init.heh"/>
+ <GlyphID id="256" name="kaf-ar.init.meem"/>
+ <GlyphID id="257" name="kaf-ar.init.ragaa"/>
+ <GlyphID id="258" name="kaf-ar.init.reh"/>
+ <GlyphID id="259" name="kaf-ar.init.sad"/>
+ <GlyphID id="260" name="kaf-ar.init.yeh"/>
+ <GlyphID id="261" name="keheh-ar"/>
+ <GlyphID id="262" name="keheh-ar.jalt"/>
+ <GlyphID id="263" name="keheh-ar.fina"/>
+ <GlyphID id="264" name="keheh-ar.fina.jalt"/>
+ <GlyphID id="265" name="kehehDotabove-ar"/>
+ <GlyphID id="266" name="gaf-ar"/>
+ <GlyphID id="267" name="kafDotabove-ar"/>
+ <GlyphID id="268" name="lam-ar"/>
+ <GlyphID id="269" name="lam-ar.jalt"/>
+ <GlyphID id="270" name="lam-ar.fina"/>
+ <GlyphID id="271" name="lam-ar.fina.jalt"/>
+ <GlyphID id="272" name="lam-ar.medi"/>
+ <GlyphID id="273" name="lam-ar.medi.ain"/>
+ <GlyphID id="274" name="lam-ar.medi.alef"/>
+ <GlyphID id="275" name="lam-ar.medi.dal"/>
+ <GlyphID id="276" name="lam-ar.medi.feh"/>
+ <GlyphID id="277" name="lam-ar.medi.hah"/>
+ <GlyphID id="278" name="lam-ar.medi.heh"/>
+ <GlyphID id="279" name="lam-ar.medi.kaf"/>
+ <GlyphID id="280" name="lam-ar.medi.meem"/>
+ <GlyphID id="281" name="lam-ar.medi.ragaa"/>
+ <GlyphID id="282" name="lam-ar.medi.reh"/>
+ <GlyphID id="283" name="lam-ar.medi.sad"/>
+ <GlyphID id="284" name="lam-ar.medi.yeh"/>
+ <GlyphID id="285" name="lam-ar.init"/>
+ <GlyphID id="286" name="lam-ar.init.ain"/>
+ <GlyphID id="287" name="lam-ar.init.alef"/>
+ <GlyphID id="288" name="lam-ar.init.dal"/>
+ <GlyphID id="289" name="lam-ar.init.feh"/>
+ <GlyphID id="290" name="lam-ar.init.hah"/>
+ <GlyphID id="291" name="lam-ar.init.heh"/>
+ <GlyphID id="292" name="lam-ar.init.kaf"/>
+ <GlyphID id="293" name="lam-ar.init.meem"/>
+ <GlyphID id="294" name="lam-ar.init.ragaa"/>
+ <GlyphID id="295" name="lam-ar.init.reh"/>
+ <GlyphID id="296" name="lam-ar.init.sad"/>
+ <GlyphID id="297" name="lam-ar.init.yeh"/>
+ <GlyphID id="298" name="lamVabove-ar"/>
+ <GlyphID id="299" name="meem-ar"/>
+ <GlyphID id="300" name="meem-ar.fina"/>
+ <GlyphID id="301" name="meem-ar.medi"/>
+ <GlyphID id="302" name="meem-ar.medi.ain"/>
+ <GlyphID id="303" name="meem-ar.medi.dal"/>
+ <GlyphID id="304" name="meem-ar.medi.feh"/>
+ <GlyphID id="305" name="meem-ar.medi.hah"/>
+ <GlyphID id="306" name="meem-ar.medi.heh"/>
+ <GlyphID id="307" name="meem-ar.medi.meem"/>
+ <GlyphID id="308" name="meem-ar.medi.ragaa"/>
+ <GlyphID id="309" name="meem-ar.medi.reh"/>
+ <GlyphID id="310" name="meem-ar.medi.sad"/>
+ <GlyphID id="311" name="meem-ar.medi.yeh"/>
+ <GlyphID id="312" name="meem-ar.init"/>
+ <GlyphID id="313" name="meem-ar.init.ain"/>
+ <GlyphID id="314" name="meem-ar.init.dal"/>
+ <GlyphID id="315" name="meem-ar.init.feh"/>
+ <GlyphID id="316" name="meem-ar.init.hah"/>
+ <GlyphID id="317" name="meem-ar.init.heh"/>
+ <GlyphID id="318" name="meem-ar.init.meem"/>
+ <GlyphID id="319" name="meem-ar.init.ragaa"/>
+ <GlyphID id="320" name="meem-ar.init.reh"/>
+ <GlyphID id="321" name="meem-ar.init.sad"/>
+ <GlyphID id="322" name="meem-ar.init.yeh"/>
+ <GlyphID id="323" name="noon-ar"/>
+ <GlyphID id="324" name="noon-ar.tail"/>
+ <GlyphID id="325" name="noon-ar.fina"/>
+ <GlyphID id="326" name="noon-ar.fina.tail"/>
+ <GlyphID id="327" name="noonghunna-ar"/>
+ <GlyphID id="328" name="noonghunna-ar.jalt"/>
+ <GlyphID id="329" name="noonghunna-ar.fina"/>
+ <GlyphID id="330" name="rnoon-ar"/>
+ <GlyphID id="331" name="noonThreedotsabove-ar"/>
+ <GlyphID id="332" name="heh-ar"/>
+ <GlyphID id="333" name="heh-ar.fina"/>
+ <GlyphID id="334" name="heh-ar.medi"/>
+ <GlyphID id="335" name="heh-ar.medi.ain"/>
+ <GlyphID id="336" name="heh-ar.medi.dal"/>
+ <GlyphID id="337" name="heh-ar.medi.feh"/>
+ <GlyphID id="338" name="heh-ar.medi.hah"/>
+ <GlyphID id="339" name="heh-ar.medi.heh"/>
+ <GlyphID id="340" name="heh-ar.medi.meem"/>
+ <GlyphID id="341" name="heh-ar.medi.ragaa"/>
+ <GlyphID id="342" name="heh-ar.medi.reh"/>
+ <GlyphID id="343" name="heh-ar.medi.sad"/>
+ <GlyphID id="344" name="heh-ar.medi.yeh"/>
+ <GlyphID id="345" name="heh-ar.init"/>
+ <GlyphID id="346" name="heh-ar.init.ain"/>
+ <GlyphID id="347" name="heh-ar.init.dal"/>
+ <GlyphID id="348" name="heh-ar.init.feh"/>
+ <GlyphID id="349" name="heh-ar.init.hah"/>
+ <GlyphID id="350" name="heh-ar.init.heh"/>
+ <GlyphID id="351" name="heh-ar.init.meem"/>
+ <GlyphID id="352" name="heh-ar.init.ragaa"/>
+ <GlyphID id="353" name="heh-ar.init.reh"/>
+ <GlyphID id="354" name="heh-ar.init.sad"/>
+ <GlyphID id="355" name="heh-ar.init.yeh"/>
+ <GlyphID id="356" name="hehHamzaabove-ar"/>
+ <GlyphID id="357" name="hehgoal-ar"/>
+ <GlyphID id="358" name="hehgoal-ar.fina"/>
+ <GlyphID id="359" name="hehgoal-ar.init"/>
+ <GlyphID id="360" name="hehgoal-ar.init.ain"/>
+ <GlyphID id="361" name="hehgoal-ar.init.dal"/>
+ <GlyphID id="362" name="hehgoal-ar.init.feh"/>
+ <GlyphID id="363" name="hehgoal-ar.init.hah"/>
+ <GlyphID id="364" name="hehgoal-ar.init.heh"/>
+ <GlyphID id="365" name="hehgoal-ar.init.meem"/>
+ <GlyphID id="366" name="hehgoal-ar.init.ragaa"/>
+ <GlyphID id="367" name="hehgoal-ar.init.reh"/>
+ <GlyphID id="368" name="hehgoal-ar.init.sad"/>
+ <GlyphID id="369" name="hehgoal-ar.init.yeh"/>
+ <GlyphID id="370" name="hehDoachashmee-ar"/>
+ <GlyphID id="371" name="hehDoachashmee-ar.fina"/>
+ <GlyphID id="372" name="hehDoachashmee-ar.medi"/>
+ <GlyphID id="373" name="hehDoachashmee-ar.medi.ain"/>
+ <GlyphID id="374" name="hehDoachashmee-ar.medi.dal"/>
+ <GlyphID id="375" name="hehDoachashmee-ar.medi.feh"/>
+ <GlyphID id="376" name="hehDoachashmee-ar.medi.hah"/>
+ <GlyphID id="377" name="hehDoachashmee-ar.medi.heh"/>
+ <GlyphID id="378" name="hehDoachashmee-ar.medi.meem"/>
+ <GlyphID id="379" name="hehDoachashmee-ar.medi.ragaa"/>
+ <GlyphID id="380" name="hehDoachashmee-ar.medi.reh"/>
+ <GlyphID id="381" name="hehDoachashmee-ar.medi.sad"/>
+ <GlyphID id="382" name="hehDoachashmee-ar.medi.yeh"/>
+ <GlyphID id="383" name="tehMarbuta-ar"/>
+ <GlyphID id="384" name="waw-ar"/>
+ <GlyphID id="385" name="waw-ar.fina"/>
+ <GlyphID id="386" name="wawDotabove-ar"/>
+ <GlyphID id="387" name="wawHamzaabove-ar"/>
+ <GlyphID id="388" name="oe-ar"/>
+ <GlyphID id="389" name="alefMaksura-ar"/>
+ <GlyphID id="390" name="alefMaksura-ar.jalt"/>
+ <GlyphID id="391" name="alefMaksura-ar.fina"/>
+ <GlyphID id="392" name="alefMaksura-ar.fina.jalt"/>
+ <GlyphID id="393" name="alefMaksura-ar.fina.yeh"/>
+ <GlyphID id="394" name="alefMaksura-ar.fina.yeh.jalt"/>
+ <GlyphID id="395" name="yeh-ar"/>
+ <GlyphID id="396" name="yehHamzaabove-ar"/>
+ <GlyphID id="397" name="yehVabove-ar"/>
+ <GlyphID id="398" name="yeh-farsi"/>
+ <GlyphID id="399" name="yehbarree-ar"/>
+ <GlyphID id="400" name="yehbarree-ar.fina"/>
+ <GlyphID id="401" name="yehbarreeHamzaabove-ar"/>
+ <GlyphID id="402" name="ae-ar"/>
+ <GlyphID id="403" name="zero-ar"/>
+ <GlyphID id="404" name="one-ar"/>
+ <GlyphID id="405" name="two-ar"/>
+ <GlyphID id="406" name="three-ar"/>
+ <GlyphID id="407" name="four-ar"/>
+ <GlyphID id="408" name="five-ar"/>
+ <GlyphID id="409" name="six-ar"/>
+ <GlyphID id="410" name="seven-ar"/>
+ <GlyphID id="411" name="eight-ar"/>
+ <GlyphID id="412" name="nine-ar"/>
+ <GlyphID id="413" name="two-persian"/>
+ <GlyphID id="414" name="four-persian"/>
+ <GlyphID id="415" name="five-persian"/>
+ <GlyphID id="416" name="six-persian"/>
+ <GlyphID id="417" name="seven-persian"/>
+ <GlyphID id="418" name="zero-ar.dnom"/>
+ <GlyphID id="419" name="one-ar.dnom"/>
+ <GlyphID id="420" name="two-ar.dnom"/>
+ <GlyphID id="421" name="three-ar.dnom"/>
+ <GlyphID id="422" name="four-ar.dnom"/>
+ <GlyphID id="423" name="five-ar.dnom"/>
+ <GlyphID id="424" name="six-ar.dnom"/>
+ <GlyphID id="425" name="seven-ar.dnom"/>
+ <GlyphID id="426" name="eight-ar.dnom"/>
+ <GlyphID id="427" name="nine-ar.dnom"/>
+ <GlyphID id="428" name="two-persian.dnom"/>
+ <GlyphID id="429" name="four-persian.dnom"/>
+ <GlyphID id="430" name="five-persian.dnom"/>
+ <GlyphID id="431" name="six-persian.dnom"/>
+ <GlyphID id="432" name="zero-ar.numr"/>
+ <GlyphID id="433" name="one-ar.numr"/>
+ <GlyphID id="434" name="two-ar.numr"/>
+ <GlyphID id="435" name="three-ar.numr"/>
+ <GlyphID id="436" name="four-ar.numr"/>
+ <GlyphID id="437" name="five-ar.numr"/>
+ <GlyphID id="438" name="six-ar.numr"/>
+ <GlyphID id="439" name="seven-ar.numr"/>
+ <GlyphID id="440" name="eight-ar.numr"/>
+ <GlyphID id="441" name="nine-ar.numr"/>
+ <GlyphID id="442" name="two-persian.numr"/>
+ <GlyphID id="443" name="four-persian.numr"/>
+ <GlyphID id="444" name="five-persian.numr"/>
+ <GlyphID id="445" name="six-persian.numr"/>
+ <GlyphID id="446" name="four-persian.urd"/>
+ <GlyphID id="447" name="seven-persian.urd"/>
+ <GlyphID id="448" name="four-persian.urd.dnom"/>
+ <GlyphID id="449" name="seven-persian.urd.dnom"/>
+ <GlyphID id="450" name="four-persian.urd.numr"/>
+ <GlyphID id="451" name="seven-persian.urd.numr"/>
+ <GlyphID id="452" name="space"/>
+ <GlyphID id="453" name="fullstop-ar"/>
+ <GlyphID id="454" name="comma-ar"/>
+ <GlyphID id="455" name="comma-ar.alt"/>
+ <GlyphID id="456" name="semicolon-ar"/>
+ <GlyphID id="457" name="semicolon-ar.alt"/>
+ <GlyphID id="458" name="question-ar"/>
+ <GlyphID id="459" name="parenleft-ar"/>
+ <GlyphID id="460" name="parenright-ar"/>
+ <GlyphID id="461" name="ellipsis"/>
+ <GlyphID id="462" name="exclam"/>
+ <GlyphID id="463" name="endash"/>
+ <GlyphID id="464" name="emdash"/>
+ <GlyphID id="465" name="quotesinglbase"/>
+ <GlyphID id="466" name="quotedblbase"/>
+ <GlyphID id="467" name="quotedblleft"/>
+ <GlyphID id="468" name="quotedblright"/>
+ <GlyphID id="469" name="quoteleft"/>
+ <GlyphID id="470" name="quoteright"/>
+ <GlyphID id="471" name="percent-ar"/>
+ <GlyphID id="472" name="kashida-ar"/>
+ <GlyphID id="473" name="tahabove-ar"/>
+ <GlyphID id="474" name="dotabove-ar"/>
+ <GlyphID id="475" name="dotbelow-ar"/>
+ <GlyphID id="476" name="twodotshorizontalabove-ar"/>
+ <GlyphID id="477" name="twodotshorizontalbelow-ar"/>
+ <GlyphID id="478" name="threedotsdownbelow-ar"/>
+ <GlyphID id="479" name="threedotsupabove-ar"/>
+ <GlyphID id="480" name="wasla-ar"/>
+ <GlyphID id="481" name="gafsarkashabove-ar"/>
+ <GlyphID id="482" name="alefabove-ar"/>
+ <GlyphID id="483" name="alefabove-ar.isol"/>
+ <GlyphID id="484" name="alefabove-ar.medi"/>
+ <GlyphID id="485" name="alefbelow-ar"/>
+ <GlyphID id="486" name="hamzaabove-ar"/>
+ <GlyphID id="487" name="hamzabelow-ar"/>
+ <GlyphID id="488" name="fathatan-ar"/>
+ <GlyphID id="489" name="dammatan-ar"/>
+ <GlyphID id="490" name="kasratan-ar"/>
+ <GlyphID id="491" name="fatha-ar"/>
+ <GlyphID id="492" name="damma-ar"/>
+ <GlyphID id="493" name="kasra-ar"/>
+ <GlyphID id="494" name="shadda-ar"/>
+ <GlyphID id="495" name="sukun-ar"/>
+ <GlyphID id="496" name="sukun-ar.alt"/>
+ <GlyphID id="497" name="madda-ar"/>
+ <GlyphID id="498" name="noonghunnaabove-ar"/>
+ <GlyphID id="499" name="dammainverted-ar"/>
+ <GlyphID id="500" name="dammainverted-ar.urd"/>
+ <GlyphID id="501" name="vabove-ar"/>
+ <GlyphID id="502" name="vbelow-ar"/>
+ <GlyphID id="503" name="opendammatan-ar"/>
+ </GlyphOrder>
+
+ <head>
+ <!-- Most of this table will be recalculated by the compiler -->
+ <tableVersion value="1.0"/>
+ <fontRevision value="1.003"/>
+ <checkSumAdjustment value="0x90f117bf"/>
+ <magicNumber value="0x5f0f3cf5"/>
+ <flags value="00000000 00000011"/>
+ <unitsPerEm value="1000"/>
+ <created value="Sat Mar 7 21:19:41 2015"/>
+ <modified value="Thu Jan 1 00:00:00 1970"/>
+ <xMin value="-166"/>
+ <yMin value="-364"/>
+ <xMax value="1459"/>
+ <yMax value="1028"/>
+ <macStyle value="00000000 00000000"/>
+ <lowestRecPPEM value="6"/>
+ <fontDirectionHint value="2"/>
+ <indexToLocFormat value="0"/>
+ <glyphDataFormat value="0"/>
+ </head>
+
+ <hhea>
+ <tableVersion value="0x00010000"/>
+ <ascent value="1221"/>
+ <descent value="-244"/>
+ <lineGap value="98"/>
+ <advanceWidthMax value="1531"/>
+ <minLeftSideBearing value="-165"/>
+ <minRightSideBearing value="-461"/>
+ <xMaxExtent value="1460"/>
+ <caretSlopeRise value="1"/>
+ <caretSlopeRun value="0"/>
+ <caretOffset value="0"/>
+ <reserved0 value="0"/>
+ <reserved1 value="0"/>
+ <reserved2 value="0"/>
+ <reserved3 value="0"/>
+ <metricDataFormat value="0"/>
+ <numberOfHMetrics value="485"/>
+ </hhea>
+
+ <maxp>
+ <tableVersion value="0x5000"/>
+ <numGlyphs value="504"/>
+ </maxp>
+
+ <OS_2>
+ <!-- The fields 'usFirstCharIndex' and 'usLastCharIndex'
+ will be recalculated by the compiler -->
+ <version value="4"/>
+ <xAvgCharWidth value="491"/>
+ <usWeightClass value="400"/>
+ <usWidthClass value="5"/>
+ <fsType value="00000000 00000000"/>
+ <ySubscriptXSize value="650"/>
+ <ySubscriptYSize value="700"/>
+ <ySubscriptXOffset value="47"/>
+ <ySubscriptYOffset value="140"/>
+ <ySuperscriptXSize value="650"/>
+ <ySuperscriptYSize value="700"/>
+ <ySuperscriptXOffset value="-164"/>
+ <ySuperscriptYOffset value="480"/>
+ <yStrikeoutSize value="49"/>
+ <yStrikeoutPosition value="258"/>
+ <sFamilyClass value="0"/>
+ <panose>
+ <bFamilyType value="2"/>
+ <bSerifStyle value="0"/>
+ <bWeight value="5"/>
+ <bProportion value="3"/>
+ <bContrast value="0"/>
+ <bStrokeVariation value="0"/>
+ <bArmStyle value="0"/>
+ <bLetterForm value="0"/>
+ <bMidline value="0"/>
+ <bXHeight value="0"/>
+ </panose>
+ <ulUnicodeRange1 value="10000000 00000000 00100000 00000011"/>
+ <ulUnicodeRange2 value="10000000 00000000 00000000 00000000"/>
+ <ulUnicodeRange3 value="00000000 00000000 00000000 00000000"/>
+ <ulUnicodeRange4 value="00000000 00000000 00000000 00000000"/>
+ <achVendID value="ALIF"/>
+ <fsSelection value="00000000 11000000"/>
+ <usFirstCharIndex value="32"/>
+ <usLastCharIndex value="64831"/>
+ <sTypoAscender value="1221"/>
+ <sTypoDescender value="-244"/>
+ <sTypoLineGap value="98"/>
+ <usWinAscent value="1221"/>
+ <usWinDescent value="439"/>
+ <ulCodePageRange1 value="00000000 00000000 00000000 01000000"/>
+ <ulCodePageRange2 value="00000000 00000000 00000000 00000000"/>
+ <sxHeight value="462"/>
+ <sCapHeight value="683"/>
+ <usDefaultChar value="0"/>
+ <usBreakChar value="32"/>
+ <usMaxContext value="4"/>
+ </OS_2>
+
+ <name>
+ <namerecord nameID="0" platformID="3" platEncID="1" langID="0x409">
+ Copyright 2015-2021 The Aref Ruqaa Project Authors (https://github.com/aliftype/aref-ruqaa), with Reserved Font Name EURM10.
+ </namerecord>
+ <namerecord nameID="1" platformID="3" platEncID="1" langID="0x409">
+ Aref Ruqaa
+ </namerecord>
+ <namerecord nameID="2" platformID="3" platEncID="1" langID="0x409">
+ Regular
+ </namerecord>
+ <namerecord nameID="3" platformID="3" platEncID="1" langID="0x409">
+ 1.003;ALIF;ArefRuqaa-Regular
+ </namerecord>
+ <namerecord nameID="4" platformID="3" platEncID="1" langID="0x409">
+ Aref Ruqaa Regular
+ </namerecord>
+ <namerecord nameID="5" platformID="3" platEncID="1" langID="0x409">
+ Version 1.003
+ </namerecord>
+ <namerecord nameID="6" platformID="3" platEncID="1" langID="0x409">
+ ArefRuqaa-Regular
+ </namerecord>
+ <namerecord nameID="9" platformID="3" platEncID="1" langID="0x409">
+ Abdullah Aref
+ </namerecord>
+ <namerecord nameID="10" platformID="3" platEncID="1" langID="0x409">
+ Aref Ruqaa is an Arabic typeface that aspires to capture the essence of the classical Ruqaa calligraphic style.
+ </namerecord>
+ <namerecord nameID="13" platformID="3" platEncID="1" langID="0x409">
+ This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: https://scripts.sil.org/OFL
+ </namerecord>
+ <namerecord nameID="14" platformID="3" platEncID="1" langID="0x409">
+ https://scripts.sil.org/OFL
+ </namerecord>
+ <namerecord nameID="19" platformID="3" platEncID="1" langID="0x409">
+ الحب سماء لا تمطر غير الأحلام
+ </namerecord>
+ <namerecord nameID="256" platformID="3" platEncID="1" langID="0x409">
+ Looped Haa
+ </namerecord>
+ <namerecord nameID="257" platformID="3" platEncID="1" langID="0x409">
+ Open final Haa
+ </namerecord>
+ <namerecord nameID="258" platformID="3" platEncID="1" langID="0x409">
+ Tailed Noon
+ </namerecord>
+ <namerecord nameID="259" platformID="3" platEncID="1" langID="0x409">
+ Looped initial Kaf
+ </namerecord>
+ <namerecord nameID="260" platformID="3" platEncID="1" langID="0x409">
+ Alternate Arabic digit two
+ </namerecord>
+ <namerecord nameID="261" platformID="3" platEncID="1" langID="0x409">
+ Tailed Sheen
+ </namerecord>
+ <namerecord nameID="262" platformID="3" platEncID="1" langID="0x409">
+ Alternate Sad-Tah/Tah-Sad
+ </namerecord>
+ <namerecord nameID="263" platformID="3" platEncID="1" langID="0x409">
+ Alternate Sukun
+ </namerecord>
+ </name>
+
+ <cmap>
+ <tableVersion version="0"/>
+ <cmap_format_4 platformID="0" platEncID="3" language="0">
+ <map code="0x20" name="space"/><!-- SPACE -->
+ <map code="0x21" name="exclam"/><!-- EXCLAMATION MARK -->
+ <map code="0xa0" name="space"/><!-- NO-BREAK SPACE -->
+ <map code="0x60c" name="comma-ar"/><!-- ARABIC COMMA -->
+ <map code="0x61b" name="semicolon-ar"/><!-- ARABIC SEMICOLON -->
+ <map code="0x61f" name="question-ar"/><!-- ARABIC QUESTION MARK -->
+ <map code="0x621" name="hamza-ar"/><!-- ARABIC LETTER HAMZA -->
+ <map code="0x622" name="alefMadda-ar"/><!-- ARABIC LETTER ALEF WITH MADDA ABOVE -->
+ <map code="0x623" name="alefHamzaabove-ar"/><!-- ARABIC LETTER ALEF WITH HAMZA ABOVE -->
+ <map code="0x624" name="wawHamzaabove-ar"/><!-- ARABIC LETTER WAW WITH HAMZA ABOVE -->
+ <map code="0x625" name="alefHamzabelow-ar"/><!-- ARABIC LETTER ALEF WITH HAMZA BELOW -->
+ <map code="0x626" name="yehHamzaabove-ar"/><!-- ARABIC LETTER YEH WITH HAMZA ABOVE -->
+ <map code="0x627" name="alef-ar"/><!-- ARABIC LETTER ALEF -->
+ <map code="0x628" name="beh-ar"/><!-- ARABIC LETTER BEH -->
+ <map code="0x629" name="tehMarbuta-ar"/><!-- ARABIC LETTER TEH MARBUTA -->
+ <map code="0x62a" name="teh-ar"/><!-- ARABIC LETTER TEH -->
+ <map code="0x62b" name="theh-ar"/><!-- ARABIC LETTER THEH -->
+ <map code="0x62c" name="jeem-ar"/><!-- ARABIC LETTER JEEM -->
+ <map code="0x62d" name="hah-ar"/><!-- ARABIC LETTER HAH -->
+ <map code="0x62e" name="khah-ar"/><!-- ARABIC LETTER KHAH -->
+ <map code="0x62f" name="dal-ar"/><!-- ARABIC LETTER DAL -->
+ <map code="0x630" name="thal-ar"/><!-- ARABIC LETTER THAL -->
+ <map code="0x631" name="reh-ar"/><!-- ARABIC LETTER REH -->
+ <map code="0x632" name="zain-ar"/><!-- ARABIC LETTER ZAIN -->
+ <map code="0x633" name="seen-ar"/><!-- ARABIC LETTER SEEN -->
+ <map code="0x634" name="sheen-ar"/><!-- ARABIC LETTER SHEEN -->
+ <map code="0x635" name="sad-ar"/><!-- ARABIC LETTER SAD -->
+ <map code="0x636" name="dad-ar"/><!-- ARABIC LETTER DAD -->
+ <map code="0x637" name="tah-ar"/><!-- ARABIC LETTER TAH -->
+ <map code="0x638" name="zah-ar"/><!-- ARABIC LETTER ZAH -->
+ <map code="0x639" name="ain-ar"/><!-- ARABIC LETTER AIN -->
+ <map code="0x63a" name="ghain-ar"/><!-- ARABIC LETTER GHAIN -->
+ <map code="0x640" name="kashida-ar"/><!-- ARABIC TATWEEL -->
+ <map code="0x641" name="feh-ar"/><!-- ARABIC LETTER FEH -->
+ <map code="0x642" name="qaf-ar"/><!-- ARABIC LETTER QAF -->
+ <map code="0x643" name="kaf-ar"/><!-- ARABIC LETTER KAF -->
+ <map code="0x644" name="lam-ar"/><!-- ARABIC LETTER LAM -->
+ <map code="0x645" name="meem-ar"/><!-- ARABIC LETTER MEEM -->
+ <map code="0x646" name="noon-ar"/><!-- ARABIC LETTER NOON -->
+ <map code="0x647" name="heh-ar"/><!-- ARABIC LETTER HEH -->
+ <map code="0x648" name="waw-ar"/><!-- ARABIC LETTER WAW -->
+ <map code="0x649" name="alefMaksura-ar"/><!-- ARABIC LETTER ALEF MAKSURA -->
+ <map code="0x64a" name="yeh-ar"/><!-- ARABIC LETTER YEH -->
+ <map code="0x64b" name="fathatan-ar"/><!-- ARABIC FATHATAN -->
+ <map code="0x64c" name="dammatan-ar"/><!-- ARABIC DAMMATAN -->
+ <map code="0x64d" name="kasratan-ar"/><!-- ARABIC KASRATAN -->
+ <map code="0x64e" name="fatha-ar"/><!-- ARABIC FATHA -->
+ <map code="0x64f" name="damma-ar"/><!-- ARABIC DAMMA -->
+ <map code="0x650" name="kasra-ar"/><!-- ARABIC KASRA -->
+ <map code="0x651" name="shadda-ar"/><!-- ARABIC SHADDA -->
+ <map code="0x652" name="sukun-ar"/><!-- ARABIC SUKUN -->
+ <map code="0x653" name="madda-ar"/><!-- ARABIC MADDAH ABOVE -->
+ <map code="0x654" name="hamzaabove-ar"/><!-- ARABIC HAMZA ABOVE -->
+ <map code="0x655" name="hamzabelow-ar"/><!-- ARABIC HAMZA BELOW -->
+ <map code="0x656" name="alefbelow-ar"/><!-- ARABIC SUBSCRIPT ALEF -->
+ <map code="0x657" name="dammainverted-ar"/><!-- ARABIC INVERTED DAMMA -->
+ <map code="0x658" name="noonghunnaabove-ar"/><!-- ARABIC MARK NOON GHUNNA -->
+ <map code="0x65a" name="vabove-ar"/><!-- ARABIC VOWEL SIGN SMALL V ABOVE -->
+ <map code="0x660" name="zero-ar"/><!-- ARABIC-INDIC DIGIT ZERO -->
+ <map code="0x661" name="one-ar"/><!-- ARABIC-INDIC DIGIT ONE -->
+ <map code="0x662" name="two-ar"/><!-- ARABIC-INDIC DIGIT TWO -->
+ <map code="0x663" name="three-ar"/><!-- ARABIC-INDIC DIGIT THREE -->
+ <map code="0x664" name="four-ar"/><!-- ARABIC-INDIC DIGIT FOUR -->
+ <map code="0x665" name="five-ar"/><!-- ARABIC-INDIC DIGIT FIVE -->
+ <map code="0x666" name="six-ar"/><!-- ARABIC-INDIC DIGIT SIX -->
+ <map code="0x667" name="seven-ar"/><!-- ARABIC-INDIC DIGIT SEVEN -->
+ <map code="0x668" name="eight-ar"/><!-- ARABIC-INDIC DIGIT EIGHT -->
+ <map code="0x669" name="nine-ar"/><!-- ARABIC-INDIC DIGIT NINE -->
+ <map code="0x66a" name="percent-ar"/><!-- ARABIC PERCENT SIGN -->
+ <map code="0x66e" name="behDotless-ar"/><!-- ARABIC LETTER DOTLESS BEH -->
+ <map code="0x66f" name="qafDotless-ar"/><!-- ARABIC LETTER DOTLESS QAF -->
+ <map code="0x670" name="alefabove-ar"/><!-- ARABIC LETTER SUPERSCRIPT ALEF -->
+ <map code="0x671" name="alefWasla-ar"/><!-- ARABIC LETTER ALEF WASLA -->
+ <map code="0x674" name="highhamza-ar"/><!-- ARABIC LETTER HIGH HAMZA -->
+ <map code="0x679" name="tteh-ar"/><!-- ARABIC LETTER TTEH -->
+ <map code="0x67e" name="peh-ar"/><!-- ARABIC LETTER PEH -->
+ <map code="0x686" name="tcheh-ar"/><!-- ARABIC LETTER TCHEH -->
+ <map code="0x688" name="ddal-ar"/><!-- ARABIC LETTER DDAL -->
+ <map code="0x68e" name="dul-ar"/><!-- ARABIC LETTER DUL -->
+ <map code="0x691" name="rreh-ar"/><!-- ARABIC LETTER RREH -->
+ <map code="0x695" name="rehVbelow-ar"/><!-- ARABIC LETTER REH WITH SMALL V BELOW -->
+ <map code="0x698" name="jeh-ar"/><!-- ARABIC LETTER JEH -->
+ <map code="0x6a0" name="ainThreedots-ar"/><!-- ARABIC LETTER AIN WITH THREE DOTS ABOVE -->
+ <map code="0x6a1" name="fehDotless-ar"/><!-- ARABIC LETTER DOTLESS FEH -->
+ <map code="0x6a4" name="veh-ar"/><!-- ARABIC LETTER VEH -->
+ <map code="0x6a9" name="keheh-ar"/><!-- ARABIC LETTER KEHEH -->
+ <map code="0x6ac" name="kafDotabove-ar"/><!-- ARABIC LETTER KAF WITH DOT ABOVE -->
+ <map code="0x6af" name="gaf-ar"/><!-- ARABIC LETTER GAF -->
+ <map code="0x6b5" name="lamVabove-ar"/><!-- ARABIC LETTER LAM WITH SMALL V -->
+ <map code="0x6ba" name="noonghunna-ar"/><!-- ARABIC LETTER NOON GHUNNA -->
+ <map code="0x6bb" name="rnoon-ar"/><!-- ARABIC LETTER RNOON -->
+ <map code="0x6bd" name="noonThreedotsabove-ar"/><!-- ARABIC LETTER NOON WITH THREE DOTS ABOVE -->
+ <map code="0x6be" name="hehDoachashmee-ar"/><!-- ARABIC LETTER HEH DOACHASHMEE -->
+ <map code="0x6c0" name="hehHamzaabove-ar"/><!-- ARABIC LETTER HEH WITH YEH ABOVE -->
+ <map code="0x6c1" name="hehgoal-ar"/><!-- ARABIC LETTER HEH GOAL -->
+ <map code="0x6c6" name="oe-ar"/><!-- ARABIC LETTER OE -->
+ <map code="0x6cc" name="yeh-farsi"/><!-- ARABIC LETTER FARSI YEH -->
+ <map code="0x6ce" name="yehVabove-ar"/><!-- ARABIC LETTER YEH WITH SMALL V -->
+ <map code="0x6cf" name="wawDotabove-ar"/><!-- ARABIC LETTER WAW WITH DOT ABOVE -->
+ <map code="0x6d2" name="yehbarree-ar"/><!-- ARABIC LETTER YEH BARREE -->
+ <map code="0x6d3" name="yehbarreeHamzaabove-ar"/><!-- ARABIC LETTER YEH BARREE WITH HAMZA ABOVE -->
+ <map code="0x6d4" name="fullstop-ar"/><!-- ARABIC FULL STOP -->
+ <map code="0x6d5" name="ae-ar"/><!-- ARABIC LETTER AE -->
+ <map code="0x6e1" name="sukun-ar"/><!-- ARABIC SMALL HIGH DOTLESS HEAD OF KHAH -->
+ <map code="0x6f0" name="zero-ar"/><!-- EXTENDED ARABIC-INDIC DIGIT ZERO -->
+ <map code="0x6f1" name="one-ar"/><!-- EXTENDED ARABIC-INDIC DIGIT ONE -->
+ <map code="0x6f2" name="two-persian"/><!-- EXTENDED ARABIC-INDIC DIGIT TWO -->
+ <map code="0x6f3" name="three-ar"/><!-- EXTENDED ARABIC-INDIC DIGIT THREE -->
+ <map code="0x6f4" name="four-persian"/><!-- EXTENDED ARABIC-INDIC DIGIT FOUR -->
+ <map code="0x6f5" name="five-persian"/><!-- EXTENDED ARABIC-INDIC DIGIT FIVE -->
+ <map code="0x6f6" name="six-persian"/><!-- EXTENDED ARABIC-INDIC DIGIT SIX -->
+ <map code="0x6f7" name="seven-persian"/><!-- EXTENDED ARABIC-INDIC DIGIT SEVEN -->
+ <map code="0x6f8" name="eight-ar"/><!-- EXTENDED ARABIC-INDIC DIGIT EIGHT -->
+ <map code="0x6f9" name="nine-ar"/><!-- EXTENDED ARABIC-INDIC DIGIT NINE -->
+ <map code="0x762" name="kehehDotabove-ar"/><!-- ARABIC LETTER KEHEH WITH DOT ABOVE -->
+ <map code="0x8f1" name="opendammatan-ar"/><!-- ARABIC OPEN DAMMATAN -->
+ <map code="0x2013" name="endash"/><!-- EN DASH -->
+ <map code="0x2014" name="emdash"/><!-- EM DASH -->
+ <map code="0x2018" name="quoteleft"/><!-- LEFT SINGLE QUOTATION MARK -->
+ <map code="0x2019" name="quoteright"/><!-- RIGHT SINGLE QUOTATION MARK -->
+ <map code="0x201a" name="quotesinglbase"/><!-- SINGLE LOW-9 QUOTATION MARK -->
+ <map code="0x201c" name="quotedblleft"/><!-- LEFT DOUBLE QUOTATION MARK -->
+ <map code="0x201d" name="quotedblright"/><!-- RIGHT DOUBLE QUOTATION MARK -->
+ <map code="0x201e" name="quotedblbase"/><!-- DOUBLE LOW-9 QUOTATION MARK -->
+ <map code="0x2026" name="ellipsis"/><!-- HORIZONTAL ELLIPSIS -->
+ <map code="0xfd3e" name="parenleft-ar"/><!-- ORNATE LEFT PARENTHESIS -->
+ <map code="0xfd3f" name="parenright-ar"/><!-- ORNATE RIGHT PARENTHESIS -->
+ </cmap_format_4>
+ <cmap_format_4 platformID="3" platEncID="1" language="0">
+ <map code="0x20" name="space"/><!-- SPACE -->
+ <map code="0x21" name="exclam"/><!-- EXCLAMATION MARK -->
+ <map code="0xa0" name="space"/><!-- NO-BREAK SPACE -->
+ <map code="0x60c" name="comma-ar"/><!-- ARABIC COMMA -->
+ <map code="0x61b" name="semicolon-ar"/><!-- ARABIC SEMICOLON -->
+ <map code="0x61f" name="question-ar"/><!-- ARABIC QUESTION MARK -->
+ <map code="0x621" name="hamza-ar"/><!-- ARABIC LETTER HAMZA -->
+ <map code="0x622" name="alefMadda-ar"/><!-- ARABIC LETTER ALEF WITH MADDA ABOVE -->
+ <map code="0x623" name="alefHamzaabove-ar"/><!-- ARABIC LETTER ALEF WITH HAMZA ABOVE -->
+ <map code="0x624" name="wawHamzaabove-ar"/><!-- ARABIC LETTER WAW WITH HAMZA ABOVE -->
+ <map code="0x625" name="alefHamzabelow-ar"/><!-- ARABIC LETTER ALEF WITH HAMZA BELOW -->
+ <map code="0x626" name="yehHamzaabove-ar"/><!-- ARABIC LETTER YEH WITH HAMZA ABOVE -->
+ <map code="0x627" name="alef-ar"/><!-- ARABIC LETTER ALEF -->
+ <map code="0x628" name="beh-ar"/><!-- ARABIC LETTER BEH -->
+ <map code="0x629" name="tehMarbuta-ar"/><!-- ARABIC LETTER TEH MARBUTA -->
+ <map code="0x62a" name="teh-ar"/><!-- ARABIC LETTER TEH -->
+ <map code="0x62b" name="theh-ar"/><!-- ARABIC LETTER THEH -->
+ <map code="0x62c" name="jeem-ar"/><!-- ARABIC LETTER JEEM -->
+ <map code="0x62d" name="hah-ar"/><!-- ARABIC LETTER HAH -->
+ <map code="0x62e" name="khah-ar"/><!-- ARABIC LETTER KHAH -->
+ <map code="0x62f" name="dal-ar"/><!-- ARABIC LETTER DAL -->
+ <map code="0x630" name="thal-ar"/><!-- ARABIC LETTER THAL -->
+ <map code="0x631" name="reh-ar"/><!-- ARABIC LETTER REH -->
+ <map code="0x632" name="zain-ar"/><!-- ARABIC LETTER ZAIN -->
+ <map code="0x633" name="seen-ar"/><!-- ARABIC LETTER SEEN -->
+ <map code="0x634" name="sheen-ar"/><!-- ARABIC LETTER SHEEN -->
+ <map code="0x635" name="sad-ar"/><!-- ARABIC LETTER SAD -->
+ <map code="0x636" name="dad-ar"/><!-- ARABIC LETTER DAD -->
+ <map code="0x637" name="tah-ar"/><!-- ARABIC LETTER TAH -->
+ <map code="0x638" name="zah-ar"/><!-- ARABIC LETTER ZAH -->
+ <map code="0x639" name="ain-ar"/><!-- ARABIC LETTER AIN -->
+ <map code="0x63a" name="ghain-ar"/><!-- ARABIC LETTER GHAIN -->
+ <map code="0x640" name="kashida-ar"/><!-- ARABIC TATWEEL -->
+ <map code="0x641" name="feh-ar"/><!-- ARABIC LETTER FEH -->
+ <map code="0x642" name="qaf-ar"/><!-- ARABIC LETTER QAF -->
+ <map code="0x643" name="kaf-ar"/><!-- ARABIC LETTER KAF -->
+ <map code="0x644" name="lam-ar"/><!-- ARABIC LETTER LAM -->
+ <map code="0x645" name="meem-ar"/><!-- ARABIC LETTER MEEM -->
+ <map code="0x646" name="noon-ar"/><!-- ARABIC LETTER NOON -->
+ <map code="0x647" name="heh-ar"/><!-- ARABIC LETTER HEH -->
+ <map code="0x648" name="waw-ar"/><!-- ARABIC LETTER WAW -->
+ <map code="0x649" name="alefMaksura-ar"/><!-- ARABIC LETTER ALEF MAKSURA -->
+ <map code="0x64a" name="yeh-ar"/><!-- ARABIC LETTER YEH -->
+ <map code="0x64b" name="fathatan-ar"/><!-- ARABIC FATHATAN -->
+ <map code="0x64c" name="dammatan-ar"/><!-- ARABIC DAMMATAN -->
+ <map code="0x64d" name="kasratan-ar"/><!-- ARABIC KASRATAN -->
+ <map code="0x64e" name="fatha-ar"/><!-- ARABIC FATHA -->
+ <map code="0x64f" name="damma-ar"/><!-- ARABIC DAMMA -->
+ <map code="0x650" name="kasra-ar"/><!-- ARABIC KASRA -->
+ <map code="0x651" name="shadda-ar"/><!-- ARABIC SHADDA -->
+ <map code="0x652" name="sukun-ar"/><!-- ARABIC SUKUN -->
+ <map code="0x653" name="madda-ar"/><!-- ARABIC MADDAH ABOVE -->
+ <map code="0x654" name="hamzaabove-ar"/><!-- ARABIC HAMZA ABOVE -->
+ <map code="0x655" name="hamzabelow-ar"/><!-- ARABIC HAMZA BELOW -->
+ <map code="0x656" name="alefbelow-ar"/><!-- ARABIC SUBSCRIPT ALEF -->
+ <map code="0x657" name="dammainverted-ar"/><!-- ARABIC INVERTED DAMMA -->
+ <map code="0x658" name="noonghunnaabove-ar"/><!-- ARABIC MARK NOON GHUNNA -->
+ <map code="0x65a" name="vabove-ar"/><!-- ARABIC VOWEL SIGN SMALL V ABOVE -->
+ <map code="0x660" name="zero-ar"/><!-- ARABIC-INDIC DIGIT ZERO -->
+ <map code="0x661" name="one-ar"/><!-- ARABIC-INDIC DIGIT ONE -->
+ <map code="0x662" name="two-ar"/><!-- ARABIC-INDIC DIGIT TWO -->
+ <map code="0x663" name="three-ar"/><!-- ARABIC-INDIC DIGIT THREE -->
+ <map code="0x664" name="four-ar"/><!-- ARABIC-INDIC DIGIT FOUR -->
+ <map code="0x665" name="five-ar"/><!-- ARABIC-INDIC DIGIT FIVE -->
+ <map code="0x666" name="six-ar"/><!-- ARABIC-INDIC DIGIT SIX -->
+ <map code="0x667" name="seven-ar"/><!-- ARABIC-INDIC DIGIT SEVEN -->
+ <map code="0x668" name="eight-ar"/><!-- ARABIC-INDIC DIGIT EIGHT -->
+ <map code="0x669" name="nine-ar"/><!-- ARABIC-INDIC DIGIT NINE -->
+ <map code="0x66a" name="percent-ar"/><!-- ARABIC PERCENT SIGN -->
+ <map code="0x66e" name="behDotless-ar"/><!-- ARABIC LETTER DOTLESS BEH -->
+ <map code="0x66f" name="qafDotless-ar"/><!-- ARABIC LETTER DOTLESS QAF -->
+ <map code="0x670" name="alefabove-ar"/><!-- ARABIC LETTER SUPERSCRIPT ALEF -->
+ <map code="0x671" name="alefWasla-ar"/><!-- ARABIC LETTER ALEF WASLA -->
+ <map code="0x674" name="highhamza-ar"/><!-- ARABIC LETTER HIGH HAMZA -->
+ <map code="0x679" name="tteh-ar"/><!-- ARABIC LETTER TTEH -->
+ <map code="0x67e" name="peh-ar"/><!-- ARABIC LETTER PEH -->
+ <map code="0x686" name="tcheh-ar"/><!-- ARABIC LETTER TCHEH -->
+ <map code="0x688" name="ddal-ar"/><!-- ARABIC LETTER DDAL -->
+ <map code="0x68e" name="dul-ar"/><!-- ARABIC LETTER DUL -->
+ <map code="0x691" name="rreh-ar"/><!-- ARABIC LETTER RREH -->
+ <map code="0x695" name="rehVbelow-ar"/><!-- ARABIC LETTER REH WITH SMALL V BELOW -->
+ <map code="0x698" name="jeh-ar"/><!-- ARABIC LETTER JEH -->
+ <map code="0x6a0" name="ainThreedots-ar"/><!-- ARABIC LETTER AIN WITH THREE DOTS ABOVE -->
+ <map code="0x6a1" name="fehDotless-ar"/><!-- ARABIC LETTER DOTLESS FEH -->
+ <map code="0x6a4" name="veh-ar"/><!-- ARABIC LETTER VEH -->
+ <map code="0x6a9" name="keheh-ar"/><!-- ARABIC LETTER KEHEH -->
+ <map code="0x6ac" name="kafDotabove-ar"/><!-- ARABIC LETTER KAF WITH DOT ABOVE -->
+ <map code="0x6af" name="gaf-ar"/><!-- ARABIC LETTER GAF -->
+ <map code="0x6b5" name="lamVabove-ar"/><!-- ARABIC LETTER LAM WITH SMALL V -->
+ <map code="0x6ba" name="noonghunna-ar"/><!-- ARABIC LETTER NOON GHUNNA -->
+ <map code="0x6bb" name="rnoon-ar"/><!-- ARABIC LETTER RNOON -->
+ <map code="0x6bd" name="noonThreedotsabove-ar"/><!-- ARABIC LETTER NOON WITH THREE DOTS ABOVE -->
+ <map code="0x6be" name="hehDoachashmee-ar"/><!-- ARABIC LETTER HEH DOACHASHMEE -->
+ <map code="0x6c0" name="hehHamzaabove-ar"/><!-- ARABIC LETTER HEH WITH YEH ABOVE -->
+ <map code="0x6c1" name="hehgoal-ar"/><!-- ARABIC LETTER HEH GOAL -->
+ <map code="0x6c6" name="oe-ar"/><!-- ARABIC LETTER OE -->
+ <map code="0x6cc" name="yeh-farsi"/><!-- ARABIC LETTER FARSI YEH -->
+ <map code="0x6ce" name="yehVabove-ar"/><!-- ARABIC LETTER YEH WITH SMALL V -->
+ <map code="0x6cf" name="wawDotabove-ar"/><!-- ARABIC LETTER WAW WITH DOT ABOVE -->
+ <map code="0x6d2" name="yehbarree-ar"/><!-- ARABIC LETTER YEH BARREE -->
+ <map code="0x6d3" name="yehbarreeHamzaabove-ar"/><!-- ARABIC LETTER YEH BARREE WITH HAMZA ABOVE -->
+ <map code="0x6d4" name="fullstop-ar"/><!-- ARABIC FULL STOP -->
+ <map code="0x6d5" name="ae-ar"/><!-- ARABIC LETTER AE -->
+ <map code="0x6e1" name="sukun-ar"/><!-- ARABIC SMALL HIGH DOTLESS HEAD OF KHAH -->
+ <map code="0x6f0" name="zero-ar"/><!-- EXTENDED ARABIC-INDIC DIGIT ZERO -->
+ <map code="0x6f1" name="one-ar"/><!-- EXTENDED ARABIC-INDIC DIGIT ONE -->
+ <map code="0x6f2" name="two-persian"/><!-- EXTENDED ARABIC-INDIC DIGIT TWO -->
+ <map code="0x6f3" name="three-ar"/><!-- EXTENDED ARABIC-INDIC DIGIT THREE -->
+ <map code="0x6f4" name="four-persian"/><!-- EXTENDED ARABIC-INDIC DIGIT FOUR -->
+ <map code="0x6f5" name="five-persian"/><!-- EXTENDED ARABIC-INDIC DIGIT FIVE -->
+ <map code="0x6f6" name="six-persian"/><!-- EXTENDED ARABIC-INDIC DIGIT SIX -->
+ <map code="0x6f7" name="seven-persian"/><!-- EXTENDED ARABIC-INDIC DIGIT SEVEN -->
+ <map code="0x6f8" name="eight-ar"/><!-- EXTENDED ARABIC-INDIC DIGIT EIGHT -->
+ <map code="0x6f9" name="nine-ar"/><!-- EXTENDED ARABIC-INDIC DIGIT NINE -->
+ <map code="0x762" name="kehehDotabove-ar"/><!-- ARABIC LETTER KEHEH WITH DOT ABOVE -->
+ <map code="0x8f1" name="opendammatan-ar"/><!-- ARABIC OPEN DAMMATAN -->
+ <map code="0x2013" name="endash"/><!-- EN DASH -->
+ <map code="0x2014" name="emdash"/><!-- EM DASH -->
+ <map code="0x2018" name="quoteleft"/><!-- LEFT SINGLE QUOTATION MARK -->
+ <map code="0x2019" name="quoteright"/><!-- RIGHT SINGLE QUOTATION MARK -->
+ <map code="0x201a" name="quotesinglbase"/><!-- SINGLE LOW-9 QUOTATION MARK -->
+ <map code="0x201c" name="quotedblleft"/><!-- LEFT DOUBLE QUOTATION MARK -->
+ <map code="0x201d" name="quotedblright"/><!-- RIGHT DOUBLE QUOTATION MARK -->
+ <map code="0x201e" name="quotedblbase"/><!-- DOUBLE LOW-9 QUOTATION MARK -->
+ <map code="0x2026" name="ellipsis"/><!-- HORIZONTAL ELLIPSIS -->
+ <map code="0xfd3e" name="parenleft-ar"/><!-- ORNATE LEFT PARENTHESIS -->
+ <map code="0xfd3f" name="parenright-ar"/><!-- ORNATE RIGHT PARENTHESIS -->
+ </cmap_format_4>
+ </cmap>
+
+ <post>
+ <formatType value="3.0"/>
+ <italicAngle value="0.0"/>
+ <underlinePosition value="-32"/>
+ <underlineThickness value="73"/>
+ <isFixedPitch value="0"/>
+ <minMemType42 value="0"/>
+ <maxMemType42 value="0"/>
+ <minMemType1 value="0"/>
+ <maxMemType1 value="0"/>
+ </post>
+
+ <CFF>
+ <major value="1"/>
+ <minor value="0"/>
+ <CFFFont name="ArefRuqaa-Regular">
+ <version value="1.3"/>
+ <Copyright value="Copyright 2015-2021 The Aref Ruqaa Project Authors https:github.comaliftypearef-ruqaa, with Reserved Font Name EURM10."/>
+ <FullName value="Aref Ruqaa Regular"/>
+ <FamilyName value="Aref Ruqaa"/>
+ <isFixedPitch value="0"/>
+ <ItalicAngle value="0"/>
+ <UnderlinePosition value="-32"/>
+ <UnderlineThickness value="73"/>
+ <PaintType value="0"/>
+ <CharstringType value="2"/>
+ <FontMatrix value="0.001 0 0 0.001 0 0"/>
+ <FontBBox value="-166 -364 1459 1028"/>
+ <StrokeWidth value="0"/>
+ <!-- charset is dumped separately as the 'GlyphOrder' element -->
+ <Encoding>
+ </Encoding>
+ <Private>
+ <BlueScale value="0.039625"/>
+ <BlueShift value="7"/>
+ <BlueFuzz value="1"/>
+ <ForceBold value="0"/>
+ <LanguageGroup value="0"/>
+ <ExpansionFactor value="0.06"/>
+ <initialRandomSeed value="0"/>
+ <defaultWidthX value="0"/>
+ <nominalWidthX value="364"/>
+ <Subrs>
+ <!-- The 'index' attribute is only for humans; it is ignored when parsed. -->
+ <CharString index="0">
+ rmoveto
+ -71 66 -27 -34 -28 -35 -27 -34 rlinecurve
+ 71 -66 28 34 27 34 27 35 rlinecurve
+ return
+ </CharString>
+ <CharString index="1">
+ rrcurveto
+ -1 vlineto
+ return
+ </CharString>
+ <CharString index="2">
+ rrcurveto
+ -104 callgsubr
+ return
+ </CharString>
+ <CharString index="3">
+ rmoveto
+ -21 37 -26 39 -32 38 -8 -14 -7 -14 -7 -15 33 -40 34 -41 18 -54 rrcurveto
+ -1 0 0 1 14 3 23 9 4 vhcurveto
+ 17 39 18 35 27 31 rrcurveto
+ 13 3 14 4 14 vhcurveto
+ -3 hlineto
+ -27 -35 -25 -36 -20 -42 rrcurveto
+ return
+ </CharString>
+ <CharString index="4">
+ -21 25 -85 callsubr
+ -31 -6 return
+ </CharString>
+ <CharString index="5">
+ 10 -28 23 -60 -2 -33 return
+ </CharString>
+ <CharString index="6">
+ 74 117 -22 321 rlineto
+ return
+ </CharString>
+ <CharString index="7">
+ 0 -73 -32 vhcurveto
+ -49 -21 -42 -15 -36 -7 -72 -16 -80 -8 -80 -6 -157 -2 -120 36 -85 9 callsubr
+ 42 90 28 90 28 86 14 82 3 53 113 26 callgsubr
+ -114 -57 -80 -102 -79 -101 return
+ </CharString>
+ <CharString index="8">
+ -123 92 -100 43 -47 76 -30 109 -14 return
+ </CharString>
+ <CharString index="9">
+ 21 -25 57 -8 vhcurveto
+ -3 return
+ </CharString>
+ <CharString index="10">
+ -13 -35 -13 -43 -13 -50 1 -29 27 -14 28 -3 return
+ </CharString>
+ <CharString index="11">
+ -158 -2 -120 return
+ </CharString>
+ <CharString index="12">
+ rmoveto
+ 14 -40 18 -55 -1 -26 -50 -22 -89 -24 -60 -11 -74 -133 rcurveline
+ 56 15 105 22 46 24 29 15 25 22 21 24 rrcurveto
+ 122 145 -85 158 0 vvcurveto
+ endchar
+ </CharString>
+ <CharString index="13">
+ -79 -9 -6 -149 36 -62 28 -46 35 -71 -8 -75 4 3 2 3 1 4 12 45 22 44 -7 54 -15 56 -38 58 -20 51 return
+ </CharString>
+ <CharString index="14">
+ 22 callsubr
+ 11 17 return
+ </CharString>
+ <CharString index="15">
+ rmoveto
+ 60 119 -64 -12 -64 -12 -64 -12 rlinecurve
+ -60 -119 64 12 64 12 64 12 rlinecurve
+ return
+ </CharString>
+ <CharString index="16">
+ 1 -29 27 -14 28 -3 return
+ </CharString>
+ <CharString index="17">
+ 9 -24 9 -24 -3 -16 -16 -7 return
+ </CharString>
+ <CharString index="18">
+ 35 -8 50 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="19">
+ 1 2 0 1 1 vvcurveto
+ 3 -3 return
+ </CharString>
+ <CharString index="20">
+ -13 -35 -13 -42 -13 -50 1 return
+ </CharString>
+ <CharString index="21">
+ 2 2 2 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="22">
+ -17 20 -24 7 -31 -6 return
+ </CharString>
+ <CharString index="23">
+ 242 16 rmoveto
+ 13 15 1 3 16 hvcurveto
+ 40 6 62 17 33 9 40 15 37 18 34 22 61 39 39 50 34 66 rrcurveto
+ 6 11 2 11 11 vvcurveto
+ 37 -32 33 -38 -38 -36 -17 -16 -17 vhcurveto
+ -64 -60 -59 -64 -57 -67 -19 -4 -20 -3 -23 -2 -1 1 rcurveline
+ 14 32 10 23 5 16 rrcurveto
+ 1 2 0 4 6 vvcurveto
+ 4 0 1 -1 -1 -1 -1 46 callsubr
+ -29 -16 -77 -13 -124 -8 -22 -132 rcurveline
+ 54 5 109 20 41 17 rrcurveto
+ -1 -3 0 -3 -3 vvcurveto
+ -15 20 -2 19 vhcurveto
+ 331 197 rmoveto
+ -5 -2 -3 -4 -2 vhcurveto
+ -57 -28 -67 -14 -71 -14 36 36 34 41 47 25 rrcurveto
+ 5 8 10 1 9 hhcurveto
+ 29 28 -17 -25 hvcurveto
+ endchar
+ </CharString>
+ <CharString index="24">
+ 197 504 rmoveto
+ 21 -320 74 117 -21 321 rlineto
+ 198 -249 rmoveto
+ -38 -36 -67 callsubr
+ -59 -65 -58 -66 -27 -6 -59 -7 -90 -7 -106 callsubr
+ -21 -128 rlineto
+ 2 1 0 1 2 hvcurveto
+ -1 vlineto
+ 81 8 88 17 94 28 94 28 72 47 50 67 17 22 15 25 14 28 rrcurveto
+ 6 11 3 11 11 vvcurveto
+ 36 -32 34 -38 vhcurveto
+ -31 -152 rmoveto
+ -5 -2 -4 -4 -2 vhcurveto
+ 90 callgsubr
+ 38 47 26 rrcurveto
+ 5 8 9 2 9 hhcurveto
+ 29 29 -17 -25 hvcurveto
+ endchar
+ </CharString>
+ <CharString index="25">
+ rmoveto
+ 40 48 31 79 0 vvcurveto
+ 8 28 0 14 -3 42 -46 callgsubr
+ 63 -7 callsubr
+ -117 rcurveline
+ -60 -95 rlineto
+ 7 -100 12 -101 -102 vvcurveto
+ -182 -92 -155 -29 -72 84 -47 54 30 58 46 83 -11 -3 -11 -8 -5 -8 -75 -115 -15 -81 11 -52 13 -59 43 -44 81 -8 130 -13 145 75 70 84 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="26">
+ 619 342 -31 callsubr
+ return
+ </CharString>
+ <CharString index="27">
+ -31 callsubr
+ endchar
+ </CharString>
+ <CharString index="28">
+ 217 167 -71 callgsubr
+ </CharString>
+ <CharString index="29">
+ -87 callsubr
+ -29 27 -15 28 -3 return
+ </CharString>
+ <CharString index="30">
+ 59 23 35 13 35 2 34 2 34 -18 26 -39 19 return
+ </CharString>
+ <CharString index="31">
+ 68 callgsubr
+ endchar
+ </CharString>
+ <CharString index="32">
+ -74 callgsubr
+ 10 -22 -20 return
+ </CharString>
+ <CharString index="33">
+ -6 7 -6 7 -2 7 4 8 11 24 14 return
+ </CharString>
+ <CharString index="34">
+ 15 35 15 35 11 30 7 23 rrcurveto
+ 1 2 return
+ </CharString>
+ <CharString index="35">
+ -2 -53 callgsubr
+ 15 return
+ </CharString>
+ <CharString index="36">
+ -63 -108 -63 -32 -117 rcurveline
+ -60 return
+ </CharString>
+ <CharString index="37">
+ -110 -64 -87 -48 -110 -64 return
+ </CharString>
+ <CharString index="38">
+ -2 -3 -3 -3 -6 -3 return
+ </CharString>
+ <CharString index="39">
+ -232 rcurveline
+ -1 -15 -1 return
+ </CharString>
+ <CharString index="40">
+ -17 -16 -17 hvcurveto
+ -64 -60 return
+ </CharString>
+ <CharString index="41">
+ 1 2 3 8 7 13 12 return
+ </CharString>
+ <CharString index="42">
+ rmoveto
+ -24 -26 -16 -32 -27 hvcurveto
+ return
+ </CharString>
+ <CharString index="43">
+ 10 -112 -102 vvcurveto
+ endchar
+ </CharString>
+ <CharString index="44">
+ -4 -15 hvcurveto
+ -6 -5 return
+ </CharString>
+ <CharString index="45">
+ 4 8 -9 1 -3 return
+ </CharString>
+ <CharString index="46">
+ 19 46 25 74 40 return
+ </CharString>
+ <CharString index="47">
+ 26 -21 25 -17 20 return
+ </CharString>
+ <CharString index="48">
+ -22 -41 -10 -19 -1 return
+ </CharString>
+ <CharString index="49">
+ 1 9 -4 3 -8 -5 return
+ </CharString>
+ <CharString index="50">
+ 38 23 hvcurveto
+ 23 38 12 return
+ </CharString>
+ <CharString index="51">
+ -20 -34 -20 -34 return
+ </CharString>
+ <CharString index="52">
+ 371 46 rmoveto
+ -1 -3 -1 -2 -3 vvcurveto
+ -13 12 -7 24 vhcurveto
+ 4 hlineto
+ 32 1 32 4 32 7 52 10 49 18 48 23 75 37 53 62 40 77 66 callgsubr
+ -38 -35 -17 -16 -17 vhcurveto
+ -64 -60 -59 -64 -58 -66 rrcurveto
+ -1 -1 -1 -1 hhcurveto
+ -1 vlineto
+ -1 -6 -14 -1 -10 hhcurveto
+ -8 -6 1 3 -5 hvcurveto
+ 15 33 9 23 5 15 rrcurveto
+ 1 2 0 4 6 vvcurveto
+ 4 -1 2 -1 -1 -1 -2 -2 -2 vhcurveto
+ -16 -38 -49 -20 -46 -12 rrcurveto
+ -10 -35 -68 -12 -49 hhcurveto
+ -10 hlineto
+ -30 1 -26 5 -23 10 rrcurveto
+ -25 11 -12 20 31 vvcurveto
+ 30 13 41 25 50 -95 callgsubr
+ 2 -1 1 -1 vhcurveto
+ -2 hlineto
+ -2 -2 -1 -2 -1 hvcurveto
+ -16 -22 -23 -41 -32 -62 rrcurveto
+ -21 -41 -11 -37 -32 vvcurveto
+ -80 60 -17 81 80 98 22 23 53 vhcurveto
+ 358 162 rmoveto
+ -5 -2 -3 -4 -2 vhcurveto
+ -57 -27 -68 -15 -70 -14 36 37 34 39 47 26 rrcurveto
+ 5 8 10 1 9 hhcurveto
+ 29 28 -17 -25 hvcurveto
+ endchar
+ </CharString>
+ <CharString index="53">
+ 590 306 rmoveto
+ -7 5 -7 8 -7 5 -20 12 -17 2 -17 -8 -44 -23 -34 -33 -38 -29 -40 -31 -80 -49 -56 -19 rrcurveto
+ -10 -29 -29 -5 -27 hhcurveto
+ -27 -20 16 32 -14 hvcurveto
+ -14 32 12 55 39 76 28 callsubr
+ -11 -15 -16 -26 -21 -36 -21 -36 -15 -37 -10 -37 -8 -31 -3 -47 13 -29 rrcurveto
+ -35 15 25 -17 35 hhcurveto
+ 35 33 5 12 29 hvcurveto
+ 43 18 38 22 33 28 33 28 33 26 35 25 10 7 10 9 10 9 13 12 31 17 22 -14 18 -15 3 -5 36 3 26 1 26 5 25 9 75 28 71 48 55 44 rrcurveto
+ 38 31 27 31 17 31 13 25 11 26 9 30 9 30 -7 26 -24 21 -44 37 -75 -44 -20 -26 -53 -69 -48 -74 -46 -75 -11 -4 -12 -5 -11 -4 rrcurveto
+ -1 -7 -5 -2 -3 hhcurveto
+ 266 142 rmoveto
+ 9 -12 1 -10 -7 -5 -53 -37 -65 -25 -65 -24 30 43 28 43 41 33 24 18 41 -4 16 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="54">
+ 496 315 rmoveto
+ -50 3 -55 -23 -62 -48 -62 -48 -44 -42 -27 -35 -105 callgsubr
+ 17 21 18 19 18 19 37 38 64 48 52 12 rrcurveto
+ 1 hlineto
+ 35 13 24 -7 13 -29 46 callgsubr
+ 52 60 41 79 12 callgsubr
+ -63 -57 -67 -23 -5 -14 6 -2 17 rrcurveto
+ 17 -2 -12 9 -21 hhcurveto
+ 310 43 -13 callsubr
+ </CharString>
+ <CharString index="55">
+ 274 37 rmoveto
+ -5 -15 6 -10 18 -1 60 -5 78 28 45 14 40 15 37 -17 callsubr
+ -57 -66 -4 -1 -9 -1 -14 -3 -21 -5 rcurveline
+ 15 33 9 24 5 15 rrcurveto
+ 1 1 0 4 6 vvcurveto
+ 6 -1 2 -4 -5 vhcurveto
+ -9 -22 -14 -16 -20 -11 -27 -15 -34 -10 -41 -3 -41 -3 -28 -3 -17 -1 rrcurveto
+ -1 hlineto
+ -55 3 -31 16 -8 28 -13 -35 -13 -44 -13 -49 1 -15 6 -11 11 -7 26 -17 27 1 46 1 48 7 72 14 37 16 rrcurveto
+ 349 188 39 callgsubr
+ 33 38 47 26 29 15 40 -14 11 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="56">
+ 430 223 rmoveto
+ 6 -2 2 -4 -5 vhcurveto
+ -9 -22 -14 -17 -19 -11 -15 -8 -25 -9 -35 -10 -70 -20 -176 -33 -22 80 -101 callgsubr
+ 94 -9 116 28 67 28 -5 -15 9 -9 20 -2 rrcurveto
+ 20 -2 23 1 27 4 33 5 59 12 24 8 40 15 38 -17 callsubr
+ -58 -66 -13 -3 -31 -4 -11 7 6 15 5 13 5 11 rrcurveto
+ 6 15 8 10 19 vvcurveto
+ 260 5 39 callgsubr
+ 34 38 47 26 29 15 39 -14 11 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="57">
+ 411 254 rmoveto
+ -14 -11 -22 -11 -28 -11 -28 -11 -12 10 4 33 1 7 -4 5 -9 1 -35 4 -33 -6 -32 -14 -32 -14 -29 -19 -26 -22 -19 -16 -22 -26 -24 -37 73 callgsubr
+ 24 35 19 25 12 16 rlinecurve
+ 12 16 21 17 32 21 26 17 56 34 -6 -53 -4 -34 15 -13 32 6 32 6 23 6 15 7 rrcurveto
+ 5 9 6 3 2 hhcurveto
+ -4 1 2 -3 33 callsubr
+ 66 7 67 rrcurveto
+ 1 -1 1 -1 -1 vhcurveto
+ -1 -1 -2 -2 -3 vvcurveto
+ -12 -46 -31 -27 -49 -9 rrcurveto
+ 5 16 1 18 19 vvcurveto
+ -1 5 0 1 -3 -5 -8 -14 -6 -21 -12 -9 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="58">
+ 462 574 rmoveto
+ 21 -321 74 118 -21 320 rlineto
+ 258 -279 rmoveto
+ 9 30 -8 25 -24 21 -44 37 -74 -43 -20 -26 -53 -69 -49 -73 -45 -76 -38 -15 -47 -19 -57 -22 -57 -22 -53 -13 -49 -5 -49 -5 -37 10 -26 24 -26 24 0 51 24 78 rrcurveto
+ 4 1 -1 2 -3 hhcurveto
+ -3 -2 -1 -2 -1 hvcurveto
+ -8 -16 -11 -27 -14 -36 -23 -59 -22 -83 27 -65 12 -28 27 -14 43 1 45 1 56 10 67 19 138 40 141 66 106 75 86 61 32 45 30 95 rrcurveto
+ -90 -49 rmoveto
+ 10 -12 1 -9 -8 -5 -52 -37 -66 -26 -66 -24 30 43 28 44 41 32 24 18 42 -3 16 -21 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="59">
+ 368 242 rmoveto
+ -9 vlineto
+ -32 -29 -40 -24 -48 -19 rrcurveto
+ -12 -31 -33 -6 -35 hhcurveto
+ -20 -21 2 4 -21 hvcurveto
+ -35 15 -17 21 29 vvcurveto
+ 10 2 12 5 12 vhcurveto
+ 18 49 20 40 18 40 74 -50 rcurveline
+ 16 28 0 1 16 28 11 19 10 19 11 20 -27 18 -26 18 -27 18 -15 8 rcurveline
+ -17 -29 -21 -36 -16 -30 rrcurveto
+ -59 -107 -28 -85 -62 vvcurveto
+ -71 26 -49 42 -20 vhcurveto
+ -9 19 21 -6 23 hhcurveto
+ 24 27 6 10 29 hvcurveto
+ 56 21 46 36 37 53 37 54 25 61 12 68 rrcurveto
+ 4 19 1 20 19 vvcurveto
+ 47 -11 45 -21 44 vhcurveto
+ -54 -125 rlineto
+ 13 -42 12 -40 -54 vvcurveto
+ endchar
+ </CharString>
+ <CharString index="60">
+ 317 499 rmoveto
+ 22 -321 -101 callsubr
+ -352 -440 rmoveto
+ -101 callgsubr
+ 44 -4 54 3 64 11 64 11 63 14 62 18 40 15 37 18 34 22 61 39 38 51 34 65 14 28 -3 26 -21 25 rrcurveto
+ -85 callsubr
+ -31 -6 -24 -10 -15 -15 -64 -60 -59 -63 -58 -67 -34 -8 -46 -3 -36 -2 rrcurveto
+ -1 hlineto
+ -67 -6 -81 3 -14 48 rrcurveto
+ 515 55 -99 callgsubr
+ -8 -8 -4 -57 -27 -67 -15 -71 -13 36 36 34 30 callsubr
+ </CharString>
+ <CharString index="61">
+ 375 514 rmoveto
+ 21 -321 -101 callsubr
+ 260 -352 rmoveto
+ 14 28 -2 -60 callsubr
+ -25 8 -31 -6 -31 -6 -24 -10 -15 -15 -64 -60 -60 -63 -57 -67 -38 -8 -37 -7 -39 -6 -49 -8 -47 -3 -46 3 -46 3 -26 14 -8 28 rrcurveto
+ -66 callgsubr
+ 95 -9 212 44 71 23 46 15 42 19 40 23 67 40 43 53 36 70 rrcurveto
+ -97 -33 16 callsubr
+ 34 40 47 25 -60 callgsubr
+ </CharString>
+ <CharString index="62">
+ 217 135 rmoveto
+ 27 -36 18 -24 33 3 49 27 rlinecurve
+ 5 9 4 2 2 hhcurveto
+ -5 1 3 -2 67 callgsubr
+ 65 7 68 -2 6 -2 -2 -2 -9 -11 -46 -31 -28 -50 -9 5 19 2 18 -1 17 rrcurveto
+ 6 -1 0 -3 -6 vhcurveto
+ -8 -14 -6 -21 -12 -9 -50 -38 -26 -11 -5 15 -5 15 -14 15 -22 13 -28 16 -27 2 -27 -10 -27 -10 -26 -17 -24 -24 -44 -44 -44 -71 -29 -56 rrcurveto
+ -2 vlineto
+ 9 -44 29 42 34 41 40 37 rlinecurve
+ 40 37 35 5 30 -27 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="63">
+ 290 657 rmoveto
+ 22 -321 73 118 -22 321 rlineto
+ 206 -434 rmoveto
+ 17 22 16 26 17 30 17 30 -1 28 -103 callsubr
+ -24 -10 -16 -14 -64 -60 -59 -64 -57 -67 -76 -17 -65 -35 -51 -56 -51 -56 -33 -63 -15 -70 -105 callsubr
+ 35 55 40 39 49 24 96 47 107 26 100 42 50 21 43 35 37 50 rrcurveto
+ -43 49 rmoveto
+ 7 -14 0 -92 callgsubr
+ 37 34 39 47 26 29 16 39 -17 11 -19 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="64">
+ 351 308 rmoveto
+ -18 255 -74 -110 18 -262 rlineto
+ 250 189 rmoveto
+ -38 -35 -67 callsubr
+ -59 -64 -58 -66 -27 -6 -79 -10 -129 -12 -106 callsubr
+ -21 -128 123 13 109 20 94 28 rlinecurve
+ 94 28 72 46 50 67 17 22 16 25 14 28 5 callgsubr
+ 34 39 47 26 rrcurveto
+ 5 8 10 2 9 hhcurveto
+ 29 29 -18 -25 hvcurveto
+ endchar
+ </CharString>
+ <CharString index="65">
+ 138 87 rmoveto
+ -22 -18 -47 -17 -29 -10 -7 -17 rcurveline
+ 98 -25 18 25 24 42 11 32 rlinecurve
+ 12 30 6 31 33 vvcurveto
+ 9 vlineto
+ -1 36 -9 33 -14 29 45 callsubr
+ -7 2 -7 hhcurveto
+ -11 -11 -6 -14 -10 hvcurveto
+ -27 -36 -19 -47 -22 -41 rrcurveto
+ -5 -9 -2 -10 -13 vvcurveto
+ -2 vlineto
+ -25 1 19 -10 24 hhcurveto
+ 25 23 14 11 13 hvcurveto
+ 1 1 1 0 1 hhcurveto
+ 6 5 -13 -24 7 hvcurveto
+ 8 -29 4 -17 1 -4 rrcurveto
+ -1 -2 0 -1 -2 vvcurveto
+ endchar
+ </CharString>
+ <CharString index="66">
+ 297 145 rmoveto
+ 57 16 46 30 35 44 35 44 27 49 20 54 -96 callgsubr
+ -48 -56 -42 -68 -37 -83 -37 -7 -34 -8 -29 -10 -54 -18 -41 -56 -25 -55 rrcurveto
+ 87 callgsubr
+ 25 55 39 35 54 15 54 15 53 13 51 12 rrcurveto
+ 98 238 51 callgsubr
+ -24 -12 -24 -6 -22 -72 callsubr
+ 28 31 11 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="67">
+ -21 callgsubr
+ endchar
+ </CharString>
+ <CharString index="68">
+ rmoveto
+ 157 -86 273 169 84 130 26 39 7 38 -25 27 -18 19 -33 -1 -28 8 -160 45 117 73 49 -15 20 32 11 39 17 36 rrcurveto
+ 9 4 -14 1 -4 hhcurveto
+ -35 -1 -28 -29 -19 -18 -42 -40 -83 -134 16 -56 15 -54 64 -20 67 -7 -60 -39 -69 -30 -83 -15 -69 -13 -90 2 -45 35 -103 81 104 151 39 81 -62 callsubr
+ -5 rrcurveto
+ -67 -94 -160 -272 173 -95 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="69">
+ 438 500 rmoveto
+ 15 -167 -48 -12 -49 -26 -50 -42 rlinecurve
+ -50 -42 -37 -35 -23 -31 -52 -67 -42 -79 -39 -78 -1 -3 rcurveline
+ -8 -15 4 29 rlineto
+ 2 vlineto
+ -53 -66 -3 -39 63 callgsubr
+ 6 -17 13 12 19 40 29 58 23 55 15 36 15 36 27 42 40 47 17 21 18 18 18 19 45 47 20 9 64 45 34 24 28 10 24 -6 22 -237 rcurveline
+ 71 return
+ </CharString>
+ <CharString index="70">
+ 402 251 rmoveto
+ 20 18 15 18 11 17 19 29 8 29 8 40 5 25 -13 13 -31 1 -31 1 -22 0 -12 -4 rrcurveto
+ -10 -10 -8 -14 -10 hvcurveto
+ -23 -33 -18 -48 -18 -38 -7 -2 -6 -1 -7 -3 -57 -22 -70 -15 -44 -32 -60 -43 -19 -78 -20 -96 -105 callsubr
+ 16 30 23 27 29 22 36 27 65 28 53 20 62 23 60 31 46 41 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="71">
+ -24 150 rmoveto
+ -5 -11 -6 -12 -5 -11 1 -6 2 -7 2 -5 14 -38 20 -33 2 -50 rrcurveto
+ -8 vlineto
+ -11 -1 -12 -2 -13 vhcurveto
+ -1 -1 0 0 vhcurveto
+ -1 1 -2 1 vhcurveto
+ 1 hlineto
+ 2 0 1 2 2 hvcurveto
+ 17 19 10 22 31 vvcurveto
+ 2 vlineto
+ 13 -2 12 -3 13 vhcurveto
+ -10 38 -18 35 -13 35 rrcurveto
+ 2 -1 -1 1 -2 hhcurveto
+ -1 hlineto
+ -3 -1 -1 -1 -3 vvcurveto
+ endchar
+ </CharString>
+ <CharString index="72">
+ 475 468 rmoveto
+ 3 13 -1 18 -19 2 -36 4 -46 9 -22 -20 -18 -17 -3 -1 -52 -115 -70 -18 rcurveline
+ -73 -20 -60 -19 -34 -52 rrcurveto
+ -25 -56 -16 -71 -73 vvcurveto
+ 1 -146 43 -124 19 -140 16 56 6 77 -8 66 -42 261 rcurveline
+ -7 43 31 18 26 14 65 35 91 9 65 33 96 49 46 47 24 118 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="73">
+ rmoveto
+ -2 3 -24 78 2 78 -3 101 rlinecurve
+ -1 23 -11 19 -18 9 -18 10 -21 -10 -10 -11 -27 -29 -95 -155 64 -29 37 -17 38 26 17 24 1 -87 11 -58 20 -70 rrcurveto
+ -99 276 rmoveto
+ -4 4 -2 5 3 5 8 15 7 18 24 -3 13 -3 10 -17 3 -11 rrcurveto
+ -1 5 -9 -2 hhcurveto
+ -16 -12 -32 -4 -16 12 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="74">
+ 346 234 rmoveto
+ -82 -35 -57 -46 -34 -55 -34 -55 -37 -68 -39 -78 -9 -18 rcurveline
+ 4 30 rlineto
+ -23 callsubr
+ 26 52 22 55 23 54 22 52 29 48 35 43 13 15 19 13 25 11 78 33 52 58 22 86 8 30 5 39 -2 39 return
+ </CharString>
+ <CharString index="75">
+ rmoveto
+ 12 26 11 29 9 29 rrcurveto
+ 1 -2 4 -1 vhcurveto
+ -34 69 -8 113 15 96 -69 -2 -54 17 -44 25 -8 -24 -12 -27 -9 -24 -2 -5 -1 -9 6 -3 41 -22 47 -15 61 -1 rrcurveto
+ -6 -1 -11 -1 -5 vhcurveto
+ -10 -98 17 -89 28 -69 1 -3 7 1 1 3 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="76">
+ rmoveto
+ 13 -34 19 -64 -1 -23 rrcurveto
+ 0 -194 -97 -150 -87 -79 31 85 4 vhcurveto
+ 3 60 37 57 8 15 4 8 -8 5 -11 -16 rrcurveto
+ -54 -81 -37 -81 -55 vvcurveto
+ -165 178 14 11 166 205 106 108 53 vhcurveto
+ 60 120 -63 121 0 vvcurveto
+ return
+ </CharString>
+ <CharString index="77">
+ 276 501 rmoveto
+ 4 -52 -4 callgsubr
+ return
+ </CharString>
+ <CharString index="78">
+ 116 137 rmoveto
+ -58 -61 rlineto
+ -20 vlineto
+ 42 -14 21 -26 -86 callgsubr
+ 22 20 -57 callsubr
+ 37 -87 callgsubr
+ return
+ </CharString>
+ <CharString index="79">
+ -29 -14 -47 -16 -65 -18 rlinecurve
+ -18 -65 -62 -10 -58 hhcurveto
+ -1 hlineto
+ -57 -44 14 28 -30 hvcurveto
+ -13 12 -7 17 22 vvcurveto
+ 28 11 37 22 44 vhcurveto
+ 1 2 0 0 1 vvcurveto
+ 3 -3 1 -2 vhcurveto
+ endchar
+ </CharString>
+ <CharString index="80">
+ 448 272 rmoveto
+ -1 7 -9 1 -3 -8 -16 -35 -23 -28 -30 -20 -64 -43 -79 -27 -81 -25 -236 -73 96 -17 156 -4 101 -3 67 33 45 54 31 37 33 84 13 67 rrcurveto
+ return
+ </CharString>
+ <CharString index="81">
+ rmoveto
+ -1 -1 -1 -1 -1 vvcurveto
+ -2 1 -3 2 -1 vhcurveto
+ 59 -49 rlineto
+ -1 1 2 -1 1 hhcurveto
+ 2 1 1 2 1 hvcurveto
+ 52 63 rlineto
+ 2 2 1 1 2 vvcurveto
+ 1 -2 2 -2 2 vhcurveto
+ -58 return
+ </CharString>
+ <CharString index="82">
+ 91 77 rmoveto
+ -22 -13 -37 -14 -25 -8 -7 -17 rcurveline
+ 98 -25 27 36 19 38 10 40 rlinecurve
+ 9 35 5 36 -2 37 -17 290 rcurveline
+ -74 -117 6 -97 9 -119 1 -102 rlinecurve
+ endchar
+ </CharString>
+ <CharString index="83">
+ 79 75 -3 callsubr
+ -65 vmoveto
+ 1 callsubr
+ endchar
+ </CharString>
+ <CharString index="84">
+ -81 callgsubr
+ 44 callsubr
+ return
+ </CharString>
+ <CharString index="85">
+ 60 29 52 91 4 hvcurveto
+ 8 -8 6 -7 -7 vhcurveto
+ -103 -99 8 172 23 85 17 64 9 37 2 10 -31 -30 rcurveline
+ -33 -94 -28 -95 -7 -72 rrcurveto
+ -77 -8 32 -51 41 hhcurveto
+ return
+ </CharString>
+ <CharString index="86">
+ rmoveto
+ -3 -4 0 -5 4 -3 72 -70 rcurveline
+ 4 -3 6 -1 3 4 88 92 rcurveline
+ 3 4 1 5 -4 3 -73 70 rcurveline
+ -4 3 -5 1 -3 -4 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="87">
+ 1 2 0 1 1 vvcurveto
+ 3 -3 0 -2 -2 -1 0 -2 -1 vhcurveto
+ -10 -15 -15 return
+ </CharString>
+ <CharString index="88">
+ 11 76 rmoveto
+ 6 5 5 9 7 hvcurveto
+ 12 12 25 10 37 10 rrcurveto
+ 1 vlineto
+ 42 9 39 11 36 14 32 12 23 22 17 33 20 -224 rcurveline
+ return
+ </CharString>
+ <CharString index="89">
+ vhcurveto
+ -5 28 -4 29 27 callsubr
+ 4 5 callsubr
+ return
+ </CharString>
+ <CharString index="90">
+ 18 34 22 61 39 38 50 34 66 14 28 -3 26 -103 callsubr
+ -24 -10 -15 -14 rrcurveto
+ -64 -60 -59 -65 return
+ </CharString>
+ <CharString index="91">
+ 287 8 callgsubr
+ return
+ </CharString>
+ <CharString index="92">
+ 104 61 86 46 104 61 rlinecurve
+ 32 117 2 9 -3 38 callgsubr
+ endchar
+ </CharString>
+ <CharString index="93">
+ -2 -1 hvcurveto
+ -64 callgsubr
+ return
+ </CharString>
+ <CharString index="94">
+ -80 callgsubr
+ -28 -68 -14 -71 -47 callgsubr
+ 29 15 40 -15 11 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="95">
+ -2 6 vhcurveto
+ 1 1 rlineto
+ 7 5 2 3 3 hvcurveto
+ 15 17 14 17 -100 callgsubr
+ rrcurveto
+ 3 7 return
+ </CharString>
+ <CharString index="96">
+ 1 3 vhcurveto
+ 11 24 14 70 callgsubr
+ 12 -14 -26 9 hvcurveto
+ 2 -3 return
+ </CharString>
+ <CharString index="97">
+ rmoveto
+ -5 -5 -3 -6 -5 vvcurveto
+ -4 2 -4 3 -4 vhcurveto
+ 43 -50 rlineto
+ -5 4 5 -1 5 hhcurveto
+ 3 return
+ </CharString>
+ <CharString index="98">
+ 38 -32 17 -32 17 -35 -14 -37 -44 return
+ </CharString>
+ <CharString index="99">
+ vhcurveto
+ 18 24 15 27 31 11 rrcurveto
+ 14 -6 24 -31 -29 vvcurveto
+ -11 -5 -8 -10 -5 vhcurveto
+ -26 -12 return
+ </CharString>
+ <CharString index="100">
+ 106 62 33 117 rcurveline
+ 1 6 -7 2 -5 -2 -108 -63 -108 -63 -108 -63 -32 return
+ </CharString>
+ <CharString index="101">
+ -3 callsubr
+ endchar
+ </CharString>
+ <CharString index="102">
+ 500 125 rmoveto
+ 45 65 49 148 -9 79 -7 59 -62 102 -45 -62 -27 -37 return
+ </CharString>
+ <CharString index="103">
+ 45 callgsubr
+ 7 16 6 19 15 45 return
+ </CharString>
+ <CharString index="104">
+ rmoveto
+ 1 callsubr
+ return
+ </CharString>
+ <CharString index="105">
+ 53 callgsubr
+ -22 -11 -26 -6 -31 -1 return
+ </CharString>
+ <CharString index="106">
+ 7 67 rrcurveto
+ 2 -4 0 -1 -7 vhcurveto
+ -11 -44 -32 -29 -49 -9 4 16 3 return
+ </CharString>
+ <CharString index="107">
+ 15 73 5 25 -13 13 -31 1 -31 1 -21 -102 callgsubr
+ -17 -18 return
+ </CharString>
+ <CharString index="108">
+ 29 46 -67 -24 -76 -26 -64 -26 rlinecurve
+ -33 -52 61 30 81 28 69 24 rlinecurve
+ return
+ </CharString>
+ <CharString index="109">
+ 35 44 27 49 20 53 26 callsubr
+ return
+ </CharString>
+ <CharString index="110">
+ 4 38 6 61 -14 54 32 callsubr
+ return
+ </CharString>
+ <CharString index="111">
+ 3 -8 -5 rlinecurve
+ -70 callsubr
+ -22 -81 rcurveline
+ endchar
+ </CharString>
+ <CharString index="112">
+ -13 hhcurveto
+ -8 -8 -1 -3 -8 hvcurveto
+ -48 -16 -50 -53 -29 -38 -25 -34 return
+ </CharString>
+ <CharString index="113">
+ -2 5 52 callgsubr
+ rrcurveto
+ return
+ </CharString>
+ <CharString index="114">
+ rmoveto
+ -4 -2 -4 -4 -4 vhcurveto
+ -11 -11 -18 -10 -23 -8 rrcurveto
+ -11 -31 return
+ </CharString>
+ <CharString index="115">
+ 15 callsubr
+ -24 return
+ </CharString>
+ <CharString index="116">
+ 92 callgsubr
+ 11 18 18 18 61 58 75 return
+ </CharString>
+ <CharString index="117">
+ 18 51 18 51 -7 32 -33 14 -32 13 -39 4 -45 -7 -45 -7 return
+ </CharString>
+ <CharString index="118">
+ 33 -17 38 18 19 16 5 6 8 -9 8 -24 rrcurveto
+ 12 -36 0 return
+ </CharString>
+ <CharString index="119">
+ 58 34 58 34 48 46 39 59 23 return
+ </CharString>
+ <CharString index="120">
+ rmoveto
+ 13 -5 10 -14 9 -24 9 -24 return
+ </CharString>
+ <CharString index="121">
+ -4 -4 -6 -5 -8 -6 -31 -22 -38 -22 -31 -21 rrcurveto
+ -5 -3 return
+ </CharString>
+ <CharString index="122">
+ rmoveto
+ 13 -5 11 -14 -90 callsubr
+ -25 -12 return
+ </CharString>
+ <CharString index="123">
+ -99 callgsubr
+ -8 -8 -4 -57 -27 -66 -15 -71 -13 36 36 return
+ </CharString>
+ <CharString index="124">
+ -49 callgsubr
+ 34 17 28 18 32 6 44 8 41 return
+ </CharString>
+ <CharString index="125">
+ 73 569 68 callgsubr
+ return
+ </CharString>
+ <CharString index="126">
+ -20 14 -20 14 -17 -5 -17 -22 -27 -37 -19 -45 -22 -41 return
+ </CharString>
+ <CharString index="127">
+ -8 -16 -256 -466 372 return
+ </CharString>
+ <CharString index="128">
+ rrcurveto
+ 13 -6 25 -31 -29 vvcurveto
+ -11 -6 -8 -10 -5 vhcurveto
+ return
+ </CharString>
+ <CharString index="129">
+ -106 callsubr
+ -15 -18 -4 -16 9 -13 9 -13 10 2 return
+ </CharString>
+ <CharString index="130">
+ -2 -63 callsubr
+ -17 -18 -27 -33 rrcurveto
+ -25 -30 return
+ </CharString>
+ <CharString index="131">
+ vvcurveto
+ 29 14 40 26 52 -95 callgsubr
+ return
+ </CharString>
+ <CharString index="132">
+ -43 rrcurveto
+ -1 -1 -1 0 vhcurveto
+ -3 2 -1 6 vhcurveto
+ 1 return
+ </CharString>
+ <CharString index="133">
+ rrcurveto
+ 5 20 3 18 15 vvcurveto
+ 39 -20 31 -39 vhcurveto
+ return
+ </CharString>
+ <CharString index="134">
+ -5 31 -7 45 -14 29 -18 12 rrcurveto
+ 8 -12 -12 return
+ </CharString>
+ <CharString index="135">
+ 2 4 0 2 -3 1 -3 1 -2 -2 -2 -2 return
+ </CharString>
+ <CharString index="136">
+ -23 -8 rrcurveto
+ -11 -31 -55 -16 -37 hhcurveto
+ -4 hlineto
+ 29 return
+ </CharString>
+ <CharString index="137">
+ 40 47 25 29 16 40 -15 11 -21 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="138">
+ -33 rrcurveto
+ -25 -30 -13 -20 -11 return
+ </CharString>
+ <CharString index="139">
+ -9 56 -7 45 -14 29 -18 12 -18 12 -21 return
+ </CharString>
+ <CharString index="140">
+ 5 hhcurveto
+ 29 57 31 17 13 hvcurveto
+ 33 42 12 return
+ </CharString>
+ <CharString index="141">
+ 356 181 rmoveto
+ -13 -6 -22 -8 -32 -10 return
+ </CharString>
+ <CharString index="142">
+ 15 20 18 24 16 27 31 11 rrcurveto
+ 218 return
+ </CharString>
+ <CharString index="143">
+ -107 -63 49 callsubr
+ return
+ </CharString>
+ <CharString index="144">
+ 36 43 56 19 76 8 29 5 40 -2 39 return
+ </CharString>
+ <CharString index="145">
+ -10 -28 -10 -21 -17 -14 -23 -9 -16 -8 return
+ </CharString>
+ <CharString index="146">
+ -37 hhcurveto
+ -13 -11 -4 -8 -12 hvcurveto
+ -61 -42 return
+ </CharString>
+ <CharString index="147">
+ 92 -100 43 -47 76 -30 109 -14 rrcurveto
+ return
+ </CharString>
+ <CharString index="148">
+ -22 -20 -16 -15 -12 -19 -7 -23 -7 -23 return
+ </CharString>
+ <CharString index="149">
+ -16 -16 -23 rrcurveto
+ -15 -21 -7 -13 -3 vvcurveto
+ return
+ </CharString>
+ <CharString index="150">
+ 5 4 2 5 3 hvcurveto
+ return
+ </CharString>
+ <CharString index="151">
+ 6 -17 13 11 19 40 return
+ </CharString>
+ <CharString index="152">
+ -13 24 -16 20 -20 14 rrcurveto
+ 6 -8 return
+ </CharString>
+ <CharString index="153">
+ -2 -2 vhcurveto
+ -9 -21 -14 -17 -20 -11 return
+ </CharString>
+ <CharString index="154">
+ 4 29 rlineto
+ 1 vlineto
+ -51 -65 -6 -39 return
+ </CharString>
+ <CharString index="155">
+ 6 rrcurveto
+ -1 hlineto
+ -18 -38 -20 -34 -16 return
+ </CharString>
+ <CharString index="156">
+ -108 -63 -33 -116 rcurveline
+ -60 -96 return
+ </CharString>
+ <CharString index="157">
+ -50 -40 -74 -40 -74 -41 -78 -41 -82 return
+ </CharString>
+ </Subrs>
+ </Private>
+ <CharStrings>
+ <CharString name=".notdef">
+ 136 50 -200 rmoveto
+ 400 1000 -400 -1000 hlineto
+ 50 50 rmoveto
+ 900 300 -900 -300 vlineto
+ endchar
+ </CharString>
+ <CharString name="ae-ar">
+ -117 -79 callsubr
+ </CharString>
+ <CharString name="ain-ar">
+ 319 206 262 rmoveto
+ -117 -92 -114 -220 30 -142 55 -261 425 67 163 198 4 4 -12 -3 -5 -1 -175 -46 -260 -38 -136 153 -78 88 247 210 55 48 40 35 65 42 14 36 45 116 rcurveline
+ -60 -58 -97 -59 -47 46 -32 27 -16 25 -8 49 40 -4 34 -7 60 callgsubr
+ -99 2 -58 -206 91 -113 9 -12 10 -11 11 -10 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.fina">
+ -23 389 548 rmoveto
+ -10 hlineto
+ -24 -18 23 callsubr
+ -13 -20 -11 -1 1 -1 -1 vvcurveto
+ 14 -90 -116 -114 -49 -53 -36 -66 -24 -78 rlinecurve
+ -16 -51 -8 -49 -44 vvcurveto
+ -102 38 -67 68 -34 vhcurveto
+ -22 45 51 -11 55 hhcurveto
+ 85 67 19 35 76 hvcurveto
+ 67 31 53 40 41 49 rrcurveto
+ 2 vlineto
+ 1 0 0 -1 -2 -5 -1 -2 -6 vhcurveto
+ -19 -77 -100 -21 -96 hhcurveto
+ -132 -99 35 74 -66 hvcurveto
+ -12 14 -6 16 19 vvcurveto
+ 11 2 11 5 13 vhcurveto
+ 11 34 18 34 24 35 37 52 64 69 41 37 19 16 22 17 27 19 27 19 18 17 10 17 5 6 5 8 7 10 51 79 rcurveline
+ 8 12 6 15 -40 callgsubr
+ 6 6 vvcurveto
+ 35 -31 11 -41 1 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.init">
+ 156 274 317 rmoveto
+ 36 -3 35 -8 34 -10 42 130 rcurveline
+ -32 8 -27 8 -37 1 rrcurveto
+ -1 hlineto
+ -21 -20 -10 -21 -17 hvcurveto
+ -33 -40 -26 -67 -52 callgsubr
+ -62 -17 -60 -6 -80 -11 -23 -130 rcurveline
+ 70 15 73 16 78 18 78 18 74 28 71 38 1 2 3 7 7 14 2 callgsubr
+ -28 -89 callsubr
+ </CharString>
+ <CharString name="ain-ar.init.ain">
+ 352 461 323 rmoveto
+ 35 -3 35 -7 35 -11 42 130 rcurveline
+ -32 8 -28 40 callgsubr
+ -47 -14 -90 -18 -63 -6 -70 -7 -89 0 -14 51 -101 callgsubr
+ rrcurveto
+ 38 -4 46 2 54 8 54 8 54 11 55 14 92 24 111 38 70 37 1 2 3 8 7 13 12 24 16 33 44 callgsubr
+ rrcurveto
+ -22 -11 -26 -6 -31 -1 -32 26 -28 36 -7 50 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.init.dal">
+ 188 475 121 rmoveto
+ 3 8 62 119 -19 -7 -48 -18 -39 -29 -62 -2 -32 27 -26 36 -8 49 40 -4 34 -6 31 -10 42 130 rcurveline
+ -33 8 -29 8 -35 1 -86 2 -64 -204 50 -78 -38 -11 -93 -16 -40 10 -25 6 -14 32 4 30 rrcurveto
+ 3 -3 1 -3 -4 vhcurveto
+ -41 -57 -31 -106 66 -32 77 -38 309 125 51 27 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.init.feh">
+ 392 499 330 rmoveto
+ 37 -4 35 -7 33 -10 42 129 rcurveline
+ -32 8 -28 9 -37 1 -52 1 -34 -67 -15 -44 -18 -52 -8 -74 28 -43 -59 -17 -103 -21 -74 -6 -69 -6 -93 -1 -13 49 -87 callsubr
+ -29 27 -14 28 -3 rrcurveto
+ 37 -4 48 2 57 8 57 8 58 12 59 15 99 25 123 38 74 40 1 2 3 8 7 13 12 23 16 35 21 callgsubr
+ -7 -31 -1 -31 27 -27 36 -8 50 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.init.hah">
+ 122 242 421 rmoveto
+ 36 -3 35 -8 34 27 callgsubr
+ -17 -52 -9 -75 28 -43 -40 -11 -31 -14 -21 -15 -21 -15 -22 -31 -20 -47 -20 -47 -8 -32 -10 -51 -105 callsubr
+ 55 88 55 44 106 31 66 19 60 22 58 31 1 2 3 7 7 14 12 24 14 34 9 -2 callsubr
+ rrcurveto
+ -32 27 -27 -89 callsubr
+ </CharString>
+ <CharString name="ain-ar.init.heh">
+ 279 392 405 rmoveto
+ 37 -4 34 -7 33 -10 43 130 rcurveline
+ -32 8 -29 40 callgsubr
+ -41 -11 -34 -21 -30 -29 -56 -55 -44 -74 -33 -75 -16 -37 -12 -31 -14 -24 -8 -16 rcurveline
+ 4 30 rlineto
+ -89 callgsubr
+ 33 39 30 28 26 17 52 33 50 13 65 18 31 8 37 17 44 23 1 2 3 8 7 13 rrcurveto
+ 11 23 16 34 8 -2 callsubr
+ -32 27 -26 -89 callsubr
+ </CharString>
+ <CharString name="ain-ar.init.meem">
+ 151 270 406 rmoveto
+ 35 -3 35 -7 35 65 callgsubr
+ -52 1 -34 -66 -15 -44 -18 -52 -9 -75 28 -43 -78 -22 -45 -40 -40 -68 -22 -38 -16 -41 -19 -42 21 -2 rcurveline
+ 14 33 18 26 24 18 60 45 76 19 84 30 32 11 31 11 28 10 28 10 17 7 6 3 -66 callsubr
+ 24 15 33 8 25 4 12 0 5 -5 -2 rrcurveto
+ -75 callgsubr
+ -22 -11 -26 -7 -31 -1 -31 27 -27 36 -8 50 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.init.ragaa">
+ 314 280 387 rmoveto
+ 37 -4 35 -7 33 27 callgsubr
+ -18 -52 -9 -75 28 -43 -15 -4 -18 -7 -21 -11 -30 -15 -26 -15 -23 -15 -46 -31 -34 -47 -17 -60 40 -30 rcurveline
+ 22 25 23 20 28 18 42 26 59 27 52 15 66 19 59 24 58 31 -66 callsubr
+ 23 16 34 21 callgsubr
+ -48 callgsubr
+ </CharString>
+ <CharString name="ain-ar.init.reh">
+ 172 290 358 30 callgsubr
+ rrcurveto
+ -1 hlineto
+ -21 -20 -11 -21 -17 hvcurveto
+ -33 -40 -26 -66 -52 callgsubr
+ -15 -5 -21 -4 -26 -4 -1 -1 rcurveline
+ -3 -1 hlineto
+ -42 -10 -38 -15 -25 -26 -21 -22 -20 -30 -14 -32 -88 callgsubr
+ 34 34 36 9 48 14 114 26 97 27 96 51 1 2 3 8 7 13 2 callgsubr
+ -27 -89 callsubr
+ </CharString>
+ <CharString name="ain-ar.init.sad">
+ 417 523 330 rmoveto
+ 36 -3 35 -7 34 -10 42 129 rcurveline
+ -32 8 -28 9 -37 1 rrcurveto
+ -1 hlineto
+ -21 -19 -11 -21 -17 hvcurveto
+ -33 -40 -26 -67 -52 callgsubr
+ -50 -14 -54 -12 -56 -11 rrcurveto
+ -7 -38 -37 -4 -36 hhcurveto
+ -62 -45 7 42 -20 hvcurveto
+ -4 7 -2 10 10 24 callsubr
+ 2 -1 1 -1 vhcurveto
+ -2 hlineto
+ -2 -2 0 -2 -1 hvcurveto
+ -10 -14 -15 -24 16 callgsubr
+ -43 10 50 -14 62 hhcurveto
+ 26 29 2 5 34 hvcurveto
+ 56 7 58 12 60 15 101 25 124 39 77 41 1 2 3 8 7 14 12 24 16 33 8 25 rrcurveto
+ 2 5 1 5 2 vvcurveto
+ 3 -1 1 -2 vhcurveto
+ 0 0 -1 -1 vhcurveto
+ -75 callgsubr
+ -22 -11 -27 -48 callgsubr
+ </CharString>
+ <CharString name="ain-ar.init.yeh">
+ 123 243 362 30 callgsubr
+ -52 1 -34 -67 -15 -44 -18 -52 -9 -74 28 -43 -55 -15 -40 -25 -27 -34 -27 -35 -22 -38 -22 -44 19 -18 rcurveline
+ 14 19 17 15 19 12 40 25 12 5 56 19 55 19 73 24 55 20 29 10 17 7 6 3 -66 callsubr
+ 23 15 35 8 25 4 12 1 5 -5 -2 rrcurveto
+ -24 -9 -24 -11 -22 -11 -22 -11 -26 -48 callgsubr
+ </CharString>
+ <CharString name="ain-ar.medi">
+ -78 372 351 rmoveto
+ -10 hlineto
+ -23 -19 -3 -63 callsubr
+ -16 -17 -28 31 callsubr
+ -1 1 -1 -1 vvcurveto
+ 19 -66 -72 -12 -71 -12 -72 -12 rlinecurve
+ -1 -1 -21 -122 69 11 120 27 53 21 rlinecurve
+ 15 5 20 10 26 17 26 17 21 23 19 29 51 79 rcurveline
+ 8 12 6 16 32 callgsubr
+ </CharString>
+ <CharString name="ain-ar.medi.ain">
+ 42 361 59 rmoveto
+ 15 4 21 10 25 17 25 17 22 24 19 29 52 79 callgsubr
+ -38 19 -47 1 -28 1 -22 -2 -17 -5 -6 -5 -16 -18 -28 -33 -28 -33 -12 -21 3 -9 20 -67 rcurveline
+ -58 -16 -91 -17 -73 4 -44 2 -42 10 -10 34 -13 -34 -13 -42 -13 -51 -79 callgsubr
+ 91 -9 151 41 63 26 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.medi.dal">
+ -78 38 7 rmoveto
+ 73 -36 208 98 50 79 51 79 rcurveline
+ 15 24 22 46 -27 26 -21 20 -71 -1 -33 -10 -11 -9 -83 -91 6 -19 20 -66 rcurveline
+ -38 -6 -75 -18 -40 10 -26 7 -14 35 6 31 rrcurveto
+ 2 -1 0 -2 -2 vhcurveto
+ -42 -56 -35 -110 68 -33 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.medi.feh">
+ 103 422 64 rmoveto
+ 15 4 20 11 26 17 26 17 22 23 19 29 51 79 rcurveline
+ 8 12 7 16 6 19 6 19 -3 17 -14 13 -20 19 -75 -1 -31 -9 -6 -4 -16 -18 -28 -33 -28 -33 -12 -21 3 -10 20 -66 rcurveline
+ -46 -15 -95 -16 -64 -4 -68 -5 -92 2 -14 49 -87 callsubr
+ -30 27 -14 28 -3 49 -5 63 5 76 15 76 15 60 16 42 17 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.medi.hah">
+ -30 291 174 rmoveto
+ 15 4 19 45 callgsubr
+ 8 16 6 19 6 19 -4 17 -13 13 rrcurveto
+ 10 -11 -19 6 -28 hhcurveto
+ -28 -22 -2 -5 -17 hvcurveto
+ -6 -4 -17 -18 -28 -33 -28 -33 -12 -21 3 -10 20 -66 rcurveline
+ -61 -12 -42 -11 -26 -10 -26 -10 -31 -33 -37 -57 -35 -53 -21 -46 -7 -37 -105 callsubr
+ 31 49 43 40 55 28 63 32 22 -3 65 26 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.medi.heh">
+ 145 465 168 rmoveto
+ 15 4 20 -4 callsubr
+ -37 18 -47 1 -28 1 -22 -2 -17 -5 -6 -5 -16 -18 -28 -33 -28 -33 -12 -20 3 -10 19 -66 rcurveline
+ -71 -12 -52 -16 -34 -18 -34 -18 -35 -33 -38 -49 -70 -90 -16 -39 -47 -96 -9 -18 rcurveline
+ 4 30 rlineto
+ -89 callgsubr
+ 56 67 37 28 93 19 23 5 29 9 34 14 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.medi.meem">
+ 10 330 167 rmoveto
+ 15 4 19 11 26 17 26 17 22 24 19 29 51 79 callgsubr
+ -37 19 -47 1 -28 1 -22 -2 -17 -5 -6 -4 -16 -19 -28 -33 -28 -33 -12 -21 3 -10 19 -66 rcurveline
+ -27 -5 -55 -13 -31 -9 -49 -13 -23 -5 -33 -31 -52 -47 -24 -73 -31 -69 21 -2 rcurveline
+ 16 36 27 29 37 22 65 38 91 12 73 30 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.medi.ragaa">
+ -70 252 118 rmoveto
+ 15 4 20 11 25 17 25 17 22 23 19 29 51 79 rcurveline
+ 7 12 7 16 6 19 6 19 -3 17 -13 13 -20 19 -73 -1 -32 -9 -6 -4 -16 -18 -27 -33 -27 -33 -12 -21 3 -10 19 -66 rcurveline
+ -32 -6 -30 -7 -26 -8 -86 -25 -45 -53 -29 -88 -106 callsubr
+ 40 -30 21 25 26 22 26 16 rlinecurve
+ 60 36 14 -8 65 27 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.medi.reh">
+ -77 373 378 rmoveto
+ -10 hlineto
+ -24 -19 23 callsubr
+ -12 -20 -11 vvcurveto
+ -3 vlineto
+ 20 -65 -31 -6 1 1 -33 -6 -31 -5 -27 -3 rlinecurve
+ -27 -3 -27 -25 -30 -49 -7 -11 -6 -12 -6 -13 rrcurveto
+ -1 vlineto
+ -10 -12 -5 -11 -9 vvcurveto
+ -10 8 -13 9 6 5 5 9 7 vhcurveto
+ 11 11 23 10 33 9 51 14 43 10 47 19 15 5 20 11 26 17 26 17 22 23 19 29 50 79 rcurveline
+ 8 12 7 15 -40 callgsubr
+ 6 6 vvcurveto
+ 35 -31 11 -41 1 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.medi.sad">
+ 160 617 361 rmoveto
+ -10 hlineto
+ -24 -19 -3 -63 callsubr
+ -16 -17 -27 31 callsubr
+ vvcurveto
+ -3 vlineto
+ 20 -66 -46 -8 -55 -9 -63 -11 rlinecurve
+ -8 -45 -41 -4 -37 hhcurveto
+ -59 -41 9 40 -19 hvcurveto
+ -4 7 -2 10 10 vvcurveto
+ 29 14 40 26 52 vhcurveto
+ -2 callgsubr
+ -42 9 49 -15 61 hhcurveto
+ 58 51 8 10 55 hvcurveto
+ 66 12 81 18 51 21 15 4 21 11 26 17 26 17 21 23 19 29 51 80 rcurveline
+ 8 12 6 15 32 callgsubr
+ </CharString>
+ <CharString name="ain-ar.medi.yeh">
+ 2 321 155 rmoveto
+ 15 4 21 -4 callsubr
+ -38 19 -47 1 rrcurveto
+ -28 -22 -2 -5 -17 hvcurveto
+ -6 -5 -16 -17 -28 -33 -28 -33 -12 -21 3 -10 20 -67 rcurveline
+ -49 -8 -77 -19 -44 -16 -43 -15 -38 -47 -20 -41 -13 -27 -15 -34 -18 -39 19 -8 rcurveline
+ 30 54 44 35 60 14 60 14 56 17 52 21 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ainThreedots-ar">
+ 319 340 830 -107 callgsubr
+ -134 -568 -20 callgsubr
+ </CharString>
+ <CharString name="alef-ar">
+ -116 18 callsubr
+ endchar
+ </CharString>
+ <CharString name="alef-ar.fina">
+ -252 73 570 rmoveto
+ 39 -570 62 118 -38 569 rlineto
+ endchar
+ </CharString>
+ <CharString name="alef-ar.fina.lam">
+ 30 354 564 rmoveto
+ -65 -120 34 -299 67 112 -8 108 -16 95 -12 104 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="alefHamzaabove-ar">
+ -116 131 744 -106 callgsubr
+ -58 -175 -76 callsubr
+ </CharString>
+ <CharString name="alefHamzabelow-ar">
+ -116 18 callsubr
+ -9 -756 -106 callgsubr
+ endchar
+ </CharString>
+ <CharString name="alefMadda-ar">
+ -116 293 845 -6 callgsubr
+ -176 -219 -76 callsubr
+ </CharString>
+ <CharString name="alefMaksura-ar">
+ 251 -40 callsubr
+ </CharString>
+ <CharString name="alefMaksura-ar.fina">
+ 50 136 487 rmoveto
+ -41 callgsubr
+ -17 -23 -20 -34 -24 -42 -24 -42 -19 -44 -13 -46 rrcurveto
+ -9 -32 -5 -29 -30 vvcurveto
+ -70 21 -40 56 -30 vhcurveto
+ -16 29 33 -7 35 hhcurveto
+ 12 12 0 2 13 hvcurveto
+ 50 7 50 16 49 24 86 42 97 73 47 73 rrcurveto
+ 16 24 8 21 18 vvcurveto
+ 31 -23 23 -29 4 vhcurveto
+ -67 9 -63 27 -19 58 -15 -26 -12 -26 -10 -27 rrcurveto
+ -7 -18 -3 -16 -13 vvcurveto
+ -7 1 -5 2 -6 vhcurveto
+ 8 -27 17 -19 28 -12 28 -12 31 -8 34 -3 -64 -41 -71 -28 -78 -14 rrcurveto
+ -5 -25 -26 -2 -27 hhcurveto
+ -95 -74 33 88 21 3 23 7 22 hvcurveto
+ 16 52 37 60 21 44 rrcurveto
+ -88 callsubr
+ 0 -2 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="alefMaksura-ar.fina.jalt">
+ 432 287 8 rmoveto
+ 135 -17 138 11 114 34 133 40 114 72 69 107 38 59 -10 54 -56 8 -70 10 -51 27 -33 48 -14 -25 -11 -24 -9 -25 -21 -61 24 -39 45 -19 28 -12 30 -7 34 -3 rrcurveto
+ -67 -44 -72 -29 -78 -14 -78 -14 -79 -10 -77 -6 -96 callsubr
+ 36 3 callgsubr
+ -10 -64 -17 -143 -37 14 callgsubr
+ </CharString>
+ <CharString name="alefMaksura-ar.fina.yeh">
+ 276 193 1 rmoveto
+ 102 8 93 43 70 48 61 42 24 35 35 57 6 9 9 16 10 20 5 10 4 9 5 10 7 14 3 28 -13 11 -24 18 -36 10 -33 8 -104 25 rcurveline
+ -1 vlineto
+ -18 -38 -20 -33 -16 80 callgsubr
+ -10 51 -19 8 -4 5 -3 1 -6 -69 callsubr
+ -36 -20 -36 -17 -36 -15 -63 -27 -75 -20 -90 6 rrcurveto
+ -39 3 -31 10 -22 18 -46 36 -9 52 21 67 16 52 37 61 21 44 4 8 -9 0 -3 -4 -17 -23 -20 -33 -24 -42 -24 -42 -19 -44 -13 -46 -13 -46 -4 -44 6 -42 rrcurveto
+ 11 -77 79 -50 99 8 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="alefMaksura-ar.fina.yeh.jalt">
+ 429 287 7 rmoveto
+ 43 -6 52 -2 61 2 135 4 124 29 97 49 54 27 42 35 29 45 11 18 16 25 20 33 20 33 10 28 -1 21 -1 7 -3 6 -5 4 -18 14 -32 13 -45 10 rrcurveto
+ -45 10 -35 8 -23 6 -106 callsubr
+ -19 -39 -18 -33 -17 80 callgsubr
+ -9 51 -19 7 -3 5 -4 2 -6 -69 callsubr
+ -72 -38 -70 -26 -67 -12 -67 -12 -78 -9 -87 -7 rrcurveto
+ -69 callgsubr
+ -122 40 callsubr
+ endchar
+ </CharString>
+ <CharString name="alefMaksura-ar.jalt">
+ 719 287 9 rmoveto
+ 135 -17 138 12 114 34 133 40 114 72 69 107 28 44 3 34 -23 25 -18 19 -33 0 -28 8 -40 11 -25 12 -9 13 -9 13 0 13 7 11 11 17 41 21 30 -9 rrcurveto
+ 20 32 11 40 17 35 rrcurveto
+ 9 4 -12 1 -6 hhcurveto
+ -35 -2 -29 -28 -19 -17 -21 -21 -24 -36 -30 -53 -30 -53 -11 -40 8 -28 8 -27 18 -19 28 -12 28 -12 30 -8 34 -3 -67 -44 -72 -28 -78 -14 -78 -14 -79 -10 -77 -6 rrcurveto
+ -96 callsubr
+ 35 3 callgsubr
+ -9 -64 -17 -143 -37 -114 -58 -80 -102 -79 -101 -26 -122 92 -100 43 -47 76 -31 109 -14 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="alefWasla-ar">
+ -116 29 757 rmoveto
+ 75 74 -46 -89 101 42 28 11 26 15 16 22 12 16 16 21 -15 18 -12 14 -27 -8 -11 -10 -23 -21 -22 -22 -20 -24 rrcurveto
+ -1 -3 -2 0 -2 hhcurveto
+ -35 42 -55 -64 -10 -40 -1 -4 8 6 2 2 rrcurveto
+ 182 90 rmoveto
+ 2 -3 1 -4 -4 -2 -20 -10 -24 -5 -25 -5 13 13 12 14 17 9 10 5 14 -4 4 -8 rrcurveto
+ -138 -278 -76 callsubr
+ </CharString>
+ <CharString name="alefabove-ar">
+ -36 callsubr
+ </CharString>
+ <CharString name="alefabove-ar.isol">
+ -243 -16 callgsubr
+ </CharString>
+ <CharString name="alefabove-ar.medi">
+ -16 callgsubr
+ </CharString>
+ <CharString name="alefbelow-ar">
+ -36 callsubr
+ </CharString>
+ <CharString name="beh-ar">
+ 437 -81 callsubr
+ -309 -579 -107 callsubr
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar">
+ 437 -81 callsubr
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.fina">
+ 126 489 43 rmoveto
+ -1 -5 -1 -4 -3 vvcurveto
+ -4 1 -1 2 vhcurveto
+ 1 hlineto
+ 25 26 20 31 15 35 15 35 13 31 6 22 rrcurveto
+ 1 2 27 -6 -14 vhcurveto
+ -9 -20 -16 -20 -19 -10 rrcurveto
+ -36 -69 -144 -7 -36 hhcurveto
+ -174 -46 45 71 3 hvcurveto
+ 2 41 13 38 24 45 9 22 -18 7 -11 -17 -24 -39 -24 -44 -23 -51 rrcurveto
+ -13 -30 -6 -29 -27 vvcurveto
+ -161 204 2 41 84 103 20 23 57 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.fina.jalt">
+ 485 287 7 rmoveto
+ 96 -12 95 3 95 19 95 19 91 27 89 36 -5 -12 1 -6 6 1 25 27 19 30 -73 callsubr
+ 1 3 6 vvcurveto
+ 6 -2 1 -4 -5 vhcurveto
+ -9 -22 -13 -15 -20 -11 -56 -31 -71 -23 -84 -15 -84 -15 -75 -10 -63 -5 -158 -2 -120 62 callgsubr
+ 19 18 17 61 58 75 42 90 28 rrcurveto
+ 22 callgsubr
+ -38 14 callgsubr
+ </CharString>
+ <CharString name="behDotless-ar.init">
+ -70 252 393 rmoveto
+ -77 -113 rlineto
+ 17 -58 9 -36 -14 vvcurveto
+ -19 -13 -21 -9 -24 -6 -24 -6 -38 -7 -52 -6 rrcurveto
+ -1 hlineto
+ -22 -125 40 4 35 6 28 8 rlinecurve
+ 66 19 41 46 34 57 42 69 -4 101 -30 83 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.init.ain">
+ 128 369 266 rmoveto
+ 14 -40 7 -31 -1 -21 -47 -20 -85 -20 -66 -5 -64 -5 -75 5 -13 47 -13 -35 -13 -42 -13 -50 1 -29 27 -15 28 -3 39 -4 45 2 51 6 51 6 44 14 37 20 rrcurveto
+ 78 40 54 86 12 100 2 16 -3 22 -7 30 -7 30 -3 13 -3 -4 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.init.ascend">
+ -51 301 245 rmoveto
+ -3 2 -17 -46 -26 -29 -34 -12 rlinecurve
+ -34 -12 -67 -9 -102 -5 -18 -134 rcurveline
+ 94 6 67 14 40 23 32 18 24 32 17 43 rrcurveto
+ 17 43 10 36 30 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.init.dal">
+ 9 355 253 rmoveto
+ 3 -2 1 -1 -2 vhcurveto
+ -31 -85 -144 -53 -93 24 -27 7 -12 36 6 31 rrcurveto
+ 1 -1 2 -2 -3 vhcurveto
+ -43 -56 -35 -111 68 -33 126 -61 188 136 3 163 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.init.feh">
+ 195 433 279 rmoveto
+ 14 -39 6 -31 -1 -22 -52 -23 -104 -24 -73 -8 -74 -8 -95 -1 -15 52 -13 -35 -13 -42 -13 -50 1 -29 27 -14 28 -3 39 -4 55 2 69 10 114 16 71 27 57 66 rrcurveto
+ 39 46 23 56 7 64 2 16 -2 22 -7 30 -7 30 -4 13 -3 -4 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.init.hah">
+ 59 1 hmoveto
+ 73 hlineto
+ 14 15 15 15 16 14 32 28 38 22 45 15 19 5 20 1 23 -2 11 -2 12 -1 5 9 18 34 14 39 15 37 -5 6 rcurveline
+ -30 12 -34 -3 -39 -18 rrcurveto
+ -1 hlineto
+ -1 -3 -2 -1 -2 hhcurveto
+ -54 -22 -46 -30 -39 -37 -39 -37 -28 -30 -18 -24 -18 -24 -10 -15 -2 -5 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.init.heh">
+ 195 377 176 rmoveto
+ 24 10 28 3 29 -3 11 -2 12 -1 5 9 19 34 13 39 15 37 -5 6 rcurveline
+ -24 10 -29 0 -32 -11 -32 -11 -31 -15 -32 -21 -53 -35 -63 -57 -36 -46 -105 callgsubr
+ 50 59 57 61 77 30 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.init.meem">
+ 3 288 149 rmoveto
+ 8 21 12 30 17 38 17 38 -1 25 -21 12 -33 19 -33 1 -31 -17 -66 -36 -54 -73 -37 -69 -20 -37 -15 -30 -10 -21 -8 -18 -6 -12 -2 -7 -2 -7 -2 -5 -1 -1 rrcurveto
+ 18 hlineto
+ 14 22 18 28 23 33 23 33 25 27 26 23 26 23 26 12 25 2 25 2 21 -18 18 -38 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.init.ragaa">
+ 314 235 214 rmoveto
+ -5 vlineto
+ -25 -20 -28 -14 -31 -10 -60 -19 -69 -59 -22 -56 46 -32 rcurveline
+ 1 2 2 1 2 1 40 29 43 26 45 25 25 14 20 19 17 25 19 29 13 27 8 24 rrcurveto
+ 12 30 5 31 34 vvcurveto
+ 1 61 -19 49 -38 37 -63 -111 rcurveline
+ 19 -29 14 -26 8 -23 rrcurveto
+ -1 vlineto
+ 5 -15 8 -30 2 -14 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.init.reh">
+ -41 308 229 rmoveto
+ -17 -16 -29 -9 -27 -4 -28 -6 -28 -4 -25 -4 -61 -9 -39 41 callgsubr
+ -16 9 -13 9 -13 10 2 11 17 20 20 25 12 23 4 24 4 30 7 35 9 76 19 34 54 7 87 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.init.sad">
+ 279 520 234 rmoveto
+ -2 vlineto
+ -63 -30 -74 -36 -83 -19 -91 -17 rlinecurve
+ -4 -19 -17 -2 -16 hhcurveto
+ -53 -37 20 53 30 14 42 29 57 hvcurveto
+ 1 2 0 1 0 callgsubr
+ -43 9 51 -14 61 hhcurveto
+ 27 30 3 6 31 hvcurveto
+ 50 9 48 16 47 21 82 37 91 59 36 75 rrcurveto
+ 20 41 10 37 35 vvcurveto
+ 19 -3 18 -6 17 vhcurveto
+ -24 74 -76 -113 rlineto
+ 10 -29 21 -57 -34 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.init.yeh">
+ -187 105 87 rmoveto
+ -22 -18 -47 -17 -29 -10 -7 -17 rcurveline
+ 98 -25 19 25 24 41 10 33 rlinecurve
+ 12 30 6 31 34 vvcurveto
+ 60 -19 50 -37 37 vhcurveto
+ -64 -112 20 -30 15 -26 7 -22 rlinecurve
+ 5 -14 8 -31 2 -14 rrcurveto
+ -1 -2 0 -1 -2 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.jalt">
+ 674 287 11 callgsubr
+ 30 62 7 56 -16 49 rrcurveto
+ -24 74 0 0 0 vvcurveto
+ -77 -114 -102 callsubr
+ rlinecurve
+ 0 -1 -100 callsubr
+ -26 -99 callsubr
+ rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.medi">
+ -158 205 24 rmoveto
+ 1 hlineto
+ 50 53 28 81 15 47 2 3 -1 21 -5 -11 -7 -17 -17 -24 -25 -11 -53 -23 -147 -14 -25 -2 -21 -127 rcurveline
+ 58 6 99 16 46 19 -2 -7 -1 -11 5 1 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.medi.ain">
+ -17 348 25 rmoveto
+ 25 26 19 31 -73 callsubr
+ 0 4 6 vvcurveto
+ 6 -1 1 -3 -5 vhcurveto
+ -10 -22 -14 -17 -19 -10 -24 -13 -41 -11 -58 -7 -58 -7 -42 -5 -25 1 -48 1 -48 10 -11 36 -78 callsubr
+ 36 -3 48 3 62 8 rrcurveto
+ 62 8 48 11 34 14 -5 -12 1 -6 6 1 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.medi.dal">
+ -136 226 35 rmoveto
+ -7 -23 16 2 7 12 32 60 34 68 13 43 2 3 1 21 -7 -10 -8 -21 -15 -17 -19 -11 -29 -16 -111 -26 -49 12 rrcurveto
+ -26 7 -8 33 30 vvcurveto
+ 7 1 1 -6 -7 vhcurveto
+ -46 -53 -28 -111 67 -33 42 -20 114 37 30 12 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.medi.feh">
+ 31 56 1 rmoveto
+ 40 -4 58 3 76 11 76 11 54 12 34 14 -4 -12 1 -6 5 1 25 26 20 31 15 35 15 35 11 29 7 23 rrcurveto
+ 1 2 0 4 6 vvcurveto
+ 6 -1 1 -4 -5 vhcurveto
+ -9 -22 -14 -16 -20 -11 -21 -12 -41 -10 -64 -9 -64 -9 -45 -5 -28 -1 -60 -3 -67 6 -13 43 -78 callsubr
+ rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.medi.hah">
+ 88 12 2 rmoveto
+ 23 36 18 30 14 21 14 21 25 27 37 30 35 29 38 22 41 15 30 12 21 -21 9 -18 5 -16 11 -8 17 1 rrcurveto
+ 4 7 3 2 8 hvcurveto
+ 62 134 -33 -5 rlineto
+ -2 -1 0 1 -2 hvcurveto
+ 15 -12 -9 28 -27 hhcurveto
+ -26 -28 -7 -14 -31 hvcurveto
+ -59 -28 -58 -49 -43 -45 -26 -26 -23 -28 -21 -26 -13 -32 -14 -63 -3 -38 -105 callsubr
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.medi.heh">
+ 208 237 76 rmoveto
+ 36 39 52 50 54 15 23 6 18 -9 12 -24 4 -16 10 -8 18 1 6 1 7 2 6 2 62 134 rcurveline
+ -33 -5 -5 2 -25 31 -27 14 -30 -4 rlinecurve
+ -30 -4 -30 -12 -29 -21 -29 -21 -26 -26 -25 -29 -25 -29 -20 -24 -15 -19 -1 callgsubr
+ 23 54 52 64 51 56 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.medi.high">
+ -38 223 179 rmoveto
+ -50 -21 -55 -14 -60 -11 -58 -133 rcurveline
+ 28 7 27 7 27 7 106 28 73 67 25 102 17 62 2 57 -11 53 -11 53 -7 25 -2 -3 -76 -113 rcurveline
+ 18 -69 7 -29 -75 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.medi.high2">
+ -128 215 293 rmoveto
+ 9 -114 -47 -20 -56 -12 -56 -10 rlinecurve
+ -65 -137 156 50 29 16 24 19 20 22 rlinecurve
+ 8 -107 74 117 -22 294 rlineto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.medi.meem">
+ -77 185 141 rmoveto
+ 27 10 21 -10 14 -29 4 -16 10 -7 18 1 6 1 7 1 6 2 63 135 rcurveline
+ -33 -5 -6 1 -18 23 -21 15 -21 5 rlinecurve
+ -20 4 -19 -3 -20 -9 -20 -9 -19 -13 -19 -18 -55 -53 -56 -87 -34 -72 30 -8 rcurveline
+ 39 55 49 60 67 26 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.medi.noon">
+ -123 304 354 rmoveto
+ 3 -2 1 -3 -1 vhcurveto
+ -4 -2 -3 -3 -3 -7 -14 -34 -39 -32 -64 -28 -62 -27 -51 -10 -41 6 -18 -133 rcurveline
+ 28 7 27 7 27 7 62 16 48 28 37 43 13 -195 rcurveline
+ 73 128 -6 74 -7 74 2 78 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.medi.ragaa">
+ -105 240 114 rmoveto
+ 4 -16 10 -8 18 1 2 1 8 1 10 3 62 134 rcurveline
+ -33 -5 rlineto
+ 1 -3 -2 1 -1 hhcurveto
+ 15 -12 -9 27 -27 hhcurveto
+ -37 -33 -10 -18 -28 hvcurveto
+ -28 -18 -25 -22 -22 -25 -11 -13 -18 -24 -23 -34 -23 -34 -14 -25 -5 -14 47 -32 rcurveline
+ 1 vlineto
+ 17 24 20 27 23 30 23 30 23 19 26 10 30 12 22 -21 9 -18 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.medi.reh">
+ -40 307 31 rmoveto
+ 2 123 -30 -4 -24 9 4 31 rlinecurve
+ 1 28 -83 -24 -43 -13 -52 -16 -31 -18 -11 -21 -12 -23 -7 -27 -10 -24 -1 -1 -10 -17 1 -2 -7 -28 22 -17 18 26 11 11 13 10 12 7 21 8 27 7 30 7 rrcurveto
+ 30 7 14 -1 -1 -11 -5 -31 12 -13 27 4 27 4 28 4 27 5 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.medi.sad">
+ 124 106 333 rmoveto
+ -2 -1 -1 -14 callsubr
+ -41 9 44 -15 60 hhcurveto
+ 60 52 8 9 57 hvcurveto
+ 66 11 85 16 49 21 rrcurveto
+ -1 -5 -1 -3 -3 vvcurveto
+ -4 1 -2 3 vhcurveto
+ 25 27 20 30 -73 callsubr
+ 0 3 6 vvcurveto
+ 4 0 2 -1 -1 -1 -2 46 callsubr
+ rrcurveto
+ -32 -92 -129 -31 -120 hhcurveto
+ -57 -38 8 35 -21 hvcurveto
+ -5 8 -3 11 12 vvcurveto
+ 29 13 41 27 52 vhcurveto
+ -88 callsubr
+ 1 -2 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.medi.yeh">
+ -106 281 264 rmoveto
+ 1 1 -8 4 -11 1 -14 -2 rlinecurve
+ -45 -5 -40 -18 -33 -32 -58 -55 -45 -67 -28 -84 21 -7 rcurveline
+ 39 55 50 60 67 26 11 4 10 1 10 -4 -106 callsubr
+ 13 -4 11 -10 7 -15 4 -16 11 -7 17 1 5 1 7 1 8 2 62 135 rcurveline
+ -34 -5 rlineto
+ 0 -1 0 -4 1 vhcurveto
+ -10 12 -7 19 -15 8 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="comma-ar">
+ -86 127 hmoveto
+ -22 callsubr
+ endchar
+ </CharString>
+ <CharString name="comma-ar.alt">
+ -86 127 219 -5 callgsubr
+ </CharString>
+ <CharString name="dad-ar">
+ 517 689 794 -107 callsubr
+ -340 -668 -25 callgsubr
+ </CharString>
+ <CharString name="dal-ar">
+ 3 242 311 -95 callsubr
+ </CharString>
+ <CharString name="dal-ar.fina">
+ 26 374 164 rmoveto
+ -5 -5 -2 -4 -4 hvcurveto
+ -14 -13 -17 -8 -18 -3 -99 -16 -109 -1 -93 -23 rrcurveto
+ -7 -2 -3 -3 -3 vvcurveto
+ -2 1 -1 2 -2 vhcurveto
+ 8 -7 25 -13 42 -18 42 -18 26 -10 11 -3 rrcurveto
+ -8 25 24 -4 21 hhcurveto
+ 45 24 18 38 25 hvcurveto
+ 15 24 18 26 22 16 rrcurveto
+ 8 3 6 10 12 vvcurveto
+ 9 -5 8 -11 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="damma-ar">
+ 79 80 -22 callgsubr
+ </CharString>
+ <CharString name="dammainverted-ar">
+ -36 26 rmoveto
+ -7 -22 -4 -18 -14 vvcurveto
+ -23 8 -18 20 5 5 2 2 5 vhcurveto
+ 22 9 32 33 29 vvcurveto
+ 28 -28 15 -19 11 vhcurveto
+ 6 6 8 7 10 7 41 29 51 32 42 27 rrcurveto
+ 7 4 2 2 1 vvcurveto
+ -6 -1 -81 -20 -55 -27 -43 -58 rlinecurve
+ -7 5 -6 1 -5 7 rrcurveto
+ -8 -12 -7 -11 -14 vvcurveto
+ -1 vlineto
+ 1 -9 5 -5 6 -4 rrcurveto
+ 37 -54 rmoveto
+ -3 hlineto
+ -12 -5 11 14 6 0 6 2 8 hvcurveto
+ 10 -5 27 -10 -14 vvcurveto
+ -9 -11 -6 -8 -1 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="dammainverted-ar.urd">
+ 53 -9 rmoveto
+ 7 22 2 16 -1 9 -2 12 -6 1 -7 -8 -3 -2 -2 -3 -3 -4 rrcurveto
+ -18 -12 -12 -8 -11 hhcurveto
+ -9 3 -7 5 -4 7 rrcurveto
+ 1 hlineto
+ -4 11 -1 19 2 15 8 42 18 58 18 33 3 7 3 5 1 2 1 4 0 2 -2 -2 -3 -1 -2 -2 -2 -2 -22 -25 -15 -25 -15 -39 -21 -54 -9 -32 8 -69 rrcurveto
+ -27 3 15 -13 28 hhcurveto
+ 24 20 20 41 13 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="dammatan-ar">
+ 47 280 rmoveto
+ -79 -25 -65 -52 -33 -72 -19 -32 -5 -53 29 -24 24 -20 32 9 22 15 23 49 rcurveline
+ -22 -12 -60 -24 -7 42 -2 8 1 9 4 10 11 24 19 22 20 18 29 26 39 30 44 9 52 11 23 -15 -12 -52 rrcurveto
+ -2 -6 0 -4 -2 vvcurveto
+ 1 -5 6 5 2 3 11 12 9 16 3 20 10 63 -57 12 -51 -15 rrcurveto
+ 32 -200 -22 callgsubr
+ </CharString>
+ <CharString name="ddal-ar">
+ 3 207 705 -98 callgsubr
+ -57 -290 -95 callsubr
+ </CharString>
+ <CharString name="dotabove-ar">
+ 79 13 -107 callsubr
+ endchar
+ </CharString>
+ <CharString name="dotbelow-ar">
+ 79 13 -107 callsubr
+ endchar
+ </CharString>
+ <CharString name="dul-ar">
+ 3 380 636 -107 callgsubr
+ -138 -325 -95 callsubr
+ </CharString>
+ <CharString name="eight-ar">
+ 12 351 139 rmoveto
+ -65 138 -63 135 -30 169 -2 8 -11 -9 -3 -5 -15 -27 -2 -38 -8 -32 -32 -123 -34 -117 -50 -103 rrcurveto
+ -48 -5 -45 -7 -41 vhcurveto
+ 3 -1 2 0 1 3 50 114 47 120 36 134 36 -117 52 -133 58 -121 15 47 15 48 12 44 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="eight-ar.dnom">
+ -99 247 97 15 callgsubr
+ -87 -24 -81 1 callgsubr
+ </CharString>
+ <CharString name="eight-ar.numr">
+ -99 247 366 15 callgsubr
+ -86 -24 -82 1 callgsubr
+ </CharString>
+ <CharString name="ellipsis">
+ 636 71 82 rmoveto
+ -5 -5 -3 -6 -5 vvcurveto
+ -4 2 -4 3 -4 vhcurveto
+ 43 -50 rlineto
+ -5 4 5 -1 5 hhcurveto
+ 3 4 -68 callgsubr
+ -5 -55 callgsubr
+ 293 -41 -10 callsubr
+ 5 -68 callgsubr
+ -6 -55 callgsubr
+ 294 -41 -10 callsubr
+ 4 -68 callgsubr
+ -5 -55 callgsubr
+ endchar
+ </CharString>
+ <CharString name="emdash">
+ 636 205 vmoveto
+ 1000 58 -1000 hlineto
+ endchar
+ </CharString>
+ <CharString name="endash">
+ 177 27 205 rmoveto
+ 487 58 -487 hlineto
+ endchar
+ </CharString>
+ <CharString name="exclam">
+ -111 132 194 rmoveto
+ 13 10 6 18 8 16 29 58 22 70 -7 98 -11 153 -56 100 -50 107 -20 -48 -22 -45 -18 -47 -3 -7 21 -30 4 -8 56 -108 50 -149 -30 -180 rrcurveto
+ -2 -1 -13 9 7 vhcurveto
+ -83 -109 -21 callsubr
+ </CharString>
+ <CharString name="fatha-ar">
+ 79 7 -6 callsubr
+ </CharString>
+ <CharString name="fathatan-ar">
+ -24 callsubr
+ </CharString>
+ <CharString name="feh-ar">
+ 315 562 663 -107 callsubr
+ -474 -629 -72 callgsubr
+ </CharString>
+ <CharString name="fehDotless-ar">
+ 315 88 34 -72 callgsubr
+ </CharString>
+ <CharString name="fehDotless-ar.fina">
+ 203 103 386 rmoveto
+ -5 -4 -3 -6 -4 hvcurveto
+ -24 -38 -24 -44 -23 -51 rrcurveto
+ -13 -30 -7 -29 -27 vvcurveto
+ -19 3 -18 7 -18 vhcurveto
+ 11 -33 21 -24 31 -17 rrcurveto
+ -20 35 41 -9 52 hhcurveto
+ 114 112 33 38 77 hvcurveto
+ 16 4 57 16 46 30 35 44 rlinecurve
+ 35 44 28 49 20 54 rrcurveto
+ 5 20 3 17 15 vvcurveto
+ 39 -21 32 -39 -24 -26 -16 -32 -27 vhcurveto
+ -47 -55 -42 -68 -37 -82 -37 -13 -48 -13 -60 -12 rrcurveto
+ -8 -38 -36 -5 -34 hhcurveto
+ -19 -17 1 3 -17 hvcurveto
+ -49 7 -34 20 -20 34 rrcurveto
+ -6 11 -3 13 15 vvcurveto
+ 33 14 44 29 54 vhcurveto
+ 2 5 1 3 3 vvcurveto
+ 6 -3 3 -7 vhcurveto
+ 444 -152 rmoveto
+ 6 2 5 4 5 -8 callsubr
+ -24 -7 -21 -1 rrcurveto
+ -9 4 -13 14 14 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.fina.jalt">
+ 439 287 3 rmoveto
+ 87 -11 111 10 86 13 94 14 108 27 62 40 69 45 49 76 30 83 -96 callgsubr
+ -47 -55 -42 -70 -38 -83 -76 -27 -96 -8 -93 -7 rrcurveto
+ -96 callsubr
+ 35 -91 callgsubr
+ 10 18 18 18 61 58 76 42 90 28 -42 callgsubr
+ -78 -3 -72 -9 -65 -17 -143 -37 -115 -57 -79 -103 -78 -101 -27 -123 40 callsubr
+ 574 297 rmoveto
+ 13 -5 11 -14 -90 callsubr
+ -26 -12 -24 -7 -21 -1 -53 callgsubr
+ 14 28 32 10 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.init">
+ 26 208 255 rmoveto
+ 25 22 13 69 callgsubr
+ -9 -20 7 hvcurveto
+ 12 -36 -32 -25 -93 -29 -154 -33 rlinecurve
+ -22 -129 100 21 65 19 33 17 rlinecurve
+ 33 17 30 25 27 31 29 33 22 43 13 54 rrcurveto
+ 5 21 3 20 19 vvcurveto
+ 62 -31 50 -37 27 vhcurveto
+ 6 -8 -7 3 -7 hhcurveto
+ -11 -11 -7 -14 -10 hvcurveto
+ -27 -36 -19 -46 81 callgsubr
+ 20 -10 25 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.init.ain">
+ 189 456 215 rmoveto
+ -12 -11 -27 -14 -42 -16 -70 -27 -102 -28 -92 8 -40 4 -24 16 -8 29 -13 -35 -13 -42 -13 -50 1 -29 27 -15 28 -3 65 -7 70 8 74 21 74 21 60 35 44 49 rrcurveto
+ 47 53 53 125 -47 93 -63 callgsubr
+ -37 -19 -45 -22 -41 -10 -18 -1 -35 19 -9 11 callsubr
+ 0 0 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.init.dal">
+ 65 328 118 rmoveto
+ 58 64 34 124 -41 81 -25 49 -45 41 35 callgsubr
+ 37 15 21 18 10 12 21 -68 2 -7 -30 -15 -157 -69 -67 17 rrcurveto
+ -24 6 -13 30 2 29 rrcurveto
+ 4 -4 2 -4 -6 vhcurveto
+ -40 -58 -29 -101 65 -32 68 -33 175 91 47 52 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.init.feh">
+ 257 509 141 rmoveto
+ 29 32 22 43 13 55 21 90 -30 73 -51 37 -20 14 -18 -4 -17 -22 -27 -36 -18 -47 -22 -41 -11 -18 -1 -35 19 -9 33 -16 39 18 19 16 6 6 6 -9 8 -24 rrcurveto
+ 12 -36 0 0 0 vvcurveto
+ -16 -14 -31 -16 -49 -18 -82 -31 -117 -31 -106 8 -46 3 -27 17 -8 30 -13 -35 -13 -42 -13 -50 1 -29 27 -15 28 -3 68 -7 80 8 93 23 93 23 70 38 49 54 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.init.hah">
+ -152 -42 callsubr
+ </CharString>
+ <CharString name="fehDotless-ar.init.heh">
+ 235 193 26 rmoveto
+ 52 62 52 41 52 19 52 19 46 29 38 39 52 54 50 117 -47 96 -13 24 -16 21 19 callsubr
+ -10 -19 -1 -34 19 -9 rrcurveto
+ 11 callsubr
+ -1 0 vvcurveto
+ -5 -4 -20 -10 -36 -14 rrcurveto
+ -14 -36 -19 -8 -2 hhcurveto
+ -98 -29 -68 50 callsubr
+ 4 30 rcurveline
+ -89 callgsubr
+ rrcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.init.meem">
+ 51 316 200 rmoveto
+ 26 29 21 43 13 57 13 57 -2 48 -19 38 -13 24 -16 20 -20 14 -20 14 -18 -4 -16 -22 -27 -36 -19 -46 -59 callsubr
+ -35 19 -9 33 -16 38 18 19 16 rrcurveto
+ 5 6 7 -10 8 -24 rrcurveto
+ 12 -36 1 0 0 vvcurveto
+ -11 -9 -60 -14 -15 -6 -62 -14 -48 -18 -34 -35 -48 -50 -18 -69 -32 -69 21 -2 rcurveline
+ 31 77 57 30 84 22 50 13 45 23 28 35 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.init.ragaa">
+ 314 249 224 rmoveto
+ -11 -9 -17 -9 -23 -9 -106 callsubr
+ -30 -14 -35 -13 -26 -18 rrcurveto
+ 0 -2 -1 -6 -5 vhcurveto
+ -39 -29 -42 -33 -18 -50 45 -33 rcurveline
+ 1 5 5 0 vhcurveto
+ 30 21 37 22 32 20 rrcurveto
+ 1 vlineto
+ 4 3 3 1 2 1 33 17 35 31 21 23 21 30 17 30 10 30 27 71 -2 68 -31 63 -13 24 -16 20 19 callsubr
+ rrcurveto
+ -10 -18 -2 -35 19 -9 33 -17 39 17 19 17 15 13 18 -94 1 -5 rrcurveto
+ -1 -2 0 -1 -2 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.init.reh">
+ 18 285 149 rmoveto
+ 26 29 20 44 13 57 13 57 -2 47 -19 38 -13 24 -16 20 -20 14 -20 14 -18 -4 -17 -22 -27 -36 -18 -46 -22 -41 -10 -18 -1 -35 18 -9 33 -17 39 18 19 16 rrcurveto
+ 11 13 20 -74 1 -2 -16 -11 -24 -5 -22 -4 -60 -15 -44 -12 -28 38 callsubr
+ -23 -7 -31 rrcurveto
+ -1 vlineto
+ -15 -18 -4 -16 9 -13 9 -13 10 2 11 17 rrcurveto
+ 1 hlineto
+ 16 15 19 13 25 12 66 29 79 12 45 51 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.init.sad">
+ 356 522 280 rmoveto
+ 25 23 14 69 callgsubr
+ -10 -20 7 hvcurveto
+ 12 -36 -43 -38 -102 -26 -74 -16 rlinecurve
+ -15 -68 -78 -15 -73 hhcurveto
+ -50 -34 13 32 -17 hvcurveto
+ -4 8 -3 10 12 vvcurveto
+ 29 14 40 26 52 vhcurveto
+ 1 2 0 1 1 vvcurveto
+ 3 -3 0 -2 -2 -1 0 -2 -1 vhcurveto
+ -10 -15 -15 -23 -103 callgsubr
+ -22 -20 vvcurveto
+ -55 -98 callsubr
+ 19 20 -1 23 hhcurveto
+ 21 22 2 2 24 hvcurveto
+ 106 10 103 30 81 39 91 44 52 56 26 104 rrcurveto
+ 5 21 2 19 19 vvcurveto
+ 29 -6 27 -12 25 vhcurveto
+ 45 callsubr
+ -8 3 -7 hhcurveto
+ -11 -11 -7 -14 -10 hvcurveto
+ -27 -37 -18 -45 81 callgsubr
+ 19 -11 25 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.init.yeh">
+ -152 -42 callsubr
+ </CharString>
+ <CharString name="fehDotless-ar.jalt">
+ 671 416 1 rmoveto
+ 110 4 107 20 90 30 114 38 72 51 42 112 23 62 -1 56 -25 51 -63 callgsubr
+ -36 -19 -46 -22 -41 -11 -18 0 -35 19 -9 rrcurveto
+ 33 -16 38 17 19 16 6 6 7 -9 8 -24 rrcurveto
+ 12 -36 0 0 0 vvcurveto
+ -17 -15 -35 -17 -54 -19 -54 -19 -36 -10 -17 -4 -72 -16 -80 -8 -80 -6 -96 callsubr
+ 62 callgsubr
+ 19 18 17 61 58 75 42 90 28 rrcurveto
+ 22 callgsubr
+ -38 -114 -57 -80 -102 -79 -101 -26 -123 92 -100 61 -66 140 -34 156 5 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.medi">
+ -81 404 415 -65 callsubr
+ -51 -60 -43 -74 -34 -77 -180 -27 rcurveline
+ -19 -129 97 21 137 34 57 16 47 31 35 44 rlinecurve
+ 2 callsubr
+ -142 -201 -54 callgsubr
+ 15 29 32 10 21 callsubr
+ -26 -12 -23 -7 -21 -2 rrcurveto
+ -9 4 -14 14 14 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.medi.ain">
+ 11 56 1 rmoveto
+ 81 -8 146 42 60 22 52 18 42 30 33 43 33 43 26 46 19 51 16 61 -9 -9 callsubr
+ -47 -55 -42 -69 -38 -83 -43 -16 -69 -17 -57 6 rrcurveto
+ -49 4 -28 16 -7 26 -13 -35 -13 -43 -13 -50 1 -29 27 -14 28 -3 rrcurveto
+ 370 288 13 callsubr
+ -3 -16 -16 -7 -26 -12 -23 -7 -21 -2 -13 7 -19 22 15 20 18 24 15 28 32 10 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.medi.dal">
+ -75 241 38 rmoveto
+ 113 32 68 98 39 107 31 121 -84 42 -75 -88 -51 -60 -42 -70 -35 -78 -40 -7 -40 -13 -41 10 -25 6 -14 32 4 30 rrcurveto
+ 4 -2 2 -4 -6 vhcurveto
+ -41 -57 -30 -105 66 -32 45 -22 117 44 41 10 rrcurveto
+ 98 238 rmoveto
+ 26 -10 29 -66 -32 -15 -22 -11 -25 -7 -24 -2 -15 8 -15 22 13 18 18 24 15 28 32 11 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.medi.feh">
+ 127 213 11 rmoveto
+ 36 6 52 10 67 16 67 16 49 17 31 21 69 45 49 76 30 83 -96 callgsubr
+ -48 -55 -42 -70 -37 -83 -59 -21 -65 -8 -72 -7 rrcurveto
+ -71 -7 -87 0 -15 51 -101 callgsubr
+ 45 -4 52 3 60 10 rrcurveto
+ 328 291 51 callgsubr
+ -26 -12 -23 -6 -21 -72 callsubr
+ 29 31 10 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.medi.hah">
+ -45 271 159 rmoveto
+ 57 16 46 30 35 44 35 44 27 49 20 54 -96 callgsubr
+ -49 -57 -43 -69 -36 -82 -43 -8 -31 -11 -22 -15 -22 -15 -26 -29 -28 -44 rrcurveto
+ -35 -53 -21 -46 -7 -37 rrcurveto
+ -104 callgsubr
+ 31 49 43 40 55 28 52 27 18 -2 60 15 rrcurveto
+ 98 238 8 callsubr
+ -8 -22 -1 -14 7 -17 75 callgsubr
+ 14 28 32 11 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.medi.heh">
+ 147 463 143 rmoveto
+ 57 16 47 30 35 44 35 44 28 49 19 54 16 61 -9 -9 callsubr
+ -48 -55 -42 -70 -37 -83 -59 -11 -47 -15 -36 -19 -73 -39 -46 -56 -38 -76 rrcurveto
+ -19 -39 -22 -45 -25 -50 7 callgsubr
+ 32 68 24 55 19 42 37 83 44 50 84 34 41 17 59 17 76 18 rrcurveto
+ 99 238 rmoveto
+ 13 -5 10 -15 9 -24 9 -24 -3 -15 -16 -7 -25 -12 -24 -8 -21 -1 -13 7 -19 21 15 20 18 24 15 28 32 11 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.medi.meem">
+ -19 -41 callsubr
+ </CharString>
+ <CharString name="fehDotless-ar.medi.ragaa">
+ -94 248 115 rmoveto
+ 18 6 21 12 25 19 60 45 42 70 28 76 -96 callgsubr
+ -52 -61 -40 -70 -35 -77 -36 -6 -40 -12 -25 -19 -25 -19 -21 -31 -19 -44 rrcurveto
+ -4 -11 -8 -10 -4 -10 -3 -10 -1 -6 -1 -2 40 -30 rcurveline
+ 19 23 23 22 23 17 16 11 13 7 11 5 29 12 48 10 26 8 rrcurveto
+ 72 229 15 callsubr
+ -25 -8 -21 -1 -13 7 -16 22 13 20 18 24 15 27 31 11 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.medi.reh">
+ -50 435 444 -65 callsubr
+ -49 -56 -43 -69 -36 -82 -20 -4 rcurveline
+ -1 hlineto
+ -2 -4 -13 0 -4 -1 rrcurveto
+ -2 -1 hlineto
+ -86 -9 -24 -5 -45 -74 -7 -11 -6 -12 -6 -13 rrcurveto
+ -1 vlineto
+ -10 -12 -5 -11 -9 vvcurveto
+ -10 8 -13 9 6 5 5 9 7 vhcurveto
+ 14 14 24 10 33 7 33 7 31 8 29 8 rrcurveto
+ 1 1 vlineto
+ 11 3 11 3 11 2 75 17 54 28 43 54 2 callsubr
+ -141 -200 -54 callgsubr
+ 14 27 32 11 rrcurveto
+ 13 -6 25 -31 -29 vvcurveto
+ -11 -5 -8 -10 -5 vhcurveto
+ -25 -12 -24 -7 -22 -2 rrcurveto
+ -9 4 -13 14 15 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.medi.sad">
+ 176 677 435 -65 callsubr
+ -48 -56 -43 -69 -37 -82 -30 -8 -42 -11 -56 -14 rrcurveto
+ -13 -52 -48 -7 -45 hhcurveto
+ -52 -39 13 30 -23 hvcurveto
+ -8 10 -4 13 16 vvcurveto
+ 29 13 38 24 49 vhcurveto
+ -88 callsubr
+ 1 -2 -2 -1 -1 -2 -1 vhcurveto
+ -64 callgsubr
+ -39 9 41 -17 58 hhcurveto
+ 19 23 1 3 27 hvcurveto
+ 45 5 47 7 49 10 79 16 105 25 56 31 79 43 54 82 32 89 26 callsubr
+ -141 -201 -54 callgsubr
+ 14 28 32 11 21 callsubr
+ -24 -12 -24 -7 -22 -2 rrcurveto
+ -9 4 -13 14 14 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.medi.yeh">
+ -19 -41 callsubr
+ </CharString>
+ <CharString name="five-ar">
+ -26 223 43 rmoveto
+ 84 87 17 112 -44 109 -39 95 -68 102 -56 -121 -29 -63 -97 -292 53 -49 47 -44 96 26 36 38 rrcurveto
+ 32 134 rmoveto
+ 7 -25 -126 -34 -55 36 -40 26 65 121 28 26 12 11 18 2 14 -10 31 -23 36 -92 10 -38 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="five-ar.dnom">
+ -99 172 30 rmoveto
+ 59 61 12 78 -31 77 -27 66 -48 72 -39 -85 -20 -44 -68 -205 37 -34 33 -31 67 19 25 26 rrcurveto
+ 23 94 rmoveto
+ 4 -18 -88 -23 -38 25 -28 18 45 85 20 18 8 8 13 1 10 -7 21 -16 26 -64 7 -27 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="five-ar.numr">
+ -99 172 299 rmoveto
+ 59 61 12 78 -31 77 -27 66 -48 72 -39 -85 -20 -44 -68 -205 37 -34 33 -31 67 19 25 26 rrcurveto
+ 23 94 rmoveto
+ 4 -18 -88 -23 -38 25 -28 18 45 85 20 18 8 8 13 1 10 -7 21 -16 26 -64 7 -27 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="five-persian">
+ 80 401 310 rmoveto
+ -44 97 -111 80 -81 69 -14 -46 -7 -23 -8 -48 8 -7 2 -2 9 -7 -43 -69 -102 -206 24 -82 47 -163 115 189 67 -50 76 -56 113 175 -51 149 rrcurveto
+ -25 -133 rmoveto
+ -11 -16 -26 -21 -20 7 -98 35 13 -59 -81 -10 -149 -19 126 256 42 60 81 -70 86 -59 37 -104 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="five-persian.dnom">
+ -99 258 217 rmoveto
+ -31 68 -78 56 -57 48 -9 -32 -5 -16 -6 -34 6 -5 1 -1 7 -5 -31 -48 -71 -144 17 -58 33 -114 80 132 47 -35 53 -39 79 123 -35 104 rrcurveto
+ -18 -93 rmoveto
+ -8 -11 -18 -15 -14 5 -68 24 9 -41 -57 -7 -104 -13 88 179 29 42 57 -49 60 -41 26 -73 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="five-persian.numr">
+ -99 258 486 rmoveto
+ -31 68 -78 56 -57 48 -9 -32 -5 -16 -6 -34 6 -5 1 -1 7 -5 -31 -48 -71 -144 17 -58 33 -114 80 132 47 -35 53 -39 79 123 -35 104 rrcurveto
+ -18 -93 rmoveto
+ -8 -11 -18 -15 -14 5 -68 24 9 -41 -57 -7 -104 -13 88 179 29 42 57 -49 60 -41 26 -73 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="four-ar">
+ -6 269 38 rmoveto
+ 23 36 19 39 22 36 rrcurveto
+ -5 3 -2 -1 0 vvcurveto
+ -37 -23 -49 -16 -56 9 -38 7 -39 15 -7 36 58 93 63 62 -109 68 -8 5 -4 10 3 9 11 32 37 11 24 18 15 34 13 35 19 29 -10 -3 -6 -4 -7 -4 rrcurveto
+ -64 -40 -47 -75 -34 -65 -72 -137 90 46 27 -71 -16 -49 -25 -36 -23 -39 -14 -25 9 -36 18 -16 53 -47 120 9 48 45 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="four-ar.dnom">
+ -99 194 27 rmoveto
+ 16 25 14 27 15 25 rrcurveto
+ -3 2 -2 0 0 vvcurveto
+ -26 -16 -34 -12 -39 7 -27 5 -27 10 -5 25 41 65 44 44 -77 47 -5 4 -3 7 2 6 8 23 26 7 17 13 10 24 9 24 13 21 -7 -3 -4 -2 -5 -3 rrcurveto
+ -44 -28 -33 -53 -24 -45 -51 -96 63 32 19 -50 -11 -34 -17 -25 -16 -27 -10 -18 6 -25 13 -11 37 -33 84 6 33 32 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="four-ar.numr">
+ -99 194 296 rmoveto
+ 16 25 14 27 15 25 rrcurveto
+ -3 2 -2 0 0 vvcurveto
+ -26 -16 -34 -12 -39 7 -27 5 -27 10 -5 25 41 65 44 44 -77 47 -5 4 -3 7 2 6 8 23 26 7 17 13 10 24 9 24 13 21 -7 -3 -4 -2 -5 -3 rrcurveto
+ -44 -28 -33 -53 -24 -45 -51 -96 63 32 19 -50 -11 -34 -17 -25 -16 -27 -10 -18 6 -25 13 -11 37 -33 84 6 33 32 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="four-persian">
+ 50 219 4 rmoveto
+ 71 106 -16 135 -64 105 -2 3 10 4 14 -2 107 -18 40 85 11 129 1 8 -10 -17 -1 -4 -7 -34 -103 -76 -42 76 -8 15 28 55 64 -30 39 -18 18 79 -68 -4 rrcurveto
+ -35 -2 -92 -78 3 -62 -74 14 3 21 -32 62 -19 -38 -15 -41 -15 -39 21 -50 34 -39 27 -42 52 -80 64 -94 -14 -135 rrcurveto
+ -2 8 4 2 4 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="four-persian.dnom">
+ -99 141 3 rmoveto
+ 50 74 -11 95 -45 73 -1 2 7 3 9 -2 75 -12 28 59 8 91 1 5 -7 -12 -1 -2 -5 -24 -72 -53 -29 53 -6 10 20 39 44 -21 28 -13 12 56 -47 -3 rrcurveto
+ -25 -2 -64 -54 2 -44 -52 10 2 15 -22 43 -13 -26 -11 -29 -10 -27 14 -35 24 -28 19 -29 36 -56 45 -66 -10 -94 -85 callgsubr
+ </CharString>
+ <CharString name="four-persian.numr">
+ -99 141 272 rmoveto
+ 50 74 -11 95 -45 73 -1 2 7 3 9 -1 75 -13 28 59 8 91 1 5 -7 -12 -1 -2 -5 -24 -72 -53 -29 53 -6 10 20 39 44 -21 28 -13 12 56 -47 -3 rrcurveto
+ -25 -2 -64 -54 2 -44 -52 10 2 15 -22 43 -13 -26 -11 -29 -10 -27 14 -35 24 -28 19 -29 36 -56 45 -66 -10 -94 -85 callgsubr
+ </CharString>
+ <CharString name="four-persian.urd">
+ 34 263 346 rmoveto
+ 1 vlineto
+ 21 30 49 108 41 129 -103 -35 rcurveline
+ -34 -96 -37 49 -42 59 -30 -3 rlinecurve
+ -113 -13 -8 -212 52 -89 39 -66 51 -101 -12 -107 6 4 3 5 1 5 17 64 31 63 -9 78 -22 79 -54 84 -29 72 51 71 81 -172 41 -12 3 -1 3 3 3 3 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="four-persian.urd.dnom">
+ -99 176 242 rmoveto
+ 1 vlineto
+ 15 21 34 76 29 90 -72 -25 rcurveline
+ -24 -67 -26 34 -29 42 -21 -2 rlinecurve
+ -94 callsubr
+ 35 50 57 -121 29 -8 2 -1 2 -86 callsubr
+ </CharString>
+ <CharString name="four-persian.urd.numr">
+ -99 176 511 rmoveto
+ 1 vlineto
+ 15 21 34 76 29 90 -72 -25 rcurveline
+ -24 -67 -26 34 -29 42 -21 -2 rlinecurve
+ -94 callsubr
+ 35 50 57 -121 29 -8 2 -1 2 -86 callsubr
+ </CharString>
+ <CharString name="fullstop-ar">
+ -111 62 99 rmoveto
+ -40 -99 165 20 45 99 rlineto
+ endchar
+ </CharString>
+ <CharString name="gaf-ar">
+ 580 562 856 rmoveto
+ -31 -52 300 172 31 52 rlineto
+ -375 -880 -82 callsubr
+ </CharString>
+ <CharString name="gafsarkashabove-ar">
+ -132 -58 rmoveto
+ -31 -52 300 172 31 52 rlineto
+ endchar
+ </CharString>
+ <CharString name="ghain-ar">
+ 319 272 769 -107 callsubr
+ -66 -507 -20 callgsubr
+ </CharString>
+ <CharString name="hah-ar">
+ 319 -73 callgsubr
+ endchar
+ </CharString>
+ <CharString name="hah-ar.fina">
+ -176 387 395 rmoveto
+ -34 -32 -53 -34 -39 -28 -79 -61 rcurveline
+ -45 -41 -44 -65 -44 -88 -44 -88 -15 -79 15 -71 14 -65 34 -46 53 -26 121 -59 144 26 116 54 67 31 53 40 41 49 2 2 -1 1 -4 -1 -4 -1 -3 0 -3 -1 rrcurveto
+ -18 -7 -48 -10 -78 -13 -52 -9 -52 -3 -52 2 -117 4 -92 35 -61 69 -20 22 -2 29 16 34 34 73 67 73 59 53 32 29 24 22 14 12 40 35 43 37 32 44 rrcurveto
+ 13 19 16 35 18 51 18 51 -7 33 -33 14 rrcurveto
+ 10 -25 -39 4 -53 hhcurveto
+ -53 -36 -2 -4 -16 hvcurveto
+ -16 -24 -34 -56 -9 -42 -3 -15 4 -7 12 3 rrcurveto
+ 4 23 34 2 46 hhcurveto
+ 46 38 -3 -7 31 hvcurveto
+ 2 -1 3 -4 3 -9 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.init">
+ 194 21 124 rmoveto
+ -21 -124 8 1 6 2 8 2 rlinecurve
+ 2 1 1 2 hhcurveto
+ 22 6 25 4 23 4 rrcurveto
+ 1 vlineto
+ 21 4 19 4 16 3 rrcurveto
+ -2 -10 -6 -18 -10 vvcurveto
+ -4 2 -2 4 20 3 39 13 6 vhcurveto
+ 105 27 84 14 99 31 64 138 rcurveline
+ -5 -9 -9 -2 -8 hhcurveto
+ -12 -11 5 10 -9 hvcurveto
+ -7 25 -10 23 -11 21 rrcurveto
+ 26 -14 -27 27 39 callsubr
+ -42 -95 -27 -75 -60 -11 -60 -10 -60 -11 rrcurveto
+ 352 74 rmoveto
+ 1 -2 0 -2 -2 vvcurveto
+ -3 -2 -2 -4 -1 vhcurveto
+ -142 -28 14 35 12 23 callgsubr
+ 13 -18 10 -23 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.init.ain">
+ 261 267 145 rmoveto
+ -67 -10 -141 -34 -20 74 -14 -37 -13 -42 -12 -48 1 -30 28 -14 27 -3 72 -7 28 11 61 13 -2 -12 -15 -36 19 7 16 6 3 29 7 14 105 27 83 16 99 32 64 137 rcurveline
+ -24 -10 -18 2 -15 16 -14 48 -21 46 -40 20 -24 12 -23 -2 -21 -14 -61 -42 -41 -94 -27 -75 rrcurveto
+ 171 41 rmoveto
+ 3 -7 -2 -4 -6 -1 -141 -28 rcurveline
+ 84 callgsubr
+ 44 39 37 -60 13 -30 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.init.dal">
+ 272 277 144 rmoveto
+ -120 -20 -37 3 -20 6 -33 10 -22 34 5 37 rrcurveto
+ 2 -3 1 -1 -3 vhcurveto
+ -84 -159 8 -102 257 67 -2 -11 -4 -15 -2 -8 -1 -5 6 -6 4 1 20 5 -1 32 7 13 107 23 104 28 78 25 63 136 rcurveline
+ -21 -9 -23 2 -13 15 -12 51 -22 43 -38 21 -96 52 -78 -197 -26 -72 rrcurveto
+ 170 42 rmoveto
+ 3 -7 2 -3 -11 -2 -140 -28 rcurveline
+ 16 34 13 38 28 23 17 14 23 -4 15 -13 16 -14 10 -17 8 -21 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.init.feh">
+ 427 425 168 rmoveto
+ -71 -17 -102 -19 -82 -4 -59 -4 -59 8 -13 44 -13 -34 -13 -43 -13 -51 -91 callsubr
+ 100 -10 135 32 84 18 -2 -12 -15 -32 19 2 16 6 3 30 7 14 rrcurveto
+ 105 27 83 17 99 31 64 137 rcurveline
+ -23 -11 -19 3 -15 17 -14 48 -21 46 -40 20 -24 12 -23 -2 -21 -14 -61 -42 -42 -96 -26 -75 rrcurveto
+ 171 42 rmoveto
+ 3 -7 -2 -3 -6 -1 -141 -29 rcurveline
+ 84 callgsubr
+ 44 39 37 -59 13 -31 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.init.hah">
+ 150 5 vmoveto
+ -104 callgsubr
+ 8 13 16 22 25 28 25 28 53 35 83 42 83 42 58 44 35 44 35 44 24 48 13 51 13 51 -9 31 -33 14 -32 13 -39 4 -45 -7 -45 -7 -33 -12 -22 -15 rrcurveto
+ -33 -23 -23 -42 -14 -61 -14 -61 5 -39 21 -19 -29 -17 -25 -19 -22 -21 -50 -48 -25 -80 -16 -80 rrcurveto
+ 399 383 rmoveto
+ -3 -3 0 0 0 vvcurveto
+ -43 -31 -42 -20 -49 -20 rrcurveto
+ -1 1 -1 1 1 vvcurveto
+ -14 28 -20 22 -11 31 14 11 29 9 45 6 49 6 35 -10 12 -32 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.init.heh">
+ 268 47 -242 rmoveto
+ 45 97 42 72 39 49 74 92 69 52 87 71 39 32 41 48 45 62 13 19 17 35 10 callsubr
+ -33 -12 -22 -15 rrcurveto
+ -33 -24 -23 -42 -12 -62 -12 -62 12 -51 37 -41 -3 -3 rcurveline
+ -45 -36 -36 -35 -27 -35 -52 -67 -42 -79 -39 -78 -9 -18 rcurveline
+ 4 29 1 2 -54 -66 -3 -39 63 callgsubr
+ 8 -23 15 29 18 36 rrcurveto
+ 339 533 rmoveto
+ -16 35 -28 31 -14 38 15 12 32 9 49 5 49 5 29 -12 10 -30 -34 -32 -54 -33 -38 -28 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.init.heh.ragaa">
+ 187 48 -240 rmoveto
+ 32 70 39 55 49 50 44 46 47 41 48 38 48 38 47 51 45 63 13 19 16 35 10 callsubr
+ -34 -11 -21 -16 rrcurveto
+ -33 -23 -23 -42 -12 -62 -12 -62 13 -51 37 -42 -1 -1 -2 -1 -1 -1 -58 -46 -44 -50 -29 -56 -10 -19 -8 -21 -11 -18 -7 -15 rcurveline
+ 47 callsubr
+ -4 -42 2 -29 6 -17 rlinecurve
+ 8 -23 16 30 18 35 rrcurveto
+ 256 409 rmoveto
+ -16 36 -27 31 -15 37 15 12 32 10 49 5 49 5 29 -12 10 -29 -34 -32 -53 -35 -39 -28 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.init.meem">
+ 203 243 250 rmoveto
+ -95 -30 -57 -30 -20 -29 -36 -53 -14 -45 -21 -61 21 -2 rcurveline
+ 19 46 51 34 55 17 51 16 68 32 42 18 102 44 82 83 37 109 rrcurveto
+ 8 24 5 25 23 vvcurveto
+ 23 -9 16 -19 8 vhcurveto
+ -32 13 -39 3 -45 -7 -45 -7 -33 -11 -22 -15 -28 -20 -21 -34 -14 -48 -14 -48 3 -47 20 -47 rrcurveto
+ 94 37 rmoveto
+ -21 27 -16 30 -13 33 15 12 32 9 49 5 49 5 29 -11 10 -30 -34 -32 -54 -28 -46 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.init.ragaa">
+ 314 173 206 rmoveto
+ -3 -3 -9 -4 -15 -7 -27 -12 -22 -14 -20 -15 -24 -19 -18 -22 -11 -24 -6 -13 -15 -32 -3 -13 42 -29 rcurveline
+ 17 14 29 13 16 14 18 13 20 14 25 15 44 26 42 25 42 25 42 25 41 39 39 55 13 19 16 35 18 51 18 51 -8 33 -33 14 -32 13 -38 4 -45 -7 rrcurveto
+ -45 -7 -33 -12 -22 -15 -35 -25 -26 -57 -11 -50 -9 -44 -2 -58 30 -16 rrcurveto
+ 100 29 rmoveto
+ -16 36 -27 31 -14 37 15 12 31 9 49 5 49 5 30 -11 10 -30 -34 -32 -54 -34 -39 -28 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.init.reh">
+ 180 18 hmoveto
+ 6 5 5 9 7 hvcurveto
+ 19 19 37 19 54 21 51 16 68 31 42 18 102 44 82 84 37 109 rrcurveto
+ 8 24 5 24 23 vvcurveto
+ 23 -9 16 -19 8 vhcurveto
+ -32 13 -39 4 -45 -7 -45 -7 -33 -12 -22 -15 -50 -36 -44 -112 35 -89 -45 -20 -43 -21 -44 -21 -44 -21 -30 -39 -17 -55 77 callgsubr
+ 9 -13 9 vhcurveto
+ 319 262 rmoveto
+ -21 27 -16 31 -13 33 15 12 32 9 49 5 49 5 29 -12 10 -30 -34 -32 -54 -28 -46 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.init.sad">
+ 433 106 333 rmoveto
+ -2 -1 0 -14 callsubr
+ -42 9 49 -15 60 hhcurveto
+ 31 35 4 8 40 hvcurveto
+ 60 11 50 10 42 9 rrcurveto
+ -2 -10 -6 -16 -10 vvcurveto
+ -4 3 -2 5 vhcurveto
+ 2 hlineto
+ 16 6 3 30 6 14 105 27 84 17 99 31 64 137 rcurveline
+ -5 -9 -9 -2 -8 hhcurveto
+ -12 -11 6 10 -9 hvcurveto
+ -7 25 -9 22 -12 21 rrcurveto
+ 26 -15 -26 28 39 callsubr
+ -43 -96 -26 -75 -41 -6 -47 -8 -52 -11 rrcurveto
+ -8 -40 -35 -5 -32 hhcurveto
+ -53 -37 13 35 -17 hvcurveto
+ -4 7 -2 9 11 24 callsubr
+ 3 -3 0 -2 vhcurveto
+ 494 -121 rmoveto
+ 1 -2 0 -2 -1 vvcurveto
+ -4 -2 -2 -4 -1 vhcurveto
+ -141 -28 14 35 11 23 callgsubr
+ 12 -18 11 -23 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.init.yeh">
+ 150 5 vmoveto
+ -104 callgsubr
+ 8 13 25 25 42 36 42 36 54 37 69 39 69 39 55 49 40 60 13 19 16 36 18 51 18 51 -7 32 -33 14 -32 13 -39 4 -45 -7 -45 -7 -33 -12 -22 -15 rrcurveto
+ -33 -23 -23 -42 -14 -61 -14 -61 5 -39 21 -19 -29 -17 -25 -19 -22 -21 -50 -48 -25 -80 -16 -80 rrcurveto
+ 399 383 rmoveto
+ -3 -3 0 0 0 vvcurveto
+ -43 -31 -42 -20 -49 -20 rrcurveto
+ -1 1 -1 1 1 vvcurveto
+ -14 28 -20 22 -11 31 14 11 29 9 45 6 49 6 35 -10 12 -32 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.medi">
+ -83 393 238 rmoveto
+ -90 -52 -122 -36 -154 -20 rrcurveto
+ -1 -3 vlineto
+ -24 -129 4 1 8 2 11 2 rlinecurve
+ 211 54 130 64 49 74 29 45 21 35 23 54 8 18 -3 14 -12 9 -18 14 -32 10 -46 7 -46 7 -34 3 -21 -1 -18 -38 -19 -35 -17 -93 callgsubr
+ rrcurveto
+ 13 -3 21 -2 30 -1 36 -1 68 -3 7 -24 -2 -3 -3 -3 -6 -3 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.medi.ain">
+ 31 507 231 rmoveto
+ -94 -50 -94 -37 -117 -15 -52 -7 -39 2 -27 10 -24 8 -15 14 -6 21 -13 -35 -13 -43 -13 -50 1 -29 27 -14 28 -3 55 -5 55 2 55 9 132 23 111 62 63 95 rrcurveto
+ 29 45 21 35 23 54 7 18 -2 -43 callgsubr
+ -31 9 -45 4 -45 4 -35 3 -23 6 -18 -38 -19 -35 -17 -93 callgsubr
+ 13 -3 22 -1 30 -1 rrcurveto
+ 30 -1 26 -56 callgsubr
+ -2 -3 -3 -3 -6 -3 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.medi.dal">
+ -73 47 9 rmoveto
+ 65 -36 203 73 94 110 38 44 35 57 16 49 7 21 -3 15 -10 8 -18 14 -33 8 -45 4 -45 4 -34 6 callgsubr
+ 36 -9 3 -10 -21 -13 -187 -99 -163 -24 15 111 rrcurveto
+ 8 -2 0 -5 -8 vhcurveto
+ -32 -43 -52 -109 71 -39 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.medi.feh">
+ 74 246 16 rmoveto
+ 44 8 39 9 35 11 107 33 66 55 57 86 21 31 25 42 9 40 4 16 -3 11 -8 7 -19 15 -40 6 -32 5 -33 5 -45 2 -28 7 rrcurveto
+ -1 hlineto
+ -18 -38 -19 -35 -16 -39 -6 -12 1 -6 6 -1 13 -3 21 -1 30 -1 36 -1 67 -3 7 -24 -2 -3 -2 -3 -6 -3 -90 -48 -97 -31 -121 -17 -71 -10 -121 -10 -17 60 rrcurveto
+ -101 callgsubr
+ 49 -5 64 5 77 14 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.medi.hah">
+ -96 174 261 rmoveto
+ -32 -8 -29 -15 -25 -23 -17 -16 -15 -21 -12 -26 -16 -33 -14 -49 -14 -65 rrcurveto
+ -104 callgsubr
+ 26 49 39 33 47 25 52 28 62 17 48 32 43 27 37 39 33 50 29 46 22 34 22 54 7 18 -1 -59 callgsubr
+ -34 4 -23 48 callsubr
+ -40 -5 -11 0 -7 6 -1 13 -3 22 -2 30 -1 30 -1 27 -2 21 -5 19 -5 11 -6 3 -8 -1 -2 -4 -4 -6 -4 -74 -38 -52 -24 -80 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.medi.heh">
+ 89 146 -51 rmoveto
+ 38 68 100 71 160 74 59 28 45 40 36 56 29 45 22 35 22 54 7 18 -1 -59 callgsubr
+ -35 6 callgsubr
+ 20 -5 10 -6 2 -8 -1 -3 -3 -2 -6 -3 -49 -26 3 -1 -53 -15 rrcurveto
+ -55 -16 -46 -13 -45 -25 -118 -65 -77 -145 -62 -125 -9 -18 rcurveline
+ 4 30 rlineto
+ -23 callsubr
+ 31 62 31 64 40 71 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.medi.heh.ragaa">
+ 27 520 184 rmoveto
+ 32 37 1 4 30 52 16 28 0 19 -15 9 -45 28 -118 35 -63 11 -21 -41 -3 -8 -22 -54 -5 -10 0 -5 5 -1 56 -10 86 -28 42 -24 -2 -1 -2 -2 -2 -1 rrcurveto
+ -1 hlineto
+ -29 -15 -35 -11 -41 -7 -35 -6 -34 -9 -32 -13 -70 -28 -57 -56 -34 -65 -18 -35 -20 -39 -21 -41 -1 -2 rcurveline
+ -7 -15 47 callsubr
+ -5 -37 1 -29 8 -22 rlinecurve
+ 44 callsubr
+ 8 20 10 20 11 26 12 27 10 25 11 25 32 72 42 47 70 28 44 18 60 10 48 20 40 17 49 42 29 35 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.medi.meem">
+ -58 18 hmoveto
+ 3 hlineto
+ 2 5 2 5 4 6 16 25 20 23 25 18 37 24 63 28 49 19 85 33 65 44 48 73 29 45 21 34 23 54 8 18 -2 15 -12 9 -18 14 -32 8 -45 4 rrcurveto
+ -45 4 -34 4 -23 6 -1 -1 rcurveline
+ -19 -39 -18 -33 -17 -40 -5 -11 0 -6 6 -1 38 -9 126 11 11 -36 -69 callsubr
+ -50 -27 8 2 -56 -16 -50 -15 -43 -11 -44 -16 -48 -17 -35 -23 -22 -29 rrcurveto
+ -21 -28 -19 -44 -16 -60 -6 -25 -5 -11 -10 -22 11 -1 rcurveline
+ 1 -1 3 -1 3 1 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.medi.ragaa">
+ -166 318 274 rmoveto
+ -91 -48 8 9 -89 -41 -61 -29 -41 -35 -20 -42 -3 -6 -14 -34 -3 -6 -1 -3 -1 -4 -2 -5 42 -30 rcurveline
+ 17 13 29 15 16 14 28 21 23 14 20 7 42 15 32 23 31 33 16 18 19 26 22 34 20 31 20 28 16 34 9 19 13 16 -1 29 -1 7 -3 7 -6 4 rrcurveto
+ -18 14 -32 12 -45 10 -45 10 -33 8 -23 6 rrcurveto
+ -1 hlineto
+ -18 -38 -19 -35 -17 -93 callgsubr
+ 56 -13 54 -9 51 -18 8 -4 5 -4 1 -6 -1 -3 -4 -3 -6 -3 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.medi.reh">
+ -85 392 288 rmoveto
+ -36 -19 -33 -15 -27 -11 -53 -23 -57 -14 -55 -21 -28 -11 -42 -18 -14 -21 -16 -23 -4 -30 -13 -27 -93 callsubr
+ 38 38 70 22 57 22 98 37 62 35 52 80 29 45 22 35 22 54 7 18 -1 -43 callgsubr
+ -33 8 -45 4 rrcurveto
+ -45 4 -34 4 -23 6 -18 -38 -19 -35 -17 -93 callgsubr
+ 13 -3 22 -2 30 -1 36 -1 68 -3 6 -24 -1 -3 -3 -2 -6 -4 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.medi.sad">
+ 177 83 7 rmoveto
+ 119 -18 124 16 127 50 127 50 92 83 56 115 5 9 6 14 7 18 7 18 -2 -59 callgsubr
+ -35 4 -22 6 -19 -38 -19 -34 -16 -40 rrcurveto
+ -6 -11 0 -7 7 -1 13 -3 21 -1 30 -1 30 -1 27 -56 callgsubr
+ -1 -1 -4 -4 -6 -5 -22 -12 -19 -9 -18 -6 -73 -26 -78 -24 -86 -20 rrcurveto
+ -101 -23 -119 -12 -45 67 -19 28 8 48 34 68 28 callsubr
+ -10 -14 -15 -23 -56 callsubr
+ -15 -34 -11 -36 -11 -36 -2 -32 7 -30 rrcurveto
+ 7 -30 23 -18 43 -6 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.medi.yeh">
+ -77 12 2 rmoveto
+ 30 56 52 39 63 27 76 32 77 24 60 50 16 13 19 23 21 33 35 54 9 15 22 53 7 18 -2 -43 callgsubr
+ -32 9 -45 4 -45 4 -34 3 -22 48 callsubr
+ -39 -5 -12 0 -6 6 -1 13 -3 22 -2 30 -1 30 -1 26 -56 callgsubr
+ -1 -2 -5 -2 -9 -3 -72 -23 -75 -21 -71 -24 rrcurveto
+ -68 -23 -37 -27 -30 -65 -15 -32 -14 -48 -13 -63 -105 callsubr
+ endchar
+ </CharString>
+ <CharString name="hamza-ar">
+ 67 84 hmoveto
+ 39 46 6 12 25 hvcurveto
+ 34 16 29 38 30 41 28 39 26 32 -2 19 -5 51 -72 -16 -26 46 28 24 23 8 38 10 8 15 25 30 10 17 rrcurveto
+ 17 10 12 23 -14 hhcurveto
+ -14 -35 -20 -11 -15 hvcurveto
+ -91 -63 -91 -118 26 -45 11 -19 27 -19 35 -8 17 -4 11 -10 -24 -12 -48 -24 -80 -28 -44 -28 rrcurveto
+ -16 -25 18 -3 30 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="hamzaabove-ar">
+ 10 -47 -106 callgsubr
+ endchar
+ </CharString>
+ <CharString name="hamzabelow-ar">
+ 10 -47 -106 callgsubr
+ endchar
+ </CharString>
+ <CharString name="heh-ar">
+ -117 -79 callsubr
+ </CharString>
+ <CharString name="heh-ar.fina">
+ -168 78 135 rmoveto
+ 8 9 1 3 9 hvcurveto
+ 32 9 27 17 21 24 13 -189 rcurveline
+ 74 138 -18 263 rlineto
+ 44 -12 26 -25 10 vhcurveto
+ 2 -6 -6 2 -7 hhcurveto
+ -20 -22 -12 -23 -25 hvcurveto
+ -9 -8 -14 -18 -18 -26 -33 -47 -37 -65 -15 -61 rrcurveto
+ -2 -9 -2 -9 -8 vvcurveto
+ -41 46 -23 32 vhcurveto
+ 93 153 rmoveto
+ -7 -1 -7 -1 -6 vhcurveto
+ -3 -11 -10 -2 -10 hhcurveto
+ -32 -27 14 20 -10 hvcurveto
+ -3 5 -2 5 4 vvcurveto
+ 5 2 4 4 5 vhcurveto
+ 8 10 10 9 12 10 rrcurveto
+ 7 8 8 3 10 hhcurveto
+ 38 7 -36 -40 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.init">
+ 221 343 391 rmoveto
+ -15 -17 76 callgsubr
+ -148 -24 rcurveline
+ -23 -130 60 16 61 11 60 16 rlinecurve
+ -1 vlineto
+ 2 2 7 0 2 hhcurveto
+ 11 hlineto
+ 151 81 67 101 66 hvcurveto
+ 30 46 17 41 4 38 rrcurveto
+ 1 11 1 11 11 vvcurveto
+ 17 -2 16 -3 17 vhcurveto
+ -5 28 -4 30 -5 31 -7 45 -13 29 -18 12 rrcurveto
+ 8 -12 -13 3 -13 hhcurveto
+ -8 -8 57 callgsubr
+ -30 -32 -15 -43 rrcurveto
+ -1 -1 0 0 vhcurveto
+ -3 3 -12 callsubr
+ 6 2 6 hhcurveto
+ 20 17 -18 -78 callgsubr
+ 13 -70 74 callgsubr
+ -15 59 callgsubr
+ 11 13 vvcurveto
+ 28 -20 57 -31 vhcurveto
+ -117 -201 rmoveto
+ 3 1 3 -11 callsubr
+ -17 -15 -23 -12 -28 -8 rlinecurve
+ -1 hlineto
+ -6 -12 13 9 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.init.ain">
+ 338 445 389 rmoveto
+ -15 -16 76 callgsubr
+ rrcurveto
+ -2 vlineto
+ -66 -14 -147 -38 -22 77 -78 callsubr
+ 41 -4 40 3 38 10 38 10 39 10 40 10 rrcurveto
+ 1 1 1 1 hhcurveto
+ 1 11 vlineto
+ 151 81 67 101 66 hvcurveto
+ 30 46 16 41 4 38 rrcurveto
+ 1 11 1 11 11 vvcurveto
+ 17 -1 16 -3 17 vhcurveto
+ -5 28 -4 30 27 callsubr
+ 3 5 callsubr
+ -30 -32 -15 -43 rrcurveto
+ -1 vlineto
+ -3 2 -12 callsubr
+ 7 2 6 hhcurveto
+ 20 16 -18 -78 callgsubr
+ 14 -70 74 callgsubr
+ -15 59 callgsubr
+ 11 13 vvcurveto
+ 28 -21 57 -31 vhcurveto
+ -116 -201 rmoveto
+ 3 1 3 1 29 callgsubr
+ -14 -26 9 hvcurveto
+ 2 -3 -17 -15 -23 -11 -28 -8 rlinecurve
+ -2 hlineto
+ -6 -11 12 9 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.init.dal">
+ 237 195 29 rmoveto
+ 1 7 7 1 7 hhcurveto
+ 90 -1 70 24 53 41 60 46 72 107 8 76 6 54 -13 55 -10 62 -29 181 -133 -106 -65 -88 -25 -34 -30 -32 -14 -43 -3 -8 20 1 6 6 31 34 22 45 44 22 rrcurveto
+ 29 14 24 -21 9 -19 31 -64 14 -82 -4 -94 -34 -21 -42 -16 -49 -9 16 31 17 32 15 32 28 58 -50 113 -72 -84 -50 -58 -39 -70 -31 -75 rrcurveto
+ 1 vlineto
+ -33 -7 -38 -11 -33 9 -24 6 -13 30 2 29 1 4 -5 2 -4 -6 -40 -58 -28 -101 65 -32 39 -19 81 33 37 9 rrcurveto
+ 52 170 rmoveto
+ 23 49 38 21 22 -63 rrcurveto
+ 0 1 -1 1 -2 vhcurveto
+ -18 -15 -25 -12 -25 -8 -6 -2 -18 18 7 15 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.init.feh">
+ 453 422 51 rmoveto
+ 154 -1 82 66 67 102 30 46 16 42 4 38 6 43 callgsubr
+ 1 -22 -7 -48 -16 -50 -53 -28 -38 -25 -34 -31 -31 -14 -44 rrcurveto
+ -4 -10 25 7 3 3 16 17 14 18 14 20 14 20 17 14 22 11 30 15 22 -24 9 -16 32 -65 13 -80 -4 -96 -34 -21 -41 -15 -49 -9 16 31 15 32 16 31 rrcurveto
+ 14 29 -3 32 -20 36 -20 36 -29 -3 -36 -42 -50 -58 -38 -69 -31 -75 -52 -11 -88 -16 -64 -3 -62 -3 -78 3 -12 45 -13 -34 -13 -43 -13 -51 -91 callsubr
+ rrcurveto
+ 105 -11 155 36 86 22 rrcurveto
+ -1 3 13 3 4 hhcurveto
+ 117 172 rmoveto
+ -16 -14 -23 -12 -29 -9 -3 -1 -5 3 -6 7 -6 7 -1 -65 callgsubr
+ -1 1 -1 1 -1 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.init.hah">
+ 263 454 217 rmoveto
+ 30 23 30 -77 callgsubr
+ 16 42 3 callsubr
+ 2 24 callgsubr
+ 7 3 3 15 17 14 17 -100 callgsubr
+ 30 14 24 -22 8 -17 32 -65 13 -81 -4 -95 -33 -21 -41 -15 -50 -9 18 35 16 30 14 29 rrcurveto
+ 14 29 -4 32 -20 36 -20 36 -29 -4 -36 -42 -47 -54 -39 -67 -33 -81 -45 -8 -46 -22 -26 -17 -26 -18 -20 -24 -13 -31 -13 -31 -13 -46 -12 -60 rrcurveto
+ -104 callgsubr
+ 24 39 22 29 31 25 32 24 47 20 45 10 rrcurveto
+ 3 12 10 1 7 hhcurveto
+ 85 -1 70 21 57 44 rrcurveto
+ -97 108 rmoveto
+ -17 -15 -22 -12 -28 -8 -3 -1 -5 3 -6 7 -6 7 -1 -65 callgsubr
+ 0 0 0 1 -3 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.init.heh">
+ 416 387 148 rmoveto
+ 85 -1 71 22 57 44 30 23 29 -77 callgsubr
+ 16 41 4 38 7 43 callgsubr
+ 2 -22 -7 -48 -16 -50 -53 -29 -38 rrcurveto
+ -25 -33 -30 -33 -15 -43 rrcurveto
+ -4 -1 3 -2 7 hhcurveto
+ 7 5 2 3 3 hvcurveto
+ 15 17 14 18 14 20 14 20 18 15 22 11 30 15 22 -25 9 -16 32 -66 13 -80 -4 -94 -34 -21 -41 -15 -49 -9 16 31 16 32 16 32 14 29 -4 32 -20 35 rrcurveto
+ -20 35 -28 -3 -36 -42 -50 -58 -39 -68 -31 -76 rrcurveto
+ 1 vlineto
+ -3 -1 rlineto
+ -1 hlineto
+ -36 -12 -27 -17 -20 -19 -20 -19 -25 -29 -31 -40 -105 callgsubr
+ 41 49 44 34 54 30 rrcurveto
+ -1 vlineto
+ 4 18 15 6 22 hhcurveto
+ 116 172 78 callgsubr
+ 3 -6 7 -6 7 -2 -65 callgsubr
+ 0 0 -1 2 -3 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.init.meem">
+ 277 466 211 rmoveto
+ 30 23 30 33 30 46 30 46 16 42 4 38 7 62 -14 53 32 callsubr
+ 3 -22 -7 -48 -16 -50 -54 -29 -38 -25 -33 72 callgsubr
+ 15 17 15 18 -100 callgsubr
+ 30 14 23 -24 9 -16 31 -66 13 -79 -4 -95 -84 callgsubr
+ 14 29 -4 32 -20 36 -20 36 -28 -4 -36 -42 -47 -54 -40 -68 -33 -81 -15 -4 -33 -12 -13 -6 -62 -26 -36 -46 -27 -63 -14 -31 -12 -33 -14 -32 21 -2 rcurveline
+ 13 31 16 25 21 19 19 17 25 13 31 12 21 8 22 7 21 7 rrcurveto
+ 2 1 0 1 2 hvcurveto
+ 74 23 14 -5 19 -5 20 3 rlinecurve
+ 52 8 32 16 40 31 rrcurveto
+ -96 107 78 callgsubr
+ 2 -74 callsubr
+ 16 17 6 17 6 13 -14 11 -31 rrcurveto
+ 0 1 0 1 -3 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.init.ragaa">
+ 314 256 103 rmoveto
+ 86 -1 70 21 56 44 52 40 80 108 8 81 7 62 -15 53 -9 56 -7 45 -13 29 -18 12 -18 12 -21 2 -22 -7 -48 -16 -51 -53 -28 -38 -25 -34 72 callgsubr
+ 16 17 14 19 14 20 14 20 18 14 21 11 30 14 23 -22 8 -17 32 -65 14 -81 -5 -95 -33 -21 -41 -15 -50 -9 16 31 16 32 16 32 rrcurveto
+ 14 29 -4 31 -20 36 -20 36 -28 -3 -36 -42 -50 -58 -39 -69 -31 -76 -20 -5 -20 -6 -21 -8 -56 -25 -31 -33 -38 -41 -21 -24 -14 -20 -7 -18 46 -33 rcurveline
+ 1 2 1 1 2 2 62 39 54 51 90 9 rrcurveto
+ 116 171 rmoveto
+ -16 -14 -23 -11 -29 -9 -3 -1 -4 3 -74 callsubr
+ 15 17 6 18 6 15 -17 10 -31 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.init.reh">
+ 224 348 425 rmoveto
+ -15 -17 -11 -23 -19 hvcurveto
+ -46 -53 -39 -66 -33 -78 rrcurveto
+ 1 vlineto
+ -1 -2 0 -2 -1 -2 rrcurveto
+ -1 1 hlineto
+ -4 -1 -5 0 -4 -1 rrcurveto
+ -1 hlineto
+ -40 -12 -30 -12 -23 -25 -21 -22 -20 -30 -14 -32 -88 callgsubr
+ 35 35 37 8 49 15 4 1 10 2 15 4 rrcurveto
+ 3 2 1 3 hhcurveto
+ 1 5 4 0 4 hhcurveto
+ 5 hlineto
+ 83 69 21 43 55 hvcurveto
+ 30 23 30 -77 callgsubr
+ 17 42 4 38 rrcurveto
+ 1 10 0 9 10 vvcurveto
+ 17 -1 18 -3 18 -18 callsubr
+ -30 -32 -14 25 callsubr
+ 1 rlineto
+ 7 6 1 10 callgsubr
+ 16 -18 -78 callgsubr
+ 14 -69 -81 vvcurveto
+ -11 0 -11 -1 -11 vhcurveto
+ -84 callgsubr
+ 6 11 2 12 13 vvcurveto
+ 28 -20 57 -31 vhcurveto
+ -112 -195 rmoveto
+ 3 1 3 1 3 vhcurveto
+ 11 24 14 15 17 6 rrcurveto
+ 1 3 2 0 2 hhcurveto
+ 13 12 -13 -26 9 hvcurveto
+ 2 -4 -18 -14 -22 -12 -28 -8 rlinecurve
+ -1 hlineto
+ -6 -12 13 9 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.init.sad">
+ 543 651 413 rmoveto
+ -15 -17 -11 -23 -19 hvcurveto
+ -50 -58 -38 -68 -32 -76 -41 -8 -48 -11 -57 -12 rrcurveto
+ -10 -46 -42 -5 -38 hhcurveto
+ -58 -43 13 34 -23 hvcurveto
+ -7 9 -2 12 15 vvcurveto
+ 28 12 37 23 47 -95 callgsubr
+ 2 -1 0 -1 1 vhcurveto
+ -3 hlineto
+ -2 -1 0 -57 callgsubr
+ -22 -20 vvcurveto
+ -55 -98 callsubr
+ 18 19 0 20 hhcurveto
+ 43 49 6 12 54 hvcurveto
+ 79 17 68 15 58 15 rrcurveto
+ 1 hlineto
+ 2 7 7 0 6 hhcurveto
+ 6 hlineto
+ 150 81 68 100 65 hvcurveto
+ 30 46 17 41 4 38 rrcurveto
+ 1 10 0 11 10 vvcurveto
+ 51 -10 40 -8 49 vhcurveto
+ -7 45 -13 29 -18 12 rrcurveto
+ 8 -12 -12 4 -13 hhcurveto
+ -8 -9 57 callgsubr
+ -31 -32 -14 -43 rrcurveto
+ -1 -1 -1 0 vhcurveto
+ -3 3 -1 6 vhcurveto
+ 1 hlineto
+ 7 4 2 3 3 hvcurveto
+ 16 17 14 18 -100 callgsubr
+ rrcurveto
+ 3 7 7 2 6 hhcurveto
+ 20 15 -19 -12 6 hvcurveto
+ 28 -58 14 -68 -81 vvcurveto
+ -11 1 -11 -1 -11 vhcurveto
+ -33 -21 -42 -16 -50 -9 19 37 16 32 13 26 rrcurveto
+ 6 11 3 12 13 vvcurveto
+ 28 -21 57 -31 vhcurveto
+ -114 -186 rmoveto
+ 3 1 2 2 29 callgsubr
+ -13 -26 9 hvcurveto
+ 0 0 -2 1 -2 vhcurveto
+ -16 -13 -22 -11 -29 -10 rrcurveto
+ -2 hlineto
+ -6 -12 14 8 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.init.yeh">
+ 266 457 191 rmoveto
+ 30 23 29 -77 callgsubr
+ 17 41 3 callsubr
+ 3 24 callgsubr
+ 6 3 3 15 17 14 18 -100 callgsubr
+ 30 14 23 -23 8 -17 32 -65 13 -80 -4 -95 -84 callgsubr
+ 14 29 -3 32 -20 36 -20 36 -29 -4 -36 -42 -46 -54 -40 -67 -34 -81 -15 -4 -32 -13 -14 -6 -47 -20 -32 -27 -17 -33 -17 -33 -19 -43 -23 -52 -106 callsubr
+ 20 -4 21 41 27 27 33 14 rlinecurve
+ 33 14 32 12 34 11 49 12 43 5 36 -1 36 -1 44 19 49 38 rrcurveto
+ -97 107 rmoveto
+ -17 -15 -23 -11 -28 -8 -3 -1 -4 2 -74 callsubr
+ 16 17 6 17 6 13 -14 11 -31 rrcurveto
+ 0 1 0 1 -3 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.medi">
+ -152 217 -273 rmoveto
+ 7 11 15 28 13 hvcurveto
+ 1 3 1 1 1 vvcurveto
+ 16 137 -8 -16 41 291 rlineto
+ 2 vlineto
+ 4 -1 2 -3 -2 -1 -1 -1 -3 vhcurveto
+ -90 -36 -67 -11 -113 -15 -19 -131 rcurveline
+ 59 15 108 25 58 15 -19 -68 callsubr
+ -14 -50 callgsubr
+ vhcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.medi.ain">
+ 22 39 176 rmoveto
+ -13 -35 -13 -43 -13 -50 1 -29 27 -14 28 -3 52 -5 51 4 51 11 51 11 50 12 49 13 -19 -232 rcurveline
+ -4 -41 89 callgsubr
+ 40 1 2 1 2 1 2 15 136 rcurveline
+ -8 -15 42 290 2 10 -4 2 -9 -6 rlinecurve
+ -69 -28 -110 -30 -94 1 rrcurveto
+ -50 -51 10 37 -11 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.medi.dal">
+ -107 258 -244 rmoveto
+ 14 137 -7 -16 41 291 1 7 -6 2 -6 -3 rlinecurve
+ -48 -19 -45 -14 -51 -10 -26 -3 -24 0 -16 4 -26 7 -14 34 5 30 rrcurveto
+ 3 -2 0 -2 -3 vhcurveto
+ -42 -57 -33 -107 67 -33 45 -22 110 42 39 10 -19 -232 rcurveline
+ -7 -83 11 -52 38 81 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.medi.feh">
+ 105 470 -217 rmoveto
+ 15 136 -8 -15 42 290 1 9 -4 2 -8 -5 rlinecurve
+ -19 -7 -34 -11 -48 -13 -82 -23 -111 -23 -99 8 -43 3 -26 15 -7 27 -13 -35 -13 -43 -13 -50 1 -29 27 -14 28 -3 57 -6 66 5 72 16 72 16 65 14 56 15 -19 -232 rcurveline
+ -4 -41 2 61 callgsubr
+ 2 1 2 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.medi.hah">
+ 35 375 -20 rmoveto
+ -1 -1 rlineto
+ -1 vlineto
+ -4 -51 -4 -41 2 85 callgsubr
+ 13 12 19 40 rrcurveto
+ 1 3 1 2 1 vvcurveto
+ 15 136 -8 -16 8 57 9 56 8 57 rlinecurve
+ 1 4 3 30 2 20 -6 31 rlinecurve
+ -8 41 -23 20 -37 -4 -37 -4 -40 -13 -43 -23 -61 -32 -97 -69 -41 -40 -21 -38 -20 -43 -18 -41 rrcurveto
+ -2 7 -10 3 3 vhcurveto
+ 11 18 14 16 15 14 38 34 19 19 49 32 40 27 60 33 61 -6 25 -3 18 -15 10 -29 15 -46 -4 -60 -6 -54 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.medi.heh">
+ 219 583 -63 rmoveto
+ 15 136 -8 -15 41 290 2 10 -3 2 -9 -6 rlinecurve
+ -49 -19 -42 -13 -35 -7 -80 -16 -54 -19 -58 -44 -31 -24 -35 -38 -41 -52 -105 callgsubr
+ 34 41 35 38 43 31 41 29 39 17 39 6 39 6 44 9 50 13 -19 -232 rcurveline
+ -4 -41 2 -30 6 -17 6 -17 13 12 19 40 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.medi.meem">
+ -1 335 134 rmoveto
+ 6 -35 -2 -63 -1 -46 -1 -32 -7 -194 -2 -28 -4 -42 89 callgsubr
+ 41 82 callgsubr
+ 7 121 rcurveline
+ 5 115 6 92 9 69 9 69 3 52 -2 34 -2 33 -19 22 -37 10 -37 10 -34 -2 -32 -14 -83 -38 -82 -79 -40 -80 -13 -27 -17 -28 -9 -30 rrcurveto
+ -11 -4 1 -6 5 hhcurveto
+ 5 4 2 5 3 hvcurveto
+ 14 22 12 23 13 23 28 50 62 42 61 15 30 7 28 1 24 -7 24 -7 14 -16 6 -27 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.medi.ragaa">
+ -29 287 210 rmoveto
+ -54 -3 -48 -31 -43 -59 -43 -59 -33 -52 -23 -45 -17 -29 -15 -34 -11 -33 45 -33 rcurveline
+ 6 14 6 10 8 18 18 39 28 46 36 56 36 56 44 27 53 -1 32 -1 10 -36 -12 -72 -2 -13 -2 -11 -1 -10 -4 -42 2 -30 6 -17 8 -22 15 27 18 36 14 136 rcurveline
+ -8 -15 3 18 4 22 4 25 rlinecurve
+ 8 47 10 64 -45 5 -23 3 -16 0 -9 -1 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.medi.reh">
+ -51 16 -1 rmoveto
+ 6 5 4 10 7 hvcurveto
+ 1 hlineto
+ 9 10 64 28 20 hhcurveto
+ 41 11 80 15 38 10 -18 -68 callsubr
+ -13 -50 callgsubr
+ 7 11 14 28 13 vhcurveto
+ 1 2 0 2 1 2 15 137 rcurveline
+ -8 -16 42 290 rlineto
+ 3 vlineto
+ 4 -1 3 -3 -2 -2 -1 -2 -3 vhcurveto
+ -101 -40 4 5 -110 -16 -19 -3 -19 -7 -18 -10 -25 -14 -33 -46 36 callgsubr
+ endchar
+ </CharString>
+ <CharString name="heh-ar.medi.sad">
+ 216 549 -245 rmoveto
+ 7 11 14 28 13 hvcurveto
+ 82 callgsubr
+ 14 136 rcurveline
+ -7 -15 41 290 rlineto
+ 4 vlineto
+ 3 -1 2 -3 -2 -2 0 -2 -3 vhcurveto
+ -49 -20 -65 -18 -80 -16 -80 -16 -67 -11 -56 -6 rrcurveto
+ -1 -13 -12 -1 -11 hhcurveto
+ -42 -33 8 18 -24 hvcurveto
+ -12 9 -7 15 20 vvcurveto
+ 30 14 42 27 53 -95 callgsubr
+ 2 -1 0 -2 1 vhcurveto
+ -2 hlineto
+ -41 callgsubr
+ -10 -15 -15 -24 -56 callsubr
+ -15 -34 -11 -36 rrcurveto
+ -7 -22 -3 -21 -20 vvcurveto
+ -12 1 -11 3 -11 vhcurveto
+ -45 10 55 -13 63 hhcurveto
+ 51 60 8 16 71 hvcurveto
+ 98 22 81 21 63 16 -19 -68 callsubr
+ -14 -50 callgsubr
+ vhcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.medi.yeh">
+ -35 304 86 rmoveto
+ -4 -36 -3 -86 -3 -38 -4 -41 1 61 callgsubr
+ 1 1 2 16 136 rcurveline
+ -8 -14 14 100 7 41 14 47 -3 48 rlinecurve
+ -3 33 -19 22 -37 10 -37 10 -34 -2 -32 -14 -43 -20 -34 -27 -27 -34 -36 -47 -28 -51 -28 -55 -2 -4 -26 -56 12 -1 rrcurveto
+ 43 callsubr
+ 14 21 12 24 12 23 16 28 22 25 30 20 44 30 66 28 49 -37 20 -15 7 -28 -4 -40 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hehDoachashmee-ar">
+ 377 493 350 rmoveto
+ -15 -17 -11 -23 -20 hvcurveto
+ -47 -54 -40 -68 -33 -81 -317 -11 rcurveline
+ 28 callgsubr
+ 40 32 -8 23 hhcurveto
+ 3 3 -1 1 3 hvcurveto
+ 2 21 29 2 36 hhcurveto
+ 17 hlineto
+ 151 81 66 101 66 hvcurveto
+ 30 46 17 42 4 38 rrcurveto
+ 1 11 1 10 11 vvcurveto
+ 17 -2 17 -3 17 -18 callsubr
+ -29 -32 -15 25 callsubr
+ hlineto
+ 7 6 2 10 callgsubr
+ 17 -19 -78 callgsubr
+ 13 -69 -80 vvcurveto
+ -11 0 -11 -1 -11 vhcurveto
+ -84 callgsubr
+ 6 12 3 12 13 vvcurveto
+ 28 -20 56 -31 vhcurveto
+ -115 -186 rmoveto
+ 3 1 2 -11 callsubr
+ -18 -14 -22 -12 -28 -8 rlinecurve
+ -1 0 -1 0 hvcurveto
+ -6 -12 14 9 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="hehDoachashmee-ar.fina">
+ 137 352 22 rmoveto
+ -10 41 37 -5 34 hhcurveto
+ 48 40 10 20 34 hvcurveto
+ 58 34 48 45 38 59 23 35 14 36 2 34 rrcurveto
+ 5 vlineto
+ 32 -18 23 -37 -67 callgsubr
+ -9 hvcurveto
+ -18 -9 -17 42 callsubr
+ -49 -58 -44 -76 -33 -74 -132 -22 -28 2 -149 -6 rrcurveto
+ 28 callgsubr
+ 41 31 -8 22 hhcurveto
+ 4 4 -1 1 3 hvcurveto
+ 22 4 34 7 45 11 rrcurveto
+ 27 166 rmoveto
+ 5 2 6 4 6 vhcurveto
+ 18 24 16 27 31 31 callgsubr
+ 37 callgsubr
+ -2 -5 -4 -4 vhcurveto
+ -11 -11 -18 -9 29 callsubr
+ 40 26 43 18 50 24 -10 17 -82 callgsubr
+ 55 -76 callgsubr
+ </CharString>
+ <CharString name="hehDoachashmee-ar.medi">
+ -50 178 42 rmoveto
+ -10 41 38 -5 34 hhcurveto
+ 47 40 10 20 34 hvcurveto
+ 58 34 48 45 39 59 23 35 13 36 2 34 rrcurveto
+ 5 vlineto
+ 32 -18 23 -36 -67 callgsubr
+ -10 hvcurveto
+ -18 -9 -16 42 callsubr
+ -48 -58 -45 -76 -33 -74 -119 -21 rcurveline
+ -21 -127 4 1 6 1 4 1 rlinecurve
+ 192 205 rmoveto
+ 5 2 6 4 6 -8 callsubr
+ -23 37 callgsubr
+ -3 -5 -4 -4 vhcurveto
+ -11 -11 -17 -9 29 callsubr
+ 40 26 43 18 50 24 -10 16 -82 callgsubr
+ 56 -76 callgsubr
+ </CharString>
+ <CharString name="hehDoachashmee-ar.medi.ain">
+ 128 355 42 rmoveto
+ 98 -24 79 4 58 34 58 34 48 46 38 59 23 35 14 36 2 34 2 34 -18 25 -39 19 -27 10 -35 17 71 callgsubr
+ -15 -16 -24 rrcurveto
+ -16 -24 -8 -12 2 -1 -49 -58 -44 -76 -33 -74 -28 -4 rcurveline
+ -1 hlineto
+ -1 -2 -52 -9 -52 -5 -52 1 rlinecurve
+ -52 1 -31 16 -9 30 -101 callgsubr
+ 51 -5 64 6 77 14 rrcurveto
+ 1 hlineto
+ 205 270 33 callgsubr
+ -8 -21 -1 -13 7 -19 22 35 callsubr
+ -46 -39 callgsubr
+ -61 -18 -35 2 29 40 26 43 18 50 52 -21 -1 4 45 -28 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hehDoachashmee-ar.medi.dal">
+ 21 248 36 rmoveto
+ 197 -50 106 86 77 117 47 71 14 76 -78 37 -54 20 -95 69 -53 -26 -35 -17 -41 -67 3 -2 -49 -59 -43 -74 -34 -75 -34 -5 -56 -14 -36 9 -27 7 -14 38 8 32 rrcurveto
+ 1 0 0 -1 -1 vhcurveto
+ -44 -55 -37 -114 69 -34 47 -23 124 44 39 9 rrcurveto
+ 99 245 rmoveto
+ 26 -10 28 -65 -32 -15 -22 -11 -25 -8 -24 -2 -15 8 -14 23 13 18 18 24 15 27 32 11 rrcurveto
+ 218 -46 rmoveto
+ 71 -44 -197 -45 -43 1 29 40 26 43 18 50 49 -19 6 -1 41 -25 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hehDoachashmee-ar.medi.feh">
+ 197 424 57 rmoveto
+ 98 -25 78 4 12 callsubr
+ 36 13 35 2 34 2 34 -18 26 -39 19 -27 10 -34 16 -40 22 -75 42 -41 -25 -36 -51 -16 -23 -7 -12 2 -1 rrcurveto
+ -49 -59 -44 -75 -33 -74 -45 -9 -83 -19 -58 -5 -68 -6 -78 3 -15 49 -97 callsubr
+ 55 -5 61 4 67 14 67 14 61 14 57 14 rrcurveto
+ 98 244 8 callsubr
+ -7 -22 -2 -13 7 -18 22 15 20 18 24 14 27 32 11 rrcurveto
+ 219 -45 rmoveto
+ 43 -28 -57 -23 -28 -10 -31 -11 -61 -18 -58 callgsubr
+ 4 45 -27 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hehDoachashmee-ar.medi.hah">
+ 3 230 159 rmoveto
+ 98 -25 79 5 58 34 58 34 48 46 39 -77 callsubr
+ -27 10 -35 16 -40 22 -75 42 -40 -25 54 callgsubr
+ -33 -74 -3 -1 rcurveline
+ -1 -1 hlineto
+ -34 -7 -29 -12 -23 -16 -23 -16 -22 -31 -20 -46 -21 -47 -7 -31 -10 -52 rrcurveto
+ -104 callgsubr
+ 42 67 52 48 62 27 rrcurveto
+ 379 214 rmoveto
+ 43 -28 -58 -23 -27 -10 -31 -11 -61 -17 -58 callgsubr
+ 3 45 -27 rrcurveto
+ -218 45 rmoveto
+ 13 -5 11 -14 -90 callsubr
+ -26 -12 -24 -7 -21 -2 -13 7 -18 22 15 20 18 25 14 26 32 11 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hehDoachashmee-ar.medi.heh">
+ 234 461 194 rmoveto
+ 98 -25 79 5 12 callsubr
+ 36 13 34 2 34 2 34 -18 26 -39 19 -27 10 -35 16 -40 22 -75 41 -40 -24 54 callgsubr
+ -34 -74 -36 -6 -36 -18 -36 -31 -100 -87 -91 -139 -61 -122 7 callgsubr
+ 40 85 37 75 35 63 60 107 103 72 139 33 rrcurveto
+ 99 244 13 callsubr
+ -2 -16 -16 -7 -26 -12 -24 -6 -21 -2 -13 7 -19 21 35 callsubr
+ -45 -39 callgsubr
+ -61 -17 -58 callgsubr
+ 3 45 -27 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hehDoachashmee-ar.medi.meem">
+ 64 291 157 rmoveto
+ 98 -25 78 4 58 34 56 callgsubr
+ 2 34 -18 27 -39 18 13 callgsubr
+ -75 -33 -75 -64 -10 -45 -19 -29 -29 -29 -29 -25 -36 -20 -43 -7 -13 -6 -12 -7 -13 -2 -4 -24 -53 12 -1 rrcurveto
+ 43 callsubr
+ 30 49 38 34 48 19 48 19 52 16 56 13 rrcurveto
+ 99 244 33 callgsubr
+ -6 -22 -72 callsubr
+ 27 32 11 rrcurveto
+ 218 -46 -39 callgsubr
+ -62 -17 -35 2 29 40 27 41 18 51 52 -21 -1 4 45 -28 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hehDoachashmee-ar.medi.ragaa">
+ 33 69 19 rmoveto
+ 8 6 1 0 8 6 37 25 37 20 37 16 29 13 21 8 13 3 99 -25 78 5 58 34 58 34 49 47 38 -77 callsubr
+ rrcurveto
+ -27 10 -35 16 71 callgsubr
+ -16 -16 -23 -16 -23 -8 -13 2 -1 -49 -59 -42 -75 -34 -74 -65 -30 -71 -18 -40 -51 -16 -22 -17 -35 -14 -36 42 -30 rcurveline
+ 2 1 3 1 1 1 7 6 7 5 7 5 rrcurveto
+ 290 342 rmoveto
+ 13 -6 11 -14 9 -24 9 -24 -4 -15 -16 -7 -25 -12 -23 -8 -22 -1 -12 7 -20 22 15 19 18 24 16 28 31 11 rrcurveto
+ 218 -46 rmoveto
+ 44 -27 -57 -24 -28 -10 -31 -11 -62 -17 -35 1 42 callgsubr
+ </CharString>
+ <CharString name="hehDoachashmee-ar.medi.reh">
+ 40 16 -1 rmoveto
+ 6 5 5 9 7 hvcurveto
+ 10 10 19 8 27 9 59 12 61 16 58 13 rrcurveto
+ -10 41 37 -6 34 hhcurveto
+ 47 41 10 20 34 hvcurveto
+ 58 34 48 46 38 59 23 35 14 36 2 34 rrcurveto
+ 5 vlineto
+ 32 -18 23 -37 -67 callgsubr
+ -9 hvcurveto
+ -18 -9 -17 -16 -16 -23 rrcurveto
+ -15 -21 -7 -12 -3 vvcurveto
+ -1 vlineto
+ -48 -58 -45 -76 -33 -74 -67 -10 rcurveline
+ -1 -7 -6 -2 -3 hhcurveto
+ 1 vlineto
+ -20 -3 -19 -7 -18 -10 -25 -14 -33 -47 36 callgsubr
+ 279 249 rmoveto
+ 5 2 5 4 6 vhcurveto
+ 18 24 16 27 31 11 rrcurveto
+ 14 -6 23 -31 -29 vvcurveto
+ -11 -4 -8 -10 -5 vhcurveto
+ -26 -12 -24 -8 -21 -1 rrcurveto
+ -9 5 -14 13 15 vvcurveto
+ 305 12 7 callsubr
+ -55 -16 -37 hhcurveto
+ -4 hlineto
+ 29 39 26 43 18 51 24 -10 17 -82 callgsubr
+ 55 -76 callgsubr
+ </CharString>
+ <CharString name="hehDoachashmee-ar.medi.sad">
+ 207 106 334 rmoveto
+ -2 -1 0 -57 callgsubr
+ -22 -20 vvcurveto
+ -56 21 -24 57 -8 vhcurveto
+ -3 21 21 -1 21 hhcurveto
+ 38 39 4 9 40 hvcurveto
+ 63 14 59 14 56 13 rrcurveto
+ -10 41 38 -5 34 hhcurveto
+ 47 40 9 20 34 hvcurveto
+ 56 callgsubr
+ rrcurveto
+ 4 vlineto
+ 32 -18 25 -37 18 vhcurveto
+ -27 10 -34 16 -40 22 rrcurveto
+ 14 -26 -23 7 -20 hhcurveto
+ -11 -11 -1 -5 -9 hvcurveto
+ -18 -9 -17 -17 -16 -23 rrcurveto
+ -15 -21 -8 -12 -3 vvcurveto
+ 1 -1 -49 -58 -44 -76 -33 -74 rlinecurve
+ -38 -6 -42 -7 -48 -8 rrcurveto
+ -6 -29 -27 -3 -24 hhcurveto
+ -57 -40 14 40 -17 hvcurveto
+ -3 7 -2 8 10 vvcurveto
+ 28 13 40 25 50 vhcurveto
+ -88 callsubr
+ 0 -2 vhcurveto
+ 359 -114 rmoveto
+ 6 2 5 4 6 vhcurveto
+ 18 24 15 27 32 31 callgsubr
+ -7 -22 -2 rrcurveto
+ -9 5 -13 12 15 vvcurveto
+ 305 13 7 callsubr
+ -56 -15 -37 hhcurveto
+ -4 hlineto
+ 29 40 27 42 18 50 24 -10 17 -82 callgsubr
+ 55 -76 callgsubr
+ </CharString>
+ <CharString name="hehDoachashmee-ar.medi.yeh">
+ 30 257 105 rmoveto
+ 98 -25 78 6 58 34 58 34 48 46 39 -77 callsubr
+ 13 callgsubr
+ -76 -33 -74 -63 -10 -46 -19 -29 -29 -29 -29 -25 -36 -20 -43 rrcurveto
+ -6 -13 -1 1 0 vvcurveto
+ -1 vlineto
+ 18 -32 31 31 35 23 42 14 rlinecurve
+ 41 14 44 12 46 11 rrcurveto
+ 98 246 rmoveto
+ 13 -5 11 -15 -90 callsubr
+ -25 -12 -24 -7 -22 -1 -53 callgsubr
+ 14 28 32 11 rrcurveto
+ 219 -46 rmoveto
+ 43 -27 -58 -25 -27 -10 -31 -11 -61 -17 -35 2 42 callgsubr
+ </CharString>
+ <CharString name="hehHamzaabove-ar">
+ -117 155 511 -106 callgsubr
+ 62 -344 -71 callgsubr
+ </CharString>
+ <CharString name="hehgoal-ar">
+ -117 -79 callsubr
+ </CharString>
+ <CharString name="hehgoal-ar.fina">
+ -188 114 142 rmoveto
+ -2 hlineto
+ -9 -7 -6 -12 -5 hvcurveto
+ -91 -237 32 21 46 109 rlineto
+ -8 22 33 -9 34 hhcurveto
+ 22 27 2 6 34 hvcurveto
+ 36 129 rlineto
+ -4 -29 -26 -2 -21 hhcurveto
+ -41 -25 7 4 -30 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="hehgoal-ar.init">
+ 32 298 208 rmoveto
+ -2 vlineto
+ -87 -37 -85 -14 -104 -22 -22 -133 rcurveline
+ 100 28 17 5 23 8 29 11 rlinecurve
+ 47 17 16 7 30 21 -1 -2 -2 -4 -2 -5 -15 -29 -15 -33 -14 -40 rrcurveto
+ -7 -20 -4 -20 -20 vvcurveto
+ -21 4 -20 7 -21 vhcurveto
+ -19 7 14 -23 26 hhcurveto
+ 45 24 39 29 17 hvcurveto
+ 18 32 6 45 8 40 rrcurveto
+ -24 -20 -16 -28 -45 hhcurveto
+ -27 -16 26 24 5 1 4 1 5 hvcurveto
+ -51 callgsubr
+ 8 14 4 15 rrcurveto
+ 53 53 32 59 90 vvcurveto
+ 36 -8 37 -9 22 vhcurveto
+ -11 26 -77 -113 rlineto
+ 10 -29 21 -56 -34 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="hehgoal-ar.init.ain">
+ 131 307 149 rmoveto
+ -13 -53 -56 -7 -58 hhcurveto
+ -58 -34 15 33 -9 hvcurveto
+ -13 -35 -13 -42 -13 -50 1 -29 27 -15 28 -3 39 -4 45 2 51 6 51 6 44 14 37 20 11 6 11 6 11 8 -1 -2 0 -1 -1 -1 -14 -32 -17 -33 -15 -42 rrcurveto
+ -14 -40 -1 -41 15 -41 8 -22 15 -49 callgsubr
+ 33 17 29 17 32 7 45 8 41 -10 -13 -9 -14 -12 -10 -17 -13 -40 -12 -19 20 -27 29 15 48 12 33 rrcurveto
+ 4 14 8 15 4 15 5 2 4 6 3 4 41 45 25 59 8 67 2 16 -3 22 -7 30 -7 30 -3 13 -3 -4 -77 -113 rcurveline
+ 14 -40 7 -31 -1 -21 -20 -9 -26 -8 -32 -8 rrcurveto
+ -1 -2 -1 -1 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="hehgoal-ar.init.dal">
+ 104 367 194 rmoveto
+ -3 vlineto
+ -49 -21 -46 -17 -45 -13 rrcurveto
+ -7 -23 -24 -4 -24 hhcurveto
+ -23 -25 4 6 -24 hvcurveto
+ -21 5 -14 26 27 vvcurveto
+ 5 1 5 1 5 vhcurveto
+ 2 -1 0 0 -1 0 0 -2 -1 vhcurveto
+ -21 -28 -16 -36 -9 -44 rrcurveto
+ -2 -9 -1 -10 -8 vvcurveto
+ -52 46 -26 55 22 24 4 8 26 vhcurveto
+ 70 22 45 17 45 32 -17 -34 -16 -34 -16 -45 rrcurveto
+ -7 -20 -5 -20 -20 vvcurveto
+ -21 5 -20 7 -21 vhcurveto
+ -19 7 13 -23 26 hhcurveto
+ 45 24 39 29 17 hvcurveto
+ 17 32 8 45 7 41 rrcurveto
+ -24 -20 -15 -29 -45 hhcurveto
+ -27 -16 26 24 5 0 4 1 5 hvcurveto
+ -51 callgsubr
+ 8 15 4 15 36 31 32 57 9 41 -62 callgsubr
+ 35 55 callgsubr
+ -55 -34 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="hehgoal-ar.init.feh">
+ 118 349 305 rmoveto
+ 10 -28 22 -60 -1 -33 -58 -25 -70 -25 -77 -3 -59 -2 -65 6 -12 43 -97 callsubr
+ 101 -10 110 26 77 54 -17 -34 -16 -34 -16 -45 rrcurveto
+ -14 -40 -1 -40 15 -41 8 -22 16 -49 callgsubr
+ 33 17 29 18 32 6 44 7 41 -7 -10 0 1 -7 -10 -5 -7 -5 -5 -6 -5 -17 -13 -41 -13 -19 20 rrcurveto
+ -27 29 16 48 12 33 64 callgsubr
+ 34 32 53 9 42 13 61 -3 62 -19 44 -12 27 rcurveline
+ endchar
+ </CharString>
+ <CharString name="hehgoal-ar.init.hah">
+ 184 443 299 rmoveto
+ -72 -31 -88 -16 -77 -26 -65 -19 -46 -33 -25 -45 -25 -45 -22 -43 -20 -42 14 1 rcurveline
+ 64 56 48 33 33 11 33 11 50 15 67 21 42 13 21 5 33 24 -2 -4 -2 -3 -2 -3 -11 -18 -15 -34 -18 -51 86 callgsubr
+ -23 31 4 rrcurveto
+ 40 6 21 32 17 29 18 31 6 45 8 41 -10 -13 -9 -13 -12 -10 -17 -14 -40 -13 -19 21 -27 29 15 49 12 33 4 14 8 14 4 15 36 33 32 55 9 42 rrcurveto
+ 13 61 -3 61 -19 45 -11 27 rcurveline
+ -76 -114 10 -29 22 -59 -2 -33 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="hehgoal-ar.init.heh">
+ 257 481 448 rmoveto
+ -102 callsubr
+ -43 -18 -32 -11 -20 -3 -20 -3 -30 -15 -39 -26 -46 -31 -43 -43 -43 -55 -105 callgsubr
+ 34 41 35 38 43 31 21 15 24 11 25 7 37 11 36 16 28 22 -17 -34 -16 -35 -16 -45 rrcurveto
+ 86 callgsubr
+ 17 callsubr
+ -10 -13 -9 -13 -12 -10 -17 -14 -41 -13 -19 21 -27 29 17 49 11 33 rrcurveto
+ 4 14 8 14 4 15 3 2 6 7 11 12 30 36 19 36 8 36 13 61 -3 63 -19 44 -11 27 rcurveline
+ endchar
+ </CharString>
+ <CharString name="hehgoal-ar.init.meem">
+ 80 314 -97 rmoveto
+ 40 6 21 33 17 29 18 31 6 45 8 41 -10 -13 -9 -14 -12 -10 -17 -14 -41 -12 -19 21 -27 29 17 48 11 33 64 callgsubr
+ 34 32 52 9 43 rrcurveto
+ 13 61 -3 63 -19 44 -11 26 rcurveline
+ -77 -113 10 -29 23 -58 -2 -34 rlinecurve
+ -31 -14 -32 -9 -31 -7 -31 -7 -30 -9 -27 -12 -49 -21 -33 -30 -16 -36 -16 -36 -21 -48 -27 -59 21 -1 rcurveline
+ 22 52 34 30 48 23 62 18 76 21 45 35 -2 -5 -2 -3 -1 -2 -15 -29 -14 -34 -14 -40 -14 -40 -1 -40 15 -41 8 -21 15 -25 31 4 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hehgoal-ar.init.ragaa">
+ 325 496 304 rmoveto
+ -38 -16 -60 -18 -46 -11 -71 -15 -87 -23 -60 -31 -72 -36 -31 -42 -31 -82 42 -30 rcurveline
+ 2 2 3 2 5 3 46 33 33 23 20 11 20 11 19 9 20 6 41 13 62 16 54 20 53 19 23 10 33 29 rrcurveto
+ -20 4 -18 6 -17 vhcurveto
+ 8 -22 14 -25 32 5 40 5 21 34 17 29 18 31 6 46 8 41 -19 -25 -12 -21 -38 -7 -27 -5 -16 15 -7 20 41 67 12 61 -17 55 rrcurveto
+ -26 83 1 0 0 vvcurveto
+ -77 -114 -102 callsubr
+ rlinecurve
+ endchar
+ </CharString>
+ <CharString name="hehgoal-ar.init.reh">
+ 70 333 231 rmoveto
+ -3 1 vlineto
+ -38 -16 -61 -18 -46 -11 -40 -8 -32 -7 -24 -6 -24 -6 -20 -23 -16 -42 -7 -11 -6 -12 -6 -13 rrcurveto
+ -1 vlineto
+ -10 -12 -5 -11 -9 vvcurveto
+ -10 8 -13 9 6 5 5 9 7 vhcurveto
+ 20 20 25 12 23 4 24 4 30 7 35 9 20 5 40 17 17 9 9 4 10 6 11 8 -5 -10 rcurveline
+ -15 -29 -14 -34 -14 -40 rrcurveto
+ -7 -20 -5 -20 -20 vvcurveto
+ -40 14 -63 44 45 24 39 29 17 vhcurveto
+ 18 31 7 45 7 41 rrcurveto
+ -25 -18 -19 -28 -44 hhcurveto
+ -27 -15 26 25 4 0 5 1 5 hvcurveto
+ 4 21 5 18 6 17 4 14 8 15 4 15 35 35 33 52 9 43 -62 callgsubr
+ 36 -9 22 vhcurveto
+ -12 26 -76 -113 rlineto
+ 10 -29 20 -54 -35 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="hehgoal-ar.init.sad">
+ 342 550 21 rmoveto
+ 4 0 4 1 5 vhcurveto
+ -51 callgsubr
+ 9 15 4 15 35 35 32 51 9 43 -62 callgsubr
+ 36 55 callgsubr
+ -56 -34 vvcurveto
+ -2 vlineto
+ -28 -88 -176 -62 -120 hhcurveto
+ -48 -37 10 21 -27 hvcurveto
+ -15 11 -7 17 22 vvcurveto
+ 28 12 38 23 46 vhcurveto
+ -20 callsubr
+ -24 -103 callgsubr
+ -21 -20 vvcurveto
+ -56 -98 callsubr
+ 18 20 0 21 hhcurveto
+ 130 180 53 42 79 hvcurveto
+ 9 4 11 7 11 8 -1 -2 -2 -3 -2 -5 -15 -29 -15 -34 -14 -40 rrcurveto
+ -7 -20 -4 -20 -20 vvcurveto
+ -21 4 -19 7 -21 vhcurveto
+ -19 7 13 -24 26 hhcurveto
+ 45 24 40 29 17 hvcurveto
+ 18 31 6 45 8 40 rrcurveto
+ -24 -19 -16 -28 -45 hhcurveto
+ -27 -16 26 25 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="hehgoal-ar.init.yeh">
+ 102 365 270 rmoveto
+ 1 vlineto
+ -52 -23 -69 -15 -57 -17 -49 -15 -37 -23 -24 -29 -24 -29 -26 -43 -27 -59 rrcurveto
+ -1 vlineto
+ 17 -16 24 37 32 26 39 14 rlinecurve
+ 39 14 40 13 42 13 42 13 22 6 32 24 -17 -34 -16 -35 -16 -45 -15 -40 0 -40 15 -41 8 -22 16 17 callsubr
+ rrcurveto
+ -10 -13 -9 -13 -12 -10 -16 -14 -43 -13 -18 21 -14 15 -4 18 4 21 4 21 4 19 6 17 5 14 8 15 4 15 36 33 32 54 9 42 13 61 -3 62 -19 44 -11 26 rcurveline
+ -77 -112 10 -29 22 -60 -1 -33 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="highhamza-ar">
+ 67 84 254 rmoveto
+ 39 46 6 12 25 hvcurveto
+ 34 16 29 38 30 41 28 39 26 32 -2 19 -5 51 -72 -16 -26 46 28 24 23 8 38 10 8 15 25 30 10 17 rrcurveto
+ 17 10 12 23 -14 hhcurveto
+ -14 -35 -20 -11 -15 hvcurveto
+ -91 -63 -91 -118 26 -45 11 -19 27 -19 35 -8 17 -4 11 -10 -24 -12 -48 -24 -80 -28 -44 -28 rrcurveto
+ -16 -25 18 -3 30 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="jeem-ar">
+ 319 -73 callgsubr
+ 259 -371 -107 callsubr
+ endchar
+ </CharString>
+ <CharString name="jeh-ar">
+ 105 507 531 -107 callgsubr
+ -59 -259 -70 callgsubr
+ </CharString>
+ <CharString name="kaf-ar">
+ 204 488 217 rmoveto
+ -89 -47 -202 -79 -94 74 -89 69 68 72 46 67 48 70 111 66 21 -129 -34 -16 -8 -6 -38 -8 -43 -131 rcurveline
+ 322 115 -101 533 -312 -487 -49 -77 -70 -115 33 -89 72 -192 329 119 98 150 33 50 31 56 -4 61 -30 387 rcurveline
+ -73 -122 28 -369 1 -13 1 -5 -6 -4 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.fina">
+ 147 309 580 rmoveto
+ -7 -9 -1 -2 -8 hvcurveto
+ -49 -9 -64 -66 -78 -121 -25 -38 -24 -46 -24 -52 rrcurveto
+ -15 -31 -7 -31 -28 vvcurveto
+ -19 3 -18 7 -18 vhcurveto
+ -68 25 51 -31 85 hhcurveto
+ 23 26 3 6 25 hvcurveto
+ 99 23 108 69 49 73 12 -175 rcurveline
+ 70 110 -41 620 -74 -122 32 -381 -22 -12 -29 -13 -35 -15 rlinecurve
+ -25 -60 -78 -25 -79 hhcurveto
+ -4 hlineto
+ -36 -29 10 19 -23 hvcurveto
+ -31 24 -16 24 24 vvcurveto
+ 11 2 11 6 11 vhcurveto
+ 19 35 22 34 23 34 24 35 33 26 43 17 rrcurveto
+ 4 9 8 1 7 hhcurveto
+ 28 20 -25 -51 8 hvcurveto
+ -36 -17 -3 -4 -41 -9 -43 -131 rcurveline
+ 80 29 55 47 30 66 rrcurveto
+ 21 47 10 40 36 vvcurveto
+ 56 -24 39 -49 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.fina.jalt">
+ 561 906 233 rmoveto
+ -17 callgsubr
+ 32 35 40 12 -168 rcurveline
+ 72 110 -17 243 rlineto
+ 6 0 9 -1 12 vhcurveto
+ -20 405 -74 -117 5 -85 14 -260 1 -90 rlinecurve
+ -468 -30 rmoveto
+ 29 35 5 9 19 hvcurveto
+ 25 12 22 28 22 31 21 29 20 24 -2 14 -3 39 -54 -12 -20 34 21 18 17 6 29 8 6 11 19 22 7 13 rrcurveto
+ 13 8 9 17 -11 hhcurveto
+ -10 -27 -15 -8 -11 hvcurveto
+ -68 -47 -68 -89 19 -34 8 -14 21 -14 26 -6 13 -3 8 -8 -18 -9 -36 -18 -60 -21 -33 -21 rrcurveto
+ -12 -19 14 -2 22 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.init">
+ 134 244 182 rmoveto
+ -32 -16 -37 -11 -41 -8 -41 -8 -37 -6 -34 -5 -22 -128 rcurveline
+ 70 17 64 19 57 23 57 23 38 54 21 85 rrcurveto
+ 7 24 5 33 33 vvcurveto
+ 18 vlineto
+ -16 256 106 62 106 62 106 62 rlinecurve
+ 33 117 rlineto
+ 4 vlineto
+ 4 -1 1 -3 -2 -2 0 -2 -3 vhcurveto
+ -19 -11 -241 -141 -63 -37 -32 -117 rcurveline
+ -61 -95 rlineto
+ 6 -97 11 -113 -102 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.init.ain">
+ 221 34 callsubr
+ -62 -19 -165 -42 -23 80 -13 -35 -13 -42 -13 -50 1 -29 27 -15 28 -3 78 -8 79 17 78 41 67 37 callsubr
+ -16 256 rcurveline
+ 80 46 -1 1 80 46 53 31 54 32 53 31 32 116 rcurveline
+ -58 callsubr
+ -108 -63 -107 -71 callsubr
+ -95 rlineto
+ 6 -98 -64 callsubr
+ </CharString>
+ <CharString name="kaf-ar.init.alef">
+ 202 226 450 rmoveto
+ 109 64 88 47 109 64 33 117 rcurveline
+ -58 callsubr
+ -110 -64 -86 -48 -110 -64 -33 -116 rcurveline
+ -2 -9 4 -3 9 5 rrcurveto
+ -35 -388 rmoveto
+ 41 29 35 48 29 64 49 callgsubr
+ -68 68 -79 -82 -37 -50 -17 -22 -13 -20 -10 -15 3 -45 rcurveline
+ 34 53 40 14 45 -25 45 -25 21 -39 -3 -54 -52 -24 -58 -14 -65 -6 -62 -122 rcurveline
+ -5 3 -1 5 vhcurveto
+ 1 3 3 0 3 hhcurveto
+ 71 8 61 23 42 30 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.init.alef.loop">
+ -31 35 274 rmoveto
+ 2 -39 48 71 46 21 43 -30 rlinecurve
+ 43 -30 20 -41 -3 -54 -52 -24 -58 -14 -65 -6 -62 -122 rcurveline
+ -5 3 -1 5 vhcurveto
+ 6 1 6 1 5 1 148 22 68 56 55 122 49 callgsubr
+ -23 23 -25 10 -25 -5 21 31 19 30 18 31 33 57 43 88 -23 65 -23 64 -67 36 -81 -38 -37 -18 -32 -29 -26 -42 -26 -42 -15 -28 -4 -15 -1 -4 2 -3 5 -4 rrcurveto
+ 5 -4 6 3 7 11 12 16 25 18 40 19 76 36 56 -23 3 -78 1 -38 -6 -31 -14 -25 -14 -24 -22 -44 -23 -14 -29 -19 -27 -26 -25 -35 -25 -35 -14 -30 -3 -24 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.init.dal">
+ 155 224 49 rmoveto
+ 102 54 46 110 -7 112 -46 callgsubr
+ 62 106 62 32 117 rcurveline
+ 1 6 -6 3 -5 -2 -108 -63 -108 -71 callsubr
+ -96 rlineto
+ 7 -100 10 -110 -102 vvcurveto
+ -39 -17 -226 -90 22 127 rrcurveto
+ 3 -3 1 -3 -4 vhcurveto
+ -40 -58 -30 -102 65 -32 48 -23 109 50 30 16 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.init.feh">
+ 306 441 183 rmoveto
+ -66 -29 -96 -17 -85 -6 -65 -5 -77 3 -13 47 -87 callsubr
+ -29 27 -15 28 -2 46 -5 54 2 62 8 148 19 106 64 32 130 8 30 6 39 -2 40 -16 256 rcurveline
+ 80 46 -1 1 80 46 53 31 53 31 53 31 33 117 rcurveline
+ 1 9 -4 2 -8 -4 -108 -63 -107 -63 -108 -63 -33 -117 rcurveline
+ -60 -95 rlineto
+ 6 -98 11 -112 -102 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.init.hah">
+ -35 -18 callgsubr
+ </CharString>
+ <CharString name="kaf-ar.init.heh">
+ 212 -33 callsubr
+ -16 257 rcurveline
+ 106 62 107 63 106 62 32 116 rcurveline
+ 2 9 -4 3 -9 -5 -108 -63 -107 -71 callsubr
+ -96 rlineto
+ 6 -97 -64 callsubr
+ </CharString>
+ <CharString name="kaf-ar.init.meem">
+ -273 17 hmoveto
+ 74 100 1 12 0 12 -1 14 rlinecurve
+ -16 257 80 46 -1 1 80 46 rlinecurve
+ 53 31 54 31 53 31 32 117 rcurveline
+ 1 9 -3 2 -8 -4 -107 -63 -110 -63 -107 -63 -32 -117 rcurveline
+ -60 -96 6 -96 10 -108 1 -99 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.init.ragaa">
+ 314 50 4 rmoveto
+ 26 18 25 16 26 16 40 24 38 23 33 33 10 9 6 8 2 4 38 57 27 61 -6 89 -46 callgsubr
+ 62 105 62 33 117 rcurveline
+ 2 9 -4 3 -9 -5 -107 -63 -109 -63 -107 -63 -33 -116 rcurveline
+ -60 -96 rlineto
+ 7 -96 10 -111 -102 vvcurveto
+ -2 -11 -6 -21 -11 vhcurveto
+ -48 -25 -43 -17 -39 -31 -32 -25 -30 -29 -16 -41 46 -33 rcurveline
+ 0 4 4 1 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.init.reh">
+ 149 284 226 rmoveto
+ -2 -1 -2 0 -2 -1 -7 -3 -8 -2 -8 -2 -59 -13 -67 -19 -28 38 callsubr
+ -22 -7 -32 -93 callsubr
+ 64 64 127 2 60 67 rrcurveto
+ 0 2 3 7 8 vhcurveto
+ 1 vlineto
+ 13 14 10 17 9 19 21 47 15 50 -4 68 -16 256 rcurveline
+ 106 62 107 63 106 62 32 117 rcurveline
+ 2 9 -4 2 -9 -5 -107 -62 -109 -65 -107 -62 -32 -116 rcurveline
+ -60 -96 6 -98 10 -111 1 -103 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.init.sad">
+ 370 507 193 rmoveto
+ -13 -12 -37 -15 -59 -21 rrcurveto
+ -22 -64 -60 -14 -65 hhcurveto
+ -51 -40 14 26 -28 hvcurveto
+ -13 12 -6 17 22 vvcurveto
+ 31 13 41 26 51 -95 callgsubr
+ 1 -1 1 -1 1 vhcurveto
+ -3 hlineto
+ -41 callgsubr
+ -10 -15 -15 -24 -103 callgsubr
+ -21 -20 vvcurveto
+ -55 -98 callsubr
+ 23 24 -2 26 hhcurveto
+ 83 68 13 25 66 hvcurveto
+ 92 35 84 64 25 100 rrcurveto
+ 7 24 5 34 33 vvcurveto
+ 17 vlineto
+ -17 257 106 62 107 62 106 62 rlinecurve
+ 33 117 rlineto
+ 3 vlineto
+ 4 -2 1 -3 -2 -1 0 -1 -3 vhcurveto
+ -108 -64 36 callsubr
+ rlineto
+ 6 -98 11 -111 -103 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.init.yeh">
+ 147 -18 callgsubr
+ </CharString>
+ <CharString name="kaf-ar.jalt">
+ 666 -27 callgsubr
+ -468 -29 rmoveto
+ 29 35 5 9 19 hvcurveto
+ 25 12 22 28 22 31 21 29 20 24 -2 14 -3 39 -54 -12 -20 34 21 18 17 6 29 8 6 11 19 22 7 13 rrcurveto
+ 13 8 9 17 -11 hhcurveto
+ -10 -27 -15 -8 -11 hvcurveto
+ -68 -47 -68 -89 19 -34 8 -14 21 -14 26 -6 13 -3 8 -8 -18 -9 -36 -18 -60 -21 -33 -21 rrcurveto
+ -12 -19 14 -2 22 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.medi">
+ -105 214 501 rmoveto
+ 32 -324 -32 -17 -75 -16 -117 -16 rlinecurve
+ -22 -128 55 12 47 11 38 10 rlinecurve
+ 38 10 37 30 35 52 9 -125 rcurveline
+ 71 113 -38 461 -83 callgsubr
+ rlineto
+ 1 1 2 1 vvcurveto
+ 3 -1 2 -3 -2 -3 -1 -2 50 callgsubr
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.medi.ain">
+ 76 396 501 rmoveto
+ 31 -324 -31 -16 -45 -13 -60 -9 rlinecurve
+ -60 -9 -49 -5 -35 1 -49 1 -48 9 -11 37 -13 -34 -13 -42 -13 -51 -91 callsubr
+ 45 -4 57 3 66 11 46 8 38 9 31 12 31 12 31 29 31 45 9 -125 rcurveline
+ 71 109 -38 465 105 61 85 45 105 62 rlinecurve
+ 32 117 1 8 -4 2 -8 -4 rlinecurve
+ 94 callgsubr
+ -82 rcurveline
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.medi.dal">
+ -78 241 501 rmoveto
+ 31 -324 -40 -20 -213 -81 31 132 rlinecurve
+ 1 0 1 -2 -2 vhcurveto
+ -43 -56 -35 -111 68 -33 63 -31 136 90 39 57 10 -124 rcurveline
+ 72 106 -39 468 103 60 88 47 104 61 rlinecurve
+ 32 117 1 6 -7 3 -5 -2 rlinecurve
+ -108 -63 -90 -50 -108 -63 -23 -81 rcurveline
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.medi.feh">
+ 99 419 511 rmoveto
+ 31 -324 -30 -15 -43 -13 -54 -10 rlinecurve
+ -54 -10 -43 -6 -32 -2 -65 -5 -77 4 -13 47 -97 callsubr
+ 65 -7 74 7 80 18 80 18 60 38 39 57 10 -125 rcurveline
+ 69 138 -36 436 -83 callgsubr
+ 1 9 -4 4 callsubr
+ </CharString>
+ <CharString name="kaf-ar.medi.hah">
+ -6 327 358 rmoveto
+ 11 -129 2 -18 19 -211 73 102 rcurveline
+ -40 472 -83 callgsubr
+ 2 9 -4 38 callgsubr
+ -65 -108 5 -54 -50 -17 -58 -27 -67 -39 rlinecurve
+ -67 -39 -48 -74 -29 -109 23 -5 rcurveline
+ 71 99 112 81 121 41 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.medi.heh">
+ 118 -38 callsubr
+ 111 -38 462 104 61 85 47 105 61 rlinecurve
+ 32 116 1 9 -3 4 callsubr
+ </CharString>
+ <CharString name="kaf-ar.medi.kaf">
+ -22 328 190 rmoveto
+ -29 -14 -101 -21 -174 -30 -24 -126 rcurveline
+ 129 26 76 16 26 7 33 9 33 29 35 49 1 -11 rcurveline
+ 1 vlineto
+ 10 -125 73 97 -30 416 105 61 86 46 105 62 rlinecurve
+ 32 117 1 9 -3 3 -8 -5 rlinecurve
+ -70 callsubr
+ -25 -92 rcurveline
+ -62 -103 1 -9 rlineto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.medi.meem">
+ -44 -30 callsubr
+ 108 -39 466 -15 callsubr
+ </CharString>
+ <CharString name="kaf-ar.medi.ragaa">
+ -114 50 6 rmoveto
+ 21 15 26 16 30 19 40 24 38 23 32 33 3 3 4 3 4 5 2 -30 rcurveline
+ 69 138 -21 366 107 62 106 61 106 63 rlinecurve
+ 32 117 2 9 -4 2 -8 -5 rlinecurve
+ -107 -63 -109 -64 -108 -62 -32 -116 rcurveline
+ -60 -96 17 -308 rlineto
+ -1 vlineto
+ -1 -3 -10 -5 -21 -10 -28 -16 -44 -17 -25 -16 -43 -28 -48 -40 -20 -51 46 -34 rcurveline
+ 1 2 1 -86 callsubr
+ </CharString>
+ <CharString name="kaf-ar.medi.reh">
+ -52 -19 callsubr
+ 71 106 -38 468 -83 callgsubr
+ rlineto
+ 3 vlineto
+ 4 -1 2 -3 -2 -2 0 -2 -3 vhcurveto
+ -70 callsubr
+ -22 -81 rcurveline
+ -65 -108 19 -213 -86 -19 -57 -13 -28 -9 rlinecurve
+ -14 -5 -15 -9 -14 -11 -21 -17 -27 -39 -15 -34 rrcurveto
+ -1 vlineto
+ -10 -12 -5 -10 -9 vvcurveto
+ -10 8 -14 9 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.medi.sad">
+ 210 -11 callgsubr
+ 109 -37 465 295 168 32 117 rlineto
+ 1 1 1 1 vvcurveto
+ 4 -2 1 -3 -2 -2 -1 -1 50 callgsubr
+ -64 -108 23 -252 -28 callsubr
+ </CharString>
+ <CharString name="kaf-ar.medi.yeh">
+ -44 -30 callsubr
+ 105 -39 469 -15 callsubr
+ </CharString>
+ <CharString name="kafDotabove-ar">
+ 204 387 782 -107 callsubr
+ 101 -565 rmoveto
+ -89 -47 -202 -79 -94 74 -89 69 68 72 46 67 48 70 111 66 21 -129 -34 -16 -8 -6 -38 -8 -43 -131 rcurveline
+ 322 115 -101 533 -312 -487 -49 -77 -70 -115 33 -89 72 -192 329 119 98 150 33 50 31 56 -4 61 -30 387 rcurveline
+ -73 -122 28 -369 1 -13 1 -5 -6 -4 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="kashida-ar">
+ endchar
+ </CharString>
+ <CharString name="kasra-ar">
+ 79 76 -6 callsubr
+ </CharString>
+ <CharString name="kasratan-ar">
+ -24 callsubr
+ </CharString>
+ <CharString name="keheh-ar">
+ 580 487 148 -82 callsubr
+ </CharString>
+ <CharString name="keheh-ar.fina">
+ 147 581 138 rmoveto
+ -11 158 -10 162 -10 158 106 62 107 62 -7 callsubr
+ -116 rcurveline
+ -60 -96 7 -100 6 -96 6 -102 rlinecurve
+ -52 -33 -386 -170 6 230 1 53 27 42 20 36 -11 -3 -7 -5 -5 -8 -129 -198 39 -86 52 -46 114 -101 257 119 80 118 11 -174 rcurveline
+ endchar
+ </CharString>
+ <CharString name="keheh-ar.fina.jalt">
+ 562 905 292 rmoveto
+ -20 1 -21 -18 vvcurveto
+ -17 callgsubr
+ 31 35 40 11 -167 rcurveline
+ 73 110 -17 241 rlineto
+ 10 0 10 -1 8 vhcurveto
+ -15 257 106 62 106 62 106 62 rlinecurve
+ 33 116 -58 callsubr
+ rlinecurve
+ -108 -63 36 callsubr
+ 5 -82 8 -86 3 -84 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="keheh-ar.jalt">
+ 1019 905 290 rmoveto
+ -20 1 -19 -19 vvcurveto
+ -89 -38 -71 -25 -55 -12 -55 -12 -76 -10 -97 -7 -69 callgsubr
+ -99 callsubr
+ 47 -6 58 -1 71 3 156 6 142 43 101 68 56 38 35 51 16 63 rrcurveto
+ 7 25 4 26 1 27 rrcurveto
+ 10 0 10 -1 9 vhcurveto
+ -15 256 106 62 106 63 106 62 rlinecurve
+ 33 117 1 8 -4 2 -8 -4 rlinecurve
+ -108 -64 -107 -62 49 callsubr
+ 5 -81 8 -89 3 -83 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="kehehDotabove-ar">
+ 580 773 927 -107 callsubr
+ -286 -779 -82 callsubr
+ </CharString>
+ <CharString name="khah-ar">
+ 319 387 752 -107 callsubr
+ 261 -938 rmoveto
+ 4 4 -12 -3 -5 -1 -175 -46 -260 -39 -136 153 -78 88 247 211 55 48 40 35 43 36 32 46 27 38 64 138 -66 27 -64 27 -108 -20 -44 -31 -66 -47 -39 -153 75 -83 rrcurveto
+ -90 -82 -118 -209 30 -141 55 -261 426 67 163 198 rrcurveto
+ -446 594 rmoveto
+ 29 25 136 24 20 -59 -34 -32 -52 -32 -41 -30 -16 36 -27 30 -15 38 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="lam-ar">
+ 81 -9 callgsubr
+ </CharString>
+ <CharString name="lam-ar.fina">
+ 64 -9 callgsubr
+ </CharString>
+ <CharString name="lam-ar.fina.jalt">
+ 666 -28 callgsubr
+ </CharString>
+ <CharString name="lam-ar.init">
+ -31 243 182 rmoveto
+ -30 -13 -30 -10 -29 -7 -29 -7 -44 -7 -58 -9 -22 -125 rcurveline
+ -1 -4 94 23 59 18 23 12 rlinecurve
+ 68 37 callsubr
+ -18 333 rcurveline
+ -74 -118 8 -146 9 -83 1 -133 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="lam-ar.init.ain">
+ 90 34 callsubr
+ -63 -19 -165 -40 -22 78 -13 -35 -13 -43 -13 -50 1 -29 27 -15 28 -2 78 -8 79 17 78 41 67 35 42 57 19 76 9 35 5 36 -2 37 -19 338 rcurveline
+ -74 -118 rlineto
+ 6 -92 12 -178 -97 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.init.alef">
+ 310 627 600 rmoveto
+ -18 -42 -21 -38 -19 -41 10 -56 9 -61 8 -58 rrcurveto
+ -4 -5 -6 -9 -8 vhcurveto
+ -29 -25 -33 -22 -35 -19 -43 -23 -43 -18 -45 -22 -215 -94 rcurveline
+ -43 -17 -50 -17 -41 -19 rrcurveto
+ -3 -3 -2 -44 callgsubr
+ -1 7 vhcurveto
+ 13 15 2 6 hhcurveto
+ 117 2 119 5 86 33 157 59 129 142 6 202 -7 55 -12 50 -12 50 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.init.dal">
+ -13 321 205 rmoveto
+ 8 28 5 38 -2 42 -17 348 rcurveline
+ -74 -118 rlineto
+ 7 -100 10 -175 -102 vvcurveto
+ -45 -19 -76 -27 -53 13 rrcurveto
+ -23 6 -12 26 27 vvcurveto
+ -1 5 -5 3 -6 -8 -38 -59 -24 -95 63 -31 45 -22 72 33 36 19 66 35 45 55 19 78 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.init.feh">
+ 198 521 230 rmoveto
+ 10 35 4 37 -2 39 -22 323 rcurveline
+ -75 -121 4 -68 4 22 4 -83 rlinecurve
+ 3 -70 5 -88 -66 vvcurveto
+ -67 -29 -102 -20 -87 -6 -67 -5 -78 4 -14 48 -14 -36 -14 -44 -13 -52 1 -30 28 -14 29 -3 47 -5 55 2 64 8 153 20 110 67 34 135 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.init.hah">
+ -188 -25 callsubr
+ </CharString>
+ <CharString name="lam-ar.init.heh">
+ 79 -33 callsubr
+ -15 288 rcurveline
+ -25 -41 -26 -41 -25 -41 rrcurveto
+ 6 -97 -64 callsubr
+ </CharString>
+ <CharString name="lam-ar.init.kaf">
+ 7 280 188 rmoveto
+ -30 -13 -29 -9 -29 -7 -29 -7 -61 -11 -92 -16 -10 -125 rcurveline
+ 119 28 72 20 23 12 68 36 42 56 19 76 8 29 5 39 -2 39 -12 212 rcurveline
+ -73 -108 5 -79 5 -90 1 -82 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="lam-ar.init.meem">
+ -230 21 hmoveto
+ 75 100 1 17 0 12 -1 9 rlinecurve
+ -21 337 -75 -121 rlineto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.init.ragaa">
+ 314 267 232 rmoveto
+ 0 0 0 -44 -22 vhcurveto
+ -29 -15 -25 -12 -18 -9 -28 -13 -30 -19 -30 -26 -31 -27 -21 -28 -11 -29 45 -33 rcurveline
+ 1 1 3 3 1 1 18 12 23 15 29 19 47 28 61 32 35 37 11 12 7 7 1 3 16 24 25 44 7 32 10 35 4 36 -2 37 -21 405 rcurveline
+ -74 -117 rlineto
+ 6 -84 14 -258 -91 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.init.reh">
+ 14 285 227 rmoveto
+ -8 -4 -9 -3 -9 -2 -58 -14 -71 -19 -29 -10 -28 -10 -21 -17 -14 -23 -9 -16 -8 -22 -7 -32 -93 callsubr
+ 18 18 26 15 29 13 37 16 40 10 36 16 67 30 43 61 18 73 8 29 5 41 -2 39 -18 281 rcurveline
+ -73 -116 6 -98 10 -111 1 -103 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="lam-ar.init.sad">
+ 248 507 199 rmoveto
+ -13 -12 -37 -16 -59 -21 -96 -34 -141 -28 -71 66 -31 29 7 58 44 88 4 7 -9 1 -3 -4 -10 -15 -15 -23 -56 callsubr
+ -15 -34 -11 -36 -11 -36 -2 -33 7 -29 rrcurveto
+ 7 -29 24 -19 43 -6 102 -15 109 19 79 30 92 35 84 63 25 100 9 35 5 37 -2 37 -21 350 rcurveline
+ -74 -121 rlineto
+ 6 -90 14 -190 -96 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.init.yeh">
+ -181 -25 callsubr
+ </CharString>
+ <CharString name="lam-ar.jalt">
+ 666 -28 callgsubr
+ </CharString>
+ <CharString name="lam-ar.medi">
+ -118 211 482 rmoveto
+ 22 -305 -32 -17 -71 -16 -108 -15 rlinecurve
+ -22 -129 56 14 44 11 34 9 rlinecurve
+ 34 9 34 30 35 52 10 -125 rcurveline
+ 72 106 -34 498 rlineto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.medi.ain">
+ 77 403 486 rmoveto
+ 25 -309 -32 -16 -45 -13 -60 -9 rlinecurve
+ -60 -9 -49 -5 -35 1 -49 1 -48 9 -11 37 -13 -35 -13 -42 -13 -50 1 -30 28 -13 27 -3 65 -7 69 4 73 16 73 16 56 37 40 59 10 -125 rcurveline
+ 71 104 -36 505 rlineto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.medi.alef">
+ 368 764 565 rmoveto
+ -3 -2 0 -1 -2 hvcurveto
+ -33 -17 -30 -35 -16 -33 -28 -57 -24 -48 -20 -41 -20 -41 -36 -36 -54 -30 -37 -21 -42 -20 -41 -18 -22 -10 rcurveline
+ -215 -94 -43 -17 -50 -17 -41 -19 rlinecurve
+ -3 -3 -2 -44 callgsubr
+ -1 7 vhcurveto
+ 13 15 2 6 hhcurveto
+ 117 2 119 5 86 33 78 30 66 47 51 62 32 40 23 39 14 41 14 41 20 41 28 44 rrcurveto
+ 6 4 3 4 3 hhcurveto
+ 6 3 -9 -3 hvcurveto
+ 21 -425 62 93 -15 464 rlineto
+ 6 -7 2 -8 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.medi.dal">
+ -79 250 484 rmoveto
+ 22 -307 -40 -20 -94 -27 -53 13 rlinecurve
+ -27 7 -15 37 8 32 rrcurveto
+ 1 0 0 -1 -1 vhcurveto
+ -44 -55 -37 -114 69 -34 77 -38 124 92 37 55 10 -125 rcurveline
+ 71 104 -33 502 rlineto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.medi.feh">
+ 98 418 576 rmoveto
+ 31 -389 -3 -2 -4 -2 -4 -1 rlinecurve
+ -1 vlineto
+ -32 -14 -42 -11 -50 -9 -50 -9 -40 -5 -30 -2 -65 -5 -77 4 -13 47 -97 callsubr
+ 62 -6 71 5 76 16 76 16 59 34 42 51 rrcurveto
+ 5 5 5 7 2 3 9 -125 rcurveline
+ 69 138 -40 551 rlineto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.medi.hah">
+ -9 327 358 rmoveto
+ 28 -358 72 107 -43 581 -73 -122 9 -118 -50 -18 -59 -27 -67 -39 rlinecurve
+ -67 -39 -48 -74 -29 -109 23 -5 rcurveline
+ 71 99 111 81 122 41 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.medi.heh">
+ 118 -38 callsubr
+ 109 -41 516 rlineto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.medi.kaf">
+ -59 377 109 rmoveto
+ -31 455 -73 -123 rlineto
+ -8 vlineto
+ 19 -249 -32 -17 -90 -18 -148 -20 rlinecurve
+ -22 -129 95 18 64 14 34 9 rlinecurve
+ 34 9 34 29 35 52 10 -131 rcurveline
+ endchar
+ </CharString>
+ <CharString name="lam-ar.medi.meem">
+ -44 271 580 rmoveto
+ 9 -131 -3 callgsubr
+ 73 101 -50 600 rlineto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.medi.ragaa">
+ -82 51 6 rmoveto
+ 18 12 23 15 29 19 55 32 67 35 36 48 4 -50 rcurveline
+ 69 138 -31 529 -73 -117 27 -432 rlineto
+ 0 0 0 -48 -23 vhcurveto
+ -71 -34 -37 -13 -56 -48 -31 -27 -21 -28 -11 -28 46 -34 rcurveline
+ 1 1 3 4 1 1 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.medi.reh">
+ -52 -19 callsubr
+ 72 108 -43 516 -74 -123 19 -213 -86 -19 -57 -13 -28 -9 rlinecurve
+ -14 -5 -15 -9 -14 -11 -21 -17 -27 -39 -15 -34 77 callgsubr
+ 8 -14 9 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.medi.sad">
+ 210 -11 callgsubr
+ 106 -38 536 -74 -122 21 -271 -28 callsubr
+ </CharString>
+ <CharString name="lam-ar.medi.yeh">
+ -44 275 537 rmoveto
+ 5 -88 -4 callgsubr
+ 103 -45 554 rlineto
+ endchar
+ </CharString>
+ <CharString name="lamVabove-ar">
+ 81 260 838 -104 callsubr
+ 68 -172 rmoveto
+ 28 -443 -64 -54 -95 -40 -111 20 rlinecurve
+ -107 46 88 134 31 69 9 24 -12 3 20 callsubr
+ -28 146 211 rrcurveto
+ 49 71 30 84 85 vvcurveto
+ 0 -21 340 -5 78 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="madda-ar">
+ 172 54 -6 callgsubr
+ endchar
+ </CharString>
+ <CharString name="meem-ar">
+ 141 -35 callsubr
+ </CharString>
+ <CharString name="meem-ar.fina">
+ -14 -35 callsubr
+ </CharString>
+ <CharString name="meem-ar.init">
+ 41 -10 callgsubr
+ </CharString>
+ <CharString name="meem-ar.init.ain">
+ 198 487 176 rmoveto
+ 19 29 16 43 12 58 3 16 -2 15 -16 -74 callgsubr
+ 10 41 callsubr
+ -9 -21 -10 -20 -8 -15 0 -15 8 -13 -68 -20 -105 -32 -90 16 rrcurveto
+ -28 5 -17 15 -7 23 -97 callsubr
+ 55 -6 58 6 62 17 102 27 106 59 48 71 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.init.dal">
+ 105 446 279 rmoveto
+ 3 14 -95 48 -20 -26 -69 -91 rcurveline
+ -13 -16 -16 -32 19 -19 -44 -13 -78 -22 -49 12 -24 6 -12 29 2 29 rrcurveto
+ 4 -6 1 -3 -5 vhcurveto
+ -40 -58 -28 -101 65 -32 24 -12 33 4 25 6 142 31 153 106 31 137 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.init.feh">
+ 294 484 99 rmoveto
+ 44 29 31 29 20 29 20 29 15 42 12 58 3 17 -2 15 -16 2 -34 4 -48 9 -22 -20 -7 -7 -5 -4 -1 -3 -44 -98 rcurveline
+ -8 -16 -7 -17 11 -18 -76 -21 -104 -25 -91 -3 -59 -3 -65 6 -12 43 -66 callgsubr
+ 60 -6 72 6 85 17 85 17 71 27 55 36 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.init.hah">
+ 150 -37 callsubr
+ </CharString>
+ <CharString name="meem-ar.init.heh">
+ 230 195 26 rmoveto
+ 37 45 39 33 38 20 76 40 68 31 53 62 26 31 20 49 13 66 3 17 -1 14 -17 -75 callsubr
+ -9 -9 -5 -5 -1 -3 -15 -34 -15 -35 -16 -34 rrcurveto
+ -8 -16 0 -15 8 -13 -98 -29 -69 50 callsubr
+ 5 30 rcurveline
+ 1 vlineto
+ -54 -65 rlineto
+ -1 vlineto
+ -3 -38 -3 -41 2 85 callgsubr
+ 12 11 19 40 29 58 23 56 15 36 15 36 27 41 40 47 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.init.meem">
+ 79 241 257 rmoveto
+ -5 -4 -1 -2 -2 hvcurveto
+ -63 -15 -51 -24 -33 -42 -30 -39 -29 -78 -24 -54 21 -2 rcurveline
+ 9 22 12 20 17 18 42 43 64 21 61 23 68 26 53 42 34 62 17 33 14 39 9 45 3 17 -1 14 -17 -74 callgsubr
+ 9 -22 -20 -31 -29 -16 -48 -14 -43 rrcurveto
+ -7 -19 1 -14 6 -10 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.init.ragaa">
+ 314 52 5 rmoveto
+ 52 37 53 33 52 29 47 26 43 23 40 35 57 48 27 50 18 91 4 16 -2 15 -17 -75 callsubr
+ -16 -16 -11 -19 -7 -22 -7 -22 -9 -21 -11 -20 rrcurveto
+ -8 -16 0 -15 8 -13 -4 -2 -4 -1 -4 -2 -42 -17 -41 -16 -38 -18 -29 -15 -23 -16 -18 -20 -20 -23 -25 -40 -13 -42 42 -29 rcurveline
+ 6 4 3 1 1 1 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.init.reh">
+ 84 283 128 rmoveto
+ 40 20 30 23 20 24 37 45 7 11 15 73 5 25 -13 14 -31 1 -31 1 -22 -2 -12 -4 rrcurveto
+ -18 -16 -18 -37 -17 hvcurveto
+ -17 -37 -12 -29 -9 -19 -31 -11 -27 -8 -21 -6 -30 -9 -67 -23 -17 -27 -15 -24 -4 -29 -13 -27 -93 callsubr
+ 1 1 rcurveline
+ 60 55 111 20 77 39 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.init.sad">
+ 357 271 13 rmoveto
+ 140 23 143 48 82 76 50 45 17 46 17 82 3 17 -2 14 -16 -75 callsubr
+ -7 -7 -5 -5 -1 -2 -44 -99 rcurveline
+ -8 -16 -6 -18 10 -17 -58 -16 -59 -17 -61 -12 -88 -18 -143 -22 -39 70 -19 32 7 49 33 65 -62 callsubr
+ -4 -25 -35 -37 -65 -19 -48 -15 -41 -17 -56 21 -42 rrcurveto
+ 12 -23 23 -14 34 -5 50 -7 63 4 76 13 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.init.yeh">
+ 60 223 227 rmoveto
+ -2 -1 -6 -2 -3 -1 -73 -18 -48 -25 -22 -33 -22 -33 -23 -44 -24 -57 18 -13 rcurveline
+ 1 hlineto
+ 23 36 30 26 37 14 37 14 39 16 38 17 38 17 36 25 33 34 33 34 25 54 15 76 3 17 -1 14 -17 2 -18 2 -19 2 -20 2 -32 3 -24 -16 -8 -20 rrcurveto
+ -15 -33 -14 -34 -15 -32 -8 -16 0 -14 8 -13 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.medi">
+ 41 -10 callgsubr
+ </CharString>
+ <CharString name="meem-ar.medi.ain">
+ 36 239 21 rmoveto
+ 89 26 92 36 46 56 37 46 7 9 15 74 5 25 -13 14 -31 1 -31 1 -22 -102 callgsubr
+ -16 -19 -37 -17 hvcurveto
+ -17 -37 -12 -28 -9 -19 -31 -9 rcurveline
+ -67 -18 -172 -41 -23 80 -13 -35 -13 -43 -13 -50 1 -29 27 -14 28 -3 59 -5 61 6 63 18 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.medi.dal">
+ -4 35 9 rmoveto
+ 53 -29 150 43 95 48 40 20 40 26 27 34 28 34 9 33 10 49 5 25 -13 13 -31 1 -31 1 -9 0 -25 -4 -14 -2 -5 -5 -10 -14 -24 -33 -18 -48 -18 -39 rrcurveto
+ -58 -29 -103 -14 -46 14 -23 7 -13 30 4 30 1 8 -3 0 -6 -8 -8 -10 -88 -135 84 -46 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.medi.feh">
+ 131 178 4 rmoveto
+ 102 10 106 30 78 38 44 21 33 23 21 26 37 46 6 11 15 74 5 25 -13 14 -31 1 -31 1 -21 -2 -12 -4 rrcurveto
+ -18 -17 -18 -38 -16 hvcurveto
+ -16 -38 -13 -28 -9 -19 -74 -21 -89 -24 -90 -2 -59 -3 -65 6 -12 43 -66 callgsubr
+ 36 -3 40 1 46 4 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.medi.hah">
+ -6 -37 callsubr
+ </CharString>
+ <CharString name="meem-ar.medi.heh">
+ 67 348 142 rmoveto
+ 1 vlineto
+ 61 24 56 30 32 38 37 46 7 10 15 74 5 25 -13 13 -31 1 -31 1 -22 -102 callgsubr
+ -17 -18 -37 -16 hvcurveto
+ -16 -37 -13 -29 -9 -19 -27 -8 -31 -17 -21 -14 -116 -76 -50 -138 -64 -128 4 30 rcurveline
+ -89 callgsubr
+ 59 71 20 13 76 32 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.medi.meem">
+ -35 188 121 rmoveto
+ 75 25 91 37 41 50 37 45 7 12 0 callsubr
+ -37 -17 hvcurveto
+ -17 -37 -12 -29 -9 -19 -38 -11 -16 -6 -37 -13 -36 -13 -29 -21 -22 -29 -16 -20 -13 -23 -12 -26 87 callgsubr
+ 9 21 13 18 18 18 32 31 42 18 53 15 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.medi.ragaa">
+ -52 52 7 rmoveto
+ 52 36 52 33 53 29 47 25 43 25 40 35 57 47 28 50 18 91 4 17 -2 15 -17 -74 callgsubr
+ 9 41 callsubr
+ -8 -20 -11 -20 rrcurveto
+ -8 -16 0 -14 8 -13 -44 -21 -48 -15 -42 -20 -29 -15 -22 -17 -18 -19 -21 -23 -24 -39 -14 -43 42 -30 rcurveline
+ 1 hlineto
+ 4 3 3 -86 callsubr
+ </CharString>
+ <CharString name="meem-ar.medi.reh">
+ -69 420 342 rmoveto
+ 5 25 -13 14 -31 1 -31 1 -21 -102 callgsubr
+ -18 -24 -48 -17 hvcurveto
+ -17 -48 -13 -33 -9 -20 -37 -13 -42 -12 -33 -15 -39 -18 -32 -48 -19 -44 22 callsubr
+ 12 17 21 20 27 16 33 11 32 7 32 9 30 12 105 41 72 92 24 121 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.medi.sad">
+ 216 79 3 rmoveto
+ 96 -12 148 27 87 26 86 23 104 41 46 56 37 46 7 9 15 74 5 25 -13 14 -31 1 -31 1 -22 -102 callgsubr
+ -17 -19 -37 -16 hvcurveto
+ -16 -37 -13 -28 -9 -19 -44 -13 -50 -13 -46 -9 -49 -11 -45 -6 -40 -2 -66 -4 -61 9 -23 41 -19 32 8 49 33 65 -62 callsubr
+ -4 -25 -35 -37 -65 -19 -48 rrcurveto
+ -15 -41 -17 -56 21 -42 12 -23 23 -14 34 -5 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.medi.yeh">
+ -95 237 131 rmoveto
+ 45 22 32 25 20 24 37 45 8 13 0 callsubr
+ -38 -17 hvcurveto
+ -17 -38 -12 -29 -9 -19 -8 -2 -11 -5 -15 -7 -22 -10 -34 -17 -17 -14 -46 -38 -22 -60 -26 -60 18 -13 rcurveline
+ 1 hlineto
+ 13 21 19 19 23 16 46 31 65 18 52 26 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="nine-ar">
+ -47 293 134 rmoveto
+ -3 5 -34 111 3 112 -5 144 rlinecurve
+ -1 32 -16 27 -26 14 -26 14 -29 -15 -14 -15 -39 -42 -136 -221 91 -41 54 -25 54 37 24 35 1 -125 16 -83 29 -100 rrcurveto
+ -142 395 rmoveto
+ -6 5 -2 8 4 7 11 21 11 26 33 -5 19 -3 14 -25 5 -16 rrcurveto
+ -2 7 -12 -1 -2 hvcurveto
+ -23 -16 -46 -7 -23 18 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="nine-ar.dnom">
+ -99 225 94 -34 callsubr
+ </CharString>
+ <CharString name="nine-ar.numr">
+ -99 225 363 -34 callsubr
+ </CharString>
+ <CharString name="noon-ar">
+ 99 -48 callsubr
+ </CharString>
+ <CharString name="noon-ar.fina">
+ 64 -48 callsubr
+ </CharString>
+ <CharString name="noon-ar.fina.tail">
+ 173 550 226 rmoveto
+ 47 123 -54 -6 -18 14 -16 30 -27 -5 rlinecurve
+ -52 -10 -26 -44 -27 -37 -41 -56 -34 -63 -56 -42 -31 -2 -12 23 -7 21 -25 77 41 197 -133 -150 -46 -52 -24 -72 -9 -88 16 30 13 32 20 26 69 89 20 -52 9 -79 rrcurveto
+ 6 -47 3 -48 29 -25 15 -13 22 -3 15 15 46 45 28 62 35 55 97 153 -6 -112 58 2 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="noon-ar.tail">
+ 173 461 225 rmoveto
+ 8 -12 13 19 20 50 20 50 5 30 -10 10 -30 29 -49 -33 -18 -21 -15 -18 -14 -18 -13 -19 -41 -56 -36 -63 -55 -42 -16 -1 -11 5 -7 9 -19 25 -6 31 -1 46 rrcurveto
+ -1 42 -1 62 -34 2 -14 1 -23 -19 -33 -37 -44 -49 -27 -71 -9 -92 8 15 8 16 7 15 18 37 58 74 22 -27 13 -16 9 -28 5 -40 5 -47 4 -49 29 -24 rrcurveto
+ 18 -16 17 0 16 15 23 22 20 26 16 29 24 44 52 91 31 21 28 19 16 -15 14 -22 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="noonThreedotsabove-ar">
+ 99 371 650 -107 callgsubr
+ -22 -525 -90 callgsubr
+ </CharString>
+ <CharString name="noonghunna-ar">
+ 99 349 125 -90 callgsubr
+ </CharString>
+ <CharString name="noonghunna-ar.fina">
+ 99 349 125 -90 callgsubr
+ </CharString>
+ <CharString name="noonghunna-ar.jalt">
+ 514 -13 callgsubr
+ 102 -12 106 27 78 31 88 35 92 59 39 80 rrcurveto
+ 30 62 7 56 -16 49 rrcurveto
+ -24 74 0 0 0 vvcurveto
+ -77 -113 10 -28 23 -61 -2 -33 rlinecurve
+ 0 0 1 -73 -32 vhcurveto
+ -49 -21 -42 -15 -36 -8 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="noonghunnaabove-ar">
+ 3 -72 rmoveto
+ 9 -1 9 3 9 6 26 16 12 26 14 32 3 7 -2 5 -5 -7 -7 -8 -8 -6 -9 -3 -9 -4 -11 0 -9 1 rrcurveto
+ -9 -9 3 7 -8 hvcurveto
+ -8 5 -6 7 -4 10 -4 9 0 12 3 13 3 12 8 14 12 17 rrcurveto
+ 3 vlineto
+ 1 -1 0 -1 -3 -4 -3 -8 -6 vhcurveto
+ -15 -21 -9 -22 -10 -32 -4 -16 -1 -14 1 -12 2 -33 17 -16 34 -3 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="oe-ar">
+ 127 414 623 -104 callsubr
+ -184 -615 -97 callgsubr
+ </CharString>
+ <CharString name="one-ar">
+ -176 108 14 rmoveto
+ 33 69 26 89 -11 109 rrcurveto
+ 4 -2 12 4 vvcurveto
+ -13 108 -30 91 -34 85 -19 -46 -18 -50 -15 -44 54 -117 34 -155 -21 -173 8 -3 5 11 3 6 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="one-ar.dnom">
+ -99 144 10 rmoveto
+ 23 48 18 62 -8 77 rrcurveto
+ 3 -1 8 3 vvcurveto
+ -9 75 -21 64 -24 60 -13 -33 -13 -35 -10 -30 37 -82 24 -109 -15 -121 6 -2 4 8 2 4 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="one-ar.numr">
+ -99 144 279 rmoveto
+ 23 48 18 62 -8 77 rrcurveto
+ 3 -1 8 3 vvcurveto
+ -9 75 -21 64 -24 60 -13 -33 -13 -35 -10 -30 37 -82 24 -109 -15 -121 6 -2 4 8 2 4 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="opendammatan-ar">
+ 104 41 rmoveto
+ 6 17 2 14 10 vvcurveto
+ 5 vlineto
+ 15 -2 -4 10 -14 hhcurveto
+ -23 -28 -33 -23 -22 20 -10 15 -8 hvcurveto
+ 14 callsubr
+ -3 -2 -1 vvcurveto
+ 18 2 16 6 14 5 41 14 26 20 24 32 5 -3 5 -1 4 -5 rrcurveto
+ 6 9 4 7 11 vvcurveto
+ 1 vlineto
+ -1 6 -4 4 -4 3 rrcurveto
+ -85 hmoveto
+ 6 17 2 14 10 vvcurveto
+ 17 -6 13 -14 -24 -28 -33 -23 -22 20 -10 15 -8 vhcurveto
+ 14 callsubr
+ -2 -2 -1 vvcurveto
+ 6 1 60 17 40 17 32 44 rlinecurve
+ 6 -3 3 -1 5 -5 rrcurveto
+ 5 9 6 7 11 vvcurveto
+ 1 vlineto
+ -1 6 -4 4 -4 3 rrcurveto
+ 59 41 rmoveto
+ 1 hlineto
+ 8 5 -8 -10 -4 -1 -5 -1 -7 hvcurveto
+ -9 5 -10 4 -7 7 rrcurveto
+ -1 2 0 1 2 vvcurveto
+ 7 9 5 6 1 vhcurveto
+ -86 hmoveto
+ 2 hlineto
+ 9 4 -9 -10 -4 -1 -5 -1 -6 hvcurveto
+ -8 4 -19 7 11 vvcurveto
+ 7 8 4 6 1 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="parenleft-ar">
+ 121 244 33 rmoveto
+ -16 -15 5 9 -15 hvcurveto
+ 9 -15 -10 5 -6 hhcurveto
+ -7 -7 -1 -4 -4 hvcurveto
+ 5 -9 rlineto
+ 1 2 2 1 2 hhcurveto
+ 13 8 -13 -11 7 hvcurveto
+ -27 17 24 -24 25 hhcurveto
+ 23 16 11 23 9 hvcurveto
+ 2 -1 rlineto
+ -7 -15 -3 -16 -16 vvcurveto
+ -26 17 -30 34 -34 vhcurveto
+ 7 -7 10 -9 12 -11 27 -25 rcurveline
+ 12 -11 8 -10 4 -8 rrcurveto
+ -12 -3 -6 -6 -10 vvcurveto
+ -12 7 -7 13 13 6 7 13 9 -6 12 -11 17 vhcurveto
+ -17 23 -11 19 -7 13 rrcurveto
+ -30 56 -16 67 77 vvcurveto
+ 76 -23 44 -47 11 vhcurveto
+ 1 vlineto
+ 47 11 23 44 76 vvcurveto
+ 77 16 68 30 56 vhcurveto
+ 7 13 11 19 17 23 rrcurveto
+ 11 17 6 12 9 vvcurveto
+ 13 -6 6 -13 -13 -7 -6 -12 -10 6 -6 12 -3 vhcurveto
+ -4 -8 -8 -10 -12 -11 -27 -26 rcurveline
+ -12 -11 -10 -9 -7 -7 rrcurveto
+ -34 -34 -17 -30 -26 vvcurveto
+ -16 3 -15 7 -15 vhcurveto
+ -2 -2 rlineto
+ 23 -9 -16 12 -23 hhcurveto
+ -20 -19 -13 -25 -18 hvcurveto
+ -11 -9 -10 -26 -18 hhcurveto
+ -2 -2 0 1 -2 hvcurveto
+ -5 -8 rlineto
+ -4 4 7 -1 7 hhcurveto
+ 6 10 5 9 15 hvcurveto
+ 9 15 15 5 16 hhcurveto
+ 45 33 -30 -45 -26 -10 -23 -21 -19 hvcurveto
+ -4 2 rlineto
+ 3 4 2 5 6 vvcurveto
+ 16 -11 11 -21 6 vhcurveto
+ -26 7 -14 16 22 vvcurveto
+ 8 2 8 3 9 vhcurveto
+ -8 4 rlineto
+ -30 -28 -15 -30 -34 vvcurveto
+ 9 -9 -10 5 -12 hhcurveto
+ -32 -20 -22 -25 -21 hvcurveto
+ -10 -11 -9 -8 -10 -5 4 -10 rcurveline
+ 2 3 6 1 7 hhcurveto
+ 6 6 -4 -7 6 hvcurveto
+ 13 -14 6 -7 0 vvcurveto
+ -13 14 15 -7 16 hhcurveto
+ 14 10 4 8 7 hvcurveto
+ -34 15 -31 30 -28 vhcurveto
+ 8 4 rlineto
+ -3 9 -2 9 8 vvcurveto
+ 22 14 15 26 7 vhcurveto
+ 21 6 11 12 16 vvcurveto
+ 6 -2 5 -3 4 vhcurveto
+ 4 1 rlineto
+ 21 -19 10 -22 -26 vvcurveto
+ -45 -33 -30 -45 vhcurveto
+ -29 164 rmoveto
+ -2 vlineto
+ -15 -8 -10 -10 -6 -12 rrcurveto
+ -24 5 -12 10 16 vvcurveto
+ 16 12 10 24 5 vhcurveto
+ 6 -12 10 -10 15 -8 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="parenright-ar">
+ 121 241 359 rmoveto
+ 16 16 -5 -9 15 hvcurveto
+ -9 15 10 -5 6 hhcurveto
+ 7 6 1 4 4 hvcurveto
+ -4 8 rlineto
+ -1 -2 -2 0 -2 hhcurveto
+ -13 -9 13 11 -7 hvcurveto
+ 27 -17 -24 24 -25 hhcurveto
+ -23 -16 -12 -23 -9 hvcurveto
+ -2 2 rlineto
+ 7 15 3 15 16 vvcurveto
+ 26 -17 30 -34 34 vhcurveto
+ -7 7 -9 9 -12 11 -28 26 rcurveline
+ -12 11 -7 10 -4 8 rrcurveto
+ 12 3 5 6 10 vvcurveto
+ 12 -6 6 -13 -13 -7 -6 -13 -9 6 -12 11 -17 vhcurveto
+ 17 -23 12 -19 7 -13 rrcurveto
+ 30 -56 15 -68 -77 vvcurveto
+ -76 24 -44 47 -11 vhcurveto
+ -1 vlineto
+ -47 -11 -24 -44 -76 vvcurveto
+ -77 -15 -67 -30 -56 vhcurveto
+ -7 -13 -12 -19 -17 -23 rrcurveto
+ -11 -17 -6 -12 -9 vvcurveto
+ -13 7 -7 13 13 6 7 12 10 -5 6 -12 3 vhcurveto
+ 4 8 7 10 12 11 28 25 rcurveline
+ 12 11 9 9 7 7 rrcurveto
+ 34 34 17 30 26 vvcurveto
+ 16 -3 16 -7 15 vhcurveto
+ 2 1 rlineto
+ -23 9 16 -11 23 hhcurveto
+ 20 19 12 25 18 hvcurveto
+ 11 9 11 27 18 hhcurveto
+ 2 2 -1 -1 2 hvcurveto
+ 4 9 rlineto
+ 4 -4 -6 1 -7 hhcurveto
+ -6 -10 -5 -9 -15 hvcurveto
+ -9 -15 -16 -5 -16 hhcurveto
+ -45 -32 30 45 26 10 22 21 19 hvcurveto
+ 4 -1 rlineto
+ -3 -4 -2 -5 -6 vvcurveto
+ -16 11 -12 21 -6 vhcurveto
+ 26 -7 13 -15 -22 vvcurveto
+ -8 -1 -9 -3 -9 vhcurveto
+ 8 -4 rlineto
+ 30 28 14 31 34 vvcurveto
+ -9 9 11 -6 12 hhcurveto
+ 32 18 22 25 22 hvcurveto
+ 9 11 10 8 10 5 -4 10 rcurveline
+ -2 -3 -5 0 -7 hhcurveto
+ -6 -7 4 7 -6 hvcurveto
+ -18 20 rlineto
+ 14 -14 -15 7 -16 hhcurveto
+ -14 -11 -4 -8 -7 hvcurveto
+ 34 -14 30 -30 28 vhcurveto
+ -8 -4 rlineto
+ 3 -9 1 -8 -8 vvcurveto
+ -22 -13 -16 -26 -7 vhcurveto
+ -21 -6 -11 -11 -16 vvcurveto
+ -6 2 -5 3 -4 vhcurveto
+ -4 -2 rlineto
+ -21 19 -10 23 26 vvcurveto
+ 45 32 30 45 vhcurveto
+ 30 -164 rmoveto
+ 2 vlineto
+ 15 8 10 10 6 12 rrcurveto
+ 24 -5 11 -10 -16 vvcurveto
+ -16 -11 -10 -24 -5 vhcurveto
+ -6 12 -10 10 -15 8 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="peh-ar">
+ 437 -81 callsubr
+ -241 -567 -107 callgsubr
+ endchar
+ </CharString>
+ <CharString name="percent-ar">
+ 76 24 429 rmoveto
+ 83 -50 68 115 -83 48 rlineto
+ -30 -604 rmoveto
+ 70 32 264 544 -71 -34 rlineto
+ -59 -470 rmoveto
+ 83 -51 68 115 -83 49 rlineto
+ endchar
+ </CharString>
+ <CharString name="qaf-ar">
+ 270 -5 callsubr
+ -19 -46 -59 callsubr
+ -34 19 -9 32 -16 37 15 21 18 7 6 3 -11 1 -3 7 -21 1 -61 -1 -25 rrcurveto
+ -73 -67 -232 -102 -15 166 -5 52 18 62 2 45 rrcurveto
+ 8 -10 8 -8 -1 vhcurveto
+ -60 -9 -42 -27 -37 -34 -19 -47 -16 -48 -16 -49 32 43 46 33 64 10 rrcurveto
+ 11 2 2 -18 -9 vvcurveto
+ 1 -20 -3 -18 -3 -18 -48 -252 273 11 119 172 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="qaf-ar.fina">
+ 270 -5 callsubr
+ -14 -44 -59 callsubr
+ -29 22 -15 25 -17 45 6 16 4 12 -17 3 -50 -1 -25 -73 -67 -232 -102 -15 166 rrcurveto
+ -5 52 18 62 2 45 rrcurveto
+ 8 -10 8 -8 -1 vhcurveto
+ -60 -9 -42 -27 -37 -34 -19 -47 -16 -48 -16 -49 32 43 46 33 64 10 rrcurveto
+ 11 2 2 -18 -9 vvcurveto
+ 1 -20 -3 -18 -3 -18 -48 -252 273 11 119 172 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="qafDotless-ar">
+ 124 -24 callgsubr
+ </CharString>
+ <CharString name="qafDotless-ar.fina">
+ 124 -24 callgsubr
+ </CharString>
+ <CharString name="qafDotless-ar.fina.jalt">
+ 485 -35 callgsubr
+ </CharString>
+ <CharString name="qafDotless-ar.jalt">
+ 485 -35 callgsubr
+ </CharString>
+ <CharString name="question-ar">
+ -19 320 755 rmoveto
+ -6 5 1 5 -2 3 -16 28 -25 25 -40 3 -140 9 -72 -182 19 -107 19 -45 30 -35 34 -31 53 -48 47 -87 -31 -101 -2 -7 10 1 2 4 28 54 32 53 3 78 rrcurveto
+ -9 84 -44 52 -46 47 -30 31 -36 30 -10 50 22 17 29 9 33 -1 45 -2 34 -28 3 -44 1 -13 18 9 4 8 18 40 12 43 12 43 rrcurveto
+ -214 -670 -21 callsubr
+ </CharString>
+ <CharString name="quotedblbase">
+ 80 -29 callsubr
+ 173 hmoveto
+ -59 -61 rlineto
+ -20 vlineto
+ 42 -14 21 -26 -86 callgsubr
+ 23 20 -57 callsubr
+ 37 -87 callgsubr
+ endchar
+ </CharString>
+ <CharString name="quotedblleft">
+ 80 -8 callgsubr
+ 172 hmoveto
+ 58 61 rlineto
+ 21 vlineto
+ -42 14 -21 25 39 vvcurveto
+ 5 48 14 47 callgsubr
+ -12 -38 -35 vvcurveto
+ -28 8 -25 14 -21 vhcurveto
+ -21 14 15 -11 14 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="quotedblright">
+ 80 -7 callgsubr
+ 173 hmoveto
+ -59 -61 rlineto
+ -21 vlineto
+ 42 -14 21 -25 -86 callgsubr
+ 23 19 -57 callsubr
+ 38 -87 callgsubr
+ endchar
+ </CharString>
+ <CharString name="quoteleft">
+ -93 -8 callgsubr
+ endchar
+ </CharString>
+ <CharString name="quoteright">
+ -93 -7 callgsubr
+ endchar
+ </CharString>
+ <CharString name="quotesinglbase">
+ -93 -29 callsubr
+ endchar
+ </CharString>
+ <CharString name="reh-ar">
+ 105 -27 callsubr
+ endchar
+ </CharString>
+ <CharString name="reh-ar.fina">
+ 46 375 139 rmoveto
+ 15 8 3 31 -20 3 -7 1 -5 -3 -5 -6 rrcurveto
+ 1 vlineto
+ -13 -15 -15 -9 -18 -5 -96 -25 -110 -12 -90 -32 -9 -4 -3 -4 6 -5 8 -7 26 -10 44 -13 44 -13 27 -9 11 -2 85 -17 43 18 31 59 13 26 14 26 21 18 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="rehVbelow-ar">
+ 105 -27 callsubr
+ -197 -506 -104 callsubr
+ endchar
+ </CharString>
+ <CharString name="rnoon-ar">
+ 99 198 719 -98 callgsubr
+ 59 -490 -90 callgsubr
+ </CharString>
+ <CharString name="rreh-ar">
+ 105 334 600 -98 callgsubr
+ 22 -224 -70 callgsubr
+ </CharString>
+ <CharString name="sad-ar">
+ 517 349 126 -25 callgsubr
+ </CharString>
+ <CharString name="sad-ar.fina">
+ 199 550 416 rmoveto
+ -5 -1 -13 -2 -22 -4 -22 -4 -18 0 -16 4 -14 3 -9 9 -6 16 -6 16 -9 22 -13 28 -54 -125 rcurveline
+ 13 -44 13 -44 -1 -57 -32 -29 -40 -24 -48 -19 -48 -19 -54 -4 -59 11 -45 19 -15 36 15 60 11 44 30 53 16 36 8 23 -12 5 -8 -16 -64 -116 -29 -90 6 -64 rrcurveto
+ 6 -64 22 -42 40 -19 40 -19 47 0 56 21 56 21 46 36 37 53 35 51 23 54 12 58 76 11 76 14 74 17 74 17 63 44 52 70 17 22 16 25 14 28 rrcurveto
+ 14 28 -2 -60 callsubr
+ -25 7 -31 -6 -31 -6 -23 -10 -16 -14 -45 -45 -64 -68 -44 -48 -17 -19 -9 -10 -1 -1 rrcurveto
+ 235 88 34 callgsubr
+ 38 47 26 29 16 39 -15 11 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="sad-ar.fina.jalt">
+ 735 293 8 callgsubr
+ 74 11 75 16 75 23 75 23 62 46 51 68 17 22 16 25 14 28 rrcurveto
+ 14 28 -3 26 -103 callsubr
+ -23 -10 -16 -14 -45 -45 -64 -68 -44 -48 -17 -19 -10 -10 -1 -1 -31 -7 -82 -20 -4 46 -1 12 -2 15 -3 19 rrcurveto
+ -4 19 -8 1 -11 -17 -68 -102 rcurveline
+ 10 -28 22 -60 -2 -33 rrcurveto
+ 0 0 -100 callsubr
+ -27 -123 92 -100 43 -47 77 -30 109 -14 rrcurveto
+ 1028 469 17 callgsubr
+ 15 40 -15 11 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="sad-ar.init">
+ 357 -84 callsubr
+ </CharString>
+ <CharString name="sad-ar.init.ain">
+ 414 -52 callsubr
+ </CharString>
+ <CharString name="sad-ar.init.dal">
+ 357 -26 callgsubr
+ </CharString>
+ <CharString name="sad-ar.init.feh">
+ 485 -51 callsubr
+ </CharString>
+ <CharString name="sad-ar.init.hah">
+ 469 -36 callgsubr
+ </CharString>
+ <CharString name="sad-ar.init.heh">
+ 611 -53 callsubr
+ </CharString>
+ <CharString name="sad-ar.init.meem">
+ 417 -32 callgsubr
+ </CharString>
+ <CharString name="sad-ar.init.qantara">
+ 620 -54 callsubr
+ </CharString>
+ <CharString name="sad-ar.init.ragaa">
+ 409 142 217 rmoveto
+ -1 hlineto
+ 1 -1 -41 -29 -18 -18 -36 -54 rlinecurve
+ 20 callgsubr
+ -3 rlineto
+ 1 0 2 1 hhcurveto
+ 28 10 20 -7 12 -25 4 -10 13 -5 22 1 61 3 75 24 49 14 40 15 37 17 34 22 60 39 39 51 34 65 14 28 -3 27 -21 25 -85 callsubr
+ rrcurveto
+ -31 -6 -23 -10 -16 -15 -64 -60 -60 -63 58 callgsubr
+ 27 -27 hhcurveto
+ -57 -45 -29 -28 -34 hvcurveto
+ 479 105 -80 callgsubr
+ -27 -69 -14 -70 -14 27 27 1 0 27 27 18 18 22 16 23 13 29 16 39 -45 callgsubr
+ </CharString>
+ <CharString name="sad-ar.init.reh">
+ 310 -37 callgsubr
+ </CharString>
+ <CharString name="sad-ar.init.sad">
+ 521 -55 callsubr
+ </CharString>
+ <CharString name="sad-ar.init.yeh">
+ 383 -30 callgsubr
+ </CharString>
+ <CharString name="sad-ar.jalt">
+ 1026 -16 callsubr
+ 59 17 62 21 67 28 99 42 58 61 46 89 14 28 -3 26 -21 25 rrcurveto
+ -85 callsubr
+ -61 -11 -5 -15 -39 -40 -36 -37 -47 -50 -34 -37 -17 -19 -10 -10 -1 -2 -29 -7 -15 5 -2 13 -2 13 -3 19 -5 26 -4 19 -7 1 -11 -17 -69 -102 rcurveline
+ -102 callsubr
+ rrcurveto
+ 0 -1 -100 callsubr
+ -26 -99 callsubr
+ rrcurveto
+ 960 465 -13 callsubr
+ </CharString>
+ <CharString name="sad-ar.medi">
+ -33 -84 callsubr
+ </CharString>
+ <CharString name="sad-ar.medi.ain">
+ 23 -52 callsubr
+ </CharString>
+ <CharString name="sad-ar.medi.dal">
+ -31 -26 callgsubr
+ </CharString>
+ <CharString name="sad-ar.medi.feh">
+ 91 -51 callsubr
+ </CharString>
+ <CharString name="sad-ar.medi.hah">
+ 75 -36 callgsubr
+ </CharString>
+ <CharString name="sad-ar.medi.heh">
+ 210 -53 callsubr
+ </CharString>
+ <CharString name="sad-ar.medi.meem">
+ 26 -32 callgsubr
+ </CharString>
+ <CharString name="sad-ar.medi.postsad">
+ -33 -84 callsubr
+ </CharString>
+ <CharString name="sad-ar.medi.qantara">
+ 277 -54 callsubr
+ </CharString>
+ <CharString name="sad-ar.medi.ragaa">
+ 21 251 121 rmoveto
+ 4 -10 13 -5 22 1 60 3 77 21 47 16 40 15 37 18 34 22 61 39 38 51 34 65 12 callgsubr
+ -64 58 callgsubr
+ 28 -27 hhcurveto
+ -56 -1 -45 -28 -35 -28 rrcurveto
+ -1 hlineto
+ 1 -1 -9 -6 -10 -8 -11 -9 rlinecurve
+ -19 -16 -22 -26 -24 -37 20 callgsubr
+ -2 rlineto
+ 0 1 0 1 1 vhcurveto
+ 28 10 21 -6 12 -25 rrcurveto
+ 370 203 -80 callgsubr
+ -28 -68 -14 -71 -14 36 37 35 39 47 26 -60 callgsubr
+ </CharString>
+ <CharString name="sad-ar.medi.reh">
+ -75 -37 callgsubr
+ </CharString>
+ <CharString name="sad-ar.medi.sad">
+ 112 -55 callsubr
+ </CharString>
+ <CharString name="sad-ar.medi.yeh">
+ -7 -30 callgsubr
+ </CharString>
+ <CharString name="seen-ar">
+ 569 426 289 rmoveto
+ 41 14 106 30 126 23 97 44 rlinecurve
+ -7 -20 -12 -18 -6 -20 -3 -9 -4 -13 8 -6 8 -6 10 5 4 8 35 75 32 79 27 82 1 3 -5 3 -2 -3 -13 -22 -26 -12 -26 -11 -105 -42 -125 -24 -123 -26 rrcurveto
+ -42 -9 -2 42 -23 47 -53 -132 rcurveline
+ 15 -47 10 -41 -1 -50 -64 -59 -99 -46 -118 21 -107 46 88 134 31 69 9 24 -13 3 20 callsubr
+ -28 146 211 42 61 10 35 25 67 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.fina">
+ 143 606 361 rmoveto
+ 33 43 11 65 7 67 rrcurveto
+ 2 -3 0 -1 -7 vhcurveto
+ -11 -44 -33 -29 -49 -9 4 16 3 20 -1 17 rrcurveto
+ 8 -2 -4 -2 -3 vhcurveto
+ -8 -14 -5 -20 -13 -10 -118 -74 11 54 -31 65 -53 -132 rcurveline
+ 15 -47 10 -41 -1 -50 4 callgsubr
+ 42 61 10 36 25 67 49 16 14 9 8 5 rrcurveto
+ 2 -8 5 1 5 1 40 10 35 10 21 27 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.fina.jalt">
+ 678 961 248 rmoveto
+ 18 6 18 8 19 9 rrcurveto
+ 5 9 5 2 2 hhcurveto
+ -5 1 3 -2 33 callsubr
+ 65 7 68 -2 7 -2 -2 -1 -10 -12 -46 -30 -27 -50 -9 5 19 2 17 -1 17 rrcurveto
+ 6 -2 1 -3 -6 vhcurveto
+ -8 -14 -5 -20 -12 -10 -20 -15 -31 -17 -33 -2 rrcurveto
+ -1 vlineto
+ -17 1 -9 9 -1 17 -1 17 -1 15 -2 12 -4 19 -7 1 -11 -17 -69 -102 rcurveline
+ -102 callsubr
+ rrcurveto
+ 0 -1 -100 callsubr
+ -26 -99 callsubr
+ 49 -6 57 -2 65 3 143 6 130 36 97 58 53 32 39 42 25 51 rrcurveto
+ 5 11 2 6 1 3 6 1 rcurveline
+ endchar
+ </CharString>
+ <CharString name="seen-ar.init">
+ 321 652 304 rmoveto
+ 1 2 -5 4 -2 -2 -14 -22 -25 -14 -26 -10 -41 -16 -55 -16 -70 -15 -137 -30 -116 -25 -141 -25 -21 -135 rcurveline
+ 231 50 106 30 130 25 94 42 rlinecurve
+ -4 -10 -5 -10 -5 -9 -4 -8 -20 25 callgsubr
+ </CharString>
+ <CharString name="seen-ar.init.ain">
+ 361 690 274 rmoveto
+ 1 2 -5 4 -2 -2 -14 -22 -25 -14 -26 -10 -19 -7 -38 -12 -60 -18 -102 -30 -143 -35 -124 1 rrcurveto
+ -55 -31 15 29 -8 hvcurveto
+ -13 -34 -13 -42 -13 -51 -79 callgsubr
+ 30 -3 38 2 48 6 48 6 49 9 52 11 93 20 111 32 74 33 -8 -19 -11 -19 -6 -20 -6 -14 0 -9 6 -4 rrcurveto
+ 9 -7 7 2 6 12 37 79 32 78 25 78 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.init.dal">
+ 332 682 286 rmoveto
+ 1 4 -2 3 -3 -2 -9 -8 -7 -12 -11 -6 -104 -60 -355 -99 -106 27 -26 7 -13 34 5 31 rrcurveto
+ 2 -2 1 -2 -3 vhcurveto
+ -42 -56 -33 -110 67 -33 58 -28 282 60 212 93 -26 -59 rcurveline
+ -11 -25 24 -16 10 20 39 81 45 114 9 40 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.init.feh">
+ 475 799 302 rmoveto
+ -61 callgsubr
+ -14 -6 -42 -14 -70 -21 -124 -38 -177 -43 -147 -6 -68 -3 -38 14 -9 31 -13 -34 -13 -42 -13 -51 -79 callgsubr
+ 36 -4 49 4 61 9 rrcurveto
+ 61 9 62 13 65 15 103 25 135 38 80 35 -4 -10 -5 -10 -5 -9 -5 -8 -19 25 callgsubr
+ </CharString>
+ <CharString name="seen-ar.init.hah">
+ 385 713 425 rmoveto
+ 1 2 -6 4 -2 -2 -14 -22 -24 -14 -26 -10 -25 -10 -36 -11 -44 -11 -83 -21 -98 -24 -82 -20 -39 -10 -27 -8 -15 -7 -32 -15 -28 -19 -24 -30 -26 -33 -22 -37 -19 -40 rrcurveto
+ -19 -40 -10 -28 -3 -14 rrcurveto
+ -6 8 0 3 3 vhcurveto
+ 10 16 12 15 14 15 35 38 27 29 56 15 33 9 37 9 39 10 44 11 60 18 76 22 76 22 57 20 37 17 -62 -140 rcurveline
+ 22 18 28 62 69 149 22 68 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="seen-ar.init.heh">
+ 525 847 435 rmoveto
+ 1 -5 5 -2 -3 vhcurveto
+ -14 -22 -24 -13 -26 -10 -63 -25 -57 -17 -51 -9 -109 -19 -85 -20 -81 -51 -42 -27 -45 -42 -47 -61 -105 callgsubr
+ 17 21 18 19 18 19 67 69 61 30 138 24 95 17 81 23 67 30 -4 -10 -4 -10 -5 -9 rrcurveto
+ -4 -8 -20 -41 12 -8 9 -7 8 3 6 12 38 81 32 78 24 76 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.init.meem">
+ 226 -31 callgsubr
+ </CharString>
+ <CharString name="seen-ar.init.ragaa">
+ 314 -50 callsubr
+ </CharString>
+ <CharString name="seen-ar.init.reh">
+ 342 181 190 rmoveto
+ -6 -1 -5 -1 -6 -1 -61 -9 -40 41 callgsubr
+ -15 9 -13 9 -13 10 2 11 17 20 20 26 12 23 4 26 5 44 8 34 11 131 27 163 43 104 46 -4 -10 -4 -10 -5 -9 -5 -8 -20 -40 13 -9 rrcurveto
+ 9 -7 8 3 6 12 35 75 32 78 27 82 rrcurveto
+ -61 callgsubr
+ -59 -24 -167 -47 -87 -18 -64 -14 -39 -8 -12 -2 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.init.sad">
+ 427 749 288 rmoveto
+ -1 0 0 -1 -1 hvcurveto
+ -11 -18 -22 -15 -32 -12 -114 -45 -140 -24 -131 -28 rrcurveto
+ -8 -44 -38 -7 -43 hhcurveto
+ -57 -39 20 53 -4 hvcurveto
+ 5 vlineto
+ 28 13 40 25 51 vhcurveto
+ -20 callsubr
+ -24 -103 callgsubr
+ -21 -20 vvcurveto
+ -55 -98 callsubr
+ 19 18 -1 21 hhcurveto
+ 34 36 4 7 39 hvcurveto
+ 62 12 56 11 49 12 87 23 87 23 75 34 -4 -10 -5 -10 -5 -9 rrcurveto
+ -7 -13 -8 -18 -16 vvcurveto
+ -8 6 -5 7 5 4 4 7 4 vhcurveto
+ 38 81 32 78 24 76 rrcurveto
+ 1 vlineto
+ 1 -2 3 -2 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.init.yeh">
+ 181 -45 callsubr
+ </CharString>
+ <CharString name="seen-ar.jalt">
+ 1167 -16 callsubr
+ 85 24 rcurveline
+ 53 15 56 14 59 14 59 14 53 18 49 22 -4 -10 -4 -11 -5 -9 -4 -8 -21 -39 13 -9 9 -7 8 2 91 callgsubr
+ -61 callgsubr
+ -102 -41 -164 -31 -118 -27 -27 -6 -14 7 -1 19 -1 19 -2 16 -3 14 -4 19 -7 1 -11 -17 -69 -102 rcurveline
+ -102 callsubr
+ rrcurveto
+ 0 -1 -100 callsubr
+ -26 -99 callsubr
+ rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.medi">
+ -46 201 57 rmoveto
+ 2 -14 19 -6 16 4 21 7 16 8 17 8 rrcurveto
+ 2 4 7 5 5 hhcurveto
+ -4 1 3 -3 4 hhcurveto
+ 26 58 28 21 16 hvcurveto
+ 33 43 12 64 -1 callsubr
+ 21 -1 17 rrcurveto
+ 8 -3 -5 88 callgsubr
+ -44 -33 -38 -2 -6 1 3 13 3 13 -2 12 -1 4 -2 16 -2 -7 -22 -69 -129 -10 -52 -8 -55 -140 rcurveline
+ 90 29 60 5 51 23 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.medi.ain">
+ 52 356 166 rmoveto
+ 4 17 2 12 -1 8 rrcurveto
+ 0 -4 20 -2 -6 vhcurveto
+ -9 -29 -32 -23 -53 -16 -53 -16 -43 -6 -33 2 -42 2 -42 11 -9 33 -13 -34 -13 -42 -13 -51 -79 callgsubr
+ 82 -8 102 29 58 25 2 -16 13 -6 22 6 rrcurveto
+ 20 6 17 8 18 8 rrcurveto
+ 5 9 5 3 2 hhcurveto
+ -4 1 3 -3 4 52 callgsubr
+ -2 7 -1 -2 -1 -10 -12 -46 -31 -27 -50 -9 5 18 2 17 -1 18 rrcurveto
+ 5 -1 0 -3 -4 vhcurveto
+ -8 -14 -6 -21 -12 -9 -20 -16 -31 -17 -34 -1 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.medi.dal">
+ -31 217 33 rmoveto
+ 2 -14 19 -6 16 4 21 7 16 7 17 8 rrcurveto
+ 2 4 7 6 5 hhcurveto
+ -4 1 3 -3 4 hhcurveto
+ 26 58 27 21 16 hvcurveto
+ 33 43 12 65 -1 callsubr
+ 20 -1 17 rrcurveto
+ 8 -3 -4 88 callgsubr
+ -21 -16 -32 -18 -33 -1 rrcurveto
+ -1 0 1 -1 hhcurveto
+ 3 13 3 12 -2 12 -1 4 -2 17 -2 -7 -18 -54 -158 -51 -36 60 rrcurveto
+ -7 11 -3 15 19 vvcurveto
+ 7 1 0 -6 -7 vhcurveto
+ -46 -53 -28 -110 66 -33 44 -21 95 29 39 18 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.medi.feh">
+ 171 476 179 rmoveto
+ 4 17 1 12 -1 8 rrcurveto
+ 0 -3 21 -2 -7 vhcurveto
+ -11 -34 -34 -23 -58 -13 -58 -13 -44 -8 -30 -4 -46 -6 -44 -1 -40 4 -40 4 -24 14 -7 26 -13 -34 -13 -43 -13 -51 -91 callsubr
+ 48 -4 58 4 69 12 rrcurveto
+ 53 9 90 18 44 19 2 -16 13 -6 22 6 16 5 18 8 20 10 rrcurveto
+ 1 3 9 6 4 hhcurveto
+ -4 1 2 -3 67 callgsubr
+ 64 7 68 rrcurveto
+ 3 -4 -5 -1 -3 vhcurveto
+ -11 -46 -32 -27 -50 -9 5 18 3 17 -1 18 -1 6 -2 1 -2 -6 -8 -14 -5 -21 -12 -9 -20 -15 -32 -18 -34 -1 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.medi.hah">
+ 83 501 390 rmoveto
+ -4 -30 -21 -25 -39 -19 -39 -19 -21 6 -2 31 -1 17 -7 12 -12 6 -16 8 -21 -2 -26 -10 -26 -10 -26 -16 -27 -19 -46 -32 -58 -51 -33 -39 -16 -19 -17 -17 -13 -24 rrcurveto
+ -13 -32 -14 -63 -3 -38 -105 callsubr
+ 41 66 10 26 55 51 33 29 52 40 40 21 28 15 42 16 -5 -45 -4 -33 14 -14 32 6 32 6 24 7 15 7 rrcurveto
+ 5 9 5 2 2 hhcurveto
+ -5 3 -2 5 58 39 26 52 19 vhcurveto
+ 19 52 12 49 5 44 -2 8 -1 -2 -2 -11 -8 -34 -37 -65 -47 17 5 19 1 18 -1 17 rrcurveto
+ 7 -4 -4 -3 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.medi.heh">
+ 245 496 315 rmoveto
+ -50 3 -55 -23 -62 -48 -62 -48 -44 -42 -27 -35 -105 callgsubr
+ 34 41 35 38 43 31 rrcurveto
+ 37 52 36 18 20 hhcurveto
+ 20 16 -6 -11 11 hvcurveto
+ 11 -11 14 -10 15 -9 15 -9 27 5 41 21 rrcurveto
+ 2 3 9 5 5 hhcurveto
+ -4 1 2 6 callsubr
+ 3 -4 -5 -1 -3 vhcurveto
+ -12 -46 -31 -28 -49 -9 5 19 2 18 -1 17 -1 5 0 1 -3 -5 -8 -13 -5 -22 -12 -9 -10 -7 -74 -53 -15 37 rrcurveto
+ 1 vlineto
+ -1 -1 rlineto
+ 14 -10 -5 16 -24 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.medi.meem">
+ 49 -31 callgsubr
+ </CharString>
+ <CharString name="seen-ar.medi.ragaa">
+ 18 -50 callsubr
+ </CharString>
+ <CharString name="seen-ar.medi.reh">
+ -34 237 203 rmoveto
+ -24 -34 -7 -14 -45 hvcurveto
+ -52 -16 -31 -19 -11 -21 -12 -23 -7 -27 -10 -24 rrcurveto
+ -1 -2 -9 -14 -3 vvcurveto
+ -1 vlineto
+ -1 -4 0 -4 -3 vvcurveto
+ -10 6 -11 10 6 6 4 9 6 vhcurveto
+ 11 11 13 10 12 7 21 8 27 9 30 9 rrcurveto
+ 5 14 11 2 7 hhcurveto
+ 8 3 -3 -5 hvcurveto
+ -11 vlineto
+ -21 10 -11 20 4 4 0 1 5 vhcurveto
+ 32 6 24 7 15 7 rrcurveto
+ 5 9 4 2 2 hhcurveto
+ -4 1 3 6 callsubr
+ 1 -1 0 0 -3 0 -3 -3 -1 vhcurveto
+ -11 -46 -31 -27 -50 -9 rrcurveto
+ 4 15 2 15 15 vvcurveto
+ 8 vlineto
+ 3 0 1 -1 -1 -1 -2 -2 -1 vhcurveto
+ -8 -14 -6 -21 -12 -9 -14 -11 -21 -11 -28 -11 rrcurveto
+ -3 -7 -7 -1 -5 hhcurveto
+ -12 -6 9 17 hvcurveto
+ 12 vlineto
+ 10 -10 2 -12 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.medi.sad">
+ 216 521 236 rmoveto
+ -1 0 -1 -1 hvcurveto
+ -13 -21 -24 -17 -35 -16 rrcurveto
+ -30 -68 -92 -22 -93 hhcurveto
+ -69 -55 14 65 28 13 40 26 51 hvcurveto
+ -2 callgsubr
+ -43 9 50 -14 62 hhcurveto
+ 39 49 5 10 58 hvcurveto
+ 84 14 63 16 43 20 rrcurveto
+ -12 2 7 -6 13 hhcurveto
+ 5 5 1 1 6 hvcurveto
+ 17 5 18 7 19 10 rrcurveto
+ 5 9 5 3 2 hhcurveto
+ -5 1 2 -2 5 hhcurveto
+ 29 58 31 17 13 hvcurveto
+ 33 42 11 64 7 68 rrcurveto
+ 1 1 0 -1 vhcurveto
+ -1 hlineto
+ -1 -1 -1 -1 -1 -3 -12 -46 -32 -27 -49 -9 rrcurveto
+ 4 16 3 16 17 vvcurveto
+ 4 vlineto
+ 3 -1 1 -1 -1 -1 -1 -3 -1 vhcurveto
+ -8 -14 -5 -20 -12 -10 -20 -15 -32 -18 -34 -1 rrcurveto
+ -1 -1 1 0 hvcurveto
+ 3 15 1 11 7 vvcurveto
+ 4 vlineto
+ 0 -2 15 -2 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.medi.yeh">
+ 6 -45 callsubr
+ </CharString>
+ <CharString name="semicolon-ar">
+ -86 127 229 rmoveto
+ -22 callsubr
+ -70 -144 rmoveto
+ -4 -4 0 -4 4 -4 73 -71 rcurveline
+ 4 -4 4 1 4 4 89 92 rcurveline
+ 4 4 -1 4 -4 4 -72 70 rcurveline
+ -4 4 -4 0 -4 -4 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="semicolon-ar.alt">
+ -86 57 363 rmoveto
+ 89 -92 4 -4 4 0 4 4 rlinecurve
+ 72 70 4 4 1 4 -4 4 rlinecurve
+ -89 92 -4 4 -4 1 -4 -4 rlinecurve
+ -73 -71 -4 -4 0 -4 4 -4 rlinecurve
+ 70 -144 -5 callgsubr
+ </CharString>
+ <CharString name="seven-ar">
+ 12 -12 callgsubr
+ </CharString>
+ <CharString name="seven-ar.dnom">
+ -99 140 7 rmoveto
+ 11 19 1 26 6 22 22 86 24 82 35 72 rrcurveto
+ 34 3 32 5 29 vhcurveto
+ -2 1 -1 0 -1 -3 -35 -79 -33 -84 -25 -94 -25 82 -36 93 -40 85 -11 -33 -11 -34 -8 -31 45 -96 44 -96 21 -118 2 -5 7 7 2 3 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seven-ar.numr">
+ -99 140 276 rmoveto
+ 11 19 1 26 6 22 22 86 24 82 35 72 rrcurveto
+ 34 3 32 5 29 vhcurveto
+ -2 1 -1 0 -1 -3 -35 -79 -33 -84 -25 -94 -25 82 -36 93 -40 85 -11 -33 -11 -34 -8 -31 45 -96 44 -96 21 -118 2 -5 7 7 2 3 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seven-persian">
+ 12 -12 callgsubr
+ </CharString>
+ <CharString name="seven-persian.urd">
+ 181 517 92 rmoveto
+ -134 6 -64 -3 -121 -12 96 75 265 336 -61 88 -35 -22 -41 -22 -44 -19 -18 -216 -149 -150 -101 -77 -27 -20 -33 -17 -19 -24 -4 -5 -4 -14 8 2 rrcurveto
+ 168 54 6 -6 153 hvcurveto
+ 36 28 37 34 38 32 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seven-persian.urd.dnom">
+ -99 304 64 rmoveto
+ -94 5 -45 -2 -84 -9 67 53 185 235 -42 61 -25 -15 -29 -15 -30 -14 -13 -151 -104 -105 -71 -54 -19 -14 -23 -12 -13 -16 -3 -4 -3 -10 6 2 rrcurveto
+ 117 38 4 -4 107 hvcurveto
+ 25 19 26 24 27 22 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seven-persian.urd.numr">
+ -99 304 333 rmoveto
+ -94 5 -45 -2 -84 -9 67 53 185 235 -42 61 -25 -15 -29 -15 -30 -14 -13 -151 -104 -105 -71 -54 -19 -14 -23 -12 -13 -16 -3 -4 -3 -10 6 2 rrcurveto
+ 117 38 4 -4 107 hvcurveto
+ 25 19 26 24 27 22 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="shadda-ar">
+ -12 -22 rmoveto
+ -15 8 13 -18 24 hhcurveto
+ 9 7 3 6 6 hvcurveto
+ 27 26 4 55 4 48 -18 -17 rcurveline
+ -4 vlineto
+ -25 -10 -26 -21 -3 vhcurveto
+ -2 hlineto
+ -7 -7 5 8 -8 hvcurveto
+ -8 8 -3 12 15 vvcurveto
+ 12 vlineto
+ 2 1 0 2 vvcurveto
+ 1 vlineto
+ -15 -15 -1 -20 -8 -21 -10 -12 rlinecurve
+ -9 -7 -17 -5 -13 hhcurveto
+ -18 -9 12 16 -1 hvcurveto
+ 5 vlineto
+ 14 5 14 12 vvcurveto
+ 1 vlineto
+ -8 -5 -15 -5 -2 hvcurveto
+ -1 -1 -1 -1 -1 -1 0 -1 vvcurveto
+ -4 -15 -7 -24 -20 vvcurveto
+ -31 12 -20 32 -2 vhcurveto
+ 27 3 28 21 4 26 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="sheen-ar">
+ 636 973 504 rmoveto
+ 2 4 -5 -4 0 vvcurveto
+ -32 -28 -36 -24 -42 -16 -92 -35 -93 -34 -107 -21 -91 51 -33 -53 -49 -70 -33 -48 -31 -50 -48 -33 -18 -13 -29 4 -10 19 -21 41 9 30 -1 46 -1 32 -6 28 -20 12 rrcurveto
+ -14 8 -22 -12 -22 -16 -82 -60 -14 -56 -32 -94 8 7 4 7 5 8 21 34 26 33 43 14 20 7 14 -14 8 -12 18 -26 -2 -76 11 -40 8 -30 19 -22 35 -2 rrcurveto
+ 83 26 45 158 71 56 42 33 4 -53 45 2 125 36 115 32 101 59 -14 -33 -16 -21 -13 -33 -3 -7 7 -10 15 19 48 74 41 83 39 83 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="six-ar">
+ 15 309 4 rmoveto
+ 17 38 16 41 13 41 rrcurveto
+ 1 -4 6 -1 1 vhcurveto
+ -49 98 -11 161 22 138 -99 -4 -77 25 -63 35 -11 -34 -17 -38 -13 -34 -3 -8 -2 -12 9 -5 58 -31 67 -21 88 -2 -1 -8 -1 -17 -1 -6 -14 -141 23 -126 40 -99 rrcurveto
+ 2 -5 10 2 2 4 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="six-ar.dnom">
+ -99 214 3 -32 callsubr
+ </CharString>
+ <CharString name="six-ar.numr">
+ -99 214 272 -32 callsubr
+ </CharString>
+ <CharString name="six-persian">
+ 112 377 335 rmoveto
+ 34 38 29 33 11 51 -38 -13 -29 -23 -36 -20 -67 -38 -68 31 -23 45 -11 22 39 83 89 -45 55 -28 24 119 -95 -6 -66 -5 -218 -220 186 -75 rrcurveto
+ -59 -63 -110 -131 -91 vvcurveto
+ 1 -1 rlineto
+ 4 6 9 3 2 hvcurveto
+ 137 198 6 4 197 123 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="six-persian.dnom">
+ -99 230 234 rmoveto
+ 24 27 20 23 8 36 -27 -9 -20 -16 -25 -14 -47 -27 -48 22 -16 31 -8 16 28 58 62 -32 38 -19 17 83 -66 -4 -46 -4 -153 -154 130 -52 rrcurveto
+ -41 -44 -77 -92 -64 vvcurveto
+ 1 hlineto
+ 2 5 6 2 1 hvcurveto
+ 96 139 4 2 138 86 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="six-persian.numr">
+ -99 230 504 rmoveto
+ 24 26 20 23 8 36 -27 -9 -20 -16 -25 -14 -47 -27 -48 22 -16 31 -8 16 28 58 62 -32 38 -19 17 83 -66 -4 -46 -4 -153 -154 130 -52 rrcurveto
+ -41 -44 -77 -92 -64 vvcurveto
+ 1 hlineto
+ 2 5 6 2 1 hvcurveto
+ 96 139 4 2 138 87 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="space">
+ -218 endchar
+ </CharString>
+ <CharString name="sukun-ar">
+ 62 11 rmoveto
+ -10 -12 -26 -17 -39 -19 -39 -19 -21 -12 -2 -5 10 -1 rcurveline
+ 83 6 58 31 30 59 rrcurveto
+ 9 18 5 15 12 vvcurveto
+ 10 -4 9 -6 6 vhcurveto
+ -10 10 -26 7 -43 2 rrcurveto
+ -18 hlineto
+ -32 -21 -5 -10 -8 hvcurveto
+ -16 -20 -12 -20 -9 -21 rrcurveto
+ -9 -21 -4 -12 -5 vvcurveto
+ 1 hlineto
+ 2 1 3 3 6 5 rrcurveto
+ 15 16 8 6 34 hhcurveto
+ 8 10 0 -1 10 hvcurveto
+ 36 -4 20 -4 6 -5 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="sukun-ar.alt">
+ -21 -69 rmoveto
+ 21 -4 18 10 15 27 21 36 3 34 -15 31 -32 66 -28 -59 -18 -43 -18 -44 -14 -44 47 -10 rrcurveto
+ -9 69 rmoveto
+ 9 4 9 9 10 vhcurveto
+ 9 10 11 -2 13 -11 19 -18 -3 -12 -24 -6 -24 -6 -13 3 -1 14 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="tah-ar">
+ 317 295 -19 callgsubr
+ </CharString>
+ <CharString name="tah-ar.fina">
+ -44 294 -19 callgsubr
+ </CharString>
+ <CharString name="tah-ar.init">
+ 210 -83 callsubr
+ </CharString>
+ <CharString name="tah-ar.init.ain">
+ 341 -47 callsubr
+ </CharString>
+ <CharString name="tah-ar.init.dal">
+ 271 -23 callgsubr
+ </CharString>
+ <CharString name="tah-ar.init.feh">
+ 401 -46 callsubr
+ </CharString>
+ <CharString name="tah-ar.init.hah">
+ 312 -44 callsubr
+ </CharString>
+ <CharString name="tah-ar.init.heh">
+ 402 -34 callgsubr
+ </CharString>
+ <CharString name="tah-ar.init.kaf">
+ 254 -43 callsubr
+ </CharString>
+ <CharString name="tah-ar.init.meem">
+ 221 203 603 rmoveto
+ 21 -321 -101 callsubr
+ 260 -351 rmoveto
+ 14 28 -3 26 -103 callsubr
+ -24 -10 -15 -15 -60 -56 -69 -71 -52 -64 -64 -24 -42 -30 -21 -36 -21 -36 -25 -52 -30 -67 21 -2 rcurveline
+ 22 55 30 34 39 13 39 13 39 12 42 12 51 15 49 -61 callsubr
+ 46 57 38 74 rrcurveto
+ -97 -34 -80 callgsubr
+ -27 -67 -15 -71 -13 36 36 33 40 47 25 29 16 40 -45 callgsubr
+ </CharString>
+ <CharString name="tah-ar.init.qantara">
+ 493 -49 callsubr
+ </CharString>
+ <CharString name="tah-ar.init.ragaa">
+ 314 209 569 rmoveto
+ 22 -320 -101 callsubr
+ -94 -599 rmoveto
+ 13 5 13 5 13 4 54 16 48 14 51 24 37 18 36 32 34 46 17 22 17 18 callgsubr
+ -14 rrcurveto
+ -64 -60 -59 -64 -58 -67 -75 -16 -81 -49 -30 -63 -6 -13 -15 -32 -3 -13 42 -29 rcurveline
+ 46 31 48 34 53 24 rrcurveto
+ 257 214 rmoveto
+ 7 -14 -1 -9 -8 -4 -57 -28 -66 -13 -71 -14 36 37 33 38 47 26 29 15 40 -14 11 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="tah-ar.init.reh">
+ 222 -33 callgsubr
+ </CharString>
+ <CharString name="tah-ar.init.sad">
+ 538 -38 callgsubr
+ </CharString>
+ <CharString name="tah-ar.init.yeh">
+ 197 180 561 rmoveto
+ 21 -321 74 117 -21 321 rlineto
+ 259 -352 rmoveto
+ 14 28 -2 27 -103 callsubr
+ -24 -11 -15 -14 -60 -57 -70 -70 -52 -64 -55 -21 -39 -26 -21 -29 -21 -29 -22 -39 -22 -50 21 -11 rcurveline
+ 23 35 28 22 34 10 34 10 35 10 35 10 51 15 48 -61 callsubr
+ 45 56 39 74 rrcurveto
+ -96 -33 17 callgsubr
+ 16 40 -16 11 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="tah-ar.medi">
+ -158 -83 callsubr
+ </CharString>
+ <CharString name="tah-ar.medi.ain">
+ -37 -47 callsubr
+ </CharString>
+ <CharString name="tah-ar.medi.dal">
+ -104 -23 callgsubr
+ </CharString>
+ <CharString name="tah-ar.medi.feh">
+ 20 -46 callsubr
+ </CharString>
+ <CharString name="tah-ar.medi.hah">
+ -65 -44 callsubr
+ </CharString>
+ <CharString name="tah-ar.medi.heh">
+ 21 -34 callgsubr
+ </CharString>
+ <CharString name="tah-ar.medi.kaf">
+ -99 -43 callsubr
+ </CharString>
+ <CharString name="tah-ar.medi.meem">
+ -38 316 622 rmoveto
+ 22 -321 -101 callsubr
+ 260 -351 rmoveto
+ 14 28 -2 -60 callsubr
+ -25 7 -31 -6 -31 -6 -24 -10 -15 -14 -60 -57 -69 -71 -52 -64 -13 -5 -30 -8 -49 -12 -49 -12 -28 -7 -9 -6 -35 -23 -27 -28 -16 -33 rrcurveto
+ -16 -33 -21 -43 -24 -54 21 -2 rcurveline
+ 30 66 46 38 62 9 62 9 62 15 63 21 51 15 49 -61 callsubr
+ 45 56 39 75 rrcurveto
+ -97 -34 34 callgsubr
+ 39 47 26 -60 callgsubr
+ </CharString>
+ <CharString name="tah-ar.medi.postsad">
+ -158 -83 callsubr
+ </CharString>
+ <CharString name="tah-ar.medi.qantara">
+ 125 -49 callsubr
+ </CharString>
+ <CharString name="tah-ar.medi.ragaa">
+ -145 209 571 rmoveto
+ 22 -321 -101 callsubr
+ -94 -598 rmoveto
+ 13 5 13 4 13 4 54 16 48 15 51 24 37 18 36 32 35 46 17 22 16 18 callgsubr
+ -15 rrcurveto
+ -64 -60 -60 -63 -57 -67 -77 -17 -78 -47 -31 -64 -6 -13 -15 -31 -3 -14 42 -30 rcurveline
+ 1 hlineto
+ 4 3 3 2 2 2 42 29 46 32 49 22 rrcurveto
+ 257 213 16 callsubr
+ 33 30 callsubr
+ </CharString>
+ <CharString name="tah-ar.medi.reh">
+ -151 -33 callgsubr
+ </CharString>
+ <CharString name="tah-ar.medi.sad">
+ 137 -38 callgsubr
+ </CharString>
+ <CharString name="tah-ar.medi.yeh">
+ 26 380 599 rmoveto
+ 22 -321 73 118 -21 320 rlineto
+ -171 -612 rmoveto
+ 43 8 42 10 42 14 51 15 48 20 46 25 75 41 45 54 39 74 14 28 -3 26 -103 callsubr
+ -23 -9 -16 -15 -60 -56 -70 -72 -52 -63 rrcurveto
+ -27 -10 -47 -9 -35 -9 -41 -10 -39 -9 -37 -9 -37 -9 -32 -21 -27 -35 -25 -30 -15 -35 -18 -40 rrcurveto
+ -1 vlineto
+ 21 -17 17 21 20 17 23 11 rlinecurve
+ 57 27 76 15 69 13 rrcurveto
+ 334 228 -99 callgsubr
+ -9 -8 -4 -57 -27 -68 -14 -70 -14 37 36 33 40 47 25 29 16 40 -15 11 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="tahabove-ar">
+ -26 143 -98 callgsubr
+ endchar
+ </CharString>
+ <CharString name="tcheh-ar">
+ 319 -73 callgsubr
+ 327 -358 -107 callgsubr
+ endchar
+ </CharString>
+ <CharString name="teh-ar">
+ 437 462 468 -92 callsubr
+ 157 -126 -80 callsubr
+ </CharString>
+ <CharString name="tehMarbuta-ar">
+ -117 210 521 -92 callsubr
+ 7 -354 -71 callgsubr
+ </CharString>
+ <CharString name="thal-ar">
+ 3 312 575 -107 callsubr
+ -70 -264 -95 callsubr
+ </CharString>
+ <CharString name="theh-ar">
+ 437 544 579 -107 callgsubr
+ 75 -237 -80 callsubr
+ </CharString>
+ <CharString name="three-ar">
+ 50 219 4 rmoveto
+ 71 111 -16 143 -64 110 -4 7 19 15 10 8 5 -6 4 -6 7 -4 28 -17 35 19 17 15 41 38 11 69 6 74 1 8 -9 -18 -1 -4 -7 -36 -33 -29 -43 10 rrcurveto
+ -14 3 -12 17 3 21 1 3 -5 10 -3 -6 -5 -8 -7 -26 -5 -7 -21 -29 -61 -19 -37 26 -27 19 -15 39 -15 31 -19 -40 -15 -43 -15 -41 21 -52 34 -40 27 -45 rrcurveto
+ 52 -85 63 -99 -14 -142 rrcurveto
+ -2 9 4 2 4 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="three-ar.dnom">
+ -99 141 3 rmoveto
+ 50 78 -11 100 -45 77 -3 5 14 10 7 6 3 -5 3 -4 5 -3 19 -12 25 14 12 10 28 27 8 48 4 52 1 6 -6 -13 -1 -3 -5 -25 -23 -20 -30 7 rrcurveto
+ -10 2 -8 12 2 14 1 3 -4 7 -2 -5 -4 -5 -4 -18 -4 -5 -15 -21 -42 -13 -26 18 -19 14 -11 27 -10 22 -13 -28 -11 -31 -10 -28 14 -37 24 -28 19 -31 rrcurveto
+ 36 -60 44 -69 -9 -99 -85 callgsubr
+ </CharString>
+ <CharString name="three-ar.numr">
+ -99 141 272 rmoveto
+ 50 78 -11 100 -45 77 -3 5 14 10 7 6 3 -5 3 -4 5 -3 19 -11 25 13 12 10 28 27 8 48 4 52 1 6 -6 -13 -1 -3 -5 -25 -23 -20 -30 7 rrcurveto
+ -10 2 -8 12 2 14 1 3 -4 7 -2 -5 -4 -5 -4 -18 -4 -5 -15 -21 -42 -13 -26 18 -19 14 -11 27 -10 22 -13 -28 -11 -31 -10 -28 14 -37 24 -28 19 -31 rrcurveto
+ 36 -60 44 -69 -9 -99 -85 callgsubr
+ </CharString>
+ <CharString name="threedotsdownbelow-ar">
+ 147 74 -107 callgsubr
+ endchar
+ </CharString>
+ <CharString name="threedotsupabove-ar">
+ 147 74 -107 callgsubr
+ endchar
+ </CharString>
+ <CharString name="tteh-ar">
+ 437 371 648 -98 callgsubr
+ 156 -202 -80 callsubr
+ </CharString>
+ <CharString name="two-ar">
+ -78 262 571 rmoveto
+ 2 -2 1 0 vhcurveto
+ -41 10 -43 10 -48 -6 -113 -13 -8 -212 52 -89 39 -66 51 -101 -12 -107 6 4 3 5 1 5 17 64 31 63 -9 78 -22 79 -54 84 -29 72 45 13 52 -9 41 -12 rrcurveto
+ 5 -1 6 7 2 7 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="two-ar.dnom">
+ -99 214 400 rmoveto
+ 1 -1 1 0 vhcurveto
+ -29 7 -30 7 -33 -4 -94 callsubr
+ 31 9 37 -6 28 -9 rrcurveto
+ 4 4 4 5 1 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="two-ar.numr">
+ -99 214 669 rmoveto
+ 1 -1 1 0 vhcurveto
+ -29 7 -30 7 -33 -4 -94 callsubr
+ 31 9 37 -6 28 -9 rrcurveto
+ 4 4 4 5 1 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="two-persian">
+ 28 210 372 rmoveto
+ 57 -18 42 17 26 51 26 51 11 52 -5 56 rrcurveto
+ 4 -2 -1 -3 -6 vhcurveto
+ -3 -6 -2 -3 -2 vvcurveto
+ -40 -68 -49 -30 -58 7 -58 7 -45 38 -33 68 -19 -39 -16 -43 -15 -42 11 -26 13 -25 15 -21 46 -65 36 -63 37 -79 24 -52 9 -61 -7 -71 rrcurveto
+ -1 -3 12 9 0 vvcurveto
+ 35 56 16 60 -5 66 -5 66 -18 60 -32 56 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="two-persian.dnom">
+ -99 142 260 -15 callgsubr
+ </CharString>
+ <CharString name="two-persian.numr">
+ -99 142 529 -15 callgsubr
+ </CharString>
+ <CharString name="twodotshorizontalabove-ar">
+ 65 -37 -92 callsubr
+ endchar
+ </CharString>
+ <CharString name="twodotshorizontalbelow-ar">
+ 65 -37 -92 callsubr
+ endchar
+ </CharString>
+ <CharString name="vabove-ar">
+ 18 -10 -104 callsubr
+ endchar
+ </CharString>
+ <CharString name="vbelow-ar">
+ 18 -10 -104 callsubr
+ endchar
+ </CharString>
+ <CharString name="veh-ar">
+ 315 630 724 -107 callgsubr
+ -542 -690 -72 callgsubr
+ </CharString>
+ <CharString name="wasla-ar">
+ -92 -34 rmoveto
+ 75 74 -46 -89 101 42 28 11 26 15 16 22 12 16 16 21 -15 18 -12 14 -27 -8 -11 -10 -23 -21 -22 -22 -20 -24 rrcurveto
+ -1 -3 -2 0 -2 hhcurveto
+ -35 42 -55 -64 -10 -40 -1 -4 8 6 2 2 rrcurveto
+ 182 90 rmoveto
+ 2 -3 1 -4 -4 -2 -20 -10 -24 -5 -25 -5 13 13 12 14 17 9 10 5 14 -4 4 -8 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="waw-ar">
+ 127 230 8 -97 callgsubr
+ </CharString>
+ <CharString name="waw-ar.fina">
+ 127 230 8 -97 callgsubr
+ </CharString>
+ <CharString name="wawDotabove-ar">
+ 127 465 619 rmoveto
+ -71 66 -27 -34 -28 -35 -27 -34 rlinecurve
+ 71 -66 28 34 27 34 27 35 rlinecurve
+ -235 -611 -97 callgsubr
+ </CharString>
+ <CharString name="wawHamzaabove-ar">
+ 127 396 559 -106 callgsubr
+ -166 -551 -97 callgsubr
+ </CharString>
+ <CharString name="yeh-ar">
+ 251 -21 callgsubr
+ 246 -158 rmoveto
+ 60 119 -64 -12 -64 -12 -64 -12 rlinecurve
+ -60 -119 64 12 64 12 64 12 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="yeh-farsi">
+ 251 -40 callsubr
+ </CharString>
+ <CharString name="yehHamzaabove-ar">
+ 251 296 573 -106 callgsubr
+ -218 -549 -39 callsubr
+ </CharString>
+ <CharString name="yehVabove-ar">
+ 251 339 671 -104 callsubr
+ -261 -647 -39 callsubr
+ </CharString>
+ <CharString name="yehbarree-ar">
+ 335 344 463 -29 callgsubr
+ </CharString>
+ <CharString name="yehbarree-ar.fina">
+ 335 67 158 rmoveto
+ -46 33 -5 -10 -5 -19 -5 -30 rlinecurve
+ -9 -56 3 -45 41 -17 44 -18 62 0 55 9 161 25 130 60 97 86 29 26 30 25 11 45 -125 -71 -129 -57 -183 -11 -55 -3 -53 6 -50 17 rrcurveto
+ 1 1 2 1 2 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="yehbarreeHamzaabove-ar">
+ 335 291 612 -106 callgsubr
+ 53 -149 -29 callgsubr
+ </CharString>
+ <CharString name="zah-ar">
+ 317 295 479 rmoveto
+ 22 -321 74 118 -22 321 rlineto
+ 220 -109 -107 callsubr
+ -8 -298 -14 callgsubr
+ </CharString>
+ <CharString name="zain-ar">
+ 105 439 470 -107 callsubr
+ 9 -198 -70 callgsubr
+ </CharString>
+ <CharString name="zero-ar">
+ -133 30 263 rmoveto
+ -2 -2 -1 -1 -2 vvcurveto
+ -3 2 -3 3 -2 vhcurveto
+ 83 -70 rlineto
+ -2 2 3 -1 2 hhcurveto
+ 2 1 2 2 2 hvcurveto
+ 75 91 rlineto
+ 2 2 1 2 2 vvcurveto
+ 2 -2 3 -3 2 vhcurveto
+ -83 70 rlineto
+ 2 -2 -3 1 -2 hhcurveto
+ -2 -2 -1 -2 -2 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="zero-ar.dnom">
+ -99 72 184 -26 callsubr
+ 48 rlineto
+ 2 -1 -3 1 -1 hhcurveto
+ -1 -2 -1 -2 -1 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="zero-ar.numr">
+ -99 72 453 -26 callsubr
+ 49 rlineto
+ 1 -1 -3 1 -1 hhcurveto
+ -1 -2 -1 -1 -1 hvcurveto
+ endchar
+ </CharString>
+ </CharStrings>
+ </CFFFont>
+
+ <GlobalSubrs>
+ <!-- The 'index' attribute is only for humans; it is ignored when parsed. -->
+ <CharString index="0">
+ rmoveto
+ -10 19 -11 16 -14 13 -49 46 -46 -45 -41 -55 -41 -56 -38 -66 -17 -33 -1 -1 rcurveline
+ 1 -44 25 34 94 211 60 -147 rlinecurve
+ 6 -15 5 5 4 5 27 35 26 37 20 41 rrcurveto
+ return
+ </CharString>
+ <CharString index="1">
+ rmoveto
+ 37 26 20 43 -28 18 -15 10 -24 1 -12 14 15 21 26 3 8 18 21 45 rcurveline
+ -9 -4 -9 -4 -8 -6 -26 -20 -88 -94 50 -28 11 -6 16 -6 11 -7 6 -4 -8 -5 -3 -2 -29 -16 -33 -13 -31 -14 36 6 35 2 31 22 rrcurveto
+ return
+ </CharString>
+ <CharString index="2">
+ -1 callgsubr
+ 15 36 27 41 40 47 return
+ </CharString>
+ <CharString index="3">
+ -6 9 0 3 3 vhcurveto
+ return
+ </CharString>
+ <CharString index="4">
+ -20 -34 -20 -34 -14 -34 -11 -36 rrcurveto
+ -7 -22 -4 return
+ </CharString>
+ <CharString index="5">
+ -1 -12 -4 rrcurveto
+ -18 return
+ </CharString>
+ <CharString index="6">
+ -13 -34 -13 -43 -13 -51 1 -29 27 -14 28 -3 return
+ </CharString>
+ <CharString index="7">
+ 14 20 14 20 17 15 22 11 return
+ </CharString>
+ <CharString index="8">
+ rmoveto
+ 7 -14 -1 return
+ </CharString>
+ <CharString index="9">
+ rmoveto
+ 8 -125 29 46 -8 125 rlineto
+ 82 -159 rmoveto
+ 13 18 18 15 -16 20 -13 16 -30 -9 -12 -11 -25 -24 -23 -25 -23 -26 -34 -6 -38 -3 -40 1 rrcurveto
+ -2 -2 -4 -1 2 hvcurveto
+ 29 -17 15 -15 25 -2 11 -1 13 1 17 4 51 13 38 21 26 35 rrcurveto
+ -19 9 rmoveto
+ 2 -3 2 -6 -4 -2 -22 -11 -27 -5 -27 -5 14 14 13 15 18 10 11 6 15 -4 5 -9 rrcurveto
+ return
+ </CharString>
+ <CharString index="10">
+ rmoveto
+ 180 35 163 279 -129 131 -12 12 -28 13 -15 -17 -32 -36 -16 -48 -22 -44 -10 -20 -3 -24 15 -17 17 -19 43 -2 32 7 7 -10 7 -20 -7 -7 -20 -23 -25 -19 -31 -12 rrcurveto
+ -115 -47 -121 -40 -104 -58 -6 -3 0 -10 7 -1 73 -7 79 -7 73 14 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="11">
+ 16 61 -8 38 -32 17 -32 17 -35 -14 -37 -44 return
+ </CharString>
+ <CharString index="12">
+ vhcurveto
+ 1 2 0 1 1 vvcurveto
+ return
+ </CharString>
+ <CharString index="13">
+ -11 -5 90 callgsubr
+ 39 47 25 28 15 return
+ </CharString>
+ <CharString index="14">
+ -39 -5 -12 0 -6 6 -1 return
+ </CharString>
+ <CharString index="15">
+ -9 -8 -4 -57 -27 -68 -14 -70 -14 36 return
+ </CharString>
+ <CharString index="16">
+ -84 92 callgsubr
+ return
+ </CharString>
+ <CharString index="17">
+ rmoveto
+ 76 109 31 145 -59 124 -54 -125 rcurveline
+ 14 -44 13 -45 -2 -56 4 callgsubr
+ rrcurveto
+ endchar
+ </CharString>
+ <CharString index="18">
+ -81 callgsubr
+ 6 -17 13 11 19 40 29 58 23 56 15 36 15 36 27 41 40 47 return
+ </CharString>
+ <CharString index="19">
+ 48 callgsubr
+ 6 5 5 9 7 vhcurveto
+ return
+ </CharString>
+ <CharString index="20">
+ 35 vvcurveto
+ 28 -8 25 -14 21 vhcurveto
+ 21 -14 -15 11 -14 hhcurveto
+ return
+ </CharString>
+ <CharString index="21">
+ -39 vvcurveto
+ -5 -48 -13 -31 -24 -14 rrcurveto
+ -21 vlineto
+ 22 return
+ </CharString>
+ <CharString index="22">
+ rrcurveto
+ -2 6 3 1 3 vhcurveto
+ endchar
+ </CharString>
+ <CharString index="23">
+ -33 -21 -41 -16 93 callgsubr
+ return
+ </CharString>
+ <CharString index="24">
+ 105 61 84 46 105 61 rlinecurve
+ 33 117 return
+ </CharString>
+ <CharString index="25">
+ -6 10 -4 rrcurveto
+ 6 -2 return
+ </CharString>
+ <CharString index="26">
+ 1 vlineto
+ -53 -65 rlineto
+ -1 vlineto
+ -3 -38 -3 -41 1 -30 6 -17 rlinecurve
+ return
+ </CharString>
+ <CharString index="27">
+ rmoveto
+ 7 -14 0 -8 -8 -4 -57 return
+ </CharString>
+ <CharString index="28">
+ 1 -29 27 -15 28 -3 return
+ </CharString>
+ <CharString index="29">
+ -12 6 hvcurveto
+ 28 -58 return
+ </CharString>
+ <CharString index="30">
+ 34 30 46 30 46 return
+ </CharString>
+ <CharString index="31">
+ -25 -18 vvcurveto
+ endchar
+ </CharString>
+ <CharString index="32">
+ -24 -9 -23 -11 -22 -11 return
+ </CharString>
+ <CharString index="33">
+ 2 -33 4 -49 return
+ </CharString>
+ <CharString index="34">
+ 648 -186 rmoveto
+ 4 4 -12 -3 -5 -1 -175 -46 -260 -39 -136 153 -78 88 247 211 55 48 40 35 43 36 32 46 27 38 64 138 -66 27 -64 27 -108 -20 -44 -31 -66 -47 -39 -153 75 -83 rrcurveto
+ -90 -82 -118 -209 30 -141 55 -261 426 67 163 198 rrcurveto
+ -446 594 rmoveto
+ 29 25 136 24 20 -59 -34 -32 -52 -32 -41 -30 -16 36 -27 30 -15 38 rrcurveto
+ return
+ </CharString>
+ <CharString index="35">
+ rmoveto
+ 111 -74 277 53 103 122 67 79 40 106 -45 89 -25 49 -46 42 35 callgsubr
+ 38 15 21 18 rrcurveto
+ 11 12 21 -75 0 vvcurveto
+ -72 -72 -455 -111 17 200 4 53 24 42 20 36 -11 -3 -4 -9 -5 -8 -114 -174 15 -98 69 -46 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="36">
+ rmoveto
+ 50 226 -122 160 -114 -333 -40 -116 -21 -132 120 31 84 22 27 68 16 74 rrcurveto
+ -79 98 rmoveto
+ 13 -9 37 -78 -17 -11 -29 -18 -46 -17 -39 17 -6 3 -9 8 2 4 4 15 42 119 48 -33 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="37">
+ rmoveto
+ -1 7 -9 1 -3 -8 -16 -35 -23 -28 -30 -20 -64 -43 -79 -27 -81 -25 -236 -73 96 -17 156 -4 101 -3 67 33 45 54 31 37 33 84 13 67 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="38">
+ -158 -2 -120 35 -91 callgsubr
+ 11 18 18 18 61 58 75 43 90 28 90 28 86 14 82 3 53 112 rcurveline
+ -79 -3 -72 -9 -64 -17 -143 -37 -114 -58 -80 -102 -79 -101 -26 return
+ </CharString>
+ <CharString index="39">
+ 2 7 7 hvcurveto
+ 39 43 rlineto
+ 5 5 2 5 5 vvcurveto
+ 4 -2 6 -4 5 vhcurveto
+ -39 42 rlineto
+ 5 -6 return
+ </CharString>
+ <CharString index="40">
+ 18 vhcurveto
+ -27 10 -35 17 -40 22 rrcurveto
+ 14 -26 -23 7 -20 hhcurveto
+ -11 -11 -2 -5 return
+ </CharString>
+ <CharString index="41">
+ -13 -34 -13 -42 -13 -51 1 -29 27 -15 28 -3 return
+ </CharString>
+ <CharString index="42">
+ 7 4 8 11 24 13 15 17 6 17 6 14 -13 11 -31 rrcurveto
+ return
+ </CharString>
+ <CharString index="43">
+ -10 -15 -15 -23 16 callgsubr
+ return
+ </CharString>
+ <CharString index="44">
+ -13 24 -16 20 -20 14 -20 14 -17 -4 -17 -22 -27 return
+ </CharString>
+ <CharString index="45">
+ rrcurveto
+ 5 26 3 24 22 vvcurveto
+ 37 -8 return
+ </CharString>
+ <CharString index="46">
+ 1 -5 6 -2 -3 vhcurveto
+ -11 -18 -21 -15 -32 -12 return
+ </CharString>
+ <CharString index="47">
+ 29 16 39 -45 callgsubr
+ </CharString>
+ <CharString index="48">
+ 14 -12 9 -18 14 -32 8 -45 4 -45 4 return
+ </CharString>
+ <CharString index="49">
+ -35 1 29 40 26 42 18 51 52 -21 -1 return
+ </CharString>
+ <CharString index="50">
+ -2 -1 hvcurveto
+ -10 -15 -15 -23 -103 callgsubr
+ return
+ </CharString>
+ <CharString index="51">
+ -3 21 -5 20 -5 11 -6 2 -8 return
+ </CharString>
+ <CharString index="52">
+ 2 -4 hhcurveto
+ -5 -4 -1 -5 -5 hvcurveto
+ return
+ </CharString>
+ <CharString index="53">
+ rmoveto
+ 6 2 5 4 5 vhcurveto
+ 18 24 return
+ </CharString>
+ <CharString index="54">
+ -13 7 -18 75 callgsubr
+ return
+ </CharString>
+ <CharString index="55">
+ -70 vvcurveto
+ -29 6 -24 12 -18 vhcurveto
+ return
+ </CharString>
+ <CharString index="56">
+ 4 21 5 19 6 17 4 14 return
+ </CharString>
+ <CharString index="57">
+ -12 vvcurveto
+ -19 1 -36 12 return
+ </CharString>
+ <CharString index="58">
+ -24 31 4 40 6 21 return
+ </CharString>
+ <CharString index="59">
+ -6 -31 -1 -31 27 -27 35 -8 50 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="60">
+ -14 36 37 34 39 47 26 return
+ </CharString>
+ <CharString index="61">
+ -16 257 rcurveline
+ 106 62 107 return
+ </CharString>
+ <CharString index="62">
+ -16 11 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="63">
+ -2 -2 vvcurveto
+ -2 3 return
+ </CharString>
+ <CharString index="64">
+ 14 -12 9 -18 14 return
+ </CharString>
+ <CharString index="65">
+ 90 28 86 15 82 3 53 112 rcurveline
+ return
+ </CharString>
+ <CharString index="66">
+ -2 -1 0 -2 -1 hvcurveto
+ return
+ </CharString>
+ <CharString index="67">
+ 7 19 rrcurveto
+ 2 6 1 return
+ </CharString>
+ <CharString index="68">
+ rmoveto
+ 43 -27 -58 -24 -27 -10 -31 -11 return
+ </CharString>
+ <CharString index="69">
+ 504 530 rmoveto
+ 22 -321 74 117 -22 321 rlineto
+ 198 -249 rmoveto
+ -38 -35 -17 -16 -17 hvcurveto
+ -64 -60 -60 -63 -57 -67 rrcurveto
+ -15 -67 -127 -32 -87 hhcurveto
+ -64 -46 14 35 -27 hvcurveto
+ -8 10 -4 13 17 vvcurveto
+ 28 12 37 23 46 vhcurveto
+ 1 2 0 0 0 callgsubr
+ -49 11 61 -9 68 hhcurveto
+ 31 34 3 4 39 hvcurveto
+ 147 16 149 43 114 55 97 47 39 43 43 84 5 callgsubr
+ 35 39 47 26 rrcurveto
+ 5 8 9 2 9 hhcurveto
+ 29 29 -18 -25 hvcurveto
+ endchar
+ </CharString>
+ <CharString index="70">
+ 561 367 rmoveto
+ -38 -36 -17 -16 -17 hvcurveto
+ -64 -60 -60 -64 -57 -67 rrcurveto
+ -2 -8 -7 0 -7 hhcurveto
+ -19 -6 4 24 hvcurveto
+ 11 vlineto
+ 7 -4 2 -9 vhcurveto
+ -6 hlineto
+ -50 -5 -46 -11 -41 -18 -18 -8 -14 -14 -11 -21 -11 -21 -10 -18 -8 -18 -88 callgsubr
+ 30 30 51 14 51 5 rrcurveto
+ 1 hlineto
+ 3 2 -2 -2 hvcurveto
+ -1 vlineto
+ -2 -1 -2 -1 vvcurveto
+ -19 19 -6 19 4 3 0 1 4 vhcurveto
+ 5 hlineto
+ 61 64 14 28 67 hvcurveto
+ 101 42 57 61 47 91 rrcurveto
+ 6 11 2 11 11 vvcurveto
+ 36 -31 34 -38 vhcurveto
+ -89 -110 rmoveto
+ 29 29 -17 -25 -5 -3 -3 -4 -2 hvcurveto
+ -57 -28 -67 -14 -71 -14 36 37 34 38 47 26 rrcurveto
+ 5 8 10 2 9 hhcurveto
+ endchar
+ </CharString>
+ <CharString index="71">
+ 439 300 rmoveto
+ -12 -3 -15 -2 -18 -1 -18 -1 -9 8 -1 20 -4 37 -32 12 -43 -15 -24 -8 -25 -14 -25 -17 -51 -34 -84 -75 -32 -48 -8 -10 -5 -7 -3 -4 -13 -32 -14 -63 -3 -38 rrcurveto
+ -104 callgsubr
+ 14 22 11 19 9 16 23 39 29 32 37 28 38 28 53 41 45 10 21 5 9 -10 -3 -24 -3 -21 10 -13 20 -3 20 -3 23 1 27 5 39 7 63 21 31 9 rrcurveto
+ 40 15 37 18 34 22 60 39 39 51 34 65 14 28 -2 26 -21 25 -17 20 -25 7 -31 -6 -31 -6 -23 -9 -16 -15 -64 -60 -60 -65 -57 -66 rrcurveto
+ 241 88 rmoveto
+ 7 -14 0 -92 callgsubr
+ 36 34 40 47 25 29 16 39 -14 11 -21 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="72">
+ -13 callgsubr
+ 69 -9 78 10 89 26 89 26 69 40 48 53 rrcurveto
+ 51 56 50 123 -46 93 -63 callgsubr
+ -37 -19 -46 -22 -41 -10 -19 -1 -33 19 -10 33 -17 38 18 19 16 5 6 8 -9 8 -24 rrcurveto
+ 12 -36 0 0 0 vvcurveto
+ -16 -14 -32 -15 -49 -18 -49 -18 -35 -12 -20 -4 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="73">
+ 375 628 rmoveto
+ 22 -320 74 117 -22 321 rlineto
+ 260 -352 rmoveto
+ 14 28 -3 27 -21 25 -17 20 -24 7 -31 -6 -31 -6 -24 -11 -15 -14 -60 -57 -70 -70 -52 -64 -29 -12 -32 -21 -36 -33 -36 -33 -27 -28 -19 -24 -105 callgsubr
+ 58 70 55 41 99 28 51 15 48 19 46 25 74 40 46 56 39 74 rrcurveto
+ -97 -33 9 callgsubr
+ </CharString>
+ <CharString index="74">
+ 214 550 rmoveto
+ 22 -321 74 118 -22 321 rlineto
+ 198 -249 rmoveto
+ -38 -35 -17 -16 -17 hvcurveto
+ -64 -60 -60 -64 -57 -66 rrcurveto
+ -1 vlineto
+ -2 -2 -35 -6 -34 -9 -32 -15 rlinecurve
+ -44 -20 -33 -40 -21 -48 -88 callgsubr
+ 28 28 39 18 42 8 64 12 66 20 68 26 68 26 54 39 39 52 13 17 12 19 13 21 rrcurveto
+ 10 17 6 17 17 3 -1 3 3 vvcurveto
+ 32 -3 -31 28 -35 hhcurveto
+ -30 -152 rmoveto
+ -5 -3 -3 -4 -2 vhcurveto
+ -57 -28 -67 -14 -71 -47 callgsubr
+ rrcurveto
+ 5 8 10 2 9 hhcurveto
+ 29 29 -18 -25 hvcurveto
+ endchar
+ </CharString>
+ <CharString index="75">
+ 391 221 rmoveto
+ -19 -4 -12 4 -4 13 -7 21 -14 7 -22 10 -9 3 -9 1 -8 1 rrcurveto
+ -1 hlineto
+ -78 -5 -60 -32 -43 -59 -43 -60 -35 -59 -27 -60 21 -2 rcurveline
+ 13 30 28 35 45 39 45 39 42 17 36 -7 rrcurveto
+ 1 vlineto
+ 24 1 21 -15 14 -30 46 callgsubr
+ 51 61 41 79 14 28 -2 26 -21 25 -17 20 -24 7 -31 -6 -31 -6 -24 -9 -16 -15 rrcurveto
+ -61 -57 -59 -64 -60 -70 rrcurveto
+ 235 88 rmoveto
+ 7 -14 0 -9 -8 -4 -57 -27 -67 -15 -71 -13 27 27 0 1 27 27 18 18 22 15 23 13 29 16 39 -15 11 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="76">
+ 261 188 rmoveto
+ 13 -22 9 -15 16 -9 23 -1 rlinecurve
+ 19 -2 22 6 24 14 rrcurveto
+ 1 3 8 6 5 hhcurveto
+ -4 1 3 -3 83 callgsubr
+ 12 hvcurveto
+ 32 40 13 67 7 67 -2 7 -2 -2 -1 -10 -12 -46 -31 -27 -49 -9 5 19 2 17 -1 17 rrcurveto
+ 5 -2 1 -3 -5 vhcurveto
+ -5 -19 -11 -19 -17 -18 -19 -20 -52 -24 -15 35 -5 11 -9 10 -14 8 -62 35 -58 -39 -34 -34 -58 -58 -52 -90 -35 -77 -8 -18 -6 -12 -2 -7 -2 -7 -2 -5 -1 -1 rrcurveto
+ 18 hlineto
+ 39 61 58 85 56 38 36 24 30 1 24 -21 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="77">
+ 358 173 rmoveto
+ -19 -4 -12 4 -4 13 rrcurveto
+ 29 -9 -24 14 -36 hhcurveto
+ -60 1 -49 -18 -39 -38 -39 -38 -33 -51 -26 -62 17 -23 rcurveline
+ 1 hlineto
+ 24 36 27 28 30 18 30 18 30 9 30 -1 27 -1 20 -16 12 -29 12 -30 63 16 31 9 52 14 51 20 52 25 81 39 51 60 41 79 14 28 -2 27 -21 25 rrcurveto
+ -17 20 -24 7 -31 -6 -31 -6 -23 -10 -16 -15 -64 -60 -60 -64 -57 -67 rrcurveto
+ 236 88 9 callgsubr
+ </CharString>
+ <CharString index="78">
+ rmoveto
+ -14 32 -15 11 -19 -8 -19 -8 -14 -13 -10 -17 -19 -33 -19 -31 -21 -30 -21 -30 -26 -24 -31 -18 -41 -24 -37 -34 -18 -48 -10 -24 -11 -64 5 -37 3 -23 12 -16 22 -9 rrcurveto
+ 44 -18 62 0 55 9 162 25 129 59 97 86 29 26 31 25 11 45 -125 -71 -129 -57 -184 -11 -55 -3 -53 6 -50 17 rrcurveto
+ 4 3 4 7 4 vhcurveto
+ 56 30 46 50 36 70 14 26 17 23 32 8 29 -4 12 -29 2 -29 rrcurveto
+ -6 4 -2 6 4 vhcurveto
+ 6 4 3 4 2 4 17 41 -2 60 -11 44 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="79">
+ -27 callgsubr
+ endchar
+ </CharString>
+ <CharString index="80">
+ 906 232 rmoveto
+ -89 -38 -71 -25 -55 -12 -55 -12 -76 -10 -97 -7 -69 callgsubr
+ -123 92 -100 43 -47 76 -30 109 -14 47 -6 58 -1 71 3 156 6 142 43 101 68 56 38 35 51 16 63 rrcurveto
+ 8 29 5 40 -2 39 -20 405 rcurveline
+ -74 -117 5 -85 14 -261 1 -89 rlinecurve
+ return
+ </CharString>
+ <CharString index="81">
+ 262 119 rmoveto
+ 13 29 9 22 7 21 2 3 1 20 -7 -10 -8 -21 -16 -17 -19 -11 -38 -21 -79 -10 -43 11 -26 7 -13 33 5 30 1 3 -3 1 -3 -4 -42 -57 -33 -107 67 -33 rrcurveto
+ 44 -22 76 26 39 16 -12 -41 98 14 71 15 102 22 101 44 64 86 34 45 45 59 -42 50 -34 40 -78 -20 -31 -29 -64 -60 -60 -65 -57 -66 -18 -4 -37 -7 -16 8 rrcurveto
+ 307 91 rmoveto
+ 4 -8 5 -14 -94 callgsubr
+ 40 -12 12 -22 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="82">
+ rmoveto
+ 34 49 25 56 12 58 33 5 49 10 40 10 87 22 90 51 53 71 34 45 45 59 -42 50 -34 40 -77 -20 -31 -29 rrcurveto
+ -110 -105 -71 -86 0 vvcurveto
+ -59 -13 3 32 -33 73 -54 -125 rcurveline
+ 14 -44 13 -45 -2 -56 -64 -59 -124 -59 -93 33 -105 37 86 143 19 callgsubr
+ rrcurveto
+ 372 373 rmoveto
+ 4 -8 6 -13 -94 callgsubr
+ 39 -13 12 -22 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="83">
+ 103 414 rmoveto
+ 4 -2 3 -4 -3 -4 -3 -6 -3 vhcurveto
+ -59 -111 -28 -86 -58 vvcurveto
+ -96 41 -53 78 -7 vhcurveto
+ 38 -4 42 9 44 22 107 53 52 101 30 141 18 83 -15 66 -46 47 -11 11 -28 15 -16 -18 -31 -35 -17 -50 -22 -44 -13 -25 1 -20 14 -16 17 -19 43 -2 32 8 rrcurveto
+ 11 -17 4 -47 -28 vvcurveto
+ -39 -37 -79 -40 -69 -11 -66 -11 -69 18 -11 49 rrcurveto
+ -2 9 -1 10 10 vvcurveto
+ 12 2 13 3 13 vhcurveto
+ 10 41 32 57 15 35 rrcurveto
+ 2 6 2 4 4 vvcurveto
+ endchar
+ </CharString>
+ <CharString index="84">
+ 251 499 rmoveto
+ 21 -321 74 118 -21 321 rlineto
+ 211 -408 rmoveto
+ 34 45 47 40 -42 50 -34 40 -77 -20 -31 -29 -64 -60 -60 -65 -57 -66 -76 -16 -78 3 -13 3 -29 7 -10 34 5 31 rrcurveto
+ 2 -2 1 -2 -3 vhcurveto
+ -42 -56 -34 -109 67 -33 rrcurveto
+ 28 -14 39 7 0 vvcurveto
+ 155 22 185 65 91 121 rrcurveto
+ -48 23 rmoveto
+ 4 -8 5 -14 -94 callgsubr
+ 40 -12 12 -22 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="85">
+ rmoveto
+ 7 22 4 18 14 vvcurveto
+ 23 -8 18 -20 -5 -5 -2 -2 -5 vhcurveto
+ -22 -9 -32 -33 -29 vvcurveto
+ -28 28 -15 19 -11 vhcurveto
+ -6 -6 -8 -7 -10 -7 -41 -29 -51 -32 -42 -27 rrcurveto
+ -7 -4 -2 -2 -1 vvcurveto
+ 6 1 81 20 55 27 43 58 rlinecurve
+ 7 -5 6 -1 5 -7 rrcurveto
+ 8 12 7 11 14 vvcurveto
+ 1 vlineto
+ -1 9 -5 5 -6 4 rrcurveto
+ -37 54 rmoveto
+ 3 hlineto
+ 12 5 -11 -14 -6 0 -6 -2 -8 hvcurveto
+ -10 5 -27 10 14 vvcurveto
+ 9 11 6 8 1 vhcurveto
+ endchar
+ </CharString>
+ <CharString index="86">
+ 78 24 rmoveto
+ 157 -86 273 169 84 130 26 39 7 38 -25 27 -18 19 -33 -1 -28 8 -160 45 117 73 49 -15 20 32 11 39 17 36 rrcurveto
+ 9 4 -14 1 -4 hhcurveto
+ -35 -1 -28 -29 -19 -18 -42 -40 -83 -134 16 -56 15 -54 64 -20 67 -7 -60 -39 -69 -30 -83 -15 -69 -13 -90 2 -45 35 -103 81 104 151 39 81 4 8 -9 1 -3 -5 rrcurveto
+ -67 -94 -160 -272 173 -95 rrcurveto
+ return
+ </CharString>
+ <CharString index="87">
+ rmoveto
+ -117 -92 -114 -220 30 -142 55 -261 425 67 163 198 4 4 -12 -3 -5 -1 -175 -46 -260 -38 -136 153 -78 88 247 210 55 48 40 35 65 42 14 36 45 116 rcurveline
+ -60 -58 -97 -59 -47 46 -32 27 -16 25 -8 49 40 -4 34 -7 60 callgsubr
+ -99 2 -58 -206 91 -113 9 -12 10 -11 11 -10 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="88">
+ 479 rmoveto
+ 22 -321 74 118 -22 321 rlineto
+ 212 -407 -14 callgsubr
+ </CharString>
+ <CharString index="89">
+ 101 88 rmoveto
+ -1 vlineto
+ -1 -3 -15 -8 -29 -13 -29 -13 -16 -7 -4 -1 -7 -17 rcurveline
+ 98 -25 27 35 28 40 12 48 rlinecurve
+ 4 14 2 16 3 19 rrcurveto
+ 1 12 1 13 13 vvcurveto
+ 21 vlineto
+ -16 257 106 63 106 61 107 62 rlinecurve
+ 32 117 rlineto
+ 3 vlineto
+ 4 -1 1 -3 -2 -2 -1 -1 -3 vhcurveto
+ -107 -63 -109 -63 -107 -63 -32 -116 rcurveline
+ -61 -96 rlineto
+ 6 -96 11 -110 -102 vvcurveto
+ endchar
+ </CharString>
+ <CharString index="90">
+ -89 -38 -71 -25 -55 -12 -55 -12 -76 -10 -97 -7 -157 -2 -121 36 -91 callgsubr
+ 11 18 18 17 61 58 75 43 90 28 90 28 86 14 82 3 53 113 26 callgsubr
+ -115 -58 -79 -102 -79 -101 -26 -122 92 -100 64 -69 147 -32 162 4 129 3 121 26 98 42 55 23 44 return
+ </CharString>
+ <CharString index="91">
+ 66 630 rmoveto
+ -5 -11 -6 -12 -5 -11 1 -6 2 -7 2 -5 14 -38 20 -33 2 -50 rrcurveto
+ -8 vlineto
+ -11 -1 -12 -2 -13 vhcurveto
+ -1 -1 0 0 vhcurveto
+ -1 1 -2 1 vhcurveto
+ 1 hlineto
+ 2 0 1 2 2 hvcurveto
+ 17 19 10 22 31 vvcurveto
+ 2 vlineto
+ 13 -2 12 -3 13 vhcurveto
+ -10 38 -18 35 -13 35 rrcurveto
+ 2 -1 -1 1 -2 hhcurveto
+ -1 hlineto
+ -3 -1 -1 -1 -3 vvcurveto
+ endchar
+ </CharString>
+ <CharString index="92">
+ rmoveto
+ 40 -12 29 12 18 35 19 36 7 37 -3 39 rrcurveto
+ 3 -2 -1 -2 -4 vhcurveto
+ -2 -5 -1 -2 -1 vvcurveto
+ -28 -48 -34 -21 -41 5 -41 5 -31 27 -23 47 -13 -27 -12 -30 -10 -29 8 -19 9 -17 10 -15 32 -45 26 -44 25 -56 17 -36 7 -43 -5 -50 rrcurveto
+ -1 -2 8 7 0 vvcurveto
+ 25 39 11 42 -3 46 -4 46 -13 42 -22 39 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="93">
+ rmoveto
+ 34 45 46 39 -42 50 -34 40 -77 -20 -31 -29 -65 -61 -60 -65 -58 -67 -88 -15 -97 -8 -102 3 rrcurveto
+ -5 -4 -9 -3 5 hvcurveto
+ 74 -44 37 -39 65 -6 28 -3 33 4 44 11 131 34 99 53 67 90 rrcurveto
+ -49 22 rmoveto
+ 4 -8 5 -14 -94 callgsubr
+ 40 -12 12 -22 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="94">
+ 543 154 rmoveto
+ -80 -18 -77 -6 -73 5 -73 5 -71 32 -68 59 -27 23 -16 21 -2 19 -2 19 5 16 13 15 52 59 61 42 70 25 70 25 73 18 75 10 52 113 rcurveline
+ -79 -3 -79 -18 -80 -35 -80 -35 -67 -47 -53 -61 -35 -40 -24 -43 -15 -46 -37 -114 46 -76 71 -51 44 -32 65 -21 85 -11 return
+ </CharString>
+ <CharString index="95">
+ 199 10 rmoveto
+ 15 27 2 37 8 32 32 123 34 117 50 103 rrcurveto
+ 48 5 46 7 41 vhcurveto
+ -3 1 -2 0 -1 -3 -50 -114 -47 -120 -36 -134 -36 117 -51 133 -58 121 -15 -47 -16 -48 -12 -44 65 -138 63 -136 30 -169 2 -8 11 10 3 5 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="96">
+ 106 382 rmoveto
+ -2 -1 -1 -57 callgsubr
+ -21 -20 vvcurveto
+ -56 21 -25 57 -8 vhcurveto
+ -3 21 24 -2 26 hhcurveto
+ 15 16 1 1 17 hvcurveto
+ 46 3 46 7 46 11 88 21 89 39 46 61 15 -190 rcurveline
+ 72 return
+ </CharString>
+ <CharString index="97">
+ 196 165 rmoveto
+ -55 -17 -58 -12 -61 -7 -22 -129 rcurveline
+ 89 21 76 15 74 38 40 20 31 22 20 24 37 46 7 10 15 74 5 25 -13 13 -31 1 -31 1 -22 -102 callgsubr
+ -16 -18 -37 -17 hvcurveto
+ -17 -37 -12 -29 -9 -19 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="98">
+ 328 666 rmoveto
+ 28 -443 -64 -54 -95 -40 -111 20 rlinecurve
+ -107 46 88 134 31 69 9 24 -12 3 -8 -16 -256 -466 372 -28 146 211 rrcurveto
+ 49 71 30 84 85 vvcurveto
+ 0 -21 340 -5 78 vhcurveto
+ endchar
+ </CharString>
+ <CharString index="99">
+ 156 496 rmoveto
+ 58 61 rlineto
+ 21 vlineto
+ -42 14 -21 25 39 vvcurveto
+ 5 48 13 47 callgsubr
+ -11 -38 -35 vvcurveto
+ -28 8 -25 14 -21 vhcurveto
+ -21 14 15 -11 14 hhcurveto
+ return
+ </CharString>
+ <CharString index="100">
+ 116 770 rmoveto
+ -58 -61 rlineto
+ -21 vlineto
+ 42 -14 21 -25 -86 callgsubr
+ 22 19 38 23 hvcurveto
+ 23 38 12 38 -87 callgsubr
+ return
+ </CharString>
+ <CharString index="101">
+ rmoveto
+ 1 -2 3 -2 -2 vhcurveto
+ -46 -40 -101 -27 -76 39 -10 5 2 3 -10 -5 -36 -18 -22 -20 -20 -35 -40 -70 55 68 19 11 9 5 11 11 12 -6 72 -37 92 25 49 32 rrcurveto
+ return
+ </CharString>
+ <CharString index="102">
+ rmoveto
+ -41 -32 -51 -77 8 hvcurveto
+ 7 -72 28 -95 33 -94 31 -30 rcurveline
+ -2 10 -9 37 -17 64 -23 85 -8 172 103 -99 rrcurveto
+ 7 -7 8 6 8 vvcurveto
+ 91 -4 -29 52 -60 hhcurveto
+ endchar
+ </CharString>
+ <CharString index="103">
+ -3 callgsubr
+ 72 return
+ </CharString>
+ <CharString index="104">
+ -69 -35 -58 -35 -46 -37 rlinecurve
+ -46 -37 -35 -57 -24 -77 rrcurveto
+ -11 -3 0 -6 5 hhcurveto
+ 5 4 2 5 3 hvcurveto
+ 38 60 35 39 32 19 32 19 57 24 80 27 31 -349 rcurveline
+ return
+ </CharString>
+ <CharString index="105">
+ 1 2 0 1 1 vvcurveto
+ 3 -3 0 -2 -2 -1 0 -2 -1 vhcurveto
+ -10 -15 -15 -24 -103 callgsubr
+ -21 -20 vvcurveto
+ -12 2 -11 2 -11 vhcurveto
+ return
+ </CharString>
+ <CharString index="106">
+ -52 -67 -42 -80 -39 -78 -9 -18 rcurveline
+ 4 30 rlineto
+ -81 callgsubr
+ 6 -17 13 11 19 40 29 58 23 56 15 36 return
+ </CharString>
+ <CharString index="107">
+ 1 vvcurveto
+ 3 -3 0 -2 -2 -1 0 -2 -1 vhcurveto
+ -64 callgsubr
+ return
+ </CharString>
+ <CharString index="108">
+ -35 -72 rrcurveto
+ -34 -3 -32 -5 -28 vhcurveto
+ 2 -1 1 0 1 2 35 80 33 84 25 94 25 -82 37 -93 40 -85 11 33 10 34 9 30 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="109">
+ 12 24 15 34 8 25 rrcurveto
+ 2 5 1 4 3 vvcurveto
+ 2 0 1 -2 vhcurveto
+ -2 hlineto
+ -75 callgsubr
+ -22 -11 -26 -6 -31 -1 -31 27 return
+ </CharString>
+ <CharString index="110">
+ -91 callgsubr
+ 11 18 18 18 61 58 75 42 90 28 -42 callgsubr
+ -79 -3 -72 return
+ </CharString>
+ <CharString index="111">
+ -64 -59 -99 -47 -118 21 -107 46 88 134 19 callgsubr
+ return
+ </CharString>
+ <CharString index="112">
+ 66 callgsubr
+ vhcurveto
+ -30 -152 rmoveto
+ -5 -3 -3 -4 -2 vhcurveto
+ -57 -27 -68 -15 -70 -14 36 37 return
+ </CharString>
+ <CharString index="113">
+ 4 -22 6 rrcurveto
+ -1 hlineto
+ -18 -38 -20 -35 -16 -93 callgsubr
+ 13 -3 22 -2 30 -1 30 -1 27 -3 21 -5 return
+ </CharString>
+ <CharString index="114">
+ -9 -18 rcurveline
+ 4 30 rlineto
+ -81 callgsubr
+ 8 -23 15 29 18 35 return
+ </CharString>
+ <CharString index="115">
+ 11 callgsubr
+ 5 11 2 6 1 3 return
+ </CharString>
+ <CharString index="116">
+ -99 callgsubr
+ -92 callgsubr
+ 37 34 39 47 26 29 16 40 -17 11 -19 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="117">
+ 3 3 hvcurveto
+ 15 17 14 18 -100 callgsubr
+ rrcurveto
+ 3 7 6 2 6 hhcurveto
+ 20 return
+ </CharString>
+ <CharString index="118">
+ 7 rmoveto
+ 49 -6 57 -2 65 3 143 6 130 36 97 58 53 32 39 42 25 51 return
+ </CharString>
+ <CharString index="119">
+ 14 28 -3 27 -21 25 -17 20 -24 7 -31 -6 -31 -6 -23 -11 -16 -14 rrcurveto
+ -64 -60 -60 return
+ </CharString>
+ <CharString index="120">
+ -27 10 -34 16 -40 22 -75 42 -41 -24 -36 -52 -16 -24 -7 -12 2 -1 rrcurveto
+ -49 -58 -44 return
+ </CharString>
+ <CharString index="121">
+ -114 -57 -80 -102 -79 -101 -26 -123 92 -100 43 -47 76 -30 109 -14 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="122">
+ rmoveto
+ -46 97 -44 94 -21 119 -1 5 -8 -6 -2 -3 -11 -19 -1 -27 -6 -22 -22 return
+ </CharString>
+ <CharString index="123">
+ -103 callgsubr
+ -22 -20 vvcurveto
+ -12 2 -11 2 -11 vhcurveto
+ return
+ </CharString>
+ <CharString index="124">
+ -99 callgsubr
+ -8 -8 -4 -57 -28 -67 -14 -71 -47 callgsubr
+ 29 return
+ </CharString>
+ <CharString index="125">
+ 27 17 30 17 30 -2 28 -21 25 -17 20 -24 7 -31 -6 -31 -6 -24 -10 -15 return
+ </CharString>
+ <CharString index="126">
+ 31 69 9 24 -13 4 -8 -16 -256 -466 372 -29 146 211 return
+ </CharString>
+ <CharString index="127">
+ 73 callgsubr
+ 52 74 11 21 77 47 rlinecurve
+ 1 return
+ </CharString>
+ <CharString index="128">
+ 44 callgsubr
+ rrcurveto
+ -22 -11 -27 return
+ </CharString>
+ <CharString index="129">
+ -42 callgsubr
+ -79 -3 -72 -9 -64 -17 -143 return
+ </CharString>
+ <CharString index="130">
+ 32 27 24 rlinecurve
+ 8 9 9 4 10 hhcurveto
+ 9 10 -3 -8 10 hvcurveto
+ 14 -11 return
+ </CharString>
+ <CharString index="131">
+ -22 -7 -48 -16 -50 -53 -28 -38 -25 -34 -31 -32 -14 -43 rrcurveto
+ -3 -10 24 return
+ </CharString>
+ <CharString index="132">
+ -39 13 -9 9 -7 7 2 91 callgsubr
+ endchar
+ </CharString>
+ <CharString index="133">
+ rcurveline
+ -79 -3 -72 -10 -64 -17 -143 -37 return
+ </CharString>
+ <CharString index="134">
+ -10 42 130 rcurveline
+ -32 8 -28 8 -37 1 -52 1 -34 -66 -15 -44 return
+ </CharString>
+ <CharString index="135">
+ -4 -1 -1 -44 callgsubr
+ -4 6 -3 vhcurveto
+ 138 -62 rlineto
+ -18 return
+ </CharString>
+ <CharString index="136">
+ 3 vhcurveto
+ 11 24 13 70 callgsubr
+ 13 return
+ </CharString>
+ <CharString index="137">
+ rmoveto
+ 34 -3 35 -7 36 65 callgsubr
+ return
+ </CharString>
+ <CharString index="138">
+ 11 rrcurveto
+ 13 -6 24 -31 -29 vvcurveto
+ -11 -5 -8 -10 -5 vhcurveto
+ -25 -12 -24 return
+ </CharString>
+ <CharString index="139">
+ -40 callgsubr
+ 5 6 vvcurveto
+ 35 -31 12 -41 1 vhcurveto
+ endchar
+ </CharString>
+ <CharString index="140">
+ rmoveto
+ 13 -5 10 -14 9 -24 9 -24 -3 -16 -16 -7 -25 -12 -24 return
+ </CharString>
+ <CharString index="141">
+ -99 callgsubr
+ -8 -8 -4 -57 -27 -68 -15 -70 -14 36 37 35 return
+ </CharString>
+ <CharString index="142">
+ -33 -45 -27 -37 -19 -45 -22 -41 -10 -19 -1 -34 19 -9 32 -16 return
+ </CharString>
+ <CharString index="143">
+ -17 -39 48 callgsubr
+ vhcurveto
+ return
+ </CharString>
+ <CharString index="144">
+ -8 -21 -1 rrcurveto
+ -9 5 -14 12 15 vvcurveto
+ 305 13 rmoveto
+ -4 return
+ </CharString>
+ <CharString index="145">
+ 2 -9 -5 rlinecurve
+ -110 -64 -87 -47 -110 -64 -22 -81 rcurveline
+ return
+ </CharString>
+ <CharString index="146">
+ rmoveto
+ 7 -14 0 -92 callgsubr
+ 37 return
+ </CharString>
+ <CharString index="147">
+ 8 -37 1 -52 1 -33 -66 -15 -44 -17 -52 -10 -75 28 -43 return
+ </CharString>
+ <CharString index="148">
+ -33 -21 -53 -7 -11 -6 -12 -6 -13 rrcurveto
+ -1 vlineto
+ -15 -18 -4 return
+ </CharString>
+ <CharString index="149">
+ 29 40 26 42 18 51 53 -21 -2 4 45 -28 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="150">
+ 61 -14 55 -9 55 -7 45 -14 28 -18 13 -18 13 -21 return
+ </CharString>
+ <CharString index="151">
+ 8 53 callgsubr
+ return
+ </CharString>
+ <CharString index="152">
+ 11 26 17 26 17 21 23 19 29 51 79 rcurveline
+ 8 12 return
+ </CharString>
+ <CharString index="153">
+ 14 -30 60 15 32 9 52 14 51 20 52 25 81 39 return
+ </CharString>
+ <CharString index="154">
+ 31 24 14 rrcurveto
+ 21 vlineto
+ -22 -23 -19 -38 -23 hvcurveto
+ -23 -38 return
+ </CharString>
+ <CharString index="155">
+ rrcurveto
+ -1 vlineto
+ -10 -12 -5 -11 -9 vvcurveto
+ -10 8 -13 9 return
+ </CharString>
+ <CharString index="156">
+ rrcurveto
+ 16 35 8 36 37 vvcurveto
+ 37 -14 35 -30 31 vhcurveto
+ return
+ </CharString>
+ <CharString index="157">
+ -3 vhcurveto
+ 94 callgsubr
+ -81 rcurveline
+ return
+ </CharString>
+ <CharString index="158">
+ rmoveto
+ 13 -5 10 -15 9 -24 9 -24 -3 -16 -16 -7 return
+ </CharString>
+ <CharString index="159">
+ hhcurveto
+ 29 58 31 17 13 hvcurveto
+ 33 42 11 65 7 68 return
+ </CharString>
+ <CharString index="160">
+ 25 4 12 0 5 -5 -2 -75 callgsubr
+ return
+ </CharString>
+ <CharString index="161">
+ -36 -51 -16 -23 -8 -12 2 -1 rrcurveto
+ -49 -59 -43 -75 return
+ </CharString>
+ <CharString index="162">
+ -9 22 vhcurveto
+ -11 27 -77 -113 rlineto
+ 10 -29 21 return
+ </CharString>
+ <CharString index="163">
+ 58 34 48 47 39 59 23 35 13 35 2 34 return
+ </CharString>
+ <CharString index="164">
+ -1 -3 -8 hvcurveto
+ -48 -16 -49 -53 -29 -38 -25 -34 return
+ </CharString>
+ <CharString index="165">
+ -57 -67 -18 -4 -22 -6 -19 7 rrcurveto
+ 15 -12 -9 return
+ </CharString>
+ <CharString index="166">
+ 93 callgsubr
+ 6 12 3 return
+ </CharString>
+ <CharString index="167">
+ 31 -10 42 130 rcurveline
+ -33 8 -29 8 -35 1 return
+ </CharString>
+ <CharString index="168">
+ -30 6 -17 6 -17 13 12 19 40 1 2 1 return
+ </CharString>
+ <CharString index="169">
+ 36 -91 callgsubr
+ 11 return
+ </CharString>
+ <CharString index="170">
+ -3 -41 1 -30 6 -17 rlinecurve
+ return
+ </CharString>
+ <CharString index="171">
+ 4 14 8 15 4 15 36 return
+ </CharString>
+ <CharString index="172">
+ -11 42 130 rcurveline
+ -32 7 -28 9 -37 1 return
+ </CharString>
+ <CharString index="173">
+ rrcurveto
+ 6 11 3 12 11 vvcurveto
+ 36 -33 33 -38 return
+ </CharString>
+ <CharString index="174">
+ 83 callgsubr
+ 13 hvcurveto
+ 33 42 12 return
+ </CharString>
+ <CharString index="175">
+ rmoveto
+ 28 -425 74 118 -28 425 rlineto
+ return
+ </CharString>
+ <CharString index="176">
+ 11 13 hvcurveto
+ 1 1 1 1 1 hhcurveto
+ 5 6 return
+ </CharString>
+ <CharString index="177">
+ 16 17 6 rrcurveto
+ 1 3 2 0 2 hhcurveto
+ 13 return
+ </CharString>
+ <CharString index="178">
+ -40 22 -40 22 -33 5 -27 -13 -18 -9 -17 return
+ </CharString>
+ <CharString index="179">
+ -30 -32 -15 -43 rrcurveto
+ -3 -10 24 6 3 3 return
+ </CharString>
+ <CharString index="180">
+ -24 -37 -16 -28 -7 -19 46 -32 rcurveline
+ 1 1 return
+ </CharString>
+ <CharString index="181">
+ -80 vvcurveto
+ -11 0 -11 -1 -11 vhcurveto
+ -33 -21 -41 return
+ </CharString>
+ <CharString index="182">
+ 21 15 20 18 24 return
+ </CharString>
+ <CharString index="183">
+ -12 -23 -20 hvcurveto
+ -47 -54 -40 -67 -33 -81 return
+ </CharString>
+ <CharString index="184">
+ rrcurveto
+ -1 vlineto
+ -10 -12 -5 -10 -9 vvcurveto
+ -10 return
+ </CharString>
+ <CharString index="185">
+ rmoveto
+ -18 -14 -22 -12 -28 -8 -3 -1 -4 return
+ </CharString>
+ <CharString index="186">
+ 79 rcurveline
+ 7 12 7 15 7 19 15 45 return
+ </CharString>
+ <CharString index="187">
+ -40 -5 -11 0 -7 6 -1 57 -12 53 return
+ </CharString>
+ <CharString index="188">
+ -22 -41 rrcurveto
+ -5 -9 -2 -11 -12 vvcurveto
+ -27 return
+ </CharString>
+ <CharString index="189">
+ 1 2 1 2 1 2 return
+ </CharString>
+ <CharString index="190">
+ 5 hhcurveto
+ 29 58 32 17 return
+ </CharString>
+ <CharString index="191">
+ 14 35 11 32 27 24 return
+ </CharString>
+ <CharString index="192">
+ -30 6 -17 rlinecurve
+ 6 -17 return
+ </CharString>
+ <CharString index="193">
+ -14 -40 0 -41 15 -40 8 -22 15 return
+ </CharString>
+ <CharString index="194">
+ -12 -26 -14 -32 -16 -36 21 -2 rcurveline
+ return
+ </CharString>
+ <CharString index="195">
+ -2 -3 vhcurveto
+ -8 -14 -4 -20 -13 -10 return
+ </CharString>
+ <CharString index="196">
+ 2 -29 6 -17 6 -17 13 11 19 return
+ </CharString>
+ <CharString index="197">
+ -57 -27 -68 -14 -70 -14 36 37 34 return
+ </CharString>
+ <CharString index="198">
+ 6 12 35 75 32 78 27 82 rrcurveto
+ return
+ </CharString>
+ <CharString index="199">
+ 73 -32 27 -15 24 2 20 2 20 return
+ </CharString>
+ <CharString index="200">
+ -50 -9 18 35 16 31 14 29 rrcurveto
+ return
+ </CharString>
+ <CharString index="201">
+ -110 -64 -86 -47 -110 -64 -23 return
+ </CharString>
+ </GlobalSubrs>
+ </CFF>
+
+ <GDEF>
+ <Version value="0x00010002"/>
+ <GlyphClassDef>
+ <ClassDef glyph="ae-ar" class="1"/>
+ <ClassDef glyph="ain-ar" class="1"/>
+ <ClassDef glyph="ain-ar.fina" class="1"/>
+ <ClassDef glyph="ain-ar.init" class="1"/>
+ <ClassDef glyph="ain-ar.init.ain" class="1"/>
+ <ClassDef glyph="ain-ar.init.dal" class="1"/>
+ <ClassDef glyph="ain-ar.init.feh" class="1"/>
+ <ClassDef glyph="ain-ar.init.hah" class="1"/>
+ <ClassDef glyph="ain-ar.init.heh" class="1"/>
+ <ClassDef glyph="ain-ar.init.meem" class="1"/>
+ <ClassDef glyph="ain-ar.init.ragaa" class="1"/>
+ <ClassDef glyph="ain-ar.init.reh" class="1"/>
+ <ClassDef glyph="ain-ar.init.sad" class="1"/>
+ <ClassDef glyph="ain-ar.init.yeh" class="1"/>
+ <ClassDef glyph="ain-ar.medi" class="1"/>
+ <ClassDef glyph="ain-ar.medi.ain" class="1"/>
+ <ClassDef glyph="ain-ar.medi.dal" class="1"/>
+ <ClassDef glyph="ain-ar.medi.feh" class="1"/>
+ <ClassDef glyph="ain-ar.medi.hah" class="1"/>
+ <ClassDef glyph="ain-ar.medi.heh" class="1"/>
+ <ClassDef glyph="ain-ar.medi.meem" class="1"/>
+ <ClassDef glyph="ain-ar.medi.ragaa" class="1"/>
+ <ClassDef glyph="ain-ar.medi.reh" class="1"/>
+ <ClassDef glyph="ain-ar.medi.sad" class="1"/>
+ <ClassDef glyph="ain-ar.medi.yeh" class="1"/>
+ <ClassDef glyph="alef-ar" class="1"/>
+ <ClassDef glyph="alef-ar.fina" class="1"/>
+ <ClassDef glyph="alef-ar.fina.lam" class="1"/>
+ <ClassDef glyph="alefMaksura-ar" class="1"/>
+ <ClassDef glyph="alefMaksura-ar.fina" class="1"/>
+ <ClassDef glyph="alefMaksura-ar.fina.jalt" class="1"/>
+ <ClassDef glyph="alefMaksura-ar.fina.yeh" class="1"/>
+ <ClassDef glyph="alefMaksura-ar.fina.yeh.jalt" class="1"/>
+ <ClassDef glyph="alefMaksura-ar.jalt" class="1"/>
+ <ClassDef glyph="alefabove-ar" class="3"/>
+ <ClassDef glyph="alefabove-ar.medi" class="1"/>
+ <ClassDef glyph="alefbelow-ar" class="3"/>
+ <ClassDef glyph="behDotless-ar" class="1"/>
+ <ClassDef glyph="behDotless-ar.fina" class="1"/>
+ <ClassDef glyph="behDotless-ar.fina.jalt" class="1"/>
+ <ClassDef glyph="behDotless-ar.init" class="1"/>
+ <ClassDef glyph="behDotless-ar.init.ain" class="1"/>
+ <ClassDef glyph="behDotless-ar.init.ascend" class="1"/>
+ <ClassDef glyph="behDotless-ar.init.dal" class="1"/>
+ <ClassDef glyph="behDotless-ar.init.feh" class="1"/>
+ <ClassDef glyph="behDotless-ar.init.hah" class="1"/>
+ <ClassDef glyph="behDotless-ar.init.heh" class="1"/>
+ <ClassDef glyph="behDotless-ar.init.meem" class="1"/>
+ <ClassDef glyph="behDotless-ar.init.ragaa" class="1"/>
+ <ClassDef glyph="behDotless-ar.init.reh" class="1"/>
+ <ClassDef glyph="behDotless-ar.init.sad" class="1"/>
+ <ClassDef glyph="behDotless-ar.init.yeh" class="1"/>
+ <ClassDef glyph="behDotless-ar.jalt" class="1"/>
+ <ClassDef glyph="behDotless-ar.medi" class="1"/>
+ <ClassDef glyph="behDotless-ar.medi.ain" class="1"/>
+ <ClassDef glyph="behDotless-ar.medi.dal" class="1"/>
+ <ClassDef glyph="behDotless-ar.medi.feh" class="1"/>
+ <ClassDef glyph="behDotless-ar.medi.hah" class="1"/>
+ <ClassDef glyph="behDotless-ar.medi.heh" class="1"/>
+ <ClassDef glyph="behDotless-ar.medi.high" class="1"/>
+ <ClassDef glyph="behDotless-ar.medi.high2" class="1"/>
+ <ClassDef glyph="behDotless-ar.medi.meem" class="1"/>
+ <ClassDef glyph="behDotless-ar.medi.noon" class="1"/>
+ <ClassDef glyph="behDotless-ar.medi.ragaa" class="1"/>
+ <ClassDef glyph="behDotless-ar.medi.reh" class="1"/>
+ <ClassDef glyph="behDotless-ar.medi.sad" class="1"/>
+ <ClassDef glyph="behDotless-ar.medi.yeh" class="1"/>
+ <ClassDef glyph="dal-ar" class="1"/>
+ <ClassDef glyph="dal-ar.fina" class="1"/>
+ <ClassDef glyph="damma-ar" class="3"/>
+ <ClassDef glyph="dammainverted-ar" class="3"/>
+ <ClassDef glyph="dammainverted-ar.urd" class="3"/>
+ <ClassDef glyph="dammatan-ar" class="3"/>
+ <ClassDef glyph="dotabove-ar" class="3"/>
+ <ClassDef glyph="dotbelow-ar" class="3"/>
+ <ClassDef glyph="fatha-ar" class="3"/>
+ <ClassDef glyph="fathatan-ar" class="3"/>
+ <ClassDef glyph="fehDotless-ar" class="1"/>
+ <ClassDef glyph="fehDotless-ar.fina" class="1"/>
+ <ClassDef glyph="fehDotless-ar.fina.jalt" class="1"/>
+ <ClassDef glyph="fehDotless-ar.init" class="1"/>
+ <ClassDef glyph="fehDotless-ar.init.ain" class="1"/>
+ <ClassDef glyph="fehDotless-ar.init.dal" class="1"/>
+ <ClassDef glyph="fehDotless-ar.init.feh" class="1"/>
+ <ClassDef glyph="fehDotless-ar.init.hah" class="1"/>
+ <ClassDef glyph="fehDotless-ar.init.heh" class="1"/>
+ <ClassDef glyph="fehDotless-ar.init.meem" class="1"/>
+ <ClassDef glyph="fehDotless-ar.init.ragaa" class="1"/>
+ <ClassDef glyph="fehDotless-ar.init.reh" class="1"/>
+ <ClassDef glyph="fehDotless-ar.init.sad" class="1"/>
+ <ClassDef glyph="fehDotless-ar.init.yeh" class="1"/>
+ <ClassDef glyph="fehDotless-ar.jalt" class="1"/>
+ <ClassDef glyph="fehDotless-ar.medi" class="1"/>
+ <ClassDef glyph="fehDotless-ar.medi.ain" class="1"/>
+ <ClassDef glyph="fehDotless-ar.medi.dal" class="1"/>
+ <ClassDef glyph="fehDotless-ar.medi.feh" class="1"/>
+ <ClassDef glyph="fehDotless-ar.medi.hah" class="1"/>
+ <ClassDef glyph="fehDotless-ar.medi.heh" class="1"/>
+ <ClassDef glyph="fehDotless-ar.medi.meem" class="1"/>
+ <ClassDef glyph="fehDotless-ar.medi.ragaa" class="1"/>
+ <ClassDef glyph="fehDotless-ar.medi.reh" class="1"/>
+ <ClassDef glyph="fehDotless-ar.medi.sad" class="1"/>
+ <ClassDef glyph="fehDotless-ar.medi.yeh" class="1"/>
+ <ClassDef glyph="gafsarkashabove-ar" class="3"/>
+ <ClassDef glyph="hah-ar" class="1"/>
+ <ClassDef glyph="hah-ar.fina" class="1"/>
+ <ClassDef glyph="hah-ar.init" class="1"/>
+ <ClassDef glyph="hah-ar.init.ain" class="1"/>
+ <ClassDef glyph="hah-ar.init.dal" class="1"/>
+ <ClassDef glyph="hah-ar.init.feh" class="1"/>
+ <ClassDef glyph="hah-ar.init.hah" class="1"/>
+ <ClassDef glyph="hah-ar.init.heh" class="1"/>
+ <ClassDef glyph="hah-ar.init.heh.ragaa" class="1"/>
+ <ClassDef glyph="hah-ar.init.meem" class="1"/>
+ <ClassDef glyph="hah-ar.init.ragaa" class="1"/>
+ <ClassDef glyph="hah-ar.init.reh" class="1"/>
+ <ClassDef glyph="hah-ar.init.sad" class="1"/>
+ <ClassDef glyph="hah-ar.init.yeh" class="1"/>
+ <ClassDef glyph="hah-ar.medi" class="1"/>
+ <ClassDef glyph="hah-ar.medi.ain" class="1"/>
+ <ClassDef glyph="hah-ar.medi.dal" class="1"/>
+ <ClassDef glyph="hah-ar.medi.feh" class="1"/>
+ <ClassDef glyph="hah-ar.medi.hah" class="1"/>
+ <ClassDef glyph="hah-ar.medi.heh" class="1"/>
+ <ClassDef glyph="hah-ar.medi.heh.ragaa" class="1"/>
+ <ClassDef glyph="hah-ar.medi.meem" class="1"/>
+ <ClassDef glyph="hah-ar.medi.ragaa" class="1"/>
+ <ClassDef glyph="hah-ar.medi.reh" class="1"/>
+ <ClassDef glyph="hah-ar.medi.sad" class="1"/>
+ <ClassDef glyph="hah-ar.medi.yeh" class="1"/>
+ <ClassDef glyph="hamza-ar" class="1"/>
+ <ClassDef glyph="hamzaabove-ar" class="3"/>
+ <ClassDef glyph="hamzabelow-ar" class="3"/>
+ <ClassDef glyph="heh-ar" class="1"/>
+ <ClassDef glyph="heh-ar.fina" class="1"/>
+ <ClassDef glyph="heh-ar.init" class="1"/>
+ <ClassDef glyph="heh-ar.init.ain" class="1"/>
+ <ClassDef glyph="heh-ar.init.dal" class="1"/>
+ <ClassDef glyph="heh-ar.init.feh" class="1"/>
+ <ClassDef glyph="heh-ar.init.hah" class="1"/>
+ <ClassDef glyph="heh-ar.init.heh" class="1"/>
+ <ClassDef glyph="heh-ar.init.meem" class="1"/>
+ <ClassDef glyph="heh-ar.init.ragaa" class="1"/>
+ <ClassDef glyph="heh-ar.init.reh" class="1"/>
+ <ClassDef glyph="heh-ar.init.sad" class="1"/>
+ <ClassDef glyph="heh-ar.init.yeh" class="1"/>
+ <ClassDef glyph="heh-ar.medi" class="1"/>
+ <ClassDef glyph="heh-ar.medi.ain" class="1"/>
+ <ClassDef glyph="heh-ar.medi.dal" class="1"/>
+ <ClassDef glyph="heh-ar.medi.feh" class="1"/>
+ <ClassDef glyph="heh-ar.medi.hah" class="1"/>
+ <ClassDef glyph="heh-ar.medi.heh" class="1"/>
+ <ClassDef glyph="heh-ar.medi.meem" class="1"/>
+ <ClassDef glyph="heh-ar.medi.ragaa" class="1"/>
+ <ClassDef glyph="heh-ar.medi.reh" class="1"/>
+ <ClassDef glyph="heh-ar.medi.sad" class="1"/>
+ <ClassDef glyph="heh-ar.medi.yeh" class="1"/>
+ <ClassDef glyph="hehDoachashmee-ar" class="1"/>
+ <ClassDef glyph="hehDoachashmee-ar.fina" class="1"/>
+ <ClassDef glyph="hehDoachashmee-ar.medi" class="1"/>
+ <ClassDef glyph="hehDoachashmee-ar.medi.ain" class="1"/>
+ <ClassDef glyph="hehDoachashmee-ar.medi.dal" class="1"/>
+ <ClassDef glyph="hehDoachashmee-ar.medi.feh" class="1"/>
+ <ClassDef glyph="hehDoachashmee-ar.medi.hah" class="1"/>
+ <ClassDef glyph="hehDoachashmee-ar.medi.heh" class="1"/>
+ <ClassDef glyph="hehDoachashmee-ar.medi.meem" class="1"/>
+ <ClassDef glyph="hehDoachashmee-ar.medi.ragaa" class="1"/>
+ <ClassDef glyph="hehDoachashmee-ar.medi.reh" class="1"/>
+ <ClassDef glyph="hehDoachashmee-ar.medi.sad" class="1"/>
+ <ClassDef glyph="hehDoachashmee-ar.medi.yeh" class="1"/>
+ <ClassDef glyph="hehgoal-ar.fina" class="1"/>
+ <ClassDef glyph="hehgoal-ar.init" class="1"/>
+ <ClassDef glyph="hehgoal-ar.init.ain" class="1"/>
+ <ClassDef glyph="hehgoal-ar.init.dal" class="1"/>
+ <ClassDef glyph="hehgoal-ar.init.feh" class="1"/>
+ <ClassDef glyph="hehgoal-ar.init.hah" class="1"/>
+ <ClassDef glyph="hehgoal-ar.init.heh" class="1"/>
+ <ClassDef glyph="hehgoal-ar.init.meem" class="1"/>
+ <ClassDef glyph="hehgoal-ar.init.ragaa" class="1"/>
+ <ClassDef glyph="hehgoal-ar.init.reh" class="1"/>
+ <ClassDef glyph="hehgoal-ar.init.sad" class="1"/>
+ <ClassDef glyph="hehgoal-ar.init.yeh" class="1"/>
+ <ClassDef glyph="kaf-ar" class="1"/>
+ <ClassDef glyph="kaf-ar.fina" class="1"/>
+ <ClassDef glyph="kaf-ar.fina.jalt" class="1"/>
+ <ClassDef glyph="kaf-ar.init" class="1"/>
+ <ClassDef glyph="kaf-ar.init.ain" class="1"/>
+ <ClassDef glyph="kaf-ar.init.alef" class="1"/>
+ <ClassDef glyph="kaf-ar.init.alef.loop" class="1"/>
+ <ClassDef glyph="kaf-ar.init.dal" class="1"/>
+ <ClassDef glyph="kaf-ar.init.feh" class="1"/>
+ <ClassDef glyph="kaf-ar.init.hah" class="1"/>
+ <ClassDef glyph="kaf-ar.init.heh" class="1"/>
+ <ClassDef glyph="kaf-ar.init.meem" class="1"/>
+ <ClassDef glyph="kaf-ar.init.ragaa" class="1"/>
+ <ClassDef glyph="kaf-ar.init.reh" class="1"/>
+ <ClassDef glyph="kaf-ar.init.sad" class="1"/>
+ <ClassDef glyph="kaf-ar.init.yeh" class="1"/>
+ <ClassDef glyph="kaf-ar.jalt" class="1"/>
+ <ClassDef glyph="kaf-ar.medi" class="1"/>
+ <ClassDef glyph="kaf-ar.medi.ain" class="1"/>
+ <ClassDef glyph="kaf-ar.medi.dal" class="1"/>
+ <ClassDef glyph="kaf-ar.medi.feh" class="1"/>
+ <ClassDef glyph="kaf-ar.medi.hah" class="1"/>
+ <ClassDef glyph="kaf-ar.medi.heh" class="1"/>
+ <ClassDef glyph="kaf-ar.medi.kaf" class="1"/>
+ <ClassDef glyph="kaf-ar.medi.meem" class="1"/>
+ <ClassDef glyph="kaf-ar.medi.ragaa" class="1"/>
+ <ClassDef glyph="kaf-ar.medi.reh" class="1"/>
+ <ClassDef glyph="kaf-ar.medi.sad" class="1"/>
+ <ClassDef glyph="kaf-ar.medi.yeh" class="1"/>
+ <ClassDef glyph="kashida-ar" class="3"/>
+ <ClassDef glyph="kasra-ar" class="3"/>
+ <ClassDef glyph="kasratan-ar" class="3"/>
+ <ClassDef glyph="keheh-ar" class="1"/>
+ <ClassDef glyph="keheh-ar.fina" class="1"/>
+ <ClassDef glyph="keheh-ar.fina.jalt" class="1"/>
+ <ClassDef glyph="keheh-ar.jalt" class="1"/>
+ <ClassDef glyph="lam-ar" class="1"/>
+ <ClassDef glyph="lam-ar.fina" class="1"/>
+ <ClassDef glyph="lam-ar.fina.jalt" class="1"/>
+ <ClassDef glyph="lam-ar.init" class="1"/>
+ <ClassDef glyph="lam-ar.init.ain" class="1"/>
+ <ClassDef glyph="lam-ar.init.alef" class="1"/>
+ <ClassDef glyph="lam-ar.init.dal" class="1"/>
+ <ClassDef glyph="lam-ar.init.feh" class="1"/>
+ <ClassDef glyph="lam-ar.init.hah" class="1"/>
+ <ClassDef glyph="lam-ar.init.heh" class="1"/>
+ <ClassDef glyph="lam-ar.init.kaf" class="1"/>
+ <ClassDef glyph="lam-ar.init.meem" class="1"/>
+ <ClassDef glyph="lam-ar.init.ragaa" class="1"/>
+ <ClassDef glyph="lam-ar.init.reh" class="1"/>
+ <ClassDef glyph="lam-ar.init.sad" class="1"/>
+ <ClassDef glyph="lam-ar.init.yeh" class="1"/>
+ <ClassDef glyph="lam-ar.jalt" class="1"/>
+ <ClassDef glyph="lam-ar.medi" class="1"/>
+ <ClassDef glyph="lam-ar.medi.ain" class="1"/>
+ <ClassDef glyph="lam-ar.medi.alef" class="1"/>
+ <ClassDef glyph="lam-ar.medi.dal" class="1"/>
+ <ClassDef glyph="lam-ar.medi.feh" class="1"/>
+ <ClassDef glyph="lam-ar.medi.hah" class="1"/>
+ <ClassDef glyph="lam-ar.medi.heh" class="1"/>
+ <ClassDef glyph="lam-ar.medi.kaf" class="1"/>
+ <ClassDef glyph="lam-ar.medi.meem" class="1"/>
+ <ClassDef glyph="lam-ar.medi.ragaa" class="1"/>
+ <ClassDef glyph="lam-ar.medi.reh" class="1"/>
+ <ClassDef glyph="lam-ar.medi.sad" class="1"/>
+ <ClassDef glyph="lam-ar.medi.yeh" class="1"/>
+ <ClassDef glyph="madda-ar" class="3"/>
+ <ClassDef glyph="meem-ar" class="1"/>
+ <ClassDef glyph="meem-ar.fina" class="1"/>
+ <ClassDef glyph="meem-ar.init" class="1"/>
+ <ClassDef glyph="meem-ar.init.ain" class="1"/>
+ <ClassDef glyph="meem-ar.init.dal" class="1"/>
+ <ClassDef glyph="meem-ar.init.feh" class="1"/>
+ <ClassDef glyph="meem-ar.init.hah" class="1"/>
+ <ClassDef glyph="meem-ar.init.heh" class="1"/>
+ <ClassDef glyph="meem-ar.init.meem" class="1"/>
+ <ClassDef glyph="meem-ar.init.ragaa" class="1"/>
+ <ClassDef glyph="meem-ar.init.reh" class="1"/>
+ <ClassDef glyph="meem-ar.init.sad" class="1"/>
+ <ClassDef glyph="meem-ar.init.yeh" class="1"/>
+ <ClassDef glyph="meem-ar.medi" class="1"/>
+ <ClassDef glyph="meem-ar.medi.ain" class="1"/>
+ <ClassDef glyph="meem-ar.medi.dal" class="1"/>
+ <ClassDef glyph="meem-ar.medi.feh" class="1"/>
+ <ClassDef glyph="meem-ar.medi.hah" class="1"/>
+ <ClassDef glyph="meem-ar.medi.heh" class="1"/>
+ <ClassDef glyph="meem-ar.medi.meem" class="1"/>
+ <ClassDef glyph="meem-ar.medi.ragaa" class="1"/>
+ <ClassDef glyph="meem-ar.medi.reh" class="1"/>
+ <ClassDef glyph="meem-ar.medi.sad" class="1"/>
+ <ClassDef glyph="meem-ar.medi.yeh" class="1"/>
+ <ClassDef glyph="noon-ar" class="1"/>
+ <ClassDef glyph="noon-ar.fina" class="1"/>
+ <ClassDef glyph="noon-ar.fina.tail" class="1"/>
+ <ClassDef glyph="noon-ar.tail" class="1"/>
+ <ClassDef glyph="noonghunna-ar" class="1"/>
+ <ClassDef glyph="noonghunna-ar.fina" class="1"/>
+ <ClassDef glyph="noonghunna-ar.jalt" class="1"/>
+ <ClassDef glyph="noonghunnaabove-ar" class="3"/>
+ <ClassDef glyph="opendammatan-ar" class="3"/>
+ <ClassDef glyph="qaf-ar" class="1"/>
+ <ClassDef glyph="qaf-ar.fina" class="1"/>
+ <ClassDef glyph="qafDotless-ar" class="1"/>
+ <ClassDef glyph="qafDotless-ar.fina" class="1"/>
+ <ClassDef glyph="qafDotless-ar.fina.jalt" class="1"/>
+ <ClassDef glyph="qafDotless-ar.jalt" class="1"/>
+ <ClassDef glyph="reh-ar" class="1"/>
+ <ClassDef glyph="reh-ar.fina" class="1"/>
+ <ClassDef glyph="sad-ar" class="1"/>
+ <ClassDef glyph="sad-ar.fina" class="1"/>
+ <ClassDef glyph="sad-ar.fina.jalt" class="1"/>
+ <ClassDef glyph="sad-ar.init" class="1"/>
+ <ClassDef glyph="sad-ar.init.ain" class="1"/>
+ <ClassDef glyph="sad-ar.init.dal" class="1"/>
+ <ClassDef glyph="sad-ar.init.feh" class="1"/>
+ <ClassDef glyph="sad-ar.init.hah" class="1"/>
+ <ClassDef glyph="sad-ar.init.heh" class="1"/>
+ <ClassDef glyph="sad-ar.init.meem" class="1"/>
+ <ClassDef glyph="sad-ar.init.qantara" class="1"/>
+ <ClassDef glyph="sad-ar.init.ragaa" class="1"/>
+ <ClassDef glyph="sad-ar.init.reh" class="1"/>
+ <ClassDef glyph="sad-ar.init.sad" class="1"/>
+ <ClassDef glyph="sad-ar.init.yeh" class="1"/>
+ <ClassDef glyph="sad-ar.jalt" class="1"/>
+ <ClassDef glyph="sad-ar.medi" class="1"/>
+ <ClassDef glyph="sad-ar.medi.ain" class="1"/>
+ <ClassDef glyph="sad-ar.medi.dal" class="1"/>
+ <ClassDef glyph="sad-ar.medi.feh" class="1"/>
+ <ClassDef glyph="sad-ar.medi.hah" class="1"/>
+ <ClassDef glyph="sad-ar.medi.heh" class="1"/>
+ <ClassDef glyph="sad-ar.medi.meem" class="1"/>
+ <ClassDef glyph="sad-ar.medi.postsad" class="1"/>
+ <ClassDef glyph="sad-ar.medi.qantara" class="1"/>
+ <ClassDef glyph="sad-ar.medi.ragaa" class="1"/>
+ <ClassDef glyph="sad-ar.medi.reh" class="1"/>
+ <ClassDef glyph="sad-ar.medi.sad" class="1"/>
+ <ClassDef glyph="sad-ar.medi.yeh" class="1"/>
+ <ClassDef glyph="seen-ar" class="1"/>
+ <ClassDef glyph="seen-ar.fina" class="1"/>
+ <ClassDef glyph="seen-ar.fina.jalt" class="1"/>
+ <ClassDef glyph="seen-ar.init" class="1"/>
+ <ClassDef glyph="seen-ar.init.ain" class="1"/>
+ <ClassDef glyph="seen-ar.init.dal" class="1"/>
+ <ClassDef glyph="seen-ar.init.feh" class="1"/>
+ <ClassDef glyph="seen-ar.init.hah" class="1"/>
+ <ClassDef glyph="seen-ar.init.heh" class="1"/>
+ <ClassDef glyph="seen-ar.init.meem" class="1"/>
+ <ClassDef glyph="seen-ar.init.ragaa" class="1"/>
+ <ClassDef glyph="seen-ar.init.reh" class="1"/>
+ <ClassDef glyph="seen-ar.init.sad" class="1"/>
+ <ClassDef glyph="seen-ar.init.yeh" class="1"/>
+ <ClassDef glyph="seen-ar.jalt" class="1"/>
+ <ClassDef glyph="seen-ar.medi" class="1"/>
+ <ClassDef glyph="seen-ar.medi.ain" class="1"/>
+ <ClassDef glyph="seen-ar.medi.dal" class="1"/>
+ <ClassDef glyph="seen-ar.medi.feh" class="1"/>
+ <ClassDef glyph="seen-ar.medi.hah" class="1"/>
+ <ClassDef glyph="seen-ar.medi.heh" class="1"/>
+ <ClassDef glyph="seen-ar.medi.meem" class="1"/>
+ <ClassDef glyph="seen-ar.medi.ragaa" class="1"/>
+ <ClassDef glyph="seen-ar.medi.reh" class="1"/>
+ <ClassDef glyph="seen-ar.medi.sad" class="1"/>
+ <ClassDef glyph="seen-ar.medi.yeh" class="1"/>
+ <ClassDef glyph="shadda-ar" class="3"/>
+ <ClassDef glyph="sheen-ar" class="1"/>
+ <ClassDef glyph="sukun-ar" class="3"/>
+ <ClassDef glyph="sukun-ar.alt" class="3"/>
+ <ClassDef glyph="tah-ar" class="1"/>
+ <ClassDef glyph="tah-ar.fina" class="1"/>
+ <ClassDef glyph="tah-ar.init" class="1"/>
+ <ClassDef glyph="tah-ar.init.ain" class="1"/>
+ <ClassDef glyph="tah-ar.init.dal" class="1"/>
+ <ClassDef glyph="tah-ar.init.feh" class="1"/>
+ <ClassDef glyph="tah-ar.init.hah" class="1"/>
+ <ClassDef glyph="tah-ar.init.heh" class="1"/>
+ <ClassDef glyph="tah-ar.init.kaf" class="1"/>
+ <ClassDef glyph="tah-ar.init.meem" class="1"/>
+ <ClassDef glyph="tah-ar.init.qantara" class="1"/>
+ <ClassDef glyph="tah-ar.init.ragaa" class="1"/>
+ <ClassDef glyph="tah-ar.init.reh" class="1"/>
+ <ClassDef glyph="tah-ar.init.sad" class="1"/>
+ <ClassDef glyph="tah-ar.init.yeh" class="1"/>
+ <ClassDef glyph="tah-ar.medi" class="1"/>
+ <ClassDef glyph="tah-ar.medi.ain" class="1"/>
+ <ClassDef glyph="tah-ar.medi.dal" class="1"/>
+ <ClassDef glyph="tah-ar.medi.feh" class="1"/>
+ <ClassDef glyph="tah-ar.medi.hah" class="1"/>
+ <ClassDef glyph="tah-ar.medi.heh" class="1"/>
+ <ClassDef glyph="tah-ar.medi.kaf" class="1"/>
+ <ClassDef glyph="tah-ar.medi.meem" class="1"/>
+ <ClassDef glyph="tah-ar.medi.postsad" class="1"/>
+ <ClassDef glyph="tah-ar.medi.qantara" class="1"/>
+ <ClassDef glyph="tah-ar.medi.ragaa" class="1"/>
+ <ClassDef glyph="tah-ar.medi.reh" class="1"/>
+ <ClassDef glyph="tah-ar.medi.sad" class="1"/>
+ <ClassDef glyph="tah-ar.medi.yeh" class="1"/>
+ <ClassDef glyph="tahabove-ar" class="3"/>
+ <ClassDef glyph="threedotsdownbelow-ar" class="3"/>
+ <ClassDef glyph="threedotsupabove-ar" class="3"/>
+ <ClassDef glyph="twodotshorizontalabove-ar" class="3"/>
+ <ClassDef glyph="twodotshorizontalbelow-ar" class="3"/>
+ <ClassDef glyph="vabove-ar" class="3"/>
+ <ClassDef glyph="vbelow-ar" class="3"/>
+ <ClassDef glyph="wasla-ar" class="3"/>
+ <ClassDef glyph="waw-ar" class="1"/>
+ <ClassDef glyph="waw-ar.fina" class="1"/>
+ <ClassDef glyph="yehbarree-ar" class="1"/>
+ <ClassDef glyph="yehbarree-ar.fina" class="1"/>
+ </GlyphClassDef>
+ <MarkGlyphSetsDef>
+ <MarkSetTableFormat value="1"/>
+ <!-- MarkSetCount=3 -->
+ <Coverage index="0">
+ <Glyph value="dotabove-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="threedotsupabove-ar"/>
+ </Coverage>
+ <Coverage index="1">
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="threedotsdownbelow-ar"/>
+ <Glyph value="alefbelow-ar"/>
+ <Glyph value="hamzabelow-ar"/>
+ <Glyph value="kasratan-ar"/>
+ <Glyph value="kasra-ar"/>
+ <Glyph value="shadda-ar"/>
+ </Coverage>
+ <Coverage index="2">
+ <Glyph value="dotabove-ar"/>
+ <Glyph value="twodotshorizontalabove-ar"/>
+ <Glyph value="threedotsupabove-ar"/>
+ <Glyph value="gafsarkashabove-ar"/>
+ <Glyph value="alefabove-ar"/>
+ <Glyph value="hamzaabove-ar"/>
+ <Glyph value="fathatan-ar"/>
+ <Glyph value="dammatan-ar"/>
+ <Glyph value="fatha-ar"/>
+ <Glyph value="damma-ar"/>
+ <Glyph value="shadda-ar"/>
+ <Glyph value="sukun-ar"/>
+ <Glyph value="sukun-ar.alt"/>
+ <Glyph value="madda-ar"/>
+ <Glyph value="noonghunnaabove-ar"/>
+ <Glyph value="dammainverted-ar"/>
+ <Glyph value="dammainverted-ar.urd"/>
+ <Glyph value="opendammatan-ar"/>
+ </Coverage>
+ </MarkGlyphSetsDef>
+ </GDEF>
+
+ <GPOS>
+ <Version value="0x00010000"/>
+ <ScriptList>
+ <!-- ScriptCount=1 -->
+ <ScriptRecord index="0">
+ <ScriptTag value="arab"/>
+ <Script>
+ <DefaultLangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=4 -->
+ <FeatureIndex index="0" value="0"/>
+ <FeatureIndex index="1" value="1"/>
+ <FeatureIndex index="2" value="2"/>
+ <FeatureIndex index="3" value="3"/>
+ </DefaultLangSys>
+ <!-- LangSysCount=4 -->
+ <LangSysRecord index="0">
+ <LangSysTag value="KSH "/>
+ <LangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=4 -->
+ <FeatureIndex index="0" value="0"/>
+ <FeatureIndex index="1" value="1"/>
+ <FeatureIndex index="2" value="2"/>
+ <FeatureIndex index="3" value="3"/>
+ </LangSys>
+ </LangSysRecord>
+ <LangSysRecord index="1">
+ <LangSysTag value="MLY "/>
+ <LangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=4 -->
+ <FeatureIndex index="0" value="0"/>
+ <FeatureIndex index="1" value="1"/>
+ <FeatureIndex index="2" value="2"/>
+ <FeatureIndex index="3" value="3"/>
+ </LangSys>
+ </LangSysRecord>
+ <LangSysRecord index="2">
+ <LangSysTag value="SND "/>
+ <LangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=4 -->
+ <FeatureIndex index="0" value="0"/>
+ <FeatureIndex index="1" value="1"/>
+ <FeatureIndex index="2" value="2"/>
+ <FeatureIndex index="3" value="3"/>
+ </LangSys>
+ </LangSysRecord>
+ <LangSysRecord index="3">
+ <LangSysTag value="URD "/>
+ <LangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=4 -->
+ <FeatureIndex index="0" value="0"/>
+ <FeatureIndex index="1" value="1"/>
+ <FeatureIndex index="2" value="2"/>
+ <FeatureIndex index="3" value="3"/>
+ </LangSys>
+ </LangSysRecord>
+ </Script>
+ </ScriptRecord>
+ </ScriptList>
+ <FeatureList>
+ <!-- FeatureCount=4 -->
+ <FeatureRecord index="0">
+ <FeatureTag value="curs"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="0"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="1">
+ <FeatureTag value="kern"/>
+ <Feature>
+ <!-- LookupCount=2 -->
+ <LookupListIndex index="0" value="12"/>
+ <LookupListIndex index="1" value="13"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="2">
+ <FeatureTag value="mark"/>
+ <Feature>
+ <!-- LookupCount=3 -->
+ <LookupListIndex index="0" value="1"/>
+ <LookupListIndex index="1" value="2"/>
+ <LookupListIndex index="2" value="3"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="3">
+ <FeatureTag value="mkmk"/>
+ <Feature>
+ <!-- LookupCount=2 -->
+ <LookupListIndex index="0" value="10"/>
+ <LookupListIndex index="1" value="11"/>
+ </Feature>
+ </FeatureRecord>
+ </FeatureList>
+ <LookupList>
+ <!-- LookupCount=24 -->
+ <!-- curs: &lt;features&gt;:634:9 in curs (arab/dflt) -->
+ <Lookup index="0">
+ <LookupType value="3"/>
+ <LookupFlag value="9"/><!-- rightToLeft ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <CursivePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="alef-ar.fina"/>
+ <Glyph value="alef-ar.fina.lam"/>
+ <Glyph value="behDotless-ar.fina"/>
+ <Glyph value="behDotless-ar.fina.jalt"/>
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.medi.ain"/>
+ <Glyph value="behDotless-ar.medi.dal"/>
+ <Glyph value="behDotless-ar.medi.feh"/>
+ <Glyph value="behDotless-ar.medi.hah"/>
+ <Glyph value="behDotless-ar.medi.heh"/>
+ <Glyph value="behDotless-ar.medi.high"/>
+ <Glyph value="behDotless-ar.medi.high2"/>
+ <Glyph value="behDotless-ar.medi.meem"/>
+ <Glyph value="behDotless-ar.medi.noon"/>
+ <Glyph value="behDotless-ar.medi.ragaa"/>
+ <Glyph value="behDotless-ar.medi.reh"/>
+ <Glyph value="behDotless-ar.medi.sad"/>
+ <Glyph value="behDotless-ar.medi.yeh"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="behDotless-ar.init.ain"/>
+ <Glyph value="behDotless-ar.init.ascend"/>
+ <Glyph value="behDotless-ar.init.dal"/>
+ <Glyph value="behDotless-ar.init.feh"/>
+ <Glyph value="behDotless-ar.init.hah"/>
+ <Glyph value="behDotless-ar.init.heh"/>
+ <Glyph value="behDotless-ar.init.meem"/>
+ <Glyph value="behDotless-ar.init.ragaa"/>
+ <Glyph value="behDotless-ar.init.reh"/>
+ <Glyph value="behDotless-ar.init.sad"/>
+ <Glyph value="behDotless-ar.init.yeh"/>
+ <Glyph value="hah-ar.fina"/>
+ <Glyph value="hah-ar.medi"/>
+ <Glyph value="hah-ar.medi.ain"/>
+ <Glyph value="hah-ar.medi.dal"/>
+ <Glyph value="hah-ar.medi.feh"/>
+ <Glyph value="hah-ar.medi.hah"/>
+ <Glyph value="hah-ar.medi.heh"/>
+ <Glyph value="hah-ar.medi.heh.ragaa"/>
+ <Glyph value="hah-ar.medi.meem"/>
+ <Glyph value="hah-ar.medi.ragaa"/>
+ <Glyph value="hah-ar.medi.reh"/>
+ <Glyph value="hah-ar.medi.sad"/>
+ <Glyph value="hah-ar.medi.yeh"/>
+ <Glyph value="hah-ar.init"/>
+ <Glyph value="hah-ar.init.ain"/>
+ <Glyph value="hah-ar.init.dal"/>
+ <Glyph value="hah-ar.init.feh"/>
+ <Glyph value="hah-ar.init.hah"/>
+ <Glyph value="hah-ar.init.heh"/>
+ <Glyph value="hah-ar.init.heh.ragaa"/>
+ <Glyph value="hah-ar.init.meem"/>
+ <Glyph value="hah-ar.init.ragaa"/>
+ <Glyph value="hah-ar.init.reh"/>
+ <Glyph value="hah-ar.init.sad"/>
+ <Glyph value="hah-ar.init.yeh"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="seen-ar.fina"/>
+ <Glyph value="seen-ar.fina.jalt"/>
+ <Glyph value="seen-ar.medi"/>
+ <Glyph value="seen-ar.medi.ain"/>
+ <Glyph value="seen-ar.medi.dal"/>
+ <Glyph value="seen-ar.medi.feh"/>
+ <Glyph value="seen-ar.medi.hah"/>
+ <Glyph value="seen-ar.medi.heh"/>
+ <Glyph value="seen-ar.medi.meem"/>
+ <Glyph value="seen-ar.medi.ragaa"/>
+ <Glyph value="seen-ar.medi.reh"/>
+ <Glyph value="seen-ar.medi.sad"/>
+ <Glyph value="seen-ar.medi.yeh"/>
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="seen-ar.init.ain"/>
+ <Glyph value="seen-ar.init.dal"/>
+ <Glyph value="seen-ar.init.feh"/>
+ <Glyph value="seen-ar.init.hah"/>
+ <Glyph value="seen-ar.init.heh"/>
+ <Glyph value="seen-ar.init.meem"/>
+ <Glyph value="seen-ar.init.ragaa"/>
+ <Glyph value="seen-ar.init.reh"/>
+ <Glyph value="seen-ar.init.sad"/>
+ <Glyph value="seen-ar.init.yeh"/>
+ <Glyph value="sad-ar.fina"/>
+ <Glyph value="sad-ar.fina.jalt"/>
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="sad-ar.medi.ain"/>
+ <Glyph value="sad-ar.medi.dal"/>
+ <Glyph value="sad-ar.medi.feh"/>
+ <Glyph value="sad-ar.medi.hah"/>
+ <Glyph value="sad-ar.medi.heh"/>
+ <Glyph value="sad-ar.medi.meem"/>
+ <Glyph value="sad-ar.medi.postsad"/>
+ <Glyph value="sad-ar.medi.qantara"/>
+ <Glyph value="sad-ar.medi.ragaa"/>
+ <Glyph value="sad-ar.medi.reh"/>
+ <Glyph value="sad-ar.medi.sad"/>
+ <Glyph value="sad-ar.medi.yeh"/>
+ <Glyph value="sad-ar.init"/>
+ <Glyph value="sad-ar.init.ain"/>
+ <Glyph value="sad-ar.init.dal"/>
+ <Glyph value="sad-ar.init.feh"/>
+ <Glyph value="sad-ar.init.hah"/>
+ <Glyph value="sad-ar.init.heh"/>
+ <Glyph value="sad-ar.init.meem"/>
+ <Glyph value="sad-ar.init.qantara"/>
+ <Glyph value="sad-ar.init.ragaa"/>
+ <Glyph value="sad-ar.init.reh"/>
+ <Glyph value="sad-ar.init.sad"/>
+ <Glyph value="sad-ar.init.yeh"/>
+ <Glyph value="tah-ar.fina"/>
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.medi.ain"/>
+ <Glyph value="tah-ar.medi.dal"/>
+ <Glyph value="tah-ar.medi.feh"/>
+ <Glyph value="tah-ar.medi.hah"/>
+ <Glyph value="tah-ar.medi.heh"/>
+ <Glyph value="tah-ar.medi.kaf"/>
+ <Glyph value="tah-ar.medi.meem"/>
+ <Glyph value="tah-ar.medi.postsad"/>
+ <Glyph value="tah-ar.medi.qantara"/>
+ <Glyph value="tah-ar.medi.ragaa"/>
+ <Glyph value="tah-ar.medi.reh"/>
+ <Glyph value="tah-ar.medi.sad"/>
+ <Glyph value="tah-ar.medi.yeh"/>
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="tah-ar.init.ain"/>
+ <Glyph value="tah-ar.init.dal"/>
+ <Glyph value="tah-ar.init.feh"/>
+ <Glyph value="tah-ar.init.hah"/>
+ <Glyph value="tah-ar.init.heh"/>
+ <Glyph value="tah-ar.init.kaf"/>
+ <Glyph value="tah-ar.init.meem"/>
+ <Glyph value="tah-ar.init.qantara"/>
+ <Glyph value="tah-ar.init.ragaa"/>
+ <Glyph value="tah-ar.init.reh"/>
+ <Glyph value="tah-ar.init.sad"/>
+ <Glyph value="tah-ar.init.yeh"/>
+ <Glyph value="ain-ar.fina"/>
+ <Glyph value="ain-ar.medi"/>
+ <Glyph value="ain-ar.medi.ain"/>
+ <Glyph value="ain-ar.medi.dal"/>
+ <Glyph value="ain-ar.medi.feh"/>
+ <Glyph value="ain-ar.medi.hah"/>
+ <Glyph value="ain-ar.medi.heh"/>
+ <Glyph value="ain-ar.medi.meem"/>
+ <Glyph value="ain-ar.medi.ragaa"/>
+ <Glyph value="ain-ar.medi.reh"/>
+ <Glyph value="ain-ar.medi.sad"/>
+ <Glyph value="ain-ar.medi.yeh"/>
+ <Glyph value="ain-ar.init"/>
+ <Glyph value="ain-ar.init.ain"/>
+ <Glyph value="ain-ar.init.dal"/>
+ <Glyph value="ain-ar.init.feh"/>
+ <Glyph value="ain-ar.init.hah"/>
+ <Glyph value="ain-ar.init.heh"/>
+ <Glyph value="ain-ar.init.meem"/>
+ <Glyph value="ain-ar.init.ragaa"/>
+ <Glyph value="ain-ar.init.reh"/>
+ <Glyph value="ain-ar.init.sad"/>
+ <Glyph value="ain-ar.init.yeh"/>
+ <Glyph value="fehDotless-ar.fina"/>
+ <Glyph value="fehDotless-ar.fina.jalt"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.medi.ain"/>
+ <Glyph value="fehDotless-ar.medi.dal"/>
+ <Glyph value="fehDotless-ar.medi.feh"/>
+ <Glyph value="fehDotless-ar.medi.hah"/>
+ <Glyph value="fehDotless-ar.medi.heh"/>
+ <Glyph value="fehDotless-ar.medi.meem"/>
+ <Glyph value="fehDotless-ar.medi.ragaa"/>
+ <Glyph value="fehDotless-ar.medi.reh"/>
+ <Glyph value="fehDotless-ar.medi.sad"/>
+ <Glyph value="fehDotless-ar.medi.yeh"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="fehDotless-ar.init.ain"/>
+ <Glyph value="fehDotless-ar.init.dal"/>
+ <Glyph value="fehDotless-ar.init.feh"/>
+ <Glyph value="fehDotless-ar.init.hah"/>
+ <Glyph value="fehDotless-ar.init.heh"/>
+ <Glyph value="fehDotless-ar.init.meem"/>
+ <Glyph value="fehDotless-ar.init.ragaa"/>
+ <Glyph value="fehDotless-ar.init.reh"/>
+ <Glyph value="fehDotless-ar.init.sad"/>
+ <Glyph value="fehDotless-ar.init.yeh"/>
+ <Glyph value="qafDotless-ar.fina"/>
+ <Glyph value="qafDotless-ar.fina.jalt"/>
+ <Glyph value="qaf-ar.fina"/>
+ <Glyph value="kaf-ar.fina"/>
+ <Glyph value="kaf-ar.fina.jalt"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.medi.ain"/>
+ <Glyph value="kaf-ar.medi.dal"/>
+ <Glyph value="kaf-ar.medi.feh"/>
+ <Glyph value="kaf-ar.medi.hah"/>
+ <Glyph value="kaf-ar.medi.heh"/>
+ <Glyph value="kaf-ar.medi.kaf"/>
+ <Glyph value="kaf-ar.medi.meem"/>
+ <Glyph value="kaf-ar.medi.ragaa"/>
+ <Glyph value="kaf-ar.medi.reh"/>
+ <Glyph value="kaf-ar.medi.sad"/>
+ <Glyph value="kaf-ar.medi.yeh"/>
+ <Glyph value="kaf-ar.init"/>
+ <Glyph value="kaf-ar.init.ain"/>
+ <Glyph value="kaf-ar.init.alef"/>
+ <Glyph value="kaf-ar.init.alef.loop"/>
+ <Glyph value="kaf-ar.init.dal"/>
+ <Glyph value="kaf-ar.init.feh"/>
+ <Glyph value="kaf-ar.init.hah"/>
+ <Glyph value="kaf-ar.init.heh"/>
+ <Glyph value="kaf-ar.init.meem"/>
+ <Glyph value="kaf-ar.init.ragaa"/>
+ <Glyph value="kaf-ar.init.reh"/>
+ <Glyph value="kaf-ar.init.sad"/>
+ <Glyph value="kaf-ar.init.yeh"/>
+ <Glyph value="keheh-ar.fina"/>
+ <Glyph value="keheh-ar.fina.jalt"/>
+ <Glyph value="lam-ar.fina"/>
+ <Glyph value="lam-ar.fina.jalt"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.medi.ain"/>
+ <Glyph value="lam-ar.medi.alef"/>
+ <Glyph value="lam-ar.medi.dal"/>
+ <Glyph value="lam-ar.medi.feh"/>
+ <Glyph value="lam-ar.medi.hah"/>
+ <Glyph value="lam-ar.medi.heh"/>
+ <Glyph value="lam-ar.medi.kaf"/>
+ <Glyph value="lam-ar.medi.meem"/>
+ <Glyph value="lam-ar.medi.ragaa"/>
+ <Glyph value="lam-ar.medi.reh"/>
+ <Glyph value="lam-ar.medi.sad"/>
+ <Glyph value="lam-ar.medi.yeh"/>
+ <Glyph value="lam-ar.init"/>
+ <Glyph value="lam-ar.init.ain"/>
+ <Glyph value="lam-ar.init.alef"/>
+ <Glyph value="lam-ar.init.dal"/>
+ <Glyph value="lam-ar.init.feh"/>
+ <Glyph value="lam-ar.init.hah"/>
+ <Glyph value="lam-ar.init.heh"/>
+ <Glyph value="lam-ar.init.kaf"/>
+ <Glyph value="lam-ar.init.meem"/>
+ <Glyph value="lam-ar.init.ragaa"/>
+ <Glyph value="lam-ar.init.reh"/>
+ <Glyph value="lam-ar.init.sad"/>
+ <Glyph value="lam-ar.init.yeh"/>
+ <Glyph value="meem-ar.fina"/>
+ <Glyph value="meem-ar.medi"/>
+ <Glyph value="meem-ar.medi.ain"/>
+ <Glyph value="meem-ar.medi.dal"/>
+ <Glyph value="meem-ar.medi.feh"/>
+ <Glyph value="meem-ar.medi.hah"/>
+ <Glyph value="meem-ar.medi.heh"/>
+ <Glyph value="meem-ar.medi.meem"/>
+ <Glyph value="meem-ar.medi.ragaa"/>
+ <Glyph value="meem-ar.medi.reh"/>
+ <Glyph value="meem-ar.medi.sad"/>
+ <Glyph value="meem-ar.medi.yeh"/>
+ <Glyph value="meem-ar.init"/>
+ <Glyph value="meem-ar.init.ain"/>
+ <Glyph value="meem-ar.init.dal"/>
+ <Glyph value="meem-ar.init.feh"/>
+ <Glyph value="meem-ar.init.hah"/>
+ <Glyph value="meem-ar.init.heh"/>
+ <Glyph value="meem-ar.init.meem"/>
+ <Glyph value="meem-ar.init.ragaa"/>
+ <Glyph value="meem-ar.init.reh"/>
+ <Glyph value="meem-ar.init.sad"/>
+ <Glyph value="meem-ar.init.yeh"/>
+ <Glyph value="noon-ar.fina"/>
+ <Glyph value="noon-ar.fina.tail"/>
+ <Glyph value="noonghunna-ar.fina"/>
+ <Glyph value="heh-ar.fina"/>
+ <Glyph value="heh-ar.medi"/>
+ <Glyph value="heh-ar.medi.ain"/>
+ <Glyph value="heh-ar.medi.dal"/>
+ <Glyph value="heh-ar.medi.feh"/>
+ <Glyph value="heh-ar.medi.hah"/>
+ <Glyph value="heh-ar.medi.heh"/>
+ <Glyph value="heh-ar.medi.meem"/>
+ <Glyph value="heh-ar.medi.ragaa"/>
+ <Glyph value="heh-ar.medi.reh"/>
+ <Glyph value="heh-ar.medi.sad"/>
+ <Glyph value="heh-ar.medi.yeh"/>
+ <Glyph value="heh-ar.init"/>
+ <Glyph value="heh-ar.init.ain"/>
+ <Glyph value="heh-ar.init.dal"/>
+ <Glyph value="heh-ar.init.feh"/>
+ <Glyph value="heh-ar.init.hah"/>
+ <Glyph value="heh-ar.init.heh"/>
+ <Glyph value="heh-ar.init.meem"/>
+ <Glyph value="heh-ar.init.ragaa"/>
+ <Glyph value="heh-ar.init.reh"/>
+ <Glyph value="heh-ar.init.sad"/>
+ <Glyph value="heh-ar.init.yeh"/>
+ <Glyph value="hehgoal-ar.fina"/>
+ <Glyph value="hehgoal-ar.init"/>
+ <Glyph value="hehgoal-ar.init.ain"/>
+ <Glyph value="hehgoal-ar.init.dal"/>
+ <Glyph value="hehgoal-ar.init.feh"/>
+ <Glyph value="hehgoal-ar.init.hah"/>
+ <Glyph value="hehgoal-ar.init.heh"/>
+ <Glyph value="hehgoal-ar.init.meem"/>
+ <Glyph value="hehgoal-ar.init.ragaa"/>
+ <Glyph value="hehgoal-ar.init.reh"/>
+ <Glyph value="hehgoal-ar.init.sad"/>
+ <Glyph value="hehgoal-ar.init.yeh"/>
+ <Glyph value="hehDoachashmee-ar.fina"/>
+ <Glyph value="hehDoachashmee-ar.medi"/>
+ <Glyph value="hehDoachashmee-ar.medi.ain"/>
+ <Glyph value="hehDoachashmee-ar.medi.dal"/>
+ <Glyph value="hehDoachashmee-ar.medi.feh"/>
+ <Glyph value="hehDoachashmee-ar.medi.hah"/>
+ <Glyph value="hehDoachashmee-ar.medi.heh"/>
+ <Glyph value="hehDoachashmee-ar.medi.meem"/>
+ <Glyph value="hehDoachashmee-ar.medi.ragaa"/>
+ <Glyph value="hehDoachashmee-ar.medi.reh"/>
+ <Glyph value="hehDoachashmee-ar.medi.sad"/>
+ <Glyph value="hehDoachashmee-ar.medi.yeh"/>
+ <Glyph value="waw-ar.fina"/>
+ <Glyph value="alefMaksura-ar.fina"/>
+ <Glyph value="alefMaksura-ar.fina.jalt"/>
+ <Glyph value="alefMaksura-ar.fina.yeh"/>
+ <Glyph value="alefMaksura-ar.fina.yeh.jalt"/>
+ <Glyph value="yehbarree-ar.fina"/>
+ <Glyph value="alefabove-ar.medi"/>
+ </Coverage>
+ <!-- EntryExitCount=323 -->
+ <EntryExitRecord index="0">
+ <EntryAnchor Format="1">
+ <XCoordinate value="112"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="1">
+ <EntryAnchor Format="1">
+ <XCoordinate value="-27"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="2">
+ <EntryAnchor Format="1">
+ <XCoordinate value="492"/>
+ <YCoordinate value="26"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="3">
+ <EntryAnchor Format="1">
+ <XCoordinate value="851"/>
+ <YCoordinate value="83"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="4">
+ <EntryAnchor Format="1">
+ <XCoordinate value="198"/>
+ <YCoordinate value="22"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="5">
+ <EntryAnchor Format="1">
+ <XCoordinate value="352"/>
+ <YCoordinate value="26"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="6">
+ <EntryAnchor Format="1">
+ <XCoordinate value="233"/>
+ <YCoordinate value="18"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="7">
+ <EntryAnchor Format="1">
+ <XCoordinate value="400"/>
+ <YCoordinate value="35"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="8">
+ <EntryAnchor Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="184"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="-31"/>
+ <YCoordinate value="7"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="9">
+ <EntryAnchor Format="1">
+ <XCoordinate value="475"/>
+ <YCoordinate value="132"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="10">
+ <EntryAnchor Format="1">
+ <XCoordinate value="229"/>
+ <YCoordinate value="171"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="11">
+ <EntryAnchor Format="1">
+ <XCoordinate value="237"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="12">
+ <EntryAnchor Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="92"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="-24"/>
+ <YCoordinate value="-49"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="13">
+ <EntryAnchor Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="44"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="14">
+ <EntryAnchor Format="1">
+ <XCoordinate value="285"/>
+ <YCoordinate value="91"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="15">
+ <EntryAnchor Format="1">
+ <XCoordinate value="264"/>
+ <YCoordinate value="22"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="16">
+ <EntryAnchor Format="1">
+ <XCoordinate value="489"/>
+ <YCoordinate value="48"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="17">
+ <EntryAnchor Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="92"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="10"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="18">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="19">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="20">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="21">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="22">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="23">
+ <ExitAnchor Format="1">
+ <XCoordinate value="-44"/>
+ <YCoordinate value="-107"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="24">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="25">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="26">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="27">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="28">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="29">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="30">
+ <EntryAnchor Format="1">
+ <XCoordinate value="147"/>
+ <YCoordinate value="424"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="31">
+ <EntryAnchor Format="1">
+ <XCoordinate value="225"/>
+ <YCoordinate value="284"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="32">
+ <EntryAnchor Format="1">
+ <XCoordinate value="339"/>
+ <YCoordinate value="278"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="33">
+ <EntryAnchor Format="1">
+ <XCoordinate value="237"/>
+ <YCoordinate value="261"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="34">
+ <EntryAnchor Format="1">
+ <XCoordinate value="387"/>
+ <YCoordinate value="279"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="35">
+ <EntryAnchor Format="1">
+ <XCoordinate value="208"/>
+ <YCoordinate value="389"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="36">
+ <EntryAnchor Format="1">
+ <XCoordinate value="396"/>
+ <YCoordinate value="374"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="37">
+ <EntryAnchor Format="1">
+ <XCoordinate value="306"/>
+ <YCoordinate value="288"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="38">
+ <EntryAnchor Format="1">
+ <XCoordinate value="249"/>
+ <YCoordinate value="389"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="-10"/>
+ <YCoordinate value="-24"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="39">
+ <EntryAnchor Format="1">
+ <XCoordinate value="149"/>
+ <YCoordinate value="340"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="40">
+ <EntryAnchor Format="1">
+ <XCoordinate value="222"/>
+ <YCoordinate value="333"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="41">
+ <EntryAnchor Format="1">
+ <XCoordinate value="484"/>
+ <YCoordinate value="297"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="42">
+ <EntryAnchor Format="1">
+ <XCoordinate value="230"/>
+ <YCoordinate value="374"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="10"/>
+ <YCoordinate value="49"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="43">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="44">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="45">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="46">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="47">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="48">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="49">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="50">
+ <ExitAnchor Format="1">
+ <XCoordinate value="-24"/>
+ <YCoordinate value="-49"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="51">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="52">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="53">
+ <ExitAnchor Format="1">
+ <XCoordinate value="24"/>
+ <YCoordinate value="49"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="54">
+ <ExitAnchor Format="1">
+ <XCoordinate value="10"/>
+ <YCoordinate value="49"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="55">
+ <EntryAnchor Format="1">
+ <XCoordinate value="338"/>
+ <YCoordinate value="48"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="56">
+ <EntryAnchor Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="105"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="57">
+ <EntryAnchor Format="1">
+ <XCoordinate value="571"/>
+ <YCoordinate value="321"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="58">
+ <EntryAnchor Format="1">
+ <XCoordinate value="1107"/>
+ <YCoordinate value="281"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="59">
+ <EntryAnchor Format="1">
+ <XCoordinate value="387"/>
+ <YCoordinate value="70"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="60">
+ <EntryAnchor Format="1">
+ <XCoordinate value="470"/>
+ <YCoordinate value="62"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="61">
+ <EntryAnchor Format="1">
+ <XCoordinate value="396"/>
+ <YCoordinate value="40"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="62">
+ <EntryAnchor Format="1">
+ <XCoordinate value="580"/>
+ <YCoordinate value="66"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="63">
+ <EntryAnchor Format="1">
+ <XCoordinate value="505"/>
+ <YCoordinate value="198"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="64">
+ <EntryAnchor Format="1">
+ <XCoordinate value="677"/>
+ <YCoordinate value="171"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="65">
+ <EntryAnchor Format="1">
+ <XCoordinate value="483"/>
+ <YCoordinate value="167"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="66">
+ <EntryAnchor Format="1">
+ <XCoordinate value="446"/>
+ <YCoordinate value="118"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="67">
+ <EntryAnchor Format="1">
+ <XCoordinate value="396"/>
+ <YCoordinate value="48"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="68">
+ <EntryAnchor Format="1">
+ <XCoordinate value="646"/>
+ <YCoordinate value="79"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="69">
+ <EntryAnchor Format="1">
+ <XCoordinate value="439"/>
+ <YCoordinate value="110"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="-5"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="70">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="71">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="72">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="73">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="74">
+ <ExitAnchor Format="1">
+ <XCoordinate value="10"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="75">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="76">
+ <ExitAnchor Format="1">
+ <XCoordinate value="5"/>
+ <YCoordinate value="10"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="77">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="78">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="79">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="80">
+ <ExitAnchor Format="1">
+ <XCoordinate value="-5"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="81">
+ <EntryAnchor Format="1">
+ <XCoordinate value="460"/>
+ <YCoordinate value="55"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="82">
+ <EntryAnchor Format="1">
+ <XCoordinate value="986"/>
+ <YCoordinate value="42"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="83">
+ <EntryAnchor Format="1">
+ <XCoordinate value="539"/>
+ <YCoordinate value="72"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="84">
+ <EntryAnchor Format="1">
+ <XCoordinate value="270"/>
+ <YCoordinate value="-250"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="85">
+ <EntryAnchor Format="1">
+ <XCoordinate value="259"/>
+ <YCoordinate value="-215"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="86">
+ <EntryAnchor Format="1">
+ <XCoordinate value="347"/>
+ <YCoordinate value="-217"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="87">
+ <EntryAnchor Format="1">
+ <XCoordinate value="330"/>
+ <YCoordinate value="-62"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="88">
+ <EntryAnchor Format="1">
+ <XCoordinate value="483"/>
+ <YCoordinate value="-88"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="89">
+ <EntryAnchor Format="1">
+ <XCoordinate value="299"/>
+ <YCoordinate value="-132"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="90">
+ <EntryAnchor Format="1">
+ <XCoordinate value="255"/>
+ <YCoordinate value="-189"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="91">
+ <EntryAnchor Format="1">
+ <XCoordinate value="559"/>
+ <YCoordinate value="-32"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="92">
+ <EntryAnchor Format="1">
+ <XCoordinate value="591"/>
+ <YCoordinate value="167"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="93">
+ <EntryAnchor Format="1">
+ <XCoordinate value="202"/>
+ <YCoordinate value="-215"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="94">
+ <EntryAnchor Format="1">
+ <XCoordinate value="374"/>
+ <YCoordinate value="-242"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="95">
+ <EntryAnchor Format="1">
+ <XCoordinate value="272"/>
+ <YCoordinate value="-193"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="12"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="96">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="97">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="98">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="99">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="100">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="2"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="101">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="102">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="103">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="104">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="105">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="106">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="107">
+ <ExitAnchor Format="1">
+ <XCoordinate value="12"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="108">
+ <EntryAnchor Format="1">
+ <XCoordinate value="211"/>
+ <YCoordinate value="-196"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="109">
+ <EntryAnchor Format="1">
+ <XCoordinate value="417"/>
+ <YCoordinate value="109"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="110">
+ <EntryAnchor Format="1">
+ <XCoordinate value="219"/>
+ <YCoordinate value="-230"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="111">
+ <EntryAnchor Format="1">
+ <XCoordinate value="185"/>
+ <YCoordinate value="-189"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="112">
+ <EntryAnchor Format="1">
+ <XCoordinate value="268"/>
+ <YCoordinate value="-213"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="113">
+ <EntryAnchor Format="1">
+ <XCoordinate value="202"/>
+ <YCoordinate value="-40"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="114">
+ <EntryAnchor Format="1">
+ <XCoordinate value="268"/>
+ <YCoordinate value="-123"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="115">
+ <EntryAnchor Format="1">
+ <XCoordinate value="163"/>
+ <YCoordinate value="-185"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="116">
+ <EntryAnchor Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="-66"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="-10"/>
+ <YCoordinate value="-24"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="117">
+ <EntryAnchor Format="1">
+ <XCoordinate value="105"/>
+ <YCoordinate value="-195"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="118">
+ <EntryAnchor Format="1">
+ <XCoordinate value="414"/>
+ <YCoordinate value="-86"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="119">
+ <EntryAnchor Format="1">
+ <XCoordinate value="430"/>
+ <YCoordinate value="172"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="120">
+ <EntryAnchor Format="1">
+ <XCoordinate value="107"/>
+ <YCoordinate value="-175"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="121">
+ <EntryAnchor Format="1">
+ <XCoordinate value="388"/>
+ <YCoordinate value="-206"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="122">
+ <EntryAnchor Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="-92"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="10"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="123">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="124">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="125">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="126">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="127">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="1"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="128">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="129">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="130">
+ <ExitAnchor Format="1">
+ <XCoordinate value="-10"/>
+ <YCoordinate value="-24"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="131">
+ <ExitAnchor Format="1">
+ <XCoordinate value="9"/>
+ <YCoordinate value="31"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="132">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="133">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="134">
+ <ExitAnchor Format="1">
+ <XCoordinate value="9"/>
+ <YCoordinate value="31"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="135">
+ <ExitAnchor Format="1">
+ <XCoordinate value="10"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="136">
+ <EntryAnchor Format="1">
+ <XCoordinate value="264"/>
+ <YCoordinate value="246"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="137">
+ <EntryAnchor Format="1">
+ <XCoordinate value="255"/>
+ <YCoordinate value="57"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="138">
+ <EntryAnchor Format="1">
+ <XCoordinate value="382"/>
+ <YCoordinate value="53"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="139">
+ <EntryAnchor Format="1">
+ <XCoordinate value="246"/>
+ <YCoordinate value="40"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="140">
+ <EntryAnchor Format="1">
+ <XCoordinate value="444"/>
+ <YCoordinate value="57"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="141">
+ <EntryAnchor Format="1">
+ <XCoordinate value="277"/>
+ <YCoordinate value="171"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="142">
+ <EntryAnchor Format="1">
+ <XCoordinate value="483"/>
+ <YCoordinate value="145"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="143">
+ <EntryAnchor Format="1">
+ <XCoordinate value="343"/>
+ <YCoordinate value="149"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="-10"/>
+ <YCoordinate value="-24"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="144">
+ <EntryAnchor Format="1">
+ <XCoordinate value="269"/>
+ <YCoordinate value="102"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="145">
+ <EntryAnchor Format="1">
+ <XCoordinate value="255"/>
+ <YCoordinate value="75"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="146">
+ <EntryAnchor Format="1">
+ <XCoordinate value="492"/>
+ <YCoordinate value="48"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="147">
+ <EntryAnchor Format="1">
+ <XCoordinate value="360"/>
+ <YCoordinate value="141"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="10"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="148">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="149">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="150">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="151">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="152">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="153">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="154">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="-10"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="155">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="156">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="157">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="158">
+ <ExitAnchor Format="1">
+ <XCoordinate value="10"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="159">
+ <EntryAnchor Format="1">
+ <XCoordinate value="505"/>
+ <YCoordinate value="53"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="160">
+ <EntryAnchor Format="1">
+ <XCoordinate value="738"/>
+ <YCoordinate value="44"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="161">
+ <EntryAnchor Format="1">
+ <XCoordinate value="220"/>
+ <YCoordinate value="22"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="162">
+ <EntryAnchor Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="13"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="163">
+ <EntryAnchor Format="1">
+ <XCoordinate value="220"/>
+ <YCoordinate value="9"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="164">
+ <EntryAnchor Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="31"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="165">
+ <EntryAnchor Format="1">
+ <XCoordinate value="224"/>
+ <YCoordinate value="119"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="166">
+ <EntryAnchor Format="1">
+ <XCoordinate value="457"/>
+ <YCoordinate value="123"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="167">
+ <EntryAnchor Format="1">
+ <XCoordinate value="281"/>
+ <YCoordinate value="119"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="-20"/>
+ <YCoordinate value="-39"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="168">
+ <EntryAnchor Format="1">
+ <XCoordinate value="215"/>
+ <YCoordinate value="81"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="169">
+ <EntryAnchor Format="1">
+ <XCoordinate value="246"/>
+ <YCoordinate value="57"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="170">
+ <EntryAnchor Format="1">
+ <XCoordinate value="497"/>
+ <YCoordinate value="44"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="171">
+ <EntryAnchor Format="1">
+ <XCoordinate value="281"/>
+ <YCoordinate value="114"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="10"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="172">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="173">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="174">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="175">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="176">
+ <ExitAnchor Format="1">
+ <XCoordinate value="-18"/>
+ <YCoordinate value="-83"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="177">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="178">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="-10"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="179">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="180">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="181">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="182">
+ <ExitAnchor Format="1">
+ <XCoordinate value="24"/>
+ <YCoordinate value="10"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="183">
+ <EntryAnchor Format="1">
+ <XCoordinate value="376"/>
+ <YCoordinate value="316"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="184">
+ <EntryAnchor Format="1">
+ <XCoordinate value="615"/>
+ <YCoordinate value="35"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="185">
+ <EntryAnchor Format="1">
+ <XCoordinate value="523"/>
+ <YCoordinate value="316"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="186">
+ <EntryAnchor Format="1">
+ <XCoordinate value="512"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="187">
+ <EntryAnchor Format="1">
+ <XCoordinate value="926"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="188">
+ <EntryAnchor Format="1">
+ <XCoordinate value="259"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="189">
+ <EntryAnchor Format="1">
+ <XCoordinate value="441"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="190">
+ <EntryAnchor Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="191">
+ <EntryAnchor Format="1">
+ <XCoordinate value="464"/>
+ <YCoordinate value="9"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="192">
+ <EntryAnchor Format="1">
+ <XCoordinate value="359"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="-5"/>
+ <YCoordinate value="122"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="193">
+ <EntryAnchor Format="1">
+ <XCoordinate value="482"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="194">
+ <EntryAnchor Format="1">
+ <XCoordinate value="343"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="195">
+ <EntryAnchor Format="1">
+ <XCoordinate value="321"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="171"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="196">
+ <EntryAnchor Format="1">
+ <XCoordinate value="247"/>
+ <YCoordinate value="113"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="197">
+ <EntryAnchor Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="-10"/>
+ <YCoordinate value="73"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="198">
+ <EntryAnchor Format="1">
+ <XCoordinate value="574"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="24"/>
+ <YCoordinate value="88"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="199">
+ <EntryAnchor Format="1">
+ <XCoordinate value="325"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="15"/>
+ <YCoordinate value="171"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="200">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="201">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="202">
+ <EntryAnchor Format="1">
+ <XCoordinate value="167"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="203">
+ <EntryAnchor Format="1">
+ <XCoordinate value="132"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="204">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="205">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="206">
+ <ExitAnchor Format="1">
+ <XCoordinate value="-50"/>
+ <YCoordinate value="-83"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="207">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="208">
+ <ExitAnchor Format="1">
+ <XCoordinate value="-10"/>
+ <YCoordinate value="-49"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="209">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="210">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="211">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="212">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="213">
+ <EntryAnchor Format="1">
+ <XCoordinate value="512"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="214">
+ <EntryAnchor Format="1">
+ <XCoordinate value="923"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="215">
+ <EntryAnchor Format="1">
+ <XCoordinate value="360"/>
+ <YCoordinate value="211"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="216">
+ <EntryAnchor Format="1">
+ <XCoordinate value="916"/>
+ <YCoordinate value="220"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="217">
+ <EntryAnchor Format="1">
+ <XCoordinate value="247"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="218">
+ <EntryAnchor Format="1">
+ <XCoordinate value="442"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="219">
+ <EntryAnchor Format="1">
+ <XCoordinate value="732"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="220">
+ <EntryAnchor Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="221">
+ <EntryAnchor Format="1">
+ <XCoordinate value="463"/>
+ <YCoordinate value="9"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="222">
+ <EntryAnchor Format="1">
+ <XCoordinate value="355"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="-5"/>
+ <YCoordinate value="122"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="223">
+ <EntryAnchor Format="1">
+ <XCoordinate value="483"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="224">
+ <EntryAnchor Format="1">
+ <XCoordinate value="306"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="225">
+ <EntryAnchor Format="1">
+ <XCoordinate value="321"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="171"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="226">
+ <EntryAnchor Format="1">
+ <XCoordinate value="279"/>
+ <YCoordinate value="113"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="227">
+ <EntryAnchor Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="-10"/>
+ <YCoordinate value="73"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="228">
+ <EntryAnchor Format="1">
+ <XCoordinate value="574"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="24"/>
+ <YCoordinate value="88"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="229">
+ <EntryAnchor Format="1">
+ <XCoordinate value="321"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="15"/>
+ <YCoordinate value="171"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="230">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="231">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="232">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="233">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="234">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="235">
+ <ExitAnchor Format="1">
+ <XCoordinate value="-49"/>
+ <YCoordinate value="-86"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="236">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="237">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="238">
+ <ExitAnchor Format="1">
+ <XCoordinate value="-10"/>
+ <YCoordinate value="-49"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="239">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="240">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="241">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="242">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="243">
+ <EntryAnchor Format="1">
+ <XCoordinate value="303"/>
+ <YCoordinate value="404"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="244">
+ <EntryAnchor Format="1">
+ <XCoordinate value="215"/>
+ <YCoordinate value="207"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="245">
+ <EntryAnchor Format="1">
+ <XCoordinate value="343"/>
+ <YCoordinate value="193"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="246">
+ <EntryAnchor Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="211"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="247">
+ <EntryAnchor Format="1">
+ <XCoordinate value="453"/>
+ <YCoordinate value="224"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="248">
+ <EntryAnchor Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="347"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="249">
+ <EntryAnchor Format="1">
+ <XCoordinate value="378"/>
+ <YCoordinate value="299"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="250">
+ <EntryAnchor Format="1">
+ <XCoordinate value="281"/>
+ <YCoordinate value="308"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="-24"/>
+ <YCoordinate value="-29"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="251">
+ <EntryAnchor Format="1">
+ <XCoordinate value="274"/>
+ <YCoordinate value="317"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="252">
+ <EntryAnchor Format="1">
+ <XCoordinate value="264"/>
+ <YCoordinate value="303"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="-10"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="253">
+ <EntryAnchor Format="1">
+ <XCoordinate value="532"/>
+ <YCoordinate value="233"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="254">
+ <EntryAnchor Format="1">
+ <XCoordinate value="229"/>
+ <YCoordinate value="286"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="10"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="255">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="256">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="257">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="258">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="259">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="260">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="261">
+ <ExitAnchor Format="1">
+ <XCoordinate value="-10"/>
+ <YCoordinate value="-24"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="262">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="263">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="264">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="265">
+ <ExitAnchor Format="1">
+ <XCoordinate value="10"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="266">
+ <EntryAnchor Format="1">
+ <XCoordinate value="381"/>
+ <YCoordinate value="229"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="267">
+ <EntryAnchor Format="1">
+ <XCoordinate value="510"/>
+ <YCoordinate value="217"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="268">
+ <EntryAnchor Format="1">
+ <XCoordinate value="369"/>
+ <YCoordinate value="237"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="269">
+ <EntryAnchor Format="1">
+ <XCoordinate value="193"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="270">
+ <EntryAnchor Format="1">
+ <XCoordinate value="202"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="271">
+ <EntryAnchor Format="1">
+ <XCoordinate value="338"/>
+ <YCoordinate value="18"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="272">
+ <EntryAnchor Format="1">
+ <XCoordinate value="211"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="273">
+ <EntryAnchor Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="22"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="274">
+ <EntryAnchor Format="1">
+ <XCoordinate value="374"/>
+ <YCoordinate value="119"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="-22"/>
+ <YCoordinate value="-49"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="275">
+ <EntryAnchor Format="1">
+ <XCoordinate value="536"/>
+ <YCoordinate value="167"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="276">
+ <EntryAnchor Format="1">
+ <XCoordinate value="329"/>
+ <YCoordinate value="-71"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="3"/>
+ <YCoordinate value="9"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="277">
+ <EntryAnchor Format="1">
+ <XCoordinate value="302"/>
+ <YCoordinate value="147"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="-171"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="278">
+ <EntryAnchor Format="1">
+ <XCoordinate value="268"/>
+ <YCoordinate value="40"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="279">
+ <EntryAnchor Format="1">
+ <XCoordinate value="536"/>
+ <YCoordinate value="48"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="280">
+ <EntryAnchor Format="1">
+ <XCoordinate value="290"/>
+ <YCoordinate value="110"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="20"/>
+ <YCoordinate value="24"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="281">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="282">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="283">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="284">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="285">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="286">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="287">
+ <ExitAnchor Format="1">
+ <XCoordinate value="-10"/>
+ <YCoordinate value="-24"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="288">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="289">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="290">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="291">
+ <ExitAnchor Format="1">
+ <XCoordinate value="10"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="292">
+ <EntryAnchor Format="1">
+ <XCoordinate value="233"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="293">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="294">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="295">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="296">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="297">
+ <ExitAnchor Format="1">
+ <XCoordinate value="-5"/>
+ <YCoordinate value="-29"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="298">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="299">
+ <ExitAnchor Format="1">
+ <XCoordinate value="-7"/>
+ <YCoordinate value="-24"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="300">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="301">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="302">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="303">
+ <ExitAnchor Format="1">
+ <XCoordinate value="10"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="304">
+ <EntryAnchor Format="1">
+ <XCoordinate value="444"/>
+ <YCoordinate value="316"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="305">
+ <EntryAnchor Format="1">
+ <XCoordinate value="277"/>
+ <YCoordinate value="347"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="306">
+ <EntryAnchor Format="1">
+ <XCoordinate value="479"/>
+ <YCoordinate value="369"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="307">
+ <EntryAnchor Format="1">
+ <XCoordinate value="334"/>
+ <YCoordinate value="334"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="308">
+ <EntryAnchor Format="1">
+ <XCoordinate value="527"/>
+ <YCoordinate value="378"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="309">
+ <EntryAnchor Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="453"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="310">
+ <EntryAnchor Format="1">
+ <XCoordinate value="598"/>
+ <YCoordinate value="523"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="311">
+ <EntryAnchor Format="1">
+ <XCoordinate value="426"/>
+ <YCoordinate value="492"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="-5"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="312">
+ <EntryAnchor Format="1">
+ <XCoordinate value="371"/>
+ <YCoordinate value="430"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="313">
+ <EntryAnchor Format="1">
+ <XCoordinate value="360"/>
+ <YCoordinate value="374"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="314">
+ <EntryAnchor Format="1">
+ <XCoordinate value="536"/>
+ <YCoordinate value="360"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="10"/>
+ <YCoordinate value="88"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="315">
+ <EntryAnchor Format="1">
+ <XCoordinate value="396"/>
+ <YCoordinate value="466"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="4"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="316">
+ <EntryAnchor Format="1">
+ <XCoordinate value="426"/>
+ <YCoordinate value="259"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="317">
+ <EntryAnchor Format="1">
+ <XCoordinate value="387"/>
+ <YCoordinate value="365"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="318">
+ <EntryAnchor Format="1">
+ <XCoordinate value="780"/>
+ <YCoordinate value="374"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="319">
+ <EntryAnchor Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="391"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="320">
+ <EntryAnchor Format="1">
+ <XCoordinate value="798"/>
+ <YCoordinate value="395"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="321">
+ <EntryAnchor Format="1">
+ <XCoordinate value="19"/>
+ <YCoordinate value="156"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="322">
+ <EntryAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ </CursivePos>
+ </Lookup>
+ <!-- mark2base: &lt;features&gt;:1012:9 in mark (arab/dflt) -->
+ <Lookup index="1">
+ <LookupType value="4"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <MarkBasePos index="0" Format="1">
+ <MarkCoverage>
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="threedotsdownbelow-ar"/>
+ </MarkCoverage>
+ <BaseCoverage>
+ <Glyph value="hah-ar"/>
+ <Glyph value="hah-ar.fina"/>
+ </BaseCoverage>
+ <!-- ClassCount=1 -->
+ <MarkArray>
+ <!-- MarkCount=3 -->
+ <MarkRecord index="0">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="49"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="1">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="49"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="2">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="49"/>
+ </MarkAnchor>
+ </MarkRecord>
+ </MarkArray>
+ <BaseArray>
+ <!-- BaseCount=2 -->
+ <BaseRecord index="0">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="382"/>
+ <YCoordinate value="73"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="1">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="382"/>
+ <YCoordinate value="73"/>
+ </BaseAnchor>
+ </BaseRecord>
+ </BaseArray>
+ </MarkBasePos>
+ </Lookup>
+ <!-- mark2base_1: &lt;features&gt;:1019:9 in mark (arab/dflt) -->
+ <Lookup index="2">
+ <LookupType value="4"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <MarkBasePos index="0" Format="1">
+ <MarkCoverage>
+ <Glyph value="tahabove-ar"/>
+ <Glyph value="dotabove-ar"/>
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="twodotshorizontalabove-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="threedotsdownbelow-ar"/>
+ <Glyph value="threedotsupabove-ar"/>
+ <Glyph value="wasla-ar"/>
+ <Glyph value="gafsarkashabove-ar"/>
+ <Glyph value="alefabove-ar"/>
+ <Glyph value="alefbelow-ar"/>
+ <Glyph value="hamzaabove-ar"/>
+ <Glyph value="hamzabelow-ar"/>
+ <Glyph value="fathatan-ar"/>
+ <Glyph value="dammatan-ar"/>
+ <Glyph value="kasratan-ar"/>
+ <Glyph value="fatha-ar"/>
+ <Glyph value="damma-ar"/>
+ <Glyph value="kasra-ar"/>
+ <Glyph value="shadda-ar"/>
+ <Glyph value="sukun-ar"/>
+ <Glyph value="sukun-ar.alt"/>
+ <Glyph value="madda-ar"/>
+ <Glyph value="noonghunnaabove-ar"/>
+ <Glyph value="dammainverted-ar"/>
+ <Glyph value="dammainverted-ar.urd"/>
+ <Glyph value="vabove-ar"/>
+ <Glyph value="vbelow-ar"/>
+ <Glyph value="opendammatan-ar"/>
+ </MarkCoverage>
+ <BaseCoverage>
+ <Glyph value="hamza-ar"/>
+ <Glyph value="alef-ar"/>
+ <Glyph value="alef-ar.fina"/>
+ <Glyph value="alef-ar.fina.lam"/>
+ <Glyph value="behDotless-ar"/>
+ <Glyph value="behDotless-ar.jalt"/>
+ <Glyph value="behDotless-ar.fina"/>
+ <Glyph value="behDotless-ar.fina.jalt"/>
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.medi.ain"/>
+ <Glyph value="behDotless-ar.medi.dal"/>
+ <Glyph value="behDotless-ar.medi.feh"/>
+ <Glyph value="behDotless-ar.medi.hah"/>
+ <Glyph value="behDotless-ar.medi.heh"/>
+ <Glyph value="behDotless-ar.medi.high"/>
+ <Glyph value="behDotless-ar.medi.high2"/>
+ <Glyph value="behDotless-ar.medi.meem"/>
+ <Glyph value="behDotless-ar.medi.noon"/>
+ <Glyph value="behDotless-ar.medi.ragaa"/>
+ <Glyph value="behDotless-ar.medi.reh"/>
+ <Glyph value="behDotless-ar.medi.sad"/>
+ <Glyph value="behDotless-ar.medi.yeh"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="behDotless-ar.init.ain"/>
+ <Glyph value="behDotless-ar.init.ascend"/>
+ <Glyph value="behDotless-ar.init.dal"/>
+ <Glyph value="behDotless-ar.init.feh"/>
+ <Glyph value="behDotless-ar.init.hah"/>
+ <Glyph value="behDotless-ar.init.heh"/>
+ <Glyph value="behDotless-ar.init.meem"/>
+ <Glyph value="behDotless-ar.init.ragaa"/>
+ <Glyph value="behDotless-ar.init.reh"/>
+ <Glyph value="behDotless-ar.init.sad"/>
+ <Glyph value="behDotless-ar.init.yeh"/>
+ <Glyph value="hah-ar"/>
+ <Glyph value="hah-ar.fina"/>
+ <Glyph value="hah-ar.medi"/>
+ <Glyph value="hah-ar.medi.ain"/>
+ <Glyph value="hah-ar.medi.dal"/>
+ <Glyph value="hah-ar.medi.feh"/>
+ <Glyph value="hah-ar.medi.hah"/>
+ <Glyph value="hah-ar.medi.heh"/>
+ <Glyph value="hah-ar.medi.heh.ragaa"/>
+ <Glyph value="hah-ar.medi.meem"/>
+ <Glyph value="hah-ar.medi.ragaa"/>
+ <Glyph value="hah-ar.medi.reh"/>
+ <Glyph value="hah-ar.medi.sad"/>
+ <Glyph value="hah-ar.medi.yeh"/>
+ <Glyph value="hah-ar.init"/>
+ <Glyph value="hah-ar.init.ain"/>
+ <Glyph value="hah-ar.init.dal"/>
+ <Glyph value="hah-ar.init.feh"/>
+ <Glyph value="hah-ar.init.hah"/>
+ <Glyph value="hah-ar.init.heh"/>
+ <Glyph value="hah-ar.init.heh.ragaa"/>
+ <Glyph value="hah-ar.init.meem"/>
+ <Glyph value="hah-ar.init.ragaa"/>
+ <Glyph value="hah-ar.init.reh"/>
+ <Glyph value="hah-ar.init.sad"/>
+ <Glyph value="hah-ar.init.yeh"/>
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="seen-ar"/>
+ <Glyph value="seen-ar.jalt"/>
+ <Glyph value="seen-ar.fina"/>
+ <Glyph value="seen-ar.fina.jalt"/>
+ <Glyph value="seen-ar.medi"/>
+ <Glyph value="seen-ar.medi.ain"/>
+ <Glyph value="seen-ar.medi.dal"/>
+ <Glyph value="seen-ar.medi.feh"/>
+ <Glyph value="seen-ar.medi.hah"/>
+ <Glyph value="seen-ar.medi.heh"/>
+ <Glyph value="seen-ar.medi.meem"/>
+ <Glyph value="seen-ar.medi.ragaa"/>
+ <Glyph value="seen-ar.medi.reh"/>
+ <Glyph value="seen-ar.medi.sad"/>
+ <Glyph value="seen-ar.medi.yeh"/>
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="seen-ar.init.ain"/>
+ <Glyph value="seen-ar.init.dal"/>
+ <Glyph value="seen-ar.init.feh"/>
+ <Glyph value="seen-ar.init.hah"/>
+ <Glyph value="seen-ar.init.heh"/>
+ <Glyph value="seen-ar.init.meem"/>
+ <Glyph value="seen-ar.init.ragaa"/>
+ <Glyph value="seen-ar.init.reh"/>
+ <Glyph value="seen-ar.init.sad"/>
+ <Glyph value="seen-ar.init.yeh"/>
+ <Glyph value="sheen-ar"/>
+ <Glyph value="sad-ar"/>
+ <Glyph value="sad-ar.jalt"/>
+ <Glyph value="sad-ar.fina"/>
+ <Glyph value="sad-ar.fina.jalt"/>
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="sad-ar.medi.ain"/>
+ <Glyph value="sad-ar.medi.dal"/>
+ <Glyph value="sad-ar.medi.feh"/>
+ <Glyph value="sad-ar.medi.hah"/>
+ <Glyph value="sad-ar.medi.heh"/>
+ <Glyph value="sad-ar.medi.meem"/>
+ <Glyph value="sad-ar.medi.postsad"/>
+ <Glyph value="sad-ar.medi.qantara"/>
+ <Glyph value="sad-ar.medi.ragaa"/>
+ <Glyph value="sad-ar.medi.reh"/>
+ <Glyph value="sad-ar.medi.sad"/>
+ <Glyph value="sad-ar.medi.yeh"/>
+ <Glyph value="sad-ar.init"/>
+ <Glyph value="sad-ar.init.ain"/>
+ <Glyph value="sad-ar.init.dal"/>
+ <Glyph value="sad-ar.init.feh"/>
+ <Glyph value="sad-ar.init.hah"/>
+ <Glyph value="sad-ar.init.heh"/>
+ <Glyph value="sad-ar.init.meem"/>
+ <Glyph value="sad-ar.init.qantara"/>
+ <Glyph value="sad-ar.init.ragaa"/>
+ <Glyph value="sad-ar.init.reh"/>
+ <Glyph value="sad-ar.init.sad"/>
+ <Glyph value="sad-ar.init.yeh"/>
+ <Glyph value="tah-ar"/>
+ <Glyph value="tah-ar.fina"/>
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.medi.ain"/>
+ <Glyph value="tah-ar.medi.dal"/>
+ <Glyph value="tah-ar.medi.feh"/>
+ <Glyph value="tah-ar.medi.hah"/>
+ <Glyph value="tah-ar.medi.heh"/>
+ <Glyph value="tah-ar.medi.kaf"/>
+ <Glyph value="tah-ar.medi.meem"/>
+ <Glyph value="tah-ar.medi.postsad"/>
+ <Glyph value="tah-ar.medi.qantara"/>
+ <Glyph value="tah-ar.medi.ragaa"/>
+ <Glyph value="tah-ar.medi.reh"/>
+ <Glyph value="tah-ar.medi.sad"/>
+ <Glyph value="tah-ar.medi.yeh"/>
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="tah-ar.init.ain"/>
+ <Glyph value="tah-ar.init.dal"/>
+ <Glyph value="tah-ar.init.feh"/>
+ <Glyph value="tah-ar.init.hah"/>
+ <Glyph value="tah-ar.init.heh"/>
+ <Glyph value="tah-ar.init.kaf"/>
+ <Glyph value="tah-ar.init.meem"/>
+ <Glyph value="tah-ar.init.qantara"/>
+ <Glyph value="tah-ar.init.ragaa"/>
+ <Glyph value="tah-ar.init.reh"/>
+ <Glyph value="tah-ar.init.sad"/>
+ <Glyph value="tah-ar.init.yeh"/>
+ <Glyph value="ain-ar"/>
+ <Glyph value="ain-ar.fina"/>
+ <Glyph value="ain-ar.medi"/>
+ <Glyph value="ain-ar.medi.ain"/>
+ <Glyph value="ain-ar.medi.dal"/>
+ <Glyph value="ain-ar.medi.feh"/>
+ <Glyph value="ain-ar.medi.hah"/>
+ <Glyph value="ain-ar.medi.heh"/>
+ <Glyph value="ain-ar.medi.meem"/>
+ <Glyph value="ain-ar.medi.ragaa"/>
+ <Glyph value="ain-ar.medi.reh"/>
+ <Glyph value="ain-ar.medi.sad"/>
+ <Glyph value="ain-ar.medi.yeh"/>
+ <Glyph value="ain-ar.init"/>
+ <Glyph value="ain-ar.init.ain"/>
+ <Glyph value="ain-ar.init.dal"/>
+ <Glyph value="ain-ar.init.feh"/>
+ <Glyph value="ain-ar.init.hah"/>
+ <Glyph value="ain-ar.init.heh"/>
+ <Glyph value="ain-ar.init.meem"/>
+ <Glyph value="ain-ar.init.ragaa"/>
+ <Glyph value="ain-ar.init.reh"/>
+ <Glyph value="ain-ar.init.sad"/>
+ <Glyph value="ain-ar.init.yeh"/>
+ <Glyph value="fehDotless-ar"/>
+ <Glyph value="fehDotless-ar.jalt"/>
+ <Glyph value="fehDotless-ar.fina"/>
+ <Glyph value="fehDotless-ar.fina.jalt"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.medi.ain"/>
+ <Glyph value="fehDotless-ar.medi.dal"/>
+ <Glyph value="fehDotless-ar.medi.feh"/>
+ <Glyph value="fehDotless-ar.medi.hah"/>
+ <Glyph value="fehDotless-ar.medi.heh"/>
+ <Glyph value="fehDotless-ar.medi.meem"/>
+ <Glyph value="fehDotless-ar.medi.ragaa"/>
+ <Glyph value="fehDotless-ar.medi.reh"/>
+ <Glyph value="fehDotless-ar.medi.sad"/>
+ <Glyph value="fehDotless-ar.medi.yeh"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="fehDotless-ar.init.ain"/>
+ <Glyph value="fehDotless-ar.init.dal"/>
+ <Glyph value="fehDotless-ar.init.feh"/>
+ <Glyph value="fehDotless-ar.init.hah"/>
+ <Glyph value="fehDotless-ar.init.heh"/>
+ <Glyph value="fehDotless-ar.init.meem"/>
+ <Glyph value="fehDotless-ar.init.ragaa"/>
+ <Glyph value="fehDotless-ar.init.reh"/>
+ <Glyph value="fehDotless-ar.init.sad"/>
+ <Glyph value="fehDotless-ar.init.yeh"/>
+ <Glyph value="qafDotless-ar"/>
+ <Glyph value="qafDotless-ar.jalt"/>
+ <Glyph value="qafDotless-ar.fina"/>
+ <Glyph value="qafDotless-ar.fina.jalt"/>
+ <Glyph value="qaf-ar"/>
+ <Glyph value="qaf-ar.fina"/>
+ <Glyph value="kaf-ar"/>
+ <Glyph value="kaf-ar.jalt"/>
+ <Glyph value="kaf-ar.fina"/>
+ <Glyph value="kaf-ar.fina.jalt"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.medi.ain"/>
+ <Glyph value="kaf-ar.medi.dal"/>
+ <Glyph value="kaf-ar.medi.feh"/>
+ <Glyph value="kaf-ar.medi.hah"/>
+ <Glyph value="kaf-ar.medi.heh"/>
+ <Glyph value="kaf-ar.medi.meem"/>
+ <Glyph value="kaf-ar.medi.ragaa"/>
+ <Glyph value="kaf-ar.medi.reh"/>
+ <Glyph value="kaf-ar.medi.sad"/>
+ <Glyph value="kaf-ar.medi.yeh"/>
+ <Glyph value="kaf-ar.init"/>
+ <Glyph value="kaf-ar.init.ain"/>
+ <Glyph value="kaf-ar.init.alef"/>
+ <Glyph value="kaf-ar.init.alef.loop"/>
+ <Glyph value="kaf-ar.init.dal"/>
+ <Glyph value="kaf-ar.init.feh"/>
+ <Glyph value="kaf-ar.init.hah"/>
+ <Glyph value="kaf-ar.init.heh"/>
+ <Glyph value="kaf-ar.init.meem"/>
+ <Glyph value="kaf-ar.init.ragaa"/>
+ <Glyph value="kaf-ar.init.reh"/>
+ <Glyph value="kaf-ar.init.sad"/>
+ <Glyph value="kaf-ar.init.yeh"/>
+ <Glyph value="keheh-ar"/>
+ <Glyph value="keheh-ar.jalt"/>
+ <Glyph value="keheh-ar.fina"/>
+ <Glyph value="keheh-ar.fina.jalt"/>
+ <Glyph value="lam-ar"/>
+ <Glyph value="lam-ar.jalt"/>
+ <Glyph value="lam-ar.fina"/>
+ <Glyph value="lam-ar.fina.jalt"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.medi.ain"/>
+ <Glyph value="lam-ar.medi.alef"/>
+ <Glyph value="lam-ar.medi.dal"/>
+ <Glyph value="lam-ar.medi.feh"/>
+ <Glyph value="lam-ar.medi.hah"/>
+ <Glyph value="lam-ar.medi.heh"/>
+ <Glyph value="lam-ar.medi.meem"/>
+ <Glyph value="lam-ar.medi.ragaa"/>
+ <Glyph value="lam-ar.medi.reh"/>
+ <Glyph value="lam-ar.medi.sad"/>
+ <Glyph value="lam-ar.medi.yeh"/>
+ <Glyph value="lam-ar.init"/>
+ <Glyph value="lam-ar.init.ain"/>
+ <Glyph value="lam-ar.init.alef"/>
+ <Glyph value="lam-ar.init.dal"/>
+ <Glyph value="lam-ar.init.feh"/>
+ <Glyph value="lam-ar.init.hah"/>
+ <Glyph value="lam-ar.init.heh"/>
+ <Glyph value="lam-ar.init.meem"/>
+ <Glyph value="lam-ar.init.ragaa"/>
+ <Glyph value="lam-ar.init.reh"/>
+ <Glyph value="lam-ar.init.sad"/>
+ <Glyph value="lam-ar.init.yeh"/>
+ <Glyph value="meem-ar"/>
+ <Glyph value="meem-ar.fina"/>
+ <Glyph value="meem-ar.medi"/>
+ <Glyph value="meem-ar.medi.ain"/>
+ <Glyph value="meem-ar.medi.dal"/>
+ <Glyph value="meem-ar.medi.feh"/>
+ <Glyph value="meem-ar.medi.hah"/>
+ <Glyph value="meem-ar.medi.heh"/>
+ <Glyph value="meem-ar.medi.meem"/>
+ <Glyph value="meem-ar.medi.ragaa"/>
+ <Glyph value="meem-ar.medi.reh"/>
+ <Glyph value="meem-ar.medi.sad"/>
+ <Glyph value="meem-ar.medi.yeh"/>
+ <Glyph value="meem-ar.init"/>
+ <Glyph value="meem-ar.init.ain"/>
+ <Glyph value="meem-ar.init.dal"/>
+ <Glyph value="meem-ar.init.feh"/>
+ <Glyph value="meem-ar.init.hah"/>
+ <Glyph value="meem-ar.init.heh"/>
+ <Glyph value="meem-ar.init.meem"/>
+ <Glyph value="meem-ar.init.ragaa"/>
+ <Glyph value="meem-ar.init.reh"/>
+ <Glyph value="meem-ar.init.sad"/>
+ <Glyph value="meem-ar.init.yeh"/>
+ <Glyph value="noon-ar"/>
+ <Glyph value="noon-ar.tail"/>
+ <Glyph value="noon-ar.fina"/>
+ <Glyph value="noon-ar.fina.tail"/>
+ <Glyph value="noonghunna-ar"/>
+ <Glyph value="noonghunna-ar.jalt"/>
+ <Glyph value="noonghunna-ar.fina"/>
+ <Glyph value="heh-ar"/>
+ <Glyph value="heh-ar.fina"/>
+ <Glyph value="heh-ar.medi"/>
+ <Glyph value="heh-ar.medi.ain"/>
+ <Glyph value="heh-ar.medi.dal"/>
+ <Glyph value="heh-ar.medi.feh"/>
+ <Glyph value="heh-ar.medi.hah"/>
+ <Glyph value="heh-ar.medi.heh"/>
+ <Glyph value="heh-ar.medi.meem"/>
+ <Glyph value="heh-ar.medi.ragaa"/>
+ <Glyph value="heh-ar.medi.reh"/>
+ <Glyph value="heh-ar.medi.sad"/>
+ <Glyph value="heh-ar.medi.yeh"/>
+ <Glyph value="heh-ar.init"/>
+ <Glyph value="heh-ar.init.ain"/>
+ <Glyph value="heh-ar.init.dal"/>
+ <Glyph value="heh-ar.init.feh"/>
+ <Glyph value="heh-ar.init.hah"/>
+ <Glyph value="heh-ar.init.heh"/>
+ <Glyph value="heh-ar.init.meem"/>
+ <Glyph value="heh-ar.init.ragaa"/>
+ <Glyph value="heh-ar.init.reh"/>
+ <Glyph value="heh-ar.init.sad"/>
+ <Glyph value="heh-ar.init.yeh"/>
+ <Glyph value="hehgoal-ar.fina"/>
+ <Glyph value="hehgoal-ar.init"/>
+ <Glyph value="hehgoal-ar.init.ain"/>
+ <Glyph value="hehgoal-ar.init.dal"/>
+ <Glyph value="hehgoal-ar.init.feh"/>
+ <Glyph value="hehgoal-ar.init.hah"/>
+ <Glyph value="hehgoal-ar.init.heh"/>
+ <Glyph value="hehgoal-ar.init.meem"/>
+ <Glyph value="hehgoal-ar.init.ragaa"/>
+ <Glyph value="hehgoal-ar.init.reh"/>
+ <Glyph value="hehgoal-ar.init.sad"/>
+ <Glyph value="hehgoal-ar.init.yeh"/>
+ <Glyph value="hehDoachashmee-ar"/>
+ <Glyph value="hehDoachashmee-ar.fina"/>
+ <Glyph value="hehDoachashmee-ar.medi"/>
+ <Glyph value="hehDoachashmee-ar.medi.ain"/>
+ <Glyph value="hehDoachashmee-ar.medi.dal"/>
+ <Glyph value="hehDoachashmee-ar.medi.feh"/>
+ <Glyph value="hehDoachashmee-ar.medi.hah"/>
+ <Glyph value="hehDoachashmee-ar.medi.heh"/>
+ <Glyph value="hehDoachashmee-ar.medi.meem"/>
+ <Glyph value="hehDoachashmee-ar.medi.ragaa"/>
+ <Glyph value="hehDoachashmee-ar.medi.reh"/>
+ <Glyph value="hehDoachashmee-ar.medi.sad"/>
+ <Glyph value="hehDoachashmee-ar.medi.yeh"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ <Glyph value="alefMaksura-ar"/>
+ <Glyph value="alefMaksura-ar.jalt"/>
+ <Glyph value="alefMaksura-ar.fina"/>
+ <Glyph value="alefMaksura-ar.fina.jalt"/>
+ <Glyph value="alefMaksura-ar.fina.yeh"/>
+ <Glyph value="alefMaksura-ar.fina.yeh.jalt"/>
+ <Glyph value="yehbarree-ar"/>
+ <Glyph value="yehbarree-ar.fina"/>
+ <Glyph value="ae-ar"/>
+ </BaseCoverage>
+ <!-- ClassCount=5 -->
+ <MarkArray>
+ <!-- MarkCount=29 -->
+ <MarkRecord index="0">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="1">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="2">
+ <Class value="1"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="3">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="4">
+ <Class value="1"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="5">
+ <Class value="1"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="49"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="6">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="7">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="8">
+ <Class value="2"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="9">
+ <Class value="3"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="10">
+ <Class value="4"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="98"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="11">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="12">
+ <Class value="1"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="13">
+ <Class value="3"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="14">
+ <Class value="3"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="15">
+ <Class value="4"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="16">
+ <Class value="3"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="17">
+ <Class value="3"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="18">
+ <Class value="4"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="19">
+ <Class value="3"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="20">
+ <Class value="3"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="21">
+ <Class value="3"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="22">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="23">
+ <Class value="3"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="24">
+ <Class value="3"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="25">
+ <Class value="3"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="26">
+ <Class value="3"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="27">
+ <Class value="1"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="28">
+ <Class value="3"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ </MarkArray>
+ <BaseArray>
+ <!-- BaseCount=356 -->
+ <BaseRecord index="0">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="272"/>
+ <YCoordinate value="584"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="119"/>
+ <YCoordinate value="-189"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="294"/>
+ <YCoordinate value="576"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="149"/>
+ <YCoordinate value="-189"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="1">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="121"/>
+ <YCoordinate value="791"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="128"/>
+ <YCoordinate value="-22"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="129"/>
+ <YCoordinate value="835"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="145"/>
+ <YCoordinate value="-31"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="2">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="112"/>
+ <YCoordinate value="800"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="125"/>
+ <YCoordinate value="-185"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="116"/>
+ <YCoordinate value="791"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="208"/>
+ <YCoordinate value="-189"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="3">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="285"/>
+ <YCoordinate value="714"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="317"/>
+ <YCoordinate value="-204"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="290"/>
+ <YCoordinate value="671"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="317"/>
+ <YCoordinate value="-113"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="4">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="397"/>
+ <YCoordinate value="505"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="-136"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="347"/>
+ <YCoordinate value="532"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="330"/>
+ <YCoordinate value="-185"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="5">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="523"/>
+ <YCoordinate value="338"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="488"/>
+ <YCoordinate value="-163"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="505"/>
+ <YCoordinate value="795"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="479"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="6">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="352"/>
+ <YCoordinate value="413"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="-193"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="453"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="255"/>
+ <YCoordinate value="-185"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="7">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="558"/>
+ <YCoordinate value="360"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="453"/>
+ <YCoordinate value="-176"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="536"/>
+ <YCoordinate value="804"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="466"/>
+ <YCoordinate value="-180"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="8">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="215"/>
+ <YCoordinate value="374"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="149"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="250"/>
+ <YCoordinate value="404"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="145"/>
+ <YCoordinate value="-193"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="9">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="400"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="224"/>
+ <YCoordinate value="-136"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="400"/>
+ <YCoordinate value="409"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="321"/>
+ <YCoordinate value="-180"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="10">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="387"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="193"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="281"/>
+ <YCoordinate value="435"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="202"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="11">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="461"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="338"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="453"/>
+ <YCoordinate value="492"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="374"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="12">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="229"/>
+ <YCoordinate value="488"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="461"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="580"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="400"/>
+ <YCoordinate value="18"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="13">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="514"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="413"/>
+ <YCoordinate value="-79"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="417"/>
+ <YCoordinate value="541"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="466"/>
+ <YCoordinate value="-83"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="14">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="132"/>
+ <YCoordinate value="492"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="167"/>
+ <YCoordinate value="-123"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="224"/>
+ <YCoordinate value="628"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="229"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="15">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="244"/>
+ <YCoordinate value="586"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="189"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="250"/>
+ <YCoordinate value="545"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="272"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="16">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="224"/>
+ <YCoordinate value="461"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="347"/>
+ <YCoordinate value="-88"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="246"/>
+ <YCoordinate value="466"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="281"/>
+ <YCoordinate value="-114"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="17">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="158"/>
+ <YCoordinate value="457"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="88"/>
+ <YCoordinate value="-101"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="224"/>
+ <YCoordinate value="497"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="136"/>
+ <YCoordinate value="-176"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="18">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="247"/>
+ <YCoordinate value="494"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="206"/>
+ <YCoordinate value="-255"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="247"/>
+ <YCoordinate value="537"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="206"/>
+ <YCoordinate value="-255"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="19">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="198"/>
+ <YCoordinate value="453"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="198"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="229"/>
+ <YCoordinate value="426"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="20">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="532"/>
+ <YCoordinate value="483"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="-149"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="541"/>
+ <YCoordinate value="457"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="448"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="21">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="470"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="321"/>
+ <YCoordinate value="-110"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="483"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="294"/>
+ <YCoordinate value="-123"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="22">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="218"/>
+ <YCoordinate value="496"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="189"/>
+ <YCoordinate value="-136"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="193"/>
+ <YCoordinate value="527"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="149"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="23">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="360"/>
+ <YCoordinate value="519"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="303"/>
+ <YCoordinate value="-163"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="299"/>
+ <YCoordinate value="527"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="334"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="24">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="211"/>
+ <YCoordinate value="422"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="163"/>
+ <YCoordinate value="-136"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="198"/>
+ <YCoordinate value="422"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="145"/>
+ <YCoordinate value="-145"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="25">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="213"/>
+ <YCoordinate value="409"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="171"/>
+ <YCoordinate value="-154"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="409"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="220"/>
+ <YCoordinate value="-145"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="26">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="448"/>
+ <YCoordinate value="541"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="-141"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="510"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="413"/>
+ <YCoordinate value="-114"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="27">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="412"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="378"/>
+ <YCoordinate value="-29"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="472"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="-66"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="28">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="417"/>
+ <YCoordinate value="514"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="387"/>
+ <YCoordinate value="-62"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="470"/>
+ <YCoordinate value="501"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="409"/>
+ <YCoordinate value="-79"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="29">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="545"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="-9"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="272"/>
+ <YCoordinate value="479"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="264"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="30">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="199"/>
+ <YCoordinate value="623"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="419"/>
+ <YCoordinate value="145"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="639"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="274"/>
+ <YCoordinate value="-102"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="31">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="229"/>
+ <YCoordinate value="422"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="202"/>
+ <YCoordinate value="-127"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="250"/>
+ <YCoordinate value="400"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="211"/>
+ <YCoordinate value="-123"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="32">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="567"/>
+ <YCoordinate value="602"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="426"/>
+ <YCoordinate value="-105"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="497"/>
+ <YCoordinate value="637"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="483"/>
+ <YCoordinate value="-92"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="33">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="92"/>
+ <YCoordinate value="470"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="325"/>
+ <YCoordinate value="88"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="101"/>
+ <YCoordinate value="497"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="145"/>
+ <YCoordinate value="-457"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="34">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="739"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="325"/>
+ <YCoordinate value="738"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="294"/>
+ <YCoordinate value="-545"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="35">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="158"/>
+ <YCoordinate value="760"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="141"/>
+ <YCoordinate value="773"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="294"/>
+ <YCoordinate value="-545"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="36">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="180"/>
+ <YCoordinate value="620"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="-88"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="176"/>
+ <YCoordinate value="580"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="-145"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="37">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="628"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="-105"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="237"/>
+ <YCoordinate value="497"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="413"/>
+ <YCoordinate value="-127"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="38">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="229"/>
+ <YCoordinate value="602"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="-123"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="264"/>
+ <YCoordinate value="615"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="334"/>
+ <YCoordinate value="-119"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="39">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="650"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="510"/>
+ <YCoordinate value="-83"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="396"/>
+ <YCoordinate value="633"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="457"/>
+ <YCoordinate value="-110"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="40">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="189"/>
+ <YCoordinate value="716"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="444"/>
+ <YCoordinate value="101"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="264"/>
+ <YCoordinate value="743"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="79"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="41">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="439"/>
+ <YCoordinate value="738"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="461"/>
+ <YCoordinate value="-13"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="387"/>
+ <YCoordinate value="694"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="475"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="42">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="350"/>
+ <YCoordinate value="653"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="372"/>
+ <YCoordinate value="-99"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="297"/>
+ <YCoordinate value="609"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="385"/>
+ <YCoordinate value="-121"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="43">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="202"/>
+ <YCoordinate value="738"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="378"/>
+ <YCoordinate value="-4"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="229"/>
+ <YCoordinate value="725"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="4"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="44">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="167"/>
+ <YCoordinate value="693"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="462"/>
+ <YCoordinate value="167"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="344"/>
+ <YCoordinate value="682"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="301"/>
+ <YCoordinate value="-86"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="45">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="163"/>
+ <YCoordinate value="664"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="325"/>
+ <YCoordinate value="-48"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="189"/>
+ <YCoordinate value="589"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="-79"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="46">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="492"/>
+ <YCoordinate value="694"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="483"/>
+ <YCoordinate value="-149"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="606"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="483"/>
+ <YCoordinate value="-114"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="47">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="250"/>
+ <YCoordinate value="729"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="431"/>
+ <YCoordinate value="48"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="272"/>
+ <YCoordinate value="712"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="382"/>
+ <YCoordinate value="9"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="48">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="334"/>
+ <YCoordinate value="545"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="264"/>
+ <YCoordinate value="-141"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="347"/>
+ <YCoordinate value="554"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="303"/>
+ <YCoordinate value="-185"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="49">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="562"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="338"/>
+ <YCoordinate value="-149"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="400"/>
+ <YCoordinate value="562"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="-132"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="50">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="426"/>
+ <YCoordinate value="567"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="325"/>
+ <YCoordinate value="-154"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="549"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="-123"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="51">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="562"/>
+ <YCoordinate value="606"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="505"/>
+ <YCoordinate value="-154"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="549"/>
+ <YCoordinate value="576"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="527"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="52">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="330"/>
+ <YCoordinate value="751"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="453"/>
+ <YCoordinate value="119"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="347"/>
+ <YCoordinate value="734"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="396"/>
+ <YCoordinate value="62"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="53">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="431"/>
+ <YCoordinate value="756"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="483"/>
+ <YCoordinate value="35"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="453"/>
+ <YCoordinate value="708"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="470"/>
+ <YCoordinate value="-22"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="54">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="349"/>
+ <YCoordinate value="635"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="401"/>
+ <YCoordinate value="-85"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="371"/>
+ <YCoordinate value="587"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="388"/>
+ <YCoordinate value="-143"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="55">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="734"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="426"/>
+ <YCoordinate value="9"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="703"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="387"/>
+ <YCoordinate value="-4"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="56">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="333"/>
+ <YCoordinate value="671"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="510"/>
+ <YCoordinate value="193"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="338"/>
+ <YCoordinate value="666"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="333"/>
+ <YCoordinate value="-38"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="57">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="338"/>
+ <YCoordinate value="655"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="-57"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="374"/>
+ <YCoordinate value="637"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="347"/>
+ <YCoordinate value="-62"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="58">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="580"/>
+ <YCoordinate value="567"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="475"/>
+ <YCoordinate value="-163"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="598"/>
+ <YCoordinate value="571"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="448"/>
+ <YCoordinate value="-149"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="59">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="743"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="343"/>
+ <YCoordinate value="22"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="334"/>
+ <YCoordinate value="738"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="92"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="60">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="233"/>
+ <YCoordinate value="562"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="198"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="233"/>
+ <YCoordinate value="571"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="180"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="61">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="347"/>
+ <YCoordinate value="417"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="211"/>
+ <YCoordinate value="-207"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="457"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="207"/>
+ <YCoordinate value="-176"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="62">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="360"/>
+ <YCoordinate value="457"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="233"/>
+ <YCoordinate value="-224"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="277"/>
+ <YCoordinate value="431"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="-193"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="63">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="334"/>
+ <YCoordinate value="439"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="211"/>
+ <YCoordinate value="-220"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="369"/>
+ <YCoordinate value="466"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="224"/>
+ <YCoordinate value="-176"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="64">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="633"/>
+ <YCoordinate value="703"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="541"/>
+ <YCoordinate value="-4"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="655"/>
+ <YCoordinate value="725"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="602"/>
+ <YCoordinate value="26"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="65">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="1239"/>
+ <YCoordinate value="703"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="1213"/>
+ <YCoordinate value="782"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="519"/>
+ <YCoordinate value="-163"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="66">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="545"/>
+ <YCoordinate value="681"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="510"/>
+ <YCoordinate value="13"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="549"/>
+ <YCoordinate value="690"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="554"/>
+ <YCoordinate value="92"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="67">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="1081"/>
+ <YCoordinate value="690"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="1020"/>
+ <YCoordinate value="690"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="523"/>
+ <YCoordinate value="-154"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="68">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="338"/>
+ <YCoordinate value="431"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="272"/>
+ <YCoordinate value="-127"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="352"/>
+ <YCoordinate value="461"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="-149"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="69">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="426"/>
+ <YCoordinate value="510"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="422"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="431"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="70">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="457"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="338"/>
+ <YCoordinate value="435"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="338"/>
+ <YCoordinate value="-154"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="71">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="557"/>
+ <YCoordinate value="468"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="545"/>
+ <YCoordinate value="488"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="519"/>
+ <YCoordinate value="-149"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="72">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="444"/>
+ <YCoordinate value="514"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="448"/>
+ <YCoordinate value="624"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="413"/>
+ <YCoordinate value="26"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="73">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="650"/>
+ <YCoordinate value="584"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="611"/>
+ <YCoordinate value="580"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="505"/>
+ <YCoordinate value="-57"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="74">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="444"/>
+ <YCoordinate value="598"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="444"/>
+ <YCoordinate value="545"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="448"/>
+ <YCoordinate value="-22"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="75">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="392"/>
+ <YCoordinate value="521"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="414"/>
+ <YCoordinate value="537"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="333"/>
+ <YCoordinate value="-97"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="76">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="378"/>
+ <YCoordinate value="457"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="338"/>
+ <YCoordinate value="444"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="325"/>
+ <YCoordinate value="-141"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="77">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="633"/>
+ <YCoordinate value="510"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="602"/>
+ <YCoordinate value="510"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="510"/>
+ <YCoordinate value="-127"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="78">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="527"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="400"/>
+ <YCoordinate value="483"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="-53"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="79">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="409"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="290"/>
+ <YCoordinate value="-180"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="352"/>
+ <YCoordinate value="461"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="281"/>
+ <YCoordinate value="-141"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="80">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="448"/>
+ <YCoordinate value="492"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="444"/>
+ <YCoordinate value="492"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="-141"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="81">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="347"/>
+ <YCoordinate value="448"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="391"/>
+ <YCoordinate value="435"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="321"/>
+ <YCoordinate value="-136"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="82">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="545"/>
+ <YCoordinate value="554"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="497"/>
+ <YCoordinate value="475"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="-163"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="83">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="470"/>
+ <YCoordinate value="628"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="439"/>
+ <YCoordinate value="576"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="-44"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="84">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="606"/>
+ <YCoordinate value="650"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="606"/>
+ <YCoordinate value="589"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="545"/>
+ <YCoordinate value="-26"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="85">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="453"/>
+ <YCoordinate value="611"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="461"/>
+ <YCoordinate value="545"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="396"/>
+ <YCoordinate value="-18"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="86">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="387"/>
+ <YCoordinate value="537"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="387"/>
+ <YCoordinate value="484"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="306"/>
+ <YCoordinate value="-70"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="87">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="475"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="325"/>
+ <YCoordinate value="-79"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="382"/>
+ <YCoordinate value="448"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="-101"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="88">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="602"/>
+ <YCoordinate value="483"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="606"/>
+ <YCoordinate value="466"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="461"/>
+ <YCoordinate value="-127"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="89">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="413"/>
+ <YCoordinate value="523"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="475"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="-57"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="90">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="655"/>
+ <YCoordinate value="725"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="602"/>
+ <YCoordinate value="26"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="91">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="610"/>
+ <YCoordinate value="781"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="558"/>
+ <YCoordinate value="92"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="633"/>
+ <YCoordinate value="791"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="589"/>
+ <YCoordinate value="97"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="92">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="1138"/>
+ <YCoordinate value="760"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="998"/>
+ <YCoordinate value="743"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="576"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="93">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="685"/>
+ <YCoordinate value="781"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="633"/>
+ <YCoordinate value="62"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="668"/>
+ <YCoordinate value="782"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="633"/>
+ <YCoordinate value="92"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="94">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="1173"/>
+ <YCoordinate value="712"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="1072"/>
+ <YCoordinate value="747"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="576"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="95">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="545"/>
+ <YCoordinate value="567"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="343"/>
+ <YCoordinate value="-202"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="505"/>
+ <YCoordinate value="523"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="-127"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="96">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="606"/>
+ <YCoordinate value="532"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="505"/>
+ <YCoordinate value="514"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="501"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="97">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="510"/>
+ <YCoordinate value="541"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="501"/>
+ <YCoordinate value="488"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="98">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="584"/>
+ <YCoordinate value="549"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="584"/>
+ <YCoordinate value="532"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="532"/>
+ <YCoordinate value="-136"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="99">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="558"/>
+ <YCoordinate value="584"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="527"/>
+ <YCoordinate value="664"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="479"/>
+ <YCoordinate value="31"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="100">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="743"/>
+ <YCoordinate value="655"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="751"/>
+ <YCoordinate value="681"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="527"/>
+ <YCoordinate value="-44"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="101">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="545"/>
+ <YCoordinate value="611"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="519"/>
+ <YCoordinate value="593"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="466"/>
+ <YCoordinate value="-70"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="102">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="545"/>
+ <YCoordinate value="567"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="343"/>
+ <YCoordinate value="-202"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="505"/>
+ <YCoordinate value="523"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="-127"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="103">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="672"/>
+ <YCoordinate value="580"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="677"/>
+ <YCoordinate value="536"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="523"/>
+ <YCoordinate value="-123"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="104">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="564"/>
+ <YCoordinate value="645"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="548"/>
+ <YCoordinate value="650"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="446"/>
+ <YCoordinate value="-81"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="105">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="488"/>
+ <YCoordinate value="571"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="426"/>
+ <YCoordinate value="519"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="382"/>
+ <YCoordinate value="-119"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="106">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="672"/>
+ <YCoordinate value="580"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="677"/>
+ <YCoordinate value="536"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="523"/>
+ <YCoordinate value="-123"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="107">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="501"/>
+ <YCoordinate value="541"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="497"/>
+ <YCoordinate value="571"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="431"/>
+ <YCoordinate value="-97"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="108">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="505"/>
+ <YCoordinate value="558"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="334"/>
+ <YCoordinate value="-193"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="510"/>
+ <YCoordinate value="571"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="387"/>
+ <YCoordinate value="-136"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="109">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="598"/>
+ <YCoordinate value="567"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="541"/>
+ <YCoordinate value="562"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="479"/>
+ <YCoordinate value="-154"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="110">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="532"/>
+ <YCoordinate value="536"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="483"/>
+ <YCoordinate value="523"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="431"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="111">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="606"/>
+ <YCoordinate value="549"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="571"/>
+ <YCoordinate value="554"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="523"/>
+ <YCoordinate value="-163"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="112">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="593"/>
+ <YCoordinate value="646"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="606"/>
+ <YCoordinate value="703"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="488"/>
+ <YCoordinate value="-4"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="113">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="747"/>
+ <YCoordinate value="681"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="620"/>
+ <YCoordinate value="655"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="615"/>
+ <YCoordinate value="-18"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="114">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="580"/>
+ <YCoordinate value="628"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="532"/>
+ <YCoordinate value="628"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="479"/>
+ <YCoordinate value="-31"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="115">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="677"/>
+ <YCoordinate value="558"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="690"/>
+ <YCoordinate value="549"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="523"/>
+ <YCoordinate value="-149"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="116">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="542"/>
+ <YCoordinate value="645"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="645"/>
+ <YCoordinate value="655"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="414"/>
+ <YCoordinate value="-64"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="117">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="457"/>
+ <YCoordinate value="545"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="343"/>
+ <YCoordinate value="-101"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="444"/>
+ <YCoordinate value="536"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="-132"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="118">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="677"/>
+ <YCoordinate value="558"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="690"/>
+ <YCoordinate value="549"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="523"/>
+ <YCoordinate value="-149"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="119">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="532"/>
+ <YCoordinate value="549"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="536"/>
+ <YCoordinate value="549"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="-88"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="120">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="510"/>
+ <YCoordinate value="475"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="-207"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="677"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="325"/>
+ <YCoordinate value="-145"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="121">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="497"/>
+ <YCoordinate value="479"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="-145"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="708"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="-149"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="122">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="492"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="281"/>
+ <YCoordinate value="-101"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="259"/>
+ <YCoordinate value="721"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="198"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="123">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="545"/>
+ <YCoordinate value="523"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="738"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="453"/>
+ <YCoordinate value="-132"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="124">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="461"/>
+ <YCoordinate value="505"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="290"/>
+ <YCoordinate value="751"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="387"/>
+ <YCoordinate value="-101"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="125">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="593"/>
+ <YCoordinate value="541"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="804"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="501"/>
+ <YCoordinate value="-123"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="126">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="510"/>
+ <YCoordinate value="686"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="352"/>
+ <YCoordinate value="927"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="448"/>
+ <YCoordinate value="44"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="127">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="593"/>
+ <YCoordinate value="650"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="431"/>
+ <YCoordinate value="857"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="483"/>
+ <YCoordinate value="-22"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="128">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="457"/>
+ <YCoordinate value="483"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="255"/>
+ <YCoordinate value="-70"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="321"/>
+ <YCoordinate value="708"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="129">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="536"/>
+ <YCoordinate value="659"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="360"/>
+ <YCoordinate value="831"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="470"/>
+ <YCoordinate value="-9"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="130">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="492"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="281"/>
+ <YCoordinate value="-101"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="259"/>
+ <YCoordinate value="721"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="198"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="131">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="708"/>
+ <YCoordinate value="532"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="558"/>
+ <YCoordinate value="773"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="584"/>
+ <YCoordinate value="-101"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="132">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="414"/>
+ <YCoordinate value="585"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="258"/>
+ <YCoordinate value="833"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="306"/>
+ <YCoordinate value="-102"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="133">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="444"/>
+ <YCoordinate value="562"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="268"/>
+ <YCoordinate value="787"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="338"/>
+ <YCoordinate value="-75"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="134">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="708"/>
+ <YCoordinate value="532"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="558"/>
+ <YCoordinate value="773"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="584"/>
+ <YCoordinate value="-101"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="135">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="584"/>
+ <YCoordinate value="606"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="431"/>
+ <YCoordinate value="853"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="527"/>
+ <YCoordinate value="-13"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="136">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="501"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="229"/>
+ <YCoordinate value="-141"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="250"/>
+ <YCoordinate value="721"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="198"/>
+ <YCoordinate value="-149"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="137">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="532"/>
+ <YCoordinate value="523"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="369"/>
+ <YCoordinate value="769"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="-132"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="138">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="444"/>
+ <YCoordinate value="497"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="299"/>
+ <YCoordinate value="729"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="-101"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="139">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="598"/>
+ <YCoordinate value="536"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="431"/>
+ <YCoordinate value="773"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="409"/>
+ <YCoordinate value="-136"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="140">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="492"/>
+ <YCoordinate value="668"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="360"/>
+ <YCoordinate value="901"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="439"/>
+ <YCoordinate value="-4"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="141">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="589"/>
+ <YCoordinate value="637"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="417"/>
+ <YCoordinate value="888"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="532"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="142">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="453"/>
+ <YCoordinate value="470"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="220"/>
+ <YCoordinate value="-88"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="694"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="299"/>
+ <YCoordinate value="-145"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="143">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="413"/>
+ <YCoordinate value="611"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="250"/>
+ <YCoordinate value="844"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="360"/>
+ <YCoordinate value="-4"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="144">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="721"/>
+ <YCoordinate value="545"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="558"/>
+ <YCoordinate value="813"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="549"/>
+ <YCoordinate value="-92"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="145">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="591"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="269"/>
+ <YCoordinate value="827"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="-86"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="146">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="431"/>
+ <YCoordinate value="554"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="352"/>
+ <YCoordinate value="-22"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="264"/>
+ <YCoordinate value="778"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="378"/>
+ <YCoordinate value="-40"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="147">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="721"/>
+ <YCoordinate value="545"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="558"/>
+ <YCoordinate value="813"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="549"/>
+ <YCoordinate value="-92"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="148">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="378"/>
+ <YCoordinate value="558"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="268"/>
+ <YCoordinate value="795"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="417"/>
+ <YCoordinate value="-13"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="149">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="193"/>
+ <YCoordinate value="756"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="299"/>
+ <YCoordinate value="-532"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="224"/>
+ <YCoordinate value="765"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="303"/>
+ <YCoordinate value="-523"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="150">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="338"/>
+ <YCoordinate value="760"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="299"/>
+ <YCoordinate value="-527"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="347"/>
+ <YCoordinate value="729"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="303"/>
+ <YCoordinate value="-532"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="151">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="321"/>
+ <YCoordinate value="541"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="215"/>
+ <YCoordinate value="-105"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="334"/>
+ <YCoordinate value="492"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="-136"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="152">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="457"/>
+ <YCoordinate value="545"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="519"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="-132"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="153">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="545"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="330"/>
+ <YCoordinate value="536"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="299"/>
+ <YCoordinate value="-119"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="154">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="505"/>
+ <YCoordinate value="580"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="510"/>
+ <YCoordinate value="562"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="-110"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="155">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="374"/>
+ <YCoordinate value="650"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="374"/>
+ <YCoordinate value="668"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="382"/>
+ <YCoordinate value="9"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="156">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="554"/>
+ <YCoordinate value="677"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="558"/>
+ <YCoordinate value="637"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="475"/>
+ <YCoordinate value="-13"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="157">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="400"/>
+ <YCoordinate value="677"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="409"/>
+ <YCoordinate value="624"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="413"/>
+ <YCoordinate value="-9"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="158">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="580"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="344"/>
+ <YCoordinate value="612"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="295"/>
+ <YCoordinate value="-91"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="159">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="343"/>
+ <YCoordinate value="562"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="303"/>
+ <YCoordinate value="545"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="290"/>
+ <YCoordinate value="-83"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="160">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="589"/>
+ <YCoordinate value="541"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="554"/>
+ <YCoordinate value="549"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="527"/>
+ <YCoordinate value="-97"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="161">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="369"/>
+ <YCoordinate value="637"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="369"/>
+ <YCoordinate value="633"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="396"/>
+ <YCoordinate value="-13"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="162">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="294"/>
+ <YCoordinate value="620"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="215"/>
+ <YCoordinate value="-123"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="598"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="272"/>
+ <YCoordinate value="-180"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="163">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="479"/>
+ <YCoordinate value="633"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="483"/>
+ <YCoordinate value="628"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="475"/>
+ <YCoordinate value="-119"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="164">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="602"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="321"/>
+ <YCoordinate value="576"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="352"/>
+ <YCoordinate value="-114"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="165">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="492"/>
+ <YCoordinate value="628"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="510"/>
+ <YCoordinate value="646"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="479"/>
+ <YCoordinate value="-141"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="166">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="268"/>
+ <YCoordinate value="747"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="264"/>
+ <YCoordinate value="729"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="338"/>
+ <YCoordinate value="-4"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="167">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="378"/>
+ <YCoordinate value="694"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="396"/>
+ <YCoordinate value="686"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="-44"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="168">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="290"/>
+ <YCoordinate value="716"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="686"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="352"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="169">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="301"/>
+ <YCoordinate value="720"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="344"/>
+ <YCoordinate value="709"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="338"/>
+ <YCoordinate value="-43"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="170">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="655"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="369"/>
+ <YCoordinate value="-9"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="321"/>
+ <YCoordinate value="672"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="-79"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="171">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="554"/>
+ <YCoordinate value="637"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="571"/>
+ <YCoordinate value="633"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="514"/>
+ <YCoordinate value="-105"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="172">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="272"/>
+ <YCoordinate value="659"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="272"/>
+ <YCoordinate value="664"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="360"/>
+ <YCoordinate value="-26"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="173">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="483"/>
+ <YCoordinate value="650"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="334"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="532"/>
+ <YCoordinate value="606"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="290"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="174">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="831"/>
+ <YCoordinate value="664"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="466"/>
+ <YCoordinate value="778"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="488"/>
+ <YCoordinate value="-176"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="175">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="620"/>
+ <YCoordinate value="624"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="290"/>
+ <YCoordinate value="-145"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="642"/>
+ <YCoordinate value="567"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="-154"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="176">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="896"/>
+ <YCoordinate value="611"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="853"/>
+ <YCoordinate value="677"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="439"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="177">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="360"/>
+ <YCoordinate value="589"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="198"/>
+ <YCoordinate value="-127"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="562"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="224"/>
+ <YCoordinate value="-141"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="178">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="483"/>
+ <YCoordinate value="580"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="475"/>
+ <YCoordinate value="571"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="387"/>
+ <YCoordinate value="-127"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="179">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="382"/>
+ <YCoordinate value="576"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="360"/>
+ <YCoordinate value="576"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="299"/>
+ <YCoordinate value="-119"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="180">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="580"/>
+ <YCoordinate value="637"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="589"/>
+ <YCoordinate value="589"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="466"/>
+ <YCoordinate value="-132"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="181">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="431"/>
+ <YCoordinate value="734"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="690"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="347"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="182">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="576"/>
+ <YCoordinate value="664"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="620"/>
+ <YCoordinate value="694"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="536"/>
+ <YCoordinate value="-31"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="183">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="444"/>
+ <YCoordinate value="708"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="400"/>
+ <YCoordinate value="646"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="378"/>
+ <YCoordinate value="-18"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="184">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="376"/>
+ <YCoordinate value="661"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="655"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="285"/>
+ <YCoordinate value="-107"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="185">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="409"/>
+ <YCoordinate value="628"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="387"/>
+ <YCoordinate value="584"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="290"/>
+ <YCoordinate value="-101"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="186">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="606"/>
+ <YCoordinate value="628"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="628"/>
+ <YCoordinate value="589"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="532"/>
+ <YCoordinate value="-110"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="187">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="448"/>
+ <YCoordinate value="681"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="417"/>
+ <YCoordinate value="655"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="417"/>
+ <YCoordinate value="9"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="188">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="259"/>
+ <YCoordinate value="642"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="185"/>
+ <YCoordinate value="-136"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="624"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="198"/>
+ <YCoordinate value="-145"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="189">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="409"/>
+ <YCoordinate value="624"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="391"/>
+ <YCoordinate value="637"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="417"/>
+ <YCoordinate value="-101"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="190">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="628"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="272"/>
+ <YCoordinate value="615"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="272"/>
+ <YCoordinate value="-119"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="191">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="453"/>
+ <YCoordinate value="668"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="439"/>
+ <YCoordinate value="659"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="-136"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="192">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="88"/>
+ <YCoordinate value="554"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="110"/>
+ <YCoordinate value="554"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="352"/>
+ <YCoordinate value="35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="193">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="743"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="439"/>
+ <YCoordinate value="747"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="448"/>
+ <YCoordinate value="-13"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="194">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="272"/>
+ <YCoordinate value="716"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="712"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="-4"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="195">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="199"/>
+ <YCoordinate value="693"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="236"/>
+ <YCoordinate value="661"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="285"/>
+ <YCoordinate value="-81"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="196">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="246"/>
+ <YCoordinate value="646"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="250"/>
+ <YCoordinate value="668"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="277"/>
+ <YCoordinate value="-83"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="197">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="527"/>
+ <YCoordinate value="690"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="580"/>
+ <YCoordinate value="664"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="475"/>
+ <YCoordinate value="-105"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="198">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="75"/>
+ <YCoordinate value="532"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="97"/>
+ <YCoordinate value="532"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="110"/>
+ <YCoordinate value="-422"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="199">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="218"/>
+ <YCoordinate value="637"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="188"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="297"/>
+ <YCoordinate value="655"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="174"/>
+ <YCoordinate value="-180"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="200">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="703"/>
+ <YCoordinate value="602"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="501"/>
+ <YCoordinate value="787"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="201">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="218"/>
+ <YCoordinate value="637"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="201"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="284"/>
+ <YCoordinate value="664"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="174"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="202">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="747"/>
+ <YCoordinate value="589"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="708"/>
+ <YCoordinate value="716"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="-163"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="203">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="637"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="334"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="444"/>
+ <YCoordinate value="655"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="321"/>
+ <YCoordinate value="-180"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="204">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="637"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="347"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="431"/>
+ <YCoordinate value="664"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="321"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="205">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="769"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="255"/>
+ <YCoordinate value="-127"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="769"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="721"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="237"/>
+ <YCoordinate value="-149"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="206">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="566"/>
+ <YCoordinate value="769"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="567"/>
+ <YCoordinate value="848"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="461"/>
+ <YCoordinate value="-145"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="207">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="773"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="-185"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="773"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="330"/>
+ <YCoordinate value="725"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="220"/>
+ <YCoordinate value="-154"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="208">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="566"/>
+ <YCoordinate value="769"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="567"/>
+ <YCoordinate value="835"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="466"/>
+ <YCoordinate value="-141"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="209">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="413"/>
+ <YCoordinate value="875"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="229"/>
+ <YCoordinate value="-193"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="413"/>
+ <YCoordinate value="875"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="940"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="220"/>
+ <YCoordinate value="-180"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="210">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="598"/>
+ <YCoordinate value="861"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="598"/>
+ <YCoordinate value="861"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="541"/>
+ <YCoordinate value="945"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="453"/>
+ <YCoordinate value="-189"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="211">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="457"/>
+ <YCoordinate value="870"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="457"/>
+ <YCoordinate value="870"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="918"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="-176"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="212">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="637"/>
+ <YCoordinate value="901"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="637"/>
+ <YCoordinate value="901"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="554"/>
+ <YCoordinate value="918"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="497"/>
+ <YCoordinate value="-176"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="213">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="545"/>
+ <YCoordinate value="888"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="545"/>
+ <YCoordinate value="888"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="475"/>
+ <YCoordinate value="940"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="-193"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="214">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="659"/>
+ <YCoordinate value="888"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="659"/>
+ <YCoordinate value="888"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="606"/>
+ <YCoordinate value="927"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="523"/>
+ <YCoordinate value="-154"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="215">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="497"/>
+ <YCoordinate value="896"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="497"/>
+ <YCoordinate value="896"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="391"/>
+ <YCoordinate value="896"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="343"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="216">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="327"/>
+ <YCoordinate value="958"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="327"/>
+ <YCoordinate value="958"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="317"/>
+ <YCoordinate value="978"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="263"/>
+ <YCoordinate value="-129"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="217">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="497"/>
+ <YCoordinate value="914"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="497"/>
+ <YCoordinate value="914"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="391"/>
+ <YCoordinate value="914"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="374"/>
+ <YCoordinate value="-141"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="218">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="760"/>
+ <YCoordinate value="896"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="760"/>
+ <YCoordinate value="896"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="686"/>
+ <YCoordinate value="940"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="602"/>
+ <YCoordinate value="-180"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="219">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="492"/>
+ <YCoordinate value="883"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="492"/>
+ <YCoordinate value="883"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="409"/>
+ <YCoordinate value="918"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="391"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="220">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="918"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="171"/>
+ <YCoordinate value="-110"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="918"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="426"/>
+ <YCoordinate value="940"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="158"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="221">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="584"/>
+ <YCoordinate value="918"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="584"/>
+ <YCoordinate value="918"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="497"/>
+ <YCoordinate value="958"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="378"/>
+ <YCoordinate value="-136"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="222">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="366"/>
+ <YCoordinate value="758"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="396"/>
+ <YCoordinate value="738"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="809"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="268"/>
+ <YCoordinate value="-127"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="223">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="167"/>
+ <YCoordinate value="910"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="167"/>
+ <YCoordinate value="910"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="211"/>
+ <YCoordinate value="984"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="-163"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="224">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="523"/>
+ <YCoordinate value="923"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="523"/>
+ <YCoordinate value="923"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="413"/>
+ <YCoordinate value="927"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="-145"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="225">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="655"/>
+ <YCoordinate value="914"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="655"/>
+ <YCoordinate value="914"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="549"/>
+ <YCoordinate value="945"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="-145"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="226">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="325"/>
+ <YCoordinate value="817"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="325"/>
+ <YCoordinate value="817"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="281"/>
+ <YCoordinate value="883"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="378"/>
+ <YCoordinate value="31"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="227">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="567"/>
+ <YCoordinate value="962"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="567"/>
+ <YCoordinate value="962"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="488"/>
+ <YCoordinate value="984"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="426"/>
+ <YCoordinate value="-40"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="228">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="229"/>
+ <YCoordinate value="760"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="229"/>
+ <YCoordinate value="760"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="229"/>
+ <YCoordinate value="782"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="127"/>
+ <YCoordinate value="-352"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="229">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="391"/>
+ <YCoordinate value="953"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="391"/>
+ <YCoordinate value="953"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="381"/>
+ <YCoordinate value="972"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="258"/>
+ <YCoordinate value="-91"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="230">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="497"/>
+ <YCoordinate value="976"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="497"/>
+ <YCoordinate value="976"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="431"/>
+ <YCoordinate value="1024"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="-31"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="231">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="734"/>
+ <YCoordinate value="923"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="734"/>
+ <YCoordinate value="923"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="677"/>
+ <YCoordinate value="976"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="453"/>
+ <YCoordinate value="-132"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="232">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="831"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="831"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="290"/>
+ <YCoordinate value="870"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="369"/>
+ <YCoordinate value="57"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="233">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="694"/>
+ <YCoordinate value="914"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="250"/>
+ <YCoordinate value="-92"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="694"/>
+ <YCoordinate value="914"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="677"/>
+ <YCoordinate value="967"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="272"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="234">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="1107"/>
+ <YCoordinate value="971"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="1107"/>
+ <YCoordinate value="971"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="558"/>
+ <YCoordinate value="822"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="523"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="235">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="694"/>
+ <YCoordinate value="914"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="-105"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="694"/>
+ <YCoordinate value="914"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="677"/>
+ <YCoordinate value="967"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="272"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="236">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="1103"/>
+ <YCoordinate value="967"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="1103"/>
+ <YCoordinate value="967"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="549"/>
+ <YCoordinate value="839"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="-145"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="237">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="198"/>
+ <YCoordinate value="844"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="176"/>
+ <YCoordinate value="-189"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="848"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="180"/>
+ <YCoordinate value="-163"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="238">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="593"/>
+ <YCoordinate value="352"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="554"/>
+ <YCoordinate value="804"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="519"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="239">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="215"/>
+ <YCoordinate value="892"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="198"/>
+ <YCoordinate value="-163"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="198"/>
+ <YCoordinate value="835"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="193"/>
+ <YCoordinate value="-163"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="240">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="589"/>
+ <YCoordinate value="347"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="554"/>
+ <YCoordinate value="804"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="241">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="224"/>
+ <YCoordinate value="773"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="185"/>
+ <YCoordinate value="-105"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="237"/>
+ <YCoordinate value="826"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="264"/>
+ <YCoordinate value="-189"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="242">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="426"/>
+ <YCoordinate value="804"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="453"/>
+ <YCoordinate value="-163"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="243">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="716"/>
+ <YCoordinate value="729"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="635"/>
+ <YCoordinate value="-164"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="763"/>
+ <YCoordinate value="677"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="730"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="244">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="277"/>
+ <YCoordinate value="848"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="321"/>
+ <YCoordinate value="-163"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="245">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="466"/>
+ <YCoordinate value="826"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="488"/>
+ <YCoordinate value="-180"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="246">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="866"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="378"/>
+ <YCoordinate value="-141"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="247">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="497"/>
+ <YCoordinate value="760"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="523"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="248">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="294"/>
+ <YCoordinate value="822"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="249">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="295"/>
+ <YCoordinate value="945"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="269"/>
+ <YCoordinate value="-113"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="250">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="773"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="352"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="251">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="589"/>
+ <YCoordinate value="817"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="624"/>
+ <YCoordinate value="-136"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="252">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="822"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="396"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="253">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="189"/>
+ <YCoordinate value="738"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="154"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="202"/>
+ <YCoordinate value="760"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="193"/>
+ <YCoordinate value="-123"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="254">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="330"/>
+ <YCoordinate value="835"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="-123"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="255">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="615"/>
+ <YCoordinate value="734"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="589"/>
+ <YCoordinate value="-110"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="623"/>
+ <YCoordinate value="677"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="553"/>
+ <YCoordinate value="-113"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="256">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="224"/>
+ <YCoordinate value="800"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="202"/>
+ <YCoordinate value="-141"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="257">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="413"/>
+ <YCoordinate value="914"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="400"/>
+ <YCoordinate value="-119"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="258">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="123"/>
+ <YCoordinate value="672"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="347"/>
+ <YCoordinate value="57"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="259">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="374"/>
+ <YCoordinate value="800"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="347"/>
+ <YCoordinate value="-66"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="260">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="44"/>
+ <YCoordinate value="593"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="127"/>
+ <YCoordinate value="-343"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="261">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="285"/>
+ <YCoordinate value="929"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="295"/>
+ <YCoordinate value="-91"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="262">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="290"/>
+ <YCoordinate value="782"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="294"/>
+ <YCoordinate value="-62"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="263">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="505"/>
+ <YCoordinate value="725"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="541"/>
+ <YCoordinate value="861"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="448"/>
+ <YCoordinate value="-110"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="264">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="123"/>
+ <YCoordinate value="615"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="97"/>
+ <YCoordinate value="-426"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="265">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="166"/>
+ <YCoordinate value="586"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="299"/>
+ <YCoordinate value="-9"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="225"/>
+ <YCoordinate value="625"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="317"/>
+ <YCoordinate value="-24"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="266">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="166"/>
+ <YCoordinate value="586"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="62"/>
+ <YCoordinate value="-444"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="225"/>
+ <YCoordinate value="625"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="317"/>
+ <YCoordinate value="24"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="267">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="202"/>
+ <YCoordinate value="439"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="185"/>
+ <YCoordinate value="-92"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="281"/>
+ <YCoordinate value="514"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="244"/>
+ <YCoordinate value="-117"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="268">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="396"/>
+ <YCoordinate value="431"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="382"/>
+ <YCoordinate value="-141"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="269">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="213"/>
+ <YCoordinate value="479"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="352"/>
+ <YCoordinate value="-154"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="270">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="510"/>
+ <YCoordinate value="523"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="409"/>
+ <YCoordinate value="-154"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="271">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="620"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="409"/>
+ <YCoordinate value="9"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="272">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="483"/>
+ <YCoordinate value="628"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="439"/>
+ <YCoordinate value="-44"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="273">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="338"/>
+ <YCoordinate value="567"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="334"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="274">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="247"/>
+ <YCoordinate value="661"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="306"/>
+ <YCoordinate value="-86"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="275">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="321"/>
+ <YCoordinate value="562"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="330"/>
+ <YCoordinate value="-75"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="276">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="642"/>
+ <YCoordinate value="519"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="593"/>
+ <YCoordinate value="-119"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="277">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="152"/>
+ <YCoordinate value="545"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="382"/>
+ <YCoordinate value="-22"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="278">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="202"/>
+ <YCoordinate value="439"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="185"/>
+ <YCoordinate value="-53"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="281"/>
+ <YCoordinate value="514"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="244"/>
+ <YCoordinate value="-117"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="279">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="461"/>
+ <YCoordinate value="532"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="382"/>
+ <YCoordinate value="-154"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="280">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="299"/>
+ <YCoordinate value="505"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="-114"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="281">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="470"/>
+ <YCoordinate value="584"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="439"/>
+ <YCoordinate value="-127"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="282">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="272"/>
+ <YCoordinate value="593"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="426"/>
+ <YCoordinate value="53"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="283">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="444"/>
+ <YCoordinate value="615"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="453"/>
+ <YCoordinate value="-31"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="284">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="602"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="431"/>
+ <YCoordinate value="35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="285">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="381"/>
+ <YCoordinate value="618"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="328"/>
+ <YCoordinate value="-43"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="286">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="545"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="-79"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="287">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="598"/>
+ <YCoordinate value="479"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="637"/>
+ <YCoordinate value="576"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="510"/>
+ <YCoordinate value="-101"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="288">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="290"/>
+ <YCoordinate value="571"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="330"/>
+ <YCoordinate value="-26"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="289">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="237"/>
+ <YCoordinate value="664"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="185"/>
+ <YCoordinate value="-101"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="277"/>
+ <YCoordinate value="650"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="205"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="290">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="293"/>
+ <YCoordinate value="635"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="225"/>
+ <YCoordinate value="-166"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="291">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="237"/>
+ <YCoordinate value="664"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="163"/>
+ <YCoordinate value="-110"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="277"/>
+ <YCoordinate value="650"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="205"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="292">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="293"/>
+ <YCoordinate value="635"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="225"/>
+ <YCoordinate value="-166"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="293">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="224"/>
+ <YCoordinate value="576"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="158"/>
+ <YCoordinate value="-105"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="259"/>
+ <YCoordinate value="635"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="205"/>
+ <YCoordinate value="-166"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="294">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="444"/>
+ <YCoordinate value="338"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="497"/>
+ <YCoordinate value="787"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="426"/>
+ <YCoordinate value="-163"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="295">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="224"/>
+ <YCoordinate value="576"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="171"/>
+ <YCoordinate value="-97"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="259"/>
+ <YCoordinate value="635"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="205"/>
+ <YCoordinate value="-166"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="296">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="145"/>
+ <YCoordinate value="558"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="75"/>
+ <YCoordinate value="-132"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="158"/>
+ <YCoordinate value="558"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="97"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="297">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="189"/>
+ <YCoordinate value="628"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="189"/>
+ <YCoordinate value="-105"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="180"/>
+ <YCoordinate value="624"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="185"/>
+ <YCoordinate value="-185"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="298">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="439"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="215"/>
+ <YCoordinate value="-413"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="431"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="237"/>
+ <YCoordinate value="-435"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="299">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="439"/>
+ <YCoordinate value="417"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="360"/>
+ <YCoordinate value="-439"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="300">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="290"/>
+ <YCoordinate value="387"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="233"/>
+ <YCoordinate value="-439"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="301">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="457"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="439"/>
+ <YCoordinate value="-409"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="302">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="369"/>
+ <YCoordinate value="510"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="400"/>
+ <YCoordinate value="-312"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="303">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="571"/>
+ <YCoordinate value="576"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="536"/>
+ <YCoordinate value="-255"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="304">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="527"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="321"/>
+ <YCoordinate value="-489"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="305">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="349"/>
+ <YCoordinate value="527"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="331"/>
+ <YCoordinate value="-321"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="306">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="321"/>
+ <YCoordinate value="453"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="259"/>
+ <YCoordinate value="-387"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="307">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="593"/>
+ <YCoordinate value="461"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="549"/>
+ <YCoordinate value="-409"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="308">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="334"/>
+ <YCoordinate value="527"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="-321"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="309">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="708"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="255"/>
+ <YCoordinate value="-48"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="413"/>
+ <YCoordinate value="778"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="325"/>
+ <YCoordinate value="-127"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="310">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="479"/>
+ <YCoordinate value="747"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="470"/>
+ <YCoordinate value="-136"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="311">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="417"/>
+ <YCoordinate value="743"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="330"/>
+ <YCoordinate value="-132"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="312">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="549"/>
+ <YCoordinate value="839"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="541"/>
+ <YCoordinate value="-141"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="313">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="448"/>
+ <YCoordinate value="896"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="475"/>
+ <YCoordinate value="26"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="314">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="576"/>
+ <YCoordinate value="870"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="545"/>
+ <YCoordinate value="-18"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="315">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="426"/>
+ <YCoordinate value="883"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="470"/>
+ <YCoordinate value="-4"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="316">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="500"/>
+ <YCoordinate value="854"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="403"/>
+ <YCoordinate value="-81"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="317">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="409"/>
+ <YCoordinate value="817"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="334"/>
+ <YCoordinate value="-75"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="318">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="690"/>
+ <YCoordinate value="782"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="589"/>
+ <YCoordinate value="-101"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="319">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="426"/>
+ <YCoordinate value="857"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="409"/>
+ <YCoordinate value="-4"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="320">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="163"/>
+ <YCoordinate value="369"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="127"/>
+ <YCoordinate value="-193"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="189"/>
+ <YCoordinate value="374"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="198"/>
+ <YCoordinate value="-237"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="321">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="220"/>
+ <YCoordinate value="554"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="250"/>
+ <YCoordinate value="-281"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="571"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="-347"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="322">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="479"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="347"/>
+ <YCoordinate value="-378"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="323">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="549"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="343"/>
+ <YCoordinate value="-347"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="324">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="387"/>
+ <YCoordinate value="593"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="-365"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="325">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="694"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="501"/>
+ <YCoordinate value="-189"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="326">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="466"/>
+ <YCoordinate value="677"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="479"/>
+ <YCoordinate value="-176"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="327">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="299"/>
+ <YCoordinate value="637"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="347"/>
+ <YCoordinate value="-242"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="328">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="474"/>
+ <YCoordinate value="684"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="505"/>
+ <YCoordinate value="-204"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="329">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="330"/>
+ <YCoordinate value="593"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="-290"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="330">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="558"/>
+ <YCoordinate value="593"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="549"/>
+ <YCoordinate value="-294"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="331">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="343"/>
+ <YCoordinate value="650"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="374"/>
+ <YCoordinate value="-237"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="332">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="461"/>
+ <YCoordinate value="751"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="-105"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="541"/>
+ <YCoordinate value="751"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="386"/>
+ <YCoordinate value="-181"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="333">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="686"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="387"/>
+ <YCoordinate value="-123"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="475"/>
+ <YCoordinate value="642"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="386"/>
+ <YCoordinate value="-176"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="334">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="690"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="-101"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="343"/>
+ <YCoordinate value="686"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="268"/>
+ <YCoordinate value="-154"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="335">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="448"/>
+ <YCoordinate value="633"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="475"/>
+ <YCoordinate value="-154"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="336">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="664"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="369"/>
+ <YCoordinate value="-154"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="337">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="501"/>
+ <YCoordinate value="646"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="461"/>
+ <YCoordinate value="-154"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="338">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="299"/>
+ <YCoordinate value="747"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="-18"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="339">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="483"/>
+ <YCoordinate value="809"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="584"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="340">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="330"/>
+ <YCoordinate value="743"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="453"/>
+ <YCoordinate value="-31"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="341">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="376"/>
+ <YCoordinate value="806"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="354"/>
+ <YCoordinate value="-129"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="342">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="343"/>
+ <YCoordinate value="677"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="400"/>
+ <YCoordinate value="-119"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="343">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="470"/>
+ <YCoordinate value="633"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="536"/>
+ <YCoordinate value="-149"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="344">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="264"/>
+ <YCoordinate value="672"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="-88"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="345">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="386"/>
+ <YCoordinate value="606"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="224"/>
+ <YCoordinate value="-92"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="396"/>
+ <YCoordinate value="633"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="288"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="346">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="386"/>
+ <YCoordinate value="606"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="250"/>
+ <YCoordinate value="-101"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="396"/>
+ <YCoordinate value="633"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="288"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="347">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="620"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="259"/>
+ <YCoordinate value="-97"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="321"/>
+ <YCoordinate value="681"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="-141"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="348">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="176"/>
+ <YCoordinate value="665"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="536"/>
+ <YCoordinate value="-136"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="536"/>
+ <YCoordinate value="822"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="488"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="349">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="281"/>
+ <YCoordinate value="606"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="233"/>
+ <YCoordinate value="-101"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="277"/>
+ <YCoordinate value="681"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="-141"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="350">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="176"/>
+ <YCoordinate value="665"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="510"/>
+ <YCoordinate value="-136"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="523"/>
+ <YCoordinate value="813"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="426"/>
+ <YCoordinate value="-163"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="351">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="-119"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="672"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="277"/>
+ <YCoordinate value="-163"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="352">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="176"/>
+ <YCoordinate value="665"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="466"/>
+ <YCoordinate value="-141"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="554"/>
+ <YCoordinate value="835"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="413"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="353">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="281"/>
+ <YCoordinate value="659"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="483"/>
+ <YCoordinate value="-119"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="360"/>
+ <YCoordinate value="712"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="549"/>
+ <YCoordinate value="-185"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="354">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="567"/>
+ <YCoordinate value="628"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="514"/>
+ <YCoordinate value="-127"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="549"/>
+ <YCoordinate value="650"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="541"/>
+ <YCoordinate value="-185"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="355">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="145"/>
+ <YCoordinate value="558"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="75"/>
+ <YCoordinate value="-132"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="158"/>
+ <YCoordinate value="558"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="97"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ </BaseRecord>
+ </BaseArray>
+ </MarkBasePos>
+ </Lookup>
+ <!-- &lt;features&gt;:2532:5 in mark (arab/dflt) -->
+ <Lookup index="3">
+ <LookupType value="8"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <ChainContextPos index="0" Format="2">
+ <Coverage>
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="threedotsdownbelow-ar"/>
+ </Coverage>
+ <BacktrackClassDef>
+ <ClassDef glyph="behDotless-ar.init.ascend" class="5"/>
+ <ClassDef glyph="behDotless-ar.init.feh" class="4"/>
+ <ClassDef glyph="behDotless-ar.medi" class="3"/>
+ <ClassDef glyph="behDotless-ar.medi.high" class="2"/>
+ <ClassDef glyph="hah-ar.init" class="1"/>
+ </BacktrackClassDef>
+ <InputClassDef>
+ <ClassDef glyph="dotbelow-ar" class="1"/>
+ <ClassDef glyph="threedotsdownbelow-ar" class="1"/>
+ <ClassDef glyph="twodotshorizontalbelow-ar" class="1"/>
+ </InputClassDef>
+ <LookAheadClassDef>
+ <ClassDef glyph="behDotless-ar.medi.ragaa" class="3"/>
+ <ClassDef glyph="fehDotless-ar.medi.ragaa" class="2"/>
+ <ClassDef glyph="kaf-ar.medi.ragaa" class="1"/>
+ <ClassDef glyph="lam-ar.medi.ragaa" class="1"/>
+ </LookAheadClassDef>
+ <!-- ChainPosClassSetCount=2 -->
+ <ChainPosClassSet index="0">
+ <!-- ChainPosClassRuleCount=0 -->
+ </ChainPosClassSet>
+ <ChainPosClassSet index="1">
+ <!-- ChainPosClassRuleCount=8 -->
+ <ChainPosClassRule index="0">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="5"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="3"/>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="4"/>
+ </PosLookupRecord>
+ </ChainPosClassRule>
+ <ChainPosClassRule index="1">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="5"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="5"/>
+ </PosLookupRecord>
+ </ChainPosClassRule>
+ <ChainPosClassRule index="2">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="2"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="3"/>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="6"/>
+ </PosLookupRecord>
+ </ChainPosClassRule>
+ <ChainPosClassRule index="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="3"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="3"/>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="7"/>
+ </PosLookupRecord>
+ </ChainPosClassRule>
+ <ChainPosClassRule index="4">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="3"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="6"/>
+ </PosLookupRecord>
+ </ChainPosClassRule>
+ <ChainPosClassRule index="5">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="4"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="2"/>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="8"/>
+ </PosLookupRecord>
+ </ChainPosClassRule>
+ <ChainPosClassRule index="6">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="1"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="3"/>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="9"/>
+ </PosLookupRecord>
+ </ChainPosClassRule>
+ <ChainPosClassRule index="7">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="1"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="6"/>
+ </PosLookupRecord>
+ </ChainPosClassRule>
+ </ChainPosClassSet>
+ </ChainContextPos>
+ </Lookup>
+ <!-- &lt;features&gt;:2532:5 -->
+ <Lookup index="4">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="threedotsdownbelow-ar"/>
+ </Coverage>
+ <ValueFormat value="3"/>
+ <Value XPlacement="98" YPlacement="-146"/>
+ </SinglePos>
+ </Lookup>
+ <!-- &lt;features&gt;:2533:5 -->
+ <Lookup index="5">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="threedotsdownbelow-ar"/>
+ </Coverage>
+ <ValueFormat value="2"/>
+ <Value YPlacement="-186"/>
+ </SinglePos>
+ </Lookup>
+ <!-- &lt;features&gt;:2534:5 -->
+ <Lookup index="6">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="threedotsdownbelow-ar"/>
+ </Coverage>
+ <ValueFormat value="2"/>
+ <Value YPlacement="-146"/>
+ </SinglePos>
+ </Lookup>
+ <!-- &lt;features&gt;:2535:5 -->
+ <Lookup index="7">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="threedotsdownbelow-ar"/>
+ </Coverage>
+ <ValueFormat value="3"/>
+ <Value XPlacement="42" YPlacement="-146"/>
+ </SinglePos>
+ </Lookup>
+ <!-- &lt;features&gt;:2537:5 -->
+ <Lookup index="8">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="threedotsdownbelow-ar"/>
+ </Coverage>
+ <ValueFormat value="2"/>
+ <Value YPlacement="-73"/>
+ </SinglePos>
+ </Lookup>
+ <!-- &lt;features&gt;:2538:5 -->
+ <Lookup index="9">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="threedotsdownbelow-ar"/>
+ </Coverage>
+ <ValueFormat value="3"/>
+ <Value XPlacement="24" YPlacement="-122"/>
+ </SinglePos>
+ </Lookup>
+ <!-- mark2mark_bottom.mkmk: &lt;features&gt;:2546:9 in mkmk (arab/dflt) -->
+ <Lookup index="10">
+ <LookupType value="6"/>
+ <LookupFlag value="16"/><!-- useMarkFilteringSet -->
+ <!-- SubTableCount=1 -->
+ <MarkMarkPos index="0" Format="1">
+ <Mark1Coverage>
+ <Glyph value="alefbelow-ar"/>
+ <Glyph value="kasratan-ar"/>
+ <Glyph value="kasra-ar"/>
+ </Mark1Coverage>
+ <Mark2Coverage>
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="threedotsdownbelow-ar"/>
+ <Glyph value="hamzabelow-ar"/>
+ <Glyph value="shadda-ar"/>
+ </Mark2Coverage>
+ <!-- ClassCount=1 -->
+ <Mark1Array>
+ <!-- MarkCount=3 -->
+ <MarkRecord index="0">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="98"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="1">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="2">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ </Mark1Array>
+ <Mark2Array>
+ <!-- Mark2Count=5 -->
+ <Mark2Record index="0">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="-249"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ <Mark2Record index="1">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="-215"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ <Mark2Record index="2">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="-225"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ <Mark2Record index="3">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="-192"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ <Mark2Record index="4">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="-5"/>
+ <YCoordinate value="-195"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ </Mark2Array>
+ </MarkMarkPos>
+ <MarkFilteringSet value="1"/>
+ </Lookup>
+ <!-- mark2mark_top.mkmk: &lt;features&gt;:2561:9 in mkmk (arab/dflt) -->
+ <Lookup index="11">
+ <LookupType value="6"/>
+ <LookupFlag value="16"/><!-- useMarkFilteringSet -->
+ <!-- SubTableCount=1 -->
+ <MarkMarkPos index="0" Format="1">
+ <Mark1Coverage>
+ <Glyph value="alefabove-ar"/>
+ <Glyph value="fathatan-ar"/>
+ <Glyph value="dammatan-ar"/>
+ <Glyph value="fatha-ar"/>
+ <Glyph value="damma-ar"/>
+ <Glyph value="shadda-ar"/>
+ <Glyph value="sukun-ar"/>
+ <Glyph value="sukun-ar.alt"/>
+ <Glyph value="madda-ar"/>
+ <Glyph value="noonghunnaabove-ar"/>
+ <Glyph value="dammainverted-ar"/>
+ <Glyph value="dammainverted-ar.urd"/>
+ <Glyph value="opendammatan-ar"/>
+ </Mark1Coverage>
+ <Mark2Coverage>
+ <Glyph value="dotabove-ar"/>
+ <Glyph value="twodotshorizontalabove-ar"/>
+ <Glyph value="threedotsupabove-ar"/>
+ <Glyph value="gafsarkashabove-ar"/>
+ <Glyph value="hamzaabove-ar"/>
+ <Glyph value="fatha-ar"/>
+ <Glyph value="shadda-ar"/>
+ </Mark2Coverage>
+ <!-- ClassCount=1 -->
+ <Mark1Array>
+ <!-- MarkCount=13 -->
+ <MarkRecord index="0">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="1">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="2">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="3">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="4">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="5">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="6">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="7">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="8">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="9">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="10">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="11">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="12">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ </Mark1Array>
+ <Mark2Array>
+ <!-- Mark2Count=7 -->
+ <Mark2Record index="0">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="2"/>
+ <YCoordinate value="195"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ <Mark2Record index="1">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="35"/>
+ <YCoordinate value="244"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ <Mark2Record index="2">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="49"/>
+ <YCoordinate value="293"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ <Mark2Record index="3">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="195"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ <Mark2Record index="4">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="239"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ <Mark2Record index="5">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="-20"/>
+ <YCoordinate value="122"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ <Mark2Record index="6">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="-10"/>
+ <YCoordinate value="171"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ </Mark2Array>
+ </MarkMarkPos>
+ <MarkFilteringSet value="2"/>
+ </Lookup>
+ <!-- &lt;features&gt;:2588:5 in kern (arab/dflt) -->
+ <Lookup index="12">
+ <LookupType value="2"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <PairPos index="0" Format="1">
+ <Coverage>
+ <Glyph value="alef-ar.fina"/>
+ <Glyph value="alef-ar.fina.lam"/>
+ </Coverage>
+ <ValueFormat1 value="5"/>
+ <ValueFormat2 value="0"/>
+ <!-- PairSetCount=2 -->
+ <PairSet index="0">
+ <!-- PairValueCount=1 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="hah-ar"/>
+ <Value1 XPlacement="-193" XAdvance="-193"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="1">
+ <!-- PairValueCount=1 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="hah-ar"/>
+ <Value1 XPlacement="-195" XAdvance="-195"/>
+ </PairValueRecord>
+ </PairSet>
+ </PairPos>
+ </Lookup>
+ <!-- &lt;features&gt;:2590:5 in kern (arab/dflt) -->
+ <Lookup index="13">
+ <LookupType value="8"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=27 -->
+ <ChainContextPos index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="hah-ar"/>
+ <Glyph value="hah-ar.init.meem"/>
+ <Glyph value="seen-ar"/>
+ <Glyph value="sad-ar"/>
+ <Glyph value="ain-ar"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="14"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="1" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="alef-ar"/>
+ <Glyph value="meem-ar"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="15"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="2" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=2 -->
+ <InputCoverage index="0">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </InputCoverage>
+ <InputCoverage index="1">
+ <Glyph value="heh-ar"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- PosCount=2 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="15"/>
+ </PosLookupRecord>
+ <PosLookupRecord index="1">
+ <SequenceIndex value="1"/>
+ <LookupListIndex value="14"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="3" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=2 -->
+ <InputCoverage index="0">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </InputCoverage>
+ <InputCoverage index="1">
+ <Glyph value="tah-ar"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- PosCount=2 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="16"/>
+ </PosLookupRecord>
+ <PosLookupRecord index="1">
+ <SequenceIndex value="1"/>
+ <LookupListIndex value="14"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="4" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=2 -->
+ <InputCoverage index="0">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </InputCoverage>
+ <InputCoverage index="1">
+ <Glyph value="qafDotless-ar"/>
+ <Glyph value="qaf-ar"/>
+ <Glyph value="noon-ar"/>
+ <Glyph value="noonghunna-ar"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- PosCount=2 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="17"/>
+ </PosLookupRecord>
+ <PosLookupRecord index="1">
+ <SequenceIndex value="1"/>
+ <LookupListIndex value="14"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="5" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=3 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="sad-ar.init"/>
+ </LookAheadCoverage>
+ <LookAheadCoverage index="1">
+ <Glyph value="behDotless-ar.medi.sad"/>
+ </LookAheadCoverage>
+ <LookAheadCoverage index="2">
+ <Glyph value="tah-ar.fina"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="18"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="6" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=2 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="sad-ar.init"/>
+ </LookAheadCoverage>
+ <LookAheadCoverage index="1">
+ <Glyph value="alef-ar.fina"/>
+ <Glyph value="behDotless-ar.fina"/>
+ <Glyph value="kaf-ar.fina"/>
+ <Glyph value="lam-ar.medi.alef"/>
+ <Glyph value="heh-ar.fina"/>
+ <Glyph value="hehgoal-ar.fina"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="18"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="7" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=2 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="heh-ar.init"/>
+ </LookAheadCoverage>
+ <LookAheadCoverage index="1">
+ <Glyph value="alef-ar.fina"/>
+ <Glyph value="behDotless-ar.fina"/>
+ <Glyph value="kaf-ar.fina"/>
+ <Glyph value="lam-ar.medi.alef"/>
+ <Glyph value="heh-ar.fina"/>
+ <Glyph value="hehgoal-ar.fina"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="19"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="8" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="sad-ar.init"/>
+ <Glyph value="sad-ar.init.ain"/>
+ <Glyph value="ain-ar.init.yeh"/>
+ <Glyph value="kaf-ar.init.alef"/>
+ <Glyph value="heh-ar.init"/>
+ <Glyph value="heh-ar.init.meem"/>
+ <Glyph value="heh-ar.init.yeh"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="20"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="9" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="behDotless-ar"/>
+ <Glyph value="fehDotless-ar"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="21"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="10" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="alef-ar.fina.lam"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="behDotless-ar"/>
+ <Glyph value="fehDotless-ar"/>
+ <Glyph value="qafDotless-ar"/>
+ <Glyph value="qaf-ar"/>
+ <Glyph value="noon-ar"/>
+ <Glyph value="noonghunna-ar"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="14"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="11" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=3 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="lam-ar.init.sad"/>
+ </LookAheadCoverage>
+ <LookAheadCoverage index="1">
+ <Glyph value="sad-ar.medi.heh"/>
+ </LookAheadCoverage>
+ <LookAheadCoverage index="2">
+ <Glyph value="heh-ar.medi"/>
+ </LookAheadCoverage>
+ <!-- PosCount=0 -->
+ </ChainContextPos>
+ <ChainContextPos index="12" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="lam-ar.init.alef"/>
+ <Glyph value="lam-ar.init.dal"/>
+ <Glyph value="lam-ar.init.heh"/>
+ <Glyph value="lam-ar.init.meem"/>
+ <Glyph value="lam-ar.init.reh"/>
+ <Glyph value="lam-ar.init.sad"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="15"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="13" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="lam-ar.init.alef"/>
+ <Glyph value="lam-ar.init.dal"/>
+ <Glyph value="lam-ar.init.heh"/>
+ <Glyph value="lam-ar.init.meem"/>
+ <Glyph value="lam-ar.init.reh"/>
+ <Glyph value="lam-ar.init.sad"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="22"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="14" Format="3">
+ <!-- BacktrackGlyphCount=3 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="meem-ar.medi"/>
+ </BacktrackCoverage>
+ <BacktrackCoverage index="1">
+ <Glyph value="lam-ar.init.meem"/>
+ </BacktrackCoverage>
+ <BacktrackCoverage index="2">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="alef-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="14"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="15" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=2 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="lam-ar.init"/>
+ </LookAheadCoverage>
+ <LookAheadCoverage index="1">
+ <Glyph value="alef-ar.fina"/>
+ <Glyph value="behDotless-ar.fina"/>
+ <Glyph value="kaf-ar.fina"/>
+ <Glyph value="lam-ar.medi.alef"/>
+ <Glyph value="heh-ar.fina"/>
+ <Glyph value="hehgoal-ar.fina"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="19"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="16" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="lam-ar.init"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="14"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="17" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="lam-ar.init"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="15"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="18" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="lam-ar.init.ragaa"/>
+ <Glyph value="lam-ar.init.yeh"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="22"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="19" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="lam-ar.init.ragaa"/>
+ <Glyph value="lam-ar.init.yeh"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="21"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="20" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="lam-ar"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="23"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="21" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="lam-ar"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="19"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="22" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="fehDotless-ar.init.ain"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="23"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="23" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="ain-ar.init"/>
+ <Glyph value="fehDotless-ar.init"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="kaf-ar.init.alef.loop"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="14"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="24" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="alef-ar"/>
+ <Glyph value="alef-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=2 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="lam-ar.init.hah"/>
+ </LookAheadCoverage>
+ <LookAheadCoverage index="1">
+ <Glyph value="hah-ar.fina"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="15"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="25" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="alef-ar"/>
+ <Glyph value="alef-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="lam-ar.init.hah"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="16"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="26" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="alefMaksura-ar.fina"/>
+ <Glyph value="alefMaksura-ar.fina.jalt"/>
+ <Glyph value="alefMaksura-ar.fina.yeh"/>
+ <Glyph value="alefMaksura-ar.fina.yeh.jalt"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="hamza-ar"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="14"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ </Lookup>
+ <!-- &lt;features&gt;:2590:5 -->
+ <Lookup index="14">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=3 -->
+ <SinglePos index="0" Format="2">
+ <Coverage>
+ <Glyph value="hamza-ar"/>
+ <Glyph value="alef-ar.fina"/>
+ <Glyph value="tah-ar"/>
+ <Glyph value="qafDotless-ar"/>
+ <Glyph value="qaf-ar"/>
+ <Glyph value="noon-ar"/>
+ <Glyph value="noonghunna-ar"/>
+ <Glyph value="heh-ar"/>
+ </Coverage>
+ <ValueFormat value="2"/>
+ <!-- ValueCount=8 -->
+ <Value index="0" YPlacement="195"/>
+ <Value index="1" YPlacement="98"/>
+ <Value index="2" YPlacement="215"/>
+ <Value index="3" YPlacement="85"/>
+ <Value index="4" YPlacement="85"/>
+ <Value index="5" YPlacement="85"/>
+ <Value index="6" YPlacement="85"/>
+ <Value index="7" YPlacement="146"/>
+ </SinglePos>
+ <SinglePos index="1" Format="1">
+ <Coverage>
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </Coverage>
+ <ValueFormat value="5"/>
+ <Value XPlacement="-244" XAdvance="-244"/>
+ </SinglePos>
+ <SinglePos index="2" Format="2">
+ <Coverage>
+ <Glyph value="alef-ar.fina.lam"/>
+ <Glyph value="ain-ar.init"/>
+ <Glyph value="fehDotless-ar.init"/>
+ </Coverage>
+ <ValueFormat value="5"/>
+ <!-- ValueCount=3 -->
+ <Value index="0" XPlacement="-98" XAdvance="-98"/>
+ <Value index="1" XPlacement="59" XAdvance="59"/>
+ <Value index="2" XPlacement="59" XAdvance="59"/>
+ </SinglePos>
+ </Lookup>
+ <!-- &lt;features&gt;:2591:5 -->
+ <Lookup index="15">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=2 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </Coverage>
+ <ValueFormat value="5"/>
+ <Value XPlacement="-146" XAdvance="-146"/>
+ </SinglePos>
+ <SinglePos index="1" Format="1">
+ <Coverage>
+ <Glyph value="alef-ar"/>
+ <Glyph value="alef-ar.fina"/>
+ </Coverage>
+ <ValueFormat value="5"/>
+ <Value XPlacement="98" XAdvance="98"/>
+ </SinglePos>
+ </Lookup>
+ <!-- &lt;features&gt;:2593:5 -->
+ <Lookup index="16">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=2 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </Coverage>
+ <ValueFormat value="5"/>
+ <Value XPlacement="-264" XAdvance="-264"/>
+ </SinglePos>
+ <SinglePos index="1" Format="1">
+ <Coverage>
+ <Glyph value="alef-ar"/>
+ <Glyph value="alef-ar.fina"/>
+ </Coverage>
+ <ValueFormat value="5"/>
+ <Value XPlacement="49" XAdvance="49"/>
+ </SinglePos>
+ </Lookup>
+ <!-- &lt;features&gt;:2594:5 -->
+ <Lookup index="17">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </Coverage>
+ <ValueFormat value="5"/>
+ <Value XPlacement="-134" XAdvance="-134"/>
+ </SinglePos>
+ </Lookup>
+ <!-- &lt;features&gt;:2595:5 -->
+ <Lookup index="18">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </Coverage>
+ <ValueFormat value="5"/>
+ <Value XPlacement="-37" XAdvance="-37"/>
+ </SinglePos>
+ </Lookup>
+ <!-- &lt;features&gt;:2597:5 -->
+ <Lookup index="19">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </Coverage>
+ <ValueFormat value="5"/>
+ <Value XPlacement="-49" XAdvance="-49"/>
+ </SinglePos>
+ </Lookup>
+ <!-- &lt;features&gt;:2598:5 -->
+ <Lookup index="20">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </Coverage>
+ <ValueFormat value="5"/>
+ <Value XPlacement="-195" XAdvance="-195"/>
+ </SinglePos>
+ </Lookup>
+ <!-- &lt;features&gt;:2599:5 -->
+ <Lookup index="21">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </Coverage>
+ <ValueFormat value="5"/>
+ <Value XPlacement="-73" XAdvance="-73"/>
+ </SinglePos>
+ </Lookup>
+ <!-- &lt;features&gt;:2604:5 -->
+ <Lookup index="22">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=2 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </Coverage>
+ <ValueFormat value="5"/>
+ <Value XPlacement="-122" XAdvance="-122"/>
+ </SinglePos>
+ <SinglePos index="1" Format="1">
+ <Coverage>
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ </Coverage>
+ <ValueFormat value="5"/>
+ <Value XPlacement="-98" XAdvance="-98"/>
+ </SinglePos>
+ </Lookup>
+ <!-- &lt;features&gt;:2611:5 -->
+ <Lookup index="23">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </Coverage>
+ <ValueFormat value="5"/>
+ <Value XPlacement="-98" XAdvance="-98"/>
+ </SinglePos>
+ </Lookup>
+ </LookupList>
+ </GPOS>
+
+ <GSUB>
+ <Version value="0x00010000"/>
+ <ScriptList>
+ <!-- ScriptCount=1 -->
+ <ScriptRecord index="0">
+ <ScriptTag value="arab"/>
+ <Script>
+ <DefaultLangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=18 -->
+ <FeatureIndex index="0" value="0"/>
+ <FeatureIndex index="1" value="1"/>
+ <FeatureIndex index="2" value="2"/>
+ <FeatureIndex index="3" value="3"/>
+ <FeatureIndex index="4" value="4"/>
+ <FeatureIndex index="5" value="5"/>
+ <FeatureIndex index="6" value="6"/>
+ <FeatureIndex index="7" value="11"/>
+ <FeatureIndex index="8" value="12"/>
+ <FeatureIndex index="9" value="13"/>
+ <FeatureIndex index="10" value="14"/>
+ <FeatureIndex index="11" value="15"/>
+ <FeatureIndex index="12" value="16"/>
+ <FeatureIndex index="13" value="17"/>
+ <FeatureIndex index="14" value="18"/>
+ <FeatureIndex index="15" value="19"/>
+ <FeatureIndex index="16" value="20"/>
+ <FeatureIndex index="17" value="21"/>
+ </DefaultLangSys>
+ <!-- LangSysCount=4 -->
+ <LangSysRecord index="0">
+ <LangSysTag value="KSH "/>
+ <LangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=19 -->
+ <FeatureIndex index="0" value="0"/>
+ <FeatureIndex index="1" value="1"/>
+ <FeatureIndex index="2" value="2"/>
+ <FeatureIndex index="3" value="3"/>
+ <FeatureIndex index="4" value="4"/>
+ <FeatureIndex index="5" value="5"/>
+ <FeatureIndex index="6" value="6"/>
+ <FeatureIndex index="7" value="7"/>
+ <FeatureIndex index="8" value="11"/>
+ <FeatureIndex index="9" value="12"/>
+ <FeatureIndex index="10" value="13"/>
+ <FeatureIndex index="11" value="14"/>
+ <FeatureIndex index="12" value="15"/>
+ <FeatureIndex index="13" value="16"/>
+ <FeatureIndex index="14" value="17"/>
+ <FeatureIndex index="15" value="18"/>
+ <FeatureIndex index="16" value="19"/>
+ <FeatureIndex index="17" value="20"/>
+ <FeatureIndex index="18" value="21"/>
+ </LangSys>
+ </LangSysRecord>
+ <LangSysRecord index="1">
+ <LangSysTag value="MLY "/>
+ <LangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=19 -->
+ <FeatureIndex index="0" value="0"/>
+ <FeatureIndex index="1" value="1"/>
+ <FeatureIndex index="2" value="2"/>
+ <FeatureIndex index="3" value="3"/>
+ <FeatureIndex index="4" value="4"/>
+ <FeatureIndex index="5" value="5"/>
+ <FeatureIndex index="6" value="6"/>
+ <FeatureIndex index="7" value="8"/>
+ <FeatureIndex index="8" value="11"/>
+ <FeatureIndex index="9" value="12"/>
+ <FeatureIndex index="10" value="13"/>
+ <FeatureIndex index="11" value="14"/>
+ <FeatureIndex index="12" value="15"/>
+ <FeatureIndex index="13" value="16"/>
+ <FeatureIndex index="14" value="17"/>
+ <FeatureIndex index="15" value="18"/>
+ <FeatureIndex index="16" value="19"/>
+ <FeatureIndex index="17" value="20"/>
+ <FeatureIndex index="18" value="21"/>
+ </LangSys>
+ </LangSysRecord>
+ <LangSysRecord index="2">
+ <LangSysTag value="SND "/>
+ <LangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=19 -->
+ <FeatureIndex index="0" value="0"/>
+ <FeatureIndex index="1" value="1"/>
+ <FeatureIndex index="2" value="2"/>
+ <FeatureIndex index="3" value="3"/>
+ <FeatureIndex index="4" value="4"/>
+ <FeatureIndex index="5" value="5"/>
+ <FeatureIndex index="6" value="6"/>
+ <FeatureIndex index="7" value="9"/>
+ <FeatureIndex index="8" value="11"/>
+ <FeatureIndex index="9" value="12"/>
+ <FeatureIndex index="10" value="13"/>
+ <FeatureIndex index="11" value="14"/>
+ <FeatureIndex index="12" value="15"/>
+ <FeatureIndex index="13" value="16"/>
+ <FeatureIndex index="14" value="17"/>
+ <FeatureIndex index="15" value="18"/>
+ <FeatureIndex index="16" value="19"/>
+ <FeatureIndex index="17" value="20"/>
+ <FeatureIndex index="18" value="21"/>
+ </LangSys>
+ </LangSysRecord>
+ <LangSysRecord index="3">
+ <LangSysTag value="URD "/>
+ <LangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=19 -->
+ <FeatureIndex index="0" value="0"/>
+ <FeatureIndex index="1" value="1"/>
+ <FeatureIndex index="2" value="2"/>
+ <FeatureIndex index="3" value="3"/>
+ <FeatureIndex index="4" value="4"/>
+ <FeatureIndex index="5" value="5"/>
+ <FeatureIndex index="6" value="6"/>
+ <FeatureIndex index="7" value="10"/>
+ <FeatureIndex index="8" value="11"/>
+ <FeatureIndex index="9" value="12"/>
+ <FeatureIndex index="10" value="13"/>
+ <FeatureIndex index="11" value="14"/>
+ <FeatureIndex index="12" value="15"/>
+ <FeatureIndex index="13" value="16"/>
+ <FeatureIndex index="14" value="17"/>
+ <FeatureIndex index="15" value="18"/>
+ <FeatureIndex index="16" value="19"/>
+ <FeatureIndex index="17" value="20"/>
+ <FeatureIndex index="18" value="21"/>
+ </LangSys>
+ </LangSysRecord>
+ </Script>
+ </ScriptRecord>
+ </ScriptList>
+ <FeatureList>
+ <!-- FeatureCount=22 -->
+ <FeatureRecord index="0">
+ <FeatureTag value="calt"/>
+ <Feature>
+ <!-- LookupCount=33 -->
+ <LookupListIndex index="0" value="11"/>
+ <LookupListIndex index="1" value="13"/>
+ <LookupListIndex index="2" value="15"/>
+ <LookupListIndex index="3" value="17"/>
+ <LookupListIndex index="4" value="19"/>
+ <LookupListIndex index="5" value="21"/>
+ <LookupListIndex index="6" value="26"/>
+ <LookupListIndex index="7" value="28"/>
+ <LookupListIndex index="8" value="23"/>
+ <LookupListIndex index="9" value="30"/>
+ <LookupListIndex index="10" value="33"/>
+ <LookupListIndex index="11" value="35"/>
+ <LookupListIndex index="12" value="37"/>
+ <LookupListIndex index="13" value="39"/>
+ <LookupListIndex index="14" value="41"/>
+ <LookupListIndex index="15" value="43"/>
+ <LookupListIndex index="16" value="45"/>
+ <LookupListIndex index="17" value="47"/>
+ <LookupListIndex index="18" value="49"/>
+ <LookupListIndex index="19" value="51"/>
+ <LookupListIndex index="20" value="53"/>
+ <LookupListIndex index="21" value="55"/>
+ <LookupListIndex index="22" value="58"/>
+ <LookupListIndex index="23" value="59"/>
+ <LookupListIndex index="24" value="60"/>
+ <LookupListIndex index="25" value="63"/>
+ <LookupListIndex index="26" value="64"/>
+ <LookupListIndex index="27" value="66"/>
+ <LookupListIndex index="28" value="68"/>
+ <LookupListIndex index="29" value="70"/>
+ <LookupListIndex index="30" value="73"/>
+ <LookupListIndex index="31" value="75"/>
+ <LookupListIndex index="32" value="77"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="1">
+ <FeatureTag value="ccmp"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="0"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="2">
+ <FeatureTag value="dnom"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="90"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="3">
+ <FeatureTag value="fina"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="4"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="4">
+ <FeatureTag value="init"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="2"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="5">
+ <FeatureTag value="isol"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="1"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="6">
+ <FeatureTag value="jalt"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="80"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="7">
+ <FeatureTag value="locl"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="6"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="8">
+ <FeatureTag value="locl"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="8"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="9">
+ <FeatureTag value="locl"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="7"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="10">
+ <FeatureTag value="locl"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="5"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="11">
+ <FeatureTag value="medi"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="3"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="12">
+ <FeatureTag value="numr"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="89"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="13">
+ <FeatureTag value="rlig"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="9"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="14">
+ <FeatureTag value="ss01"/>
+ <Feature>
+ <FeatureParamsStylisticSet>
+ <Version value="0"/>
+ <UINameID value="256"/> <!-- Looped Haa -->
+ </FeatureParamsStylisticSet>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="81"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="15">
+ <FeatureTag value="ss02"/>
+ <Feature>
+ <FeatureParamsStylisticSet>
+ <Version value="0"/>
+ <UINameID value="257"/> <!-- Open final Haa -->
+ </FeatureParamsStylisticSet>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="82"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="16">
+ <FeatureTag value="ss03"/>
+ <Feature>
+ <FeatureParamsStylisticSet>
+ <Version value="0"/>
+ <UINameID value="258"/> <!-- Tailed Noon -->
+ </FeatureParamsStylisticSet>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="83"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="17">
+ <FeatureTag value="ss04"/>
+ <Feature>
+ <FeatureParamsStylisticSet>
+ <Version value="0"/>
+ <UINameID value="259"/> <!-- Looped initial Kaf -->
+ </FeatureParamsStylisticSet>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="84"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="18">
+ <FeatureTag value="ss05"/>
+ <Feature>
+ <FeatureParamsStylisticSet>
+ <Version value="0"/>
+ <UINameID value="260"/> <!-- Alternate Arabic digit two -->
+ </FeatureParamsStylisticSet>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="85"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="19">
+ <FeatureTag value="ss06"/>
+ <Feature>
+ <FeatureParamsStylisticSet>
+ <Version value="0"/>
+ <UINameID value="261"/> <!-- Tailed Sheen -->
+ </FeatureParamsStylisticSet>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="86"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="20">
+ <FeatureTag value="ss07"/>
+ <Feature>
+ <FeatureParamsStylisticSet>
+ <Version value="0"/>
+ <UINameID value="262"/> <!-- Alternate Sad-Tah/Tah-Sad -->
+ </FeatureParamsStylisticSet>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="87"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="21">
+ <FeatureTag value="ss08"/>
+ <Feature>
+ <FeatureParamsStylisticSet>
+ <Version value="0"/>
+ <UINameID value="263"/> <!-- Alternate Sukun -->
+ </FeatureParamsStylisticSet>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="88"/>
+ </Feature>
+ </FeatureRecord>
+ </FeatureList>
+ <LookupList>
+ <!-- LookupCount=91 -->
+ <!-- &lt;features&gt;:25:5 in ccmp (arab/dflt) -->
+ <Lookup index="0">
+ <LookupType value="2"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <MultipleSubst index="0">
+ <Substitution in="ainThreedots-ar" out="ain-ar,threedotsupabove-ar"/>
+ <Substitution in="alefHamzaabove-ar" out="alef-ar,hamzaabove-ar"/>
+ <Substitution in="alefHamzabelow-ar" out="alef-ar,hamzabelow-ar"/>
+ <Substitution in="alefMadda-ar" out="alef-ar,madda-ar"/>
+ <Substitution in="alefWasla-ar" out="alef-ar,wasla-ar"/>
+ <Substitution in="beh-ar" out="behDotless-ar,dotbelow-ar"/>
+ <Substitution in="dad-ar" out="sad-ar,dotabove-ar"/>
+ <Substitution in="ddal-ar" out="dal-ar,tahabove-ar"/>
+ <Substitution in="dul-ar" out="dal-ar,threedotsupabove-ar"/>
+ <Substitution in="feh-ar" out="fehDotless-ar,dotabove-ar"/>
+ <Substitution in="gaf-ar" out="keheh-ar,gafsarkashabove-ar"/>
+ <Substitution in="ghain-ar" out="ain-ar,dotabove-ar"/>
+ <Substitution in="hehHamzaabove-ar" out="heh-ar,hamzaabove-ar"/>
+ <Substitution in="jeem-ar" out="hah-ar,dotbelow-ar"/>
+ <Substitution in="jeh-ar" out="reh-ar,threedotsupabove-ar"/>
+ <Substitution in="kafDotabove-ar" out="kaf-ar,dotabove-ar"/>
+ <Substitution in="kehehDotabove-ar" out="keheh-ar,dotabove-ar"/>
+ <Substitution in="khah-ar" out="hah-ar,dotabove-ar"/>
+ <Substitution in="lamVabove-ar" out="lam-ar,vabove-ar"/>
+ <Substitution in="oe-ar" out="waw-ar,vabove-ar"/>
+ <Substitution in="peh-ar" out="behDotless-ar,threedotsdownbelow-ar"/>
+ <Substitution in="rehVbelow-ar" out="reh-ar,vbelow-ar"/>
+ <Substitution in="rnoon-ar" out="noonghunna-ar,tahabove-ar"/>
+ <Substitution in="rreh-ar" out="reh-ar,tahabove-ar"/>
+ <Substitution in="sheen-ar" out="seen-ar,threedotsupabove-ar"/>
+ <Substitution in="tcheh-ar" out="hah-ar,threedotsdownbelow-ar"/>
+ <Substitution in="teh-ar" out="behDotless-ar,twodotshorizontalabove-ar"/>
+ <Substitution in="tehMarbuta-ar" out="ae-ar,twodotshorizontalabove-ar"/>
+ <Substitution in="thal-ar" out="dal-ar,dotabove-ar"/>
+ <Substitution in="theh-ar" out="behDotless-ar,threedotsupabove-ar"/>
+ <Substitution in="tteh-ar" out="behDotless-ar,tahabove-ar"/>
+ <Substitution in="veh-ar" out="fehDotless-ar,threedotsupabove-ar"/>
+ <Substitution in="wawDotabove-ar" out="waw-ar,dotabove-ar"/>
+ <Substitution in="wawHamzaabove-ar" out="waw-ar,hamzaabove-ar"/>
+ <Substitution in="yeh-ar" out="alefMaksura-ar,twodotshorizontalbelow-ar"/>
+ <Substitution in="yehHamzaabove-ar" out="alefMaksura-ar,hamzaabove-ar"/>
+ <Substitution in="yehVabove-ar" out="yeh-farsi,vabove-ar"/>
+ <Substitution in="yehbarreeHamzaabove-ar" out="yehbarree-ar,hamzaabove-ar"/>
+ <Substitution in="zah-ar" out="tah-ar,dotabove-ar"/>
+ <Substitution in="zain-ar" out="reh-ar,dotabove-ar"/>
+ </MultipleSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:68:5 in isol (arab/dflt) -->
+ <Lookup index="1">
+ <LookupType value="2"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <MultipleSubst index="0">
+ <Substitution in="hehgoal-ar" out="heh-ar"/>
+ <Substitution in="noonThreedotsabove-ar" out="noonghunna-ar,threedotsupabove-ar"/>
+ <Substitution in="yeh-farsi" out="alefMaksura-ar"/>
+ </MultipleSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:74:5 in init (arab/dflt) -->
+ <Lookup index="2">
+ <LookupType value="2"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <MultipleSubst index="0">
+ <Substitution in="ain-ar" out="ain-ar.init"/>
+ <Substitution in="alefMaksura-ar" out="behDotless-ar.init"/>
+ <Substitution in="behDotless-ar" out="behDotless-ar.init"/>
+ <Substitution in="fehDotless-ar" out="fehDotless-ar.init"/>
+ <Substitution in="hah-ar" out="hah-ar.init"/>
+ <Substitution in="heh-ar" out="heh-ar.init"/>
+ <Substitution in="hehDoachashmee-ar" out="heh-ar.init"/>
+ <Substitution in="hehgoal-ar" out="hehgoal-ar.init"/>
+ <Substitution in="kaf-ar" out="kaf-ar.init"/>
+ <Substitution in="keheh-ar" out="kaf-ar.init"/>
+ <Substitution in="lam-ar" out="lam-ar.init"/>
+ <Substitution in="meem-ar" out="meem-ar.init"/>
+ <Substitution in="noon-ar" out="behDotless-ar.init,dotabove-ar"/>
+ <Substitution in="noonThreedotsabove-ar" out="behDotless-ar.init,threedotsdownbelow-ar"/>
+ <Substitution in="noonghunna-ar" out="behDotless-ar.init"/>
+ <Substitution in="qaf-ar" out="fehDotless-ar.init,twodotshorizontalabove-ar"/>
+ <Substitution in="qafDotless-ar" out="fehDotless-ar.init"/>
+ <Substitution in="sad-ar" out="sad-ar.init"/>
+ <Substitution in="seen-ar" out="seen-ar.init"/>
+ <Substitution in="tah-ar" out="tah-ar.init"/>
+ <Substitution in="yeh-farsi" out="behDotless-ar.init,twodotshorizontalbelow-ar"/>
+ </MultipleSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:98:5 in medi (arab/dflt) -->
+ <Lookup index="3">
+ <LookupType value="2"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <MultipleSubst index="0">
+ <Substitution in="ain-ar" out="ain-ar.medi"/>
+ <Substitution in="alefMaksura-ar" out="behDotless-ar.medi"/>
+ <Substitution in="behDotless-ar" out="behDotless-ar.medi"/>
+ <Substitution in="fehDotless-ar" out="fehDotless-ar.medi"/>
+ <Substitution in="hah-ar" out="hah-ar.medi"/>
+ <Substitution in="heh-ar" out="heh-ar.medi"/>
+ <Substitution in="hehDoachashmee-ar" out="hehDoachashmee-ar.medi"/>
+ <Substitution in="hehgoal-ar" out="heh-ar.medi"/>
+ <Substitution in="kaf-ar" out="kaf-ar.medi"/>
+ <Substitution in="keheh-ar" out="kaf-ar.medi"/>
+ <Substitution in="lam-ar" out="lam-ar.medi"/>
+ <Substitution in="meem-ar" out="meem-ar.medi"/>
+ <Substitution in="noon-ar" out="behDotless-ar.medi,dotabove-ar"/>
+ <Substitution in="noonThreedotsabove-ar" out="behDotless-ar.medi,threedotsdownbelow-ar"/>
+ <Substitution in="noonghunna-ar" out="behDotless-ar.medi"/>
+ <Substitution in="qaf-ar" out="fehDotless-ar.medi,twodotshorizontalabove-ar"/>
+ <Substitution in="qafDotless-ar" out="fehDotless-ar.medi"/>
+ <Substitution in="sad-ar" out="sad-ar.medi"/>
+ <Substitution in="seen-ar" out="seen-ar.medi"/>
+ <Substitution in="tah-ar" out="tah-ar.medi"/>
+ <Substitution in="yeh-farsi" out="behDotless-ar.medi,twodotshorizontalbelow-ar"/>
+ </MultipleSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:122:5 in fina (arab/dflt) -->
+ <Lookup index="4">
+ <LookupType value="2"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <MultipleSubst index="0">
+ <Substitution in="ae-ar" out="heh-ar.fina"/>
+ <Substitution in="ain-ar" out="ain-ar.fina"/>
+ <Substitution in="alef-ar" out="alef-ar.fina"/>
+ <Substitution in="alefMaksura-ar" out="alefMaksura-ar.fina"/>
+ <Substitution in="behDotless-ar" out="behDotless-ar.fina"/>
+ <Substitution in="dal-ar" out="dal-ar.fina"/>
+ <Substitution in="fehDotless-ar" out="fehDotless-ar.fina"/>
+ <Substitution in="hah-ar" out="hah-ar.fina"/>
+ <Substitution in="heh-ar" out="heh-ar.fina"/>
+ <Substitution in="hehDoachashmee-ar" out="hehDoachashmee-ar.fina"/>
+ <Substitution in="hehgoal-ar" out="hehgoal-ar.fina"/>
+ <Substitution in="kaf-ar" out="kaf-ar.fina"/>
+ <Substitution in="keheh-ar" out="keheh-ar.fina"/>
+ <Substitution in="lam-ar" out="lam-ar.fina"/>
+ <Substitution in="meem-ar" out="meem-ar.fina"/>
+ <Substitution in="noon-ar" out="noon-ar.fina"/>
+ <Substitution in="noonThreedotsabove-ar" out="noonghunna-ar.fina,threedotsupabove-ar"/>
+ <Substitution in="noonghunna-ar" out="noonghunna-ar.fina"/>
+ <Substitution in="qaf-ar" out="qaf-ar.fina"/>
+ <Substitution in="qafDotless-ar" out="qafDotless-ar.fina"/>
+ <Substitution in="reh-ar" out="reh-ar.fina"/>
+ <Substitution in="sad-ar" out="sad-ar.fina"/>
+ <Substitution in="seen-ar" out="seen-ar.fina"/>
+ <Substitution in="tah-ar" out="tah-ar.fina"/>
+ <Substitution in="waw-ar" out="waw-ar.fina"/>
+ <Substitution in="yeh-farsi" out="alefMaksura-ar.fina"/>
+ <Substitution in="yehbarree-ar" out="yehbarree-ar.fina"/>
+ </MultipleSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:154:5 in locl (arab/URD ) -->
+ <Lookup index="5">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="dammainverted-ar" out="dammainverted-ar.urd"/>
+ <Substitution in="four-persian" out="four-persian.urd"/>
+ <Substitution in="seven-persian" out="seven-persian.urd"/>
+ <Substitution in="six-persian" out="six-ar"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:159:5 in locl (arab/KSH ) -->
+ <Lookup index="6">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="four-persian" out="four-persian.urd"/>
+ <Substitution in="seven-persian" out="seven-persian.urd"/>
+ <Substitution in="six-persian" out="six-ar"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:163:5 in locl (arab/SND ) -->
+ <Lookup index="7">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="seven-persian" out="seven-persian.urd"/>
+ <Substitution in="six-persian" out="six-ar"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:166:5 in locl (arab/MLY ) -->
+ <Lookup index="8">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="comma-ar" out="comma-ar.alt"/>
+ <Substitution in="semicolon-ar" out="semicolon-ar.alt"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:172:5 in rlig (arab/dflt) -->
+ <Lookup index="9">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=2 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="hamza-ar"/>
+ <Glyph value="highhamza-ar"/>
+ <Glyph value="alef-ar"/>
+ <Glyph value="alef-ar.fina"/>
+ <Glyph value="alef-ar.fina.lam"/>
+ <Glyph value="alefHamzaabove-ar"/>
+ <Glyph value="alefHamzabelow-ar"/>
+ <Glyph value="alefMadda-ar"/>
+ <Glyph value="alefWasla-ar"/>
+ <Glyph value="behDotless-ar"/>
+ <Glyph value="behDotless-ar.jalt"/>
+ <Glyph value="behDotless-ar.fina"/>
+ <Glyph value="behDotless-ar.fina.jalt"/>
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.medi.ain"/>
+ <Glyph value="behDotless-ar.medi.dal"/>
+ <Glyph value="behDotless-ar.medi.feh"/>
+ <Glyph value="behDotless-ar.medi.hah"/>
+ <Glyph value="behDotless-ar.medi.heh"/>
+ <Glyph value="behDotless-ar.medi.high"/>
+ <Glyph value="behDotless-ar.medi.high2"/>
+ <Glyph value="behDotless-ar.medi.meem"/>
+ <Glyph value="behDotless-ar.medi.noon"/>
+ <Glyph value="behDotless-ar.medi.ragaa"/>
+ <Glyph value="behDotless-ar.medi.reh"/>
+ <Glyph value="behDotless-ar.medi.sad"/>
+ <Glyph value="behDotless-ar.medi.yeh"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="behDotless-ar.init.ain"/>
+ <Glyph value="behDotless-ar.init.ascend"/>
+ <Glyph value="behDotless-ar.init.dal"/>
+ <Glyph value="behDotless-ar.init.feh"/>
+ <Glyph value="behDotless-ar.init.hah"/>
+ <Glyph value="behDotless-ar.init.heh"/>
+ <Glyph value="behDotless-ar.init.meem"/>
+ <Glyph value="behDotless-ar.init.ragaa"/>
+ <Glyph value="behDotless-ar.init.reh"/>
+ <Glyph value="behDotless-ar.init.sad"/>
+ <Glyph value="behDotless-ar.init.yeh"/>
+ <Glyph value="beh-ar"/>
+ <Glyph value="peh-ar"/>
+ <Glyph value="teh-ar"/>
+ <Glyph value="theh-ar"/>
+ <Glyph value="tteh-ar"/>
+ <Glyph value="jeem-ar"/>
+ <Glyph value="tcheh-ar"/>
+ <Glyph value="hah-ar"/>
+ <Glyph value="hah-ar.fina"/>
+ <Glyph value="hah-ar.medi"/>
+ <Glyph value="hah-ar.medi.ain"/>
+ <Glyph value="hah-ar.medi.dal"/>
+ <Glyph value="hah-ar.medi.feh"/>
+ <Glyph value="hah-ar.medi.hah"/>
+ <Glyph value="hah-ar.medi.heh"/>
+ <Glyph value="hah-ar.medi.heh.ragaa"/>
+ <Glyph value="hah-ar.medi.meem"/>
+ <Glyph value="hah-ar.medi.ragaa"/>
+ <Glyph value="hah-ar.medi.reh"/>
+ <Glyph value="hah-ar.medi.sad"/>
+ <Glyph value="hah-ar.medi.yeh"/>
+ <Glyph value="hah-ar.init"/>
+ <Glyph value="hah-ar.init.ain"/>
+ <Glyph value="hah-ar.init.dal"/>
+ <Glyph value="hah-ar.init.feh"/>
+ <Glyph value="hah-ar.init.hah"/>
+ <Glyph value="hah-ar.init.heh"/>
+ <Glyph value="hah-ar.init.heh.ragaa"/>
+ <Glyph value="hah-ar.init.meem"/>
+ <Glyph value="hah-ar.init.ragaa"/>
+ <Glyph value="hah-ar.init.reh"/>
+ <Glyph value="hah-ar.init.sad"/>
+ <Glyph value="hah-ar.init.yeh"/>
+ <Glyph value="khah-ar"/>
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="thal-ar"/>
+ <Glyph value="ddal-ar"/>
+ <Glyph value="dul-ar"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="zain-ar"/>
+ <Glyph value="rreh-ar"/>
+ <Glyph value="rehVbelow-ar"/>
+ <Glyph value="jeh-ar"/>
+ <Glyph value="seen-ar"/>
+ <Glyph value="seen-ar.jalt"/>
+ <Glyph value="seen-ar.fina"/>
+ <Glyph value="seen-ar.fina.jalt"/>
+ <Glyph value="seen-ar.medi"/>
+ <Glyph value="seen-ar.medi.ain"/>
+ <Glyph value="seen-ar.medi.dal"/>
+ <Glyph value="seen-ar.medi.feh"/>
+ <Glyph value="seen-ar.medi.hah"/>
+ <Glyph value="seen-ar.medi.heh"/>
+ <Glyph value="seen-ar.medi.meem"/>
+ <Glyph value="seen-ar.medi.ragaa"/>
+ <Glyph value="seen-ar.medi.reh"/>
+ <Glyph value="seen-ar.medi.sad"/>
+ <Glyph value="seen-ar.medi.yeh"/>
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="seen-ar.init.ain"/>
+ <Glyph value="seen-ar.init.dal"/>
+ <Glyph value="seen-ar.init.feh"/>
+ <Glyph value="seen-ar.init.hah"/>
+ <Glyph value="seen-ar.init.heh"/>
+ <Glyph value="seen-ar.init.meem"/>
+ <Glyph value="seen-ar.init.ragaa"/>
+ <Glyph value="seen-ar.init.reh"/>
+ <Glyph value="seen-ar.init.sad"/>
+ <Glyph value="seen-ar.init.yeh"/>
+ <Glyph value="sheen-ar"/>
+ <Glyph value="sad-ar"/>
+ <Glyph value="sad-ar.jalt"/>
+ <Glyph value="sad-ar.fina"/>
+ <Glyph value="sad-ar.fina.jalt"/>
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="sad-ar.medi.ain"/>
+ <Glyph value="sad-ar.medi.dal"/>
+ <Glyph value="sad-ar.medi.feh"/>
+ <Glyph value="sad-ar.medi.hah"/>
+ <Glyph value="sad-ar.medi.heh"/>
+ <Glyph value="sad-ar.medi.meem"/>
+ <Glyph value="sad-ar.medi.postsad"/>
+ <Glyph value="sad-ar.medi.qantara"/>
+ <Glyph value="sad-ar.medi.ragaa"/>
+ <Glyph value="sad-ar.medi.reh"/>
+ <Glyph value="sad-ar.medi.sad"/>
+ <Glyph value="sad-ar.medi.yeh"/>
+ <Glyph value="sad-ar.init"/>
+ <Glyph value="sad-ar.init.ain"/>
+ <Glyph value="sad-ar.init.dal"/>
+ <Glyph value="sad-ar.init.feh"/>
+ <Glyph value="sad-ar.init.hah"/>
+ <Glyph value="sad-ar.init.heh"/>
+ <Glyph value="sad-ar.init.meem"/>
+ <Glyph value="sad-ar.init.qantara"/>
+ <Glyph value="sad-ar.init.ragaa"/>
+ <Glyph value="sad-ar.init.reh"/>
+ <Glyph value="sad-ar.init.sad"/>
+ <Glyph value="sad-ar.init.yeh"/>
+ <Glyph value="dad-ar"/>
+ <Glyph value="tah-ar"/>
+ <Glyph value="tah-ar.fina"/>
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.medi.ain"/>
+ <Glyph value="tah-ar.medi.dal"/>
+ <Glyph value="tah-ar.medi.feh"/>
+ <Glyph value="tah-ar.medi.hah"/>
+ <Glyph value="tah-ar.medi.heh"/>
+ <Glyph value="tah-ar.medi.kaf"/>
+ <Glyph value="tah-ar.medi.meem"/>
+ <Glyph value="tah-ar.medi.postsad"/>
+ <Glyph value="tah-ar.medi.qantara"/>
+ <Glyph value="tah-ar.medi.ragaa"/>
+ <Glyph value="tah-ar.medi.reh"/>
+ <Glyph value="tah-ar.medi.sad"/>
+ <Glyph value="tah-ar.medi.yeh"/>
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="tah-ar.init.ain"/>
+ <Glyph value="tah-ar.init.dal"/>
+ <Glyph value="tah-ar.init.feh"/>
+ <Glyph value="tah-ar.init.hah"/>
+ <Glyph value="tah-ar.init.heh"/>
+ <Glyph value="tah-ar.init.kaf"/>
+ <Glyph value="tah-ar.init.meem"/>
+ <Glyph value="tah-ar.init.qantara"/>
+ <Glyph value="tah-ar.init.ragaa"/>
+ <Glyph value="tah-ar.init.reh"/>
+ <Glyph value="tah-ar.init.sad"/>
+ <Glyph value="tah-ar.init.yeh"/>
+ <Glyph value="zah-ar"/>
+ <Glyph value="ain-ar"/>
+ <Glyph value="ain-ar.fina"/>
+ <Glyph value="ain-ar.medi"/>
+ <Glyph value="ain-ar.medi.ain"/>
+ <Glyph value="ain-ar.medi.dal"/>
+ <Glyph value="ain-ar.medi.feh"/>
+ <Glyph value="ain-ar.medi.hah"/>
+ <Glyph value="ain-ar.medi.heh"/>
+ <Glyph value="ain-ar.medi.meem"/>
+ <Glyph value="ain-ar.medi.ragaa"/>
+ <Glyph value="ain-ar.medi.reh"/>
+ <Glyph value="ain-ar.medi.sad"/>
+ <Glyph value="ain-ar.medi.yeh"/>
+ <Glyph value="ain-ar.init"/>
+ <Glyph value="ain-ar.init.ain"/>
+ <Glyph value="ain-ar.init.dal"/>
+ <Glyph value="ain-ar.init.feh"/>
+ <Glyph value="ain-ar.init.hah"/>
+ <Glyph value="ain-ar.init.heh"/>
+ <Glyph value="ain-ar.init.meem"/>
+ <Glyph value="ain-ar.init.ragaa"/>
+ <Glyph value="ain-ar.init.reh"/>
+ <Glyph value="ain-ar.init.sad"/>
+ <Glyph value="ain-ar.init.yeh"/>
+ <Glyph value="ainThreedots-ar"/>
+ <Glyph value="ghain-ar"/>
+ <Glyph value="feh-ar"/>
+ <Glyph value="veh-ar"/>
+ <Glyph value="fehDotless-ar"/>
+ <Glyph value="fehDotless-ar.jalt"/>
+ <Glyph value="fehDotless-ar.fina"/>
+ <Glyph value="fehDotless-ar.fina.jalt"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.medi.ain"/>
+ <Glyph value="fehDotless-ar.medi.dal"/>
+ <Glyph value="fehDotless-ar.medi.feh"/>
+ <Glyph value="fehDotless-ar.medi.hah"/>
+ <Glyph value="fehDotless-ar.medi.heh"/>
+ <Glyph value="fehDotless-ar.medi.meem"/>
+ <Glyph value="fehDotless-ar.medi.ragaa"/>
+ <Glyph value="fehDotless-ar.medi.reh"/>
+ <Glyph value="fehDotless-ar.medi.sad"/>
+ <Glyph value="fehDotless-ar.medi.yeh"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="fehDotless-ar.init.ain"/>
+ <Glyph value="fehDotless-ar.init.dal"/>
+ <Glyph value="fehDotless-ar.init.feh"/>
+ <Glyph value="fehDotless-ar.init.hah"/>
+ <Glyph value="fehDotless-ar.init.heh"/>
+ <Glyph value="fehDotless-ar.init.meem"/>
+ <Glyph value="fehDotless-ar.init.ragaa"/>
+ <Glyph value="fehDotless-ar.init.reh"/>
+ <Glyph value="fehDotless-ar.init.sad"/>
+ <Glyph value="fehDotless-ar.init.yeh"/>
+ <Glyph value="qafDotless-ar"/>
+ <Glyph value="qafDotless-ar.jalt"/>
+ <Glyph value="qafDotless-ar.fina"/>
+ <Glyph value="qafDotless-ar.fina.jalt"/>
+ <Glyph value="qaf-ar"/>
+ <Glyph value="qaf-ar.fina"/>
+ <Glyph value="kaf-ar"/>
+ <Glyph value="kaf-ar.jalt"/>
+ <Glyph value="kaf-ar.fina"/>
+ <Glyph value="kaf-ar.fina.jalt"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.medi.ain"/>
+ <Glyph value="kaf-ar.medi.dal"/>
+ <Glyph value="kaf-ar.medi.feh"/>
+ <Glyph value="kaf-ar.medi.hah"/>
+ <Glyph value="kaf-ar.medi.heh"/>
+ <Glyph value="kaf-ar.medi.kaf"/>
+ <Glyph value="kaf-ar.medi.meem"/>
+ <Glyph value="kaf-ar.medi.ragaa"/>
+ <Glyph value="kaf-ar.medi.reh"/>
+ <Glyph value="kaf-ar.medi.sad"/>
+ <Glyph value="kaf-ar.medi.yeh"/>
+ <Glyph value="kaf-ar.init"/>
+ <Glyph value="kaf-ar.init.ain"/>
+ <Glyph value="kaf-ar.init.alef"/>
+ <Glyph value="kaf-ar.init.alef.loop"/>
+ <Glyph value="kaf-ar.init.dal"/>
+ <Glyph value="kaf-ar.init.feh"/>
+ <Glyph value="kaf-ar.init.hah"/>
+ <Glyph value="kaf-ar.init.heh"/>
+ <Glyph value="kaf-ar.init.meem"/>
+ <Glyph value="kaf-ar.init.ragaa"/>
+ <Glyph value="kaf-ar.init.reh"/>
+ <Glyph value="kaf-ar.init.sad"/>
+ <Glyph value="kaf-ar.init.yeh"/>
+ <Glyph value="keheh-ar"/>
+ <Glyph value="keheh-ar.jalt"/>
+ <Glyph value="keheh-ar.fina"/>
+ <Glyph value="keheh-ar.fina.jalt"/>
+ <Glyph value="kehehDotabove-ar"/>
+ <Glyph value="gaf-ar"/>
+ <Glyph value="kafDotabove-ar"/>
+ <Glyph value="lam-ar"/>
+ <Glyph value="lam-ar.jalt"/>
+ <Glyph value="lam-ar.fina"/>
+ <Glyph value="lam-ar.fina.jalt"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.medi.ain"/>
+ <Glyph value="lam-ar.medi.alef"/>
+ <Glyph value="lam-ar.medi.dal"/>
+ <Glyph value="lam-ar.medi.feh"/>
+ <Glyph value="lam-ar.medi.hah"/>
+ <Glyph value="lam-ar.medi.heh"/>
+ <Glyph value="lam-ar.medi.kaf"/>
+ <Glyph value="lam-ar.medi.meem"/>
+ <Glyph value="lam-ar.medi.ragaa"/>
+ <Glyph value="lam-ar.medi.reh"/>
+ <Glyph value="lam-ar.medi.sad"/>
+ <Glyph value="lam-ar.medi.yeh"/>
+ <Glyph value="lam-ar.init"/>
+ <Glyph value="lam-ar.init.ain"/>
+ <Glyph value="lam-ar.init.alef"/>
+ <Glyph value="lam-ar.init.dal"/>
+ <Glyph value="lam-ar.init.feh"/>
+ <Glyph value="lam-ar.init.hah"/>
+ <Glyph value="lam-ar.init.heh"/>
+ <Glyph value="lam-ar.init.kaf"/>
+ <Glyph value="lam-ar.init.meem"/>
+ <Glyph value="lam-ar.init.ragaa"/>
+ <Glyph value="lam-ar.init.reh"/>
+ <Glyph value="lam-ar.init.sad"/>
+ <Glyph value="lam-ar.init.yeh"/>
+ <Glyph value="lamVabove-ar"/>
+ <Glyph value="meem-ar"/>
+ <Glyph value="meem-ar.fina"/>
+ <Glyph value="meem-ar.medi"/>
+ <Glyph value="meem-ar.medi.ain"/>
+ <Glyph value="meem-ar.medi.dal"/>
+ <Glyph value="meem-ar.medi.feh"/>
+ <Glyph value="meem-ar.medi.hah"/>
+ <Glyph value="meem-ar.medi.heh"/>
+ <Glyph value="meem-ar.medi.meem"/>
+ <Glyph value="meem-ar.medi.ragaa"/>
+ <Glyph value="meem-ar.medi.reh"/>
+ <Glyph value="meem-ar.medi.sad"/>
+ <Glyph value="meem-ar.medi.yeh"/>
+ <Glyph value="meem-ar.init"/>
+ <Glyph value="meem-ar.init.ain"/>
+ <Glyph value="meem-ar.init.dal"/>
+ <Glyph value="meem-ar.init.feh"/>
+ <Glyph value="meem-ar.init.hah"/>
+ <Glyph value="meem-ar.init.heh"/>
+ <Glyph value="meem-ar.init.meem"/>
+ <Glyph value="meem-ar.init.ragaa"/>
+ <Glyph value="meem-ar.init.reh"/>
+ <Glyph value="meem-ar.init.sad"/>
+ <Glyph value="meem-ar.init.yeh"/>
+ <Glyph value="noon-ar"/>
+ <Glyph value="noon-ar.tail"/>
+ <Glyph value="noon-ar.fina"/>
+ <Glyph value="noon-ar.fina.tail"/>
+ <Glyph value="noonghunna-ar"/>
+ <Glyph value="noonghunna-ar.jalt"/>
+ <Glyph value="noonghunna-ar.fina"/>
+ <Glyph value="rnoon-ar"/>
+ <Glyph value="noonThreedotsabove-ar"/>
+ <Glyph value="heh-ar"/>
+ <Glyph value="heh-ar.fina"/>
+ <Glyph value="heh-ar.medi"/>
+ <Glyph value="heh-ar.medi.ain"/>
+ <Glyph value="heh-ar.medi.dal"/>
+ <Glyph value="heh-ar.medi.feh"/>
+ <Glyph value="heh-ar.medi.hah"/>
+ <Glyph value="heh-ar.medi.heh"/>
+ <Glyph value="heh-ar.medi.meem"/>
+ <Glyph value="heh-ar.medi.ragaa"/>
+ <Glyph value="heh-ar.medi.reh"/>
+ <Glyph value="heh-ar.medi.sad"/>
+ <Glyph value="heh-ar.medi.yeh"/>
+ <Glyph value="heh-ar.init"/>
+ <Glyph value="heh-ar.init.ain"/>
+ <Glyph value="heh-ar.init.dal"/>
+ <Glyph value="heh-ar.init.feh"/>
+ <Glyph value="heh-ar.init.hah"/>
+ <Glyph value="heh-ar.init.heh"/>
+ <Glyph value="heh-ar.init.meem"/>
+ <Glyph value="heh-ar.init.ragaa"/>
+ <Glyph value="heh-ar.init.reh"/>
+ <Glyph value="heh-ar.init.sad"/>
+ <Glyph value="heh-ar.init.yeh"/>
+ <Glyph value="hehHamzaabove-ar"/>
+ <Glyph value="hehgoal-ar"/>
+ <Glyph value="hehgoal-ar.fina"/>
+ <Glyph value="hehgoal-ar.init"/>
+ <Glyph value="hehgoal-ar.init.ain"/>
+ <Glyph value="hehgoal-ar.init.dal"/>
+ <Glyph value="hehgoal-ar.init.feh"/>
+ <Glyph value="hehgoal-ar.init.hah"/>
+ <Glyph value="hehgoal-ar.init.heh"/>
+ <Glyph value="hehgoal-ar.init.meem"/>
+ <Glyph value="hehgoal-ar.init.ragaa"/>
+ <Glyph value="hehgoal-ar.init.reh"/>
+ <Glyph value="hehgoal-ar.init.sad"/>
+ <Glyph value="hehgoal-ar.init.yeh"/>
+ <Glyph value="hehDoachashmee-ar"/>
+ <Glyph value="hehDoachashmee-ar.fina"/>
+ <Glyph value="hehDoachashmee-ar.medi"/>
+ <Glyph value="hehDoachashmee-ar.medi.ain"/>
+ <Glyph value="hehDoachashmee-ar.medi.dal"/>
+ <Glyph value="hehDoachashmee-ar.medi.feh"/>
+ <Glyph value="hehDoachashmee-ar.medi.hah"/>
+ <Glyph value="hehDoachashmee-ar.medi.heh"/>
+ <Glyph value="hehDoachashmee-ar.medi.meem"/>
+ <Glyph value="hehDoachashmee-ar.medi.ragaa"/>
+ <Glyph value="hehDoachashmee-ar.medi.reh"/>
+ <Glyph value="hehDoachashmee-ar.medi.sad"/>
+ <Glyph value="hehDoachashmee-ar.medi.yeh"/>
+ <Glyph value="tehMarbuta-ar"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ <Glyph value="wawDotabove-ar"/>
+ <Glyph value="wawHamzaabove-ar"/>
+ <Glyph value="oe-ar"/>
+ <Glyph value="alefMaksura-ar"/>
+ <Glyph value="alefMaksura-ar.jalt"/>
+ <Glyph value="alefMaksura-ar.fina"/>
+ <Glyph value="alefMaksura-ar.fina.jalt"/>
+ <Glyph value="alefMaksura-ar.fina.yeh"/>
+ <Glyph value="alefMaksura-ar.fina.yeh.jalt"/>
+ <Glyph value="yeh-ar"/>
+ <Glyph value="yehHamzaabove-ar"/>
+ <Glyph value="yehVabove-ar"/>
+ <Glyph value="yeh-farsi"/>
+ <Glyph value="yehbarree-ar"/>
+ <Glyph value="yehbarree-ar.fina"/>
+ <Glyph value="yehbarreeHamzaabove-ar"/>
+ <Glyph value="ae-ar"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="heh-ar"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=0 -->
+ </ChainContextSubst>
+ <ChainContextSubst index="1" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="heh-ar"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="10"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:173:5 -->
+ <Lookup index="10">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="heh-ar" out="hehDoachashmee-ar"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- calt_hah: &lt;features&gt;:179:5 in calt (arab/dflt) -->
+ <Lookup index="11">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="hah-ar.medi"/>
+ <Glyph value="hah-ar.init"/>
+ <Glyph value="seen-ar.medi"/>
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="sad-ar.init"/>
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="ain-ar.medi"/>
+ <Glyph value="ain-ar.init"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.init"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.init"/>
+ <Glyph value="meem-ar.medi"/>
+ <Glyph value="meem-ar.init"/>
+ <Glyph value="heh-ar.medi"/>
+ <Glyph value="heh-ar.init"/>
+ <Glyph value="hehgoal-ar.init"/>
+ <Glyph value="hehDoachashmee-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="hah-ar.fina"/>
+ <Glyph value="hah-ar.medi"/>
+ <Glyph value="hah-ar.medi.ain"/>
+ <Glyph value="hah-ar.medi.dal"/>
+ <Glyph value="hah-ar.medi.feh"/>
+ <Glyph value="hah-ar.medi.hah"/>
+ <Glyph value="hah-ar.medi.heh"/>
+ <Glyph value="hah-ar.medi.meem"/>
+ <Glyph value="hah-ar.medi.ragaa"/>
+ <Glyph value="hah-ar.medi.reh"/>
+ <Glyph value="hah-ar.medi.sad"/>
+ <Glyph value="hah-ar.medi.yeh"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="12"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:179:5 -->
+ <Lookup index="12">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="ain-ar.init" out="ain-ar.init.hah"/>
+ <Substitution in="ain-ar.medi" out="ain-ar.medi.hah"/>
+ <Substitution in="behDotless-ar.init" out="behDotless-ar.init.hah"/>
+ <Substitution in="behDotless-ar.medi" out="behDotless-ar.medi.hah"/>
+ <Substitution in="fehDotless-ar.init" out="fehDotless-ar.init.hah"/>
+ <Substitution in="fehDotless-ar.medi" out="fehDotless-ar.medi.hah"/>
+ <Substitution in="hah-ar.init" out="hah-ar.init.hah"/>
+ <Substitution in="hah-ar.medi" out="hah-ar.medi.hah"/>
+ <Substitution in="heh-ar.init" out="heh-ar.init.hah"/>
+ <Substitution in="heh-ar.medi" out="heh-ar.medi.hah"/>
+ <Substitution in="hehDoachashmee-ar.medi" out="hehDoachashmee-ar.medi.hah"/>
+ <Substitution in="hehgoal-ar.init" out="hehgoal-ar.init.hah"/>
+ <Substitution in="kaf-ar.init" out="kaf-ar.init.hah"/>
+ <Substitution in="kaf-ar.medi" out="kaf-ar.medi.hah"/>
+ <Substitution in="lam-ar.init" out="lam-ar.init.hah"/>
+ <Substitution in="lam-ar.medi" out="lam-ar.medi.hah"/>
+ <Substitution in="meem-ar.init" out="meem-ar.init.hah"/>
+ <Substitution in="meem-ar.medi" out="meem-ar.medi.hah"/>
+ <Substitution in="sad-ar.init" out="sad-ar.init.hah"/>
+ <Substitution in="sad-ar.medi" out="sad-ar.medi.hah"/>
+ <Substitution in="seen-ar.init" out="seen-ar.init.hah"/>
+ <Substitution in="seen-ar.medi" out="seen-ar.medi.hah"/>
+ <Substitution in="tah-ar.init" out="tah-ar.init.hah"/>
+ <Substitution in="tah-ar.medi" out="tah-ar.medi.hah"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- calt_dal: &lt;features&gt;:184:5 in calt (arab/dflt) -->
+ <Lookup index="13">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="hah-ar.medi"/>
+ <Glyph value="hah-ar.init"/>
+ <Glyph value="seen-ar.medi"/>
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="sad-ar.init"/>
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="ain-ar.medi"/>
+ <Glyph value="ain-ar.init"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.init"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.init"/>
+ <Glyph value="meem-ar.medi"/>
+ <Glyph value="meem-ar.init"/>
+ <Glyph value="heh-ar.medi"/>
+ <Glyph value="heh-ar.init"/>
+ <Glyph value="hehgoal-ar.init"/>
+ <Glyph value="hehDoachashmee-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="dal-ar.fina"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="14"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:184:5 -->
+ <Lookup index="14">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="ain-ar.init" out="ain-ar.init.dal"/>
+ <Substitution in="ain-ar.medi" out="ain-ar.medi.dal"/>
+ <Substitution in="behDotless-ar.init" out="behDotless-ar.init.dal"/>
+ <Substitution in="behDotless-ar.medi" out="behDotless-ar.medi.dal"/>
+ <Substitution in="fehDotless-ar.init" out="fehDotless-ar.init.dal"/>
+ <Substitution in="fehDotless-ar.medi" out="fehDotless-ar.medi.dal"/>
+ <Substitution in="hah-ar.init" out="hah-ar.init.dal"/>
+ <Substitution in="hah-ar.medi" out="hah-ar.medi.dal"/>
+ <Substitution in="heh-ar.init" out="heh-ar.init.dal"/>
+ <Substitution in="heh-ar.medi" out="heh-ar.medi.dal"/>
+ <Substitution in="hehDoachashmee-ar.medi" out="hehDoachashmee-ar.medi.dal"/>
+ <Substitution in="hehgoal-ar.init" out="hehgoal-ar.init.dal"/>
+ <Substitution in="kaf-ar.init" out="kaf-ar.init.dal"/>
+ <Substitution in="kaf-ar.medi" out="kaf-ar.medi.dal"/>
+ <Substitution in="lam-ar.init" out="lam-ar.init.dal"/>
+ <Substitution in="lam-ar.medi" out="lam-ar.medi.dal"/>
+ <Substitution in="meem-ar.init" out="meem-ar.init.dal"/>
+ <Substitution in="meem-ar.medi" out="meem-ar.medi.dal"/>
+ <Substitution in="sad-ar.init" out="sad-ar.init.dal"/>
+ <Substitution in="sad-ar.medi" out="sad-ar.medi.dal"/>
+ <Substitution in="seen-ar.init" out="seen-ar.init.dal"/>
+ <Substitution in="seen-ar.medi" out="seen-ar.medi.dal"/>
+ <Substitution in="tah-ar.init" out="tah-ar.init.dal"/>
+ <Substitution in="tah-ar.medi" out="tah-ar.medi.dal"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- calt_reh: &lt;features&gt;:189:5 in calt (arab/dflt) -->
+ <Lookup index="15">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="hah-ar.medi"/>
+ <Glyph value="hah-ar.init"/>
+ <Glyph value="seen-ar.medi"/>
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="sad-ar.init"/>
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="ain-ar.medi"/>
+ <Glyph value="ain-ar.init"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.init"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.init"/>
+ <Glyph value="meem-ar.medi"/>
+ <Glyph value="meem-ar.init"/>
+ <Glyph value="heh-ar.medi"/>
+ <Glyph value="heh-ar.init"/>
+ <Glyph value="hehgoal-ar.init"/>
+ <Glyph value="hehDoachashmee-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="reh-ar.fina"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="16"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:189:5 -->
+ <Lookup index="16">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="ain-ar.init" out="ain-ar.init.reh"/>
+ <Substitution in="ain-ar.medi" out="ain-ar.medi.reh"/>
+ <Substitution in="behDotless-ar.init" out="behDotless-ar.init.reh"/>
+ <Substitution in="behDotless-ar.medi" out="behDotless-ar.medi.reh"/>
+ <Substitution in="fehDotless-ar.init" out="fehDotless-ar.init.reh"/>
+ <Substitution in="fehDotless-ar.medi" out="fehDotless-ar.medi.reh"/>
+ <Substitution in="hah-ar.init" out="hah-ar.init.reh"/>
+ <Substitution in="hah-ar.medi" out="hah-ar.medi.reh"/>
+ <Substitution in="heh-ar.init" out="heh-ar.init.reh"/>
+ <Substitution in="heh-ar.medi" out="heh-ar.medi.reh"/>
+ <Substitution in="hehDoachashmee-ar.medi" out="hehDoachashmee-ar.medi.reh"/>
+ <Substitution in="hehgoal-ar.init" out="hehgoal-ar.init.reh"/>
+ <Substitution in="kaf-ar.init" out="kaf-ar.init.reh"/>
+ <Substitution in="kaf-ar.medi" out="kaf-ar.medi.reh"/>
+ <Substitution in="lam-ar.init" out="lam-ar.init.reh"/>
+ <Substitution in="lam-ar.medi" out="lam-ar.medi.reh"/>
+ <Substitution in="meem-ar.init" out="meem-ar.init.reh"/>
+ <Substitution in="meem-ar.medi" out="meem-ar.medi.reh"/>
+ <Substitution in="sad-ar.init" out="sad-ar.init.reh"/>
+ <Substitution in="sad-ar.medi" out="sad-ar.medi.reh"/>
+ <Substitution in="seen-ar.init" out="seen-ar.init.reh"/>
+ <Substitution in="seen-ar.medi" out="seen-ar.medi.reh"/>
+ <Substitution in="tah-ar.init" out="tah-ar.init.reh"/>
+ <Substitution in="tah-ar.medi" out="tah-ar.medi.reh"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- calt_sad: &lt;features&gt;:195:5 in calt (arab/dflt) -->
+ <Lookup index="17">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="hah-ar.medi"/>
+ <Glyph value="hah-ar.init"/>
+ <Glyph value="seen-ar.medi"/>
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="sad-ar.init"/>
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="ain-ar.medi"/>
+ <Glyph value="ain-ar.init"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.init"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.init"/>
+ <Glyph value="meem-ar.medi"/>
+ <Glyph value="meem-ar.init"/>
+ <Glyph value="heh-ar.medi"/>
+ <Glyph value="heh-ar.init"/>
+ <Glyph value="hehgoal-ar.init"/>
+ <Glyph value="hehDoachashmee-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="sad-ar.fina"/>
+ <Glyph value="sad-ar.fina.jalt"/>
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="sad-ar.medi.ain"/>
+ <Glyph value="sad-ar.medi.dal"/>
+ <Glyph value="sad-ar.medi.feh"/>
+ <Glyph value="sad-ar.medi.hah"/>
+ <Glyph value="sad-ar.medi.heh"/>
+ <Glyph value="sad-ar.medi.meem"/>
+ <Glyph value="sad-ar.medi.qantara"/>
+ <Glyph value="sad-ar.medi.reh"/>
+ <Glyph value="sad-ar.medi.yeh"/>
+ <Glyph value="tah-ar.fina"/>
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.medi.ain"/>
+ <Glyph value="tah-ar.medi.dal"/>
+ <Glyph value="tah-ar.medi.feh"/>
+ <Glyph value="tah-ar.medi.hah"/>
+ <Glyph value="tah-ar.medi.heh"/>
+ <Glyph value="tah-ar.medi.kaf"/>
+ <Glyph value="tah-ar.medi.meem"/>
+ <Glyph value="tah-ar.medi.qantara"/>
+ <Glyph value="tah-ar.medi.reh"/>
+ <Glyph value="tah-ar.medi.yeh"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="18"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:195:5 -->
+ <Lookup index="18">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="ain-ar.init" out="ain-ar.init.sad"/>
+ <Substitution in="ain-ar.medi" out="ain-ar.medi.sad"/>
+ <Substitution in="behDotless-ar.init" out="behDotless-ar.init.sad"/>
+ <Substitution in="behDotless-ar.medi" out="behDotless-ar.medi.sad"/>
+ <Substitution in="fehDotless-ar.init" out="fehDotless-ar.init.sad"/>
+ <Substitution in="fehDotless-ar.medi" out="fehDotless-ar.medi.sad"/>
+ <Substitution in="hah-ar.init" out="hah-ar.init.sad"/>
+ <Substitution in="hah-ar.medi" out="hah-ar.medi.sad"/>
+ <Substitution in="heh-ar.init" out="heh-ar.init.sad"/>
+ <Substitution in="heh-ar.medi" out="heh-ar.medi.sad"/>
+ <Substitution in="hehDoachashmee-ar.medi" out="hehDoachashmee-ar.medi.sad"/>
+ <Substitution in="hehgoal-ar.init" out="hehgoal-ar.init.sad"/>
+ <Substitution in="kaf-ar.init" out="kaf-ar.init.sad"/>
+ <Substitution in="kaf-ar.medi" out="kaf-ar.medi.sad"/>
+ <Substitution in="lam-ar.init" out="lam-ar.init.sad"/>
+ <Substitution in="lam-ar.medi" out="lam-ar.medi.sad"/>
+ <Substitution in="meem-ar.init" out="meem-ar.init.sad"/>
+ <Substitution in="meem-ar.medi" out="meem-ar.medi.sad"/>
+ <Substitution in="sad-ar.init" out="sad-ar.init.qantara"/>
+ <Substitution in="sad-ar.medi" out="sad-ar.medi.qantara"/>
+ <Substitution in="seen-ar.init" out="seen-ar.init.sad"/>
+ <Substitution in="seen-ar.medi" out="seen-ar.medi.sad"/>
+ <Substitution in="tah-ar.init" out="tah-ar.init.qantara"/>
+ <Substitution in="tah-ar.medi" out="tah-ar.medi.qantara"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- calt_ain: &lt;features&gt;:201:5 in calt (arab/dflt) -->
+ <Lookup index="19">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="hah-ar.medi"/>
+ <Glyph value="hah-ar.init"/>
+ <Glyph value="seen-ar.medi"/>
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="sad-ar.init"/>
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="ain-ar.medi"/>
+ <Glyph value="ain-ar.init"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.init"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.init"/>
+ <Glyph value="meem-ar.medi"/>
+ <Glyph value="meem-ar.init"/>
+ <Glyph value="heh-ar.medi"/>
+ <Glyph value="heh-ar.init"/>
+ <Glyph value="hehgoal-ar.init"/>
+ <Glyph value="hehDoachashmee-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="ain-ar.fina"/>
+ <Glyph value="ain-ar.medi"/>
+ <Glyph value="ain-ar.medi.ain"/>
+ <Glyph value="ain-ar.medi.dal"/>
+ <Glyph value="ain-ar.medi.feh"/>
+ <Glyph value="ain-ar.medi.hah"/>
+ <Glyph value="ain-ar.medi.heh"/>
+ <Glyph value="ain-ar.medi.meem"/>
+ <Glyph value="ain-ar.medi.ragaa"/>
+ <Glyph value="ain-ar.medi.reh"/>
+ <Glyph value="ain-ar.medi.sad"/>
+ <Glyph value="ain-ar.medi.yeh"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="20"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:201:5 -->
+ <Lookup index="20">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="ain-ar.init" out="ain-ar.init.ain"/>
+ <Substitution in="ain-ar.medi" out="ain-ar.medi.ain"/>
+ <Substitution in="behDotless-ar.init" out="behDotless-ar.init.ain"/>
+ <Substitution in="behDotless-ar.medi" out="behDotless-ar.medi.ain"/>
+ <Substitution in="fehDotless-ar.init" out="fehDotless-ar.init.ain"/>
+ <Substitution in="fehDotless-ar.medi" out="fehDotless-ar.medi.ain"/>
+ <Substitution in="hah-ar.init" out="hah-ar.init.ain"/>
+ <Substitution in="hah-ar.medi" out="hah-ar.medi.ain"/>
+ <Substitution in="heh-ar.init" out="heh-ar.init.ain"/>
+ <Substitution in="heh-ar.medi" out="heh-ar.medi.ain"/>
+ <Substitution in="hehDoachashmee-ar.medi" out="hehDoachashmee-ar.medi.ain"/>
+ <Substitution in="hehgoal-ar.init" out="hehgoal-ar.init.ain"/>
+ <Substitution in="kaf-ar.init" out="kaf-ar.init.ain"/>
+ <Substitution in="kaf-ar.medi" out="kaf-ar.medi.ain"/>
+ <Substitution in="lam-ar.init" out="lam-ar.init.ain"/>
+ <Substitution in="lam-ar.medi" out="lam-ar.medi.ain"/>
+ <Substitution in="meem-ar.init" out="meem-ar.init.ain"/>
+ <Substitution in="meem-ar.medi" out="meem-ar.medi.ain"/>
+ <Substitution in="sad-ar.init" out="sad-ar.init.ain"/>
+ <Substitution in="sad-ar.medi" out="sad-ar.medi.ain"/>
+ <Substitution in="seen-ar.init" out="seen-ar.init.ain"/>
+ <Substitution in="seen-ar.medi" out="seen-ar.medi.ain"/>
+ <Substitution in="tah-ar.init" out="tah-ar.init.ain"/>
+ <Substitution in="tah-ar.medi" out="tah-ar.medi.ain"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- calt_feh: &lt;features&gt;:207:5 in calt (arab/dflt) -->
+ <Lookup index="21">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="hah-ar.medi"/>
+ <Glyph value="hah-ar.init"/>
+ <Glyph value="seen-ar.medi"/>
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="sad-ar.init"/>
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="ain-ar.medi"/>
+ <Glyph value="ain-ar.init"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.init"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.init"/>
+ <Glyph value="meem-ar.medi"/>
+ <Glyph value="meem-ar.init"/>
+ <Glyph value="heh-ar.medi"/>
+ <Glyph value="heh-ar.init"/>
+ <Glyph value="hehgoal-ar.init"/>
+ <Glyph value="hehDoachashmee-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="fehDotless-ar.fina"/>
+ <Glyph value="fehDotless-ar.fina.jalt"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.medi.ain"/>
+ <Glyph value="fehDotless-ar.medi.dal"/>
+ <Glyph value="fehDotless-ar.medi.feh"/>
+ <Glyph value="fehDotless-ar.medi.hah"/>
+ <Glyph value="fehDotless-ar.medi.heh"/>
+ <Glyph value="fehDotless-ar.medi.meem"/>
+ <Glyph value="fehDotless-ar.medi.ragaa"/>
+ <Glyph value="fehDotless-ar.medi.reh"/>
+ <Glyph value="fehDotless-ar.medi.sad"/>
+ <Glyph value="fehDotless-ar.medi.yeh"/>
+ <Glyph value="qafDotless-ar.fina.jalt"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="22"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:207:5 -->
+ <Lookup index="22">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="ain-ar.init" out="ain-ar.init.feh"/>
+ <Substitution in="ain-ar.medi" out="ain-ar.medi.feh"/>
+ <Substitution in="behDotless-ar.init" out="behDotless-ar.init.feh"/>
+ <Substitution in="behDotless-ar.medi" out="behDotless-ar.medi.feh"/>
+ <Substitution in="fehDotless-ar.init" out="fehDotless-ar.init.feh"/>
+ <Substitution in="fehDotless-ar.medi" out="fehDotless-ar.medi.feh"/>
+ <Substitution in="hah-ar.init" out="hah-ar.init.feh"/>
+ <Substitution in="hah-ar.medi" out="hah-ar.medi.feh"/>
+ <Substitution in="heh-ar.init" out="heh-ar.init.feh"/>
+ <Substitution in="heh-ar.medi" out="heh-ar.medi.feh"/>
+ <Substitution in="hehDoachashmee-ar.medi" out="hehDoachashmee-ar.medi.feh"/>
+ <Substitution in="hehgoal-ar.init" out="hehgoal-ar.init.feh"/>
+ <Substitution in="kaf-ar.init" out="kaf-ar.init.feh"/>
+ <Substitution in="kaf-ar.medi" out="kaf-ar.medi.feh"/>
+ <Substitution in="lam-ar.init" out="lam-ar.init.feh"/>
+ <Substitution in="lam-ar.medi" out="lam-ar.medi.feh"/>
+ <Substitution in="meem-ar.init" out="meem-ar.init.feh"/>
+ <Substitution in="meem-ar.medi" out="meem-ar.medi.feh"/>
+ <Substitution in="sad-ar.init" out="sad-ar.init.feh"/>
+ <Substitution in="sad-ar.medi" out="sad-ar.medi.feh"/>
+ <Substitution in="seen-ar.init" out="seen-ar.init.feh"/>
+ <Substitution in="seen-ar.medi" out="seen-ar.medi.feh"/>
+ <Substitution in="tah-ar.init" out="tah-ar.init.feh"/>
+ <Substitution in="tah-ar.medi" out="tah-ar.medi.feh"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- calt_heh_2: &lt;features&gt;:212:5 in calt (arab/dflt) -->
+ <Lookup index="23">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="1">
+ <Coverage>
+ <Glyph value="heh-ar.medi"/>
+ </Coverage>
+ <!-- ChainSubRuleSetCount=1 -->
+ <ChainSubRuleSet index="0">
+ <!-- ChainSubRuleCount=2 -->
+ <ChainSubRule index="0">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="heh-ar.medi"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="heh-ar.medi"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="24"/>
+ </SubstLookupRecord>
+ </ChainSubRule>
+ <ChainSubRule index="1">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=2 -->
+ <LookAhead index="0" value="heh-ar.medi"/>
+ <LookAhead index="1" value="heh-ar.fina"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="25"/>
+ </SubstLookupRecord>
+ </ChainSubRule>
+ </ChainSubRuleSet>
+ </ChainContextSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:212:5 -->
+ <Lookup index="24">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="heh-ar.medi" out="hehDoachashmee-ar.medi"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:213:5 -->
+ <Lookup index="25">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="heh-ar.medi" out="hehDoachashmee-ar.medi"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- calt_meem_heh: &lt;features&gt;:219:5 in calt (arab/dflt) -->
+ <Lookup index="26">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="hah-ar.medi"/>
+ <Glyph value="hah-ar.init"/>
+ <Glyph value="seen-ar.medi"/>
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="sad-ar.init"/>
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="ain-ar.medi"/>
+ <Glyph value="ain-ar.init"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.init"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.init"/>
+ <Glyph value="meem-ar.medi"/>
+ <Glyph value="meem-ar.init"/>
+ <Glyph value="heh-ar.medi"/>
+ <Glyph value="heh-ar.init"/>
+ <Glyph value="hehgoal-ar.init"/>
+ <Glyph value="hehDoachashmee-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="meem-ar.fina"/>
+ <Glyph value="meem-ar.medi"/>
+ <Glyph value="meem-ar.medi.ain"/>
+ <Glyph value="meem-ar.medi.dal"/>
+ <Glyph value="meem-ar.medi.feh"/>
+ <Glyph value="meem-ar.medi.hah"/>
+ <Glyph value="meem-ar.medi.heh"/>
+ <Glyph value="meem-ar.medi.meem"/>
+ <Glyph value="meem-ar.medi.ragaa"/>
+ <Glyph value="meem-ar.medi.reh"/>
+ <Glyph value="meem-ar.medi.sad"/>
+ <Glyph value="meem-ar.medi.yeh"/>
+ <Glyph value="hehDoachashmee-ar.fina"/>
+ <Glyph value="hehDoachashmee-ar.medi"/>
+ <Glyph value="hehDoachashmee-ar.medi.ain"/>
+ <Glyph value="hehDoachashmee-ar.medi.dal"/>
+ <Glyph value="hehDoachashmee-ar.medi.feh"/>
+ <Glyph value="hehDoachashmee-ar.medi.hah"/>
+ <Glyph value="hehDoachashmee-ar.medi.heh"/>
+ <Glyph value="hehDoachashmee-ar.medi.meem"/>
+ <Glyph value="hehDoachashmee-ar.medi.ragaa"/>
+ <Glyph value="hehDoachashmee-ar.medi.reh"/>
+ <Glyph value="hehDoachashmee-ar.medi.sad"/>
+ <Glyph value="hehDoachashmee-ar.medi.yeh"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="27"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:219:5 -->
+ <Lookup index="27">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="ain-ar.init" out="ain-ar.init.meem"/>
+ <Substitution in="ain-ar.medi" out="ain-ar.medi.meem"/>
+ <Substitution in="behDotless-ar.init" out="behDotless-ar.init.meem"/>
+ <Substitution in="behDotless-ar.medi" out="behDotless-ar.medi.meem"/>
+ <Substitution in="fehDotless-ar.init" out="fehDotless-ar.init.meem"/>
+ <Substitution in="fehDotless-ar.medi" out="fehDotless-ar.medi.meem"/>
+ <Substitution in="hah-ar.init" out="hah-ar.init.meem"/>
+ <Substitution in="hah-ar.medi" out="hah-ar.medi.meem"/>
+ <Substitution in="heh-ar.init" out="heh-ar.init.meem"/>
+ <Substitution in="heh-ar.medi" out="heh-ar.medi.meem"/>
+ <Substitution in="hehDoachashmee-ar.medi" out="hehDoachashmee-ar.medi.meem"/>
+ <Substitution in="hehgoal-ar.init" out="hehgoal-ar.init.meem"/>
+ <Substitution in="kaf-ar.init" out="kaf-ar.init.meem"/>
+ <Substitution in="kaf-ar.medi" out="kaf-ar.medi.meem"/>
+ <Substitution in="lam-ar.init" out="lam-ar.init.meem"/>
+ <Substitution in="lam-ar.medi" out="lam-ar.medi.meem"/>
+ <Substitution in="meem-ar.init" out="meem-ar.init.meem"/>
+ <Substitution in="meem-ar.medi" out="meem-ar.medi.meem"/>
+ <Substitution in="sad-ar.init" out="sad-ar.init.meem"/>
+ <Substitution in="sad-ar.medi" out="sad-ar.medi.meem"/>
+ <Substitution in="seen-ar.init" out="seen-ar.init.meem"/>
+ <Substitution in="seen-ar.medi" out="seen-ar.medi.meem"/>
+ <Substitution in="tah-ar.init" out="tah-ar.init.meem"/>
+ <Substitution in="tah-ar.medi" out="tah-ar.medi.meem"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- calt_heh_1: &lt;features&gt;:225:5 in calt (arab/dflt) -->
+ <Lookup index="28">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="2">
+ <Coverage>
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="hah-ar.medi"/>
+ <Glyph value="hah-ar.init"/>
+ <Glyph value="seen-ar.medi"/>
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="sad-ar.init"/>
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="ain-ar.medi"/>
+ <Glyph value="ain-ar.init"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.init"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.init"/>
+ <Glyph value="meem-ar.medi"/>
+ <Glyph value="meem-ar.init"/>
+ <Glyph value="heh-ar.medi"/>
+ <Glyph value="heh-ar.init"/>
+ <Glyph value="hehgoal-ar.init"/>
+ <Glyph value="hehDoachashmee-ar.medi"/>
+ </Coverage>
+ <BacktrackClassDef>
+ </BacktrackClassDef>
+ <InputClassDef>
+ <ClassDef glyph="ain-ar.init" class="24"/>
+ <ClassDef glyph="ain-ar.medi" class="23"/>
+ <ClassDef glyph="behDotless-ar.init" class="22"/>
+ <ClassDef glyph="behDotless-ar.medi" class="21"/>
+ <ClassDef glyph="fehDotless-ar.init" class="20"/>
+ <ClassDef glyph="fehDotless-ar.medi" class="19"/>
+ <ClassDef glyph="hah-ar.init" class="18"/>
+ <ClassDef glyph="hah-ar.medi" class="17"/>
+ <ClassDef glyph="heh-ar.init" class="16"/>
+ <ClassDef glyph="heh-ar.medi" class="15"/>
+ <ClassDef glyph="hehDoachashmee-ar.medi" class="14"/>
+ <ClassDef glyph="hehgoal-ar.init" class="13"/>
+ <ClassDef glyph="kaf-ar.init" class="12"/>
+ <ClassDef glyph="kaf-ar.medi" class="11"/>
+ <ClassDef glyph="lam-ar.init" class="10"/>
+ <ClassDef glyph="lam-ar.medi" class="9"/>
+ <ClassDef glyph="meem-ar.init" class="8"/>
+ <ClassDef glyph="meem-ar.medi" class="7"/>
+ <ClassDef glyph="sad-ar.init" class="6"/>
+ <ClassDef glyph="sad-ar.medi" class="5"/>
+ <ClassDef glyph="seen-ar.init" class="4"/>
+ <ClassDef glyph="seen-ar.medi" class="3"/>
+ <ClassDef glyph="tah-ar.init" class="2"/>
+ <ClassDef glyph="tah-ar.medi" class="1"/>
+ </InputClassDef>
+ <LookAheadClassDef>
+ <ClassDef glyph="heh-ar.medi" class="1"/>
+ <ClassDef glyph="heh-ar.medi.ain" class="1"/>
+ <ClassDef glyph="heh-ar.medi.dal" class="1"/>
+ <ClassDef glyph="heh-ar.medi.feh" class="1"/>
+ <ClassDef glyph="heh-ar.medi.hah" class="1"/>
+ <ClassDef glyph="heh-ar.medi.heh" class="1"/>
+ <ClassDef glyph="heh-ar.medi.meem" class="1"/>
+ <ClassDef glyph="heh-ar.medi.reh" class="1"/>
+ <ClassDef glyph="heh-ar.medi.sad" class="1"/>
+ <ClassDef glyph="heh-ar.medi.yeh" class="1"/>
+ </LookAheadClassDef>
+ <!-- ChainSubClassSetCount=25 -->
+ <ChainSubClassSet index="0">
+ <!-- ChainSubClassRuleCount=0 -->
+ </ChainSubClassSet>
+ <ChainSubClassSet index="1">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="2">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="3">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="4">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="5">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="6">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="7">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="8">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="9">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="10">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="11">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="12">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="13">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="14">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="15">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="16">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="17">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="18">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="19">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="20">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="21">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="22">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="23">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="24">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ </ChainContextSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:225:5 -->
+ <Lookup index="29">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="ain-ar.init" out="ain-ar.init.heh"/>
+ <Substitution in="ain-ar.medi" out="ain-ar.medi.heh"/>
+ <Substitution in="behDotless-ar.init" out="behDotless-ar.init.heh"/>
+ <Substitution in="behDotless-ar.medi" out="behDotless-ar.medi.heh"/>
+ <Substitution in="fehDotless-ar.init" out="fehDotless-ar.init.heh"/>
+ <Substitution in="fehDotless-ar.medi" out="fehDotless-ar.medi.heh"/>
+ <Substitution in="hah-ar.init" out="hah-ar.init.heh"/>
+ <Substitution in="hah-ar.medi" out="hah-ar.medi.heh"/>
+ <Substitution in="heh-ar.init" out="heh-ar.init.heh"/>
+ <Substitution in="heh-ar.medi" out="heh-ar.medi.heh"/>
+ <Substitution in="hehDoachashmee-ar.medi" out="hehDoachashmee-ar.medi.heh"/>
+ <Substitution in="hehgoal-ar.init" out="hehgoal-ar.init.heh"/>
+ <Substitution in="kaf-ar.init" out="kaf-ar.init.heh"/>
+ <Substitution in="kaf-ar.medi" out="kaf-ar.medi.heh"/>
+ <Substitution in="lam-ar.init" out="lam-ar.init.heh"/>
+ <Substitution in="lam-ar.medi" out="lam-ar.medi.heh"/>
+ <Substitution in="meem-ar.init" out="meem-ar.init.heh"/>
+ <Substitution in="meem-ar.medi" out="meem-ar.medi.heh"/>
+ <Substitution in="sad-ar.init" out="sad-ar.init.heh"/>
+ <Substitution in="sad-ar.medi" out="sad-ar.medi.heh"/>
+ <Substitution in="seen-ar.init" out="seen-ar.init.heh"/>
+ <Substitution in="seen-ar.medi" out="seen-ar.medi.heh"/>
+ <Substitution in="tah-ar.init" out="tah-ar.init.heh"/>
+ <Substitution in="tah-ar.medi" out="tah-ar.medi.heh"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- calt_heh_3: &lt;features&gt;:253:5 in calt (arab/dflt) -->
+ <Lookup index="30">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="1">
+ <Coverage>
+ <Glyph value="heh-ar.medi.heh"/>
+ <Glyph value="heh-ar.init.heh"/>
+ <Glyph value="hehDoachashmee-ar.medi.meem"/>
+ </Coverage>
+ <!-- ChainSubRuleSetCount=3 -->
+ <ChainSubRuleSet index="0">
+ <!-- ChainSubRuleCount=2 -->
+ <ChainSubRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="hehDoachashmee-ar.medi.heh"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="31"/>
+ </SubstLookupRecord>
+ </ChainSubRule>
+ <ChainSubRule index="1">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="hehDoachashmee-ar.medi.heh"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="hehDoachashmee-ar.medi"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="32"/>
+ </SubstLookupRecord>
+ </ChainSubRule>
+ </ChainSubRuleSet>
+ <ChainSubRuleSet index="1">
+ <!-- ChainSubRuleCount=2 -->
+ <ChainSubRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="hehDoachashmee-ar.medi.heh"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="31"/>
+ </SubstLookupRecord>
+ </ChainSubRule>
+ <ChainSubRule index="1">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="hehDoachashmee-ar.medi.heh"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="hehDoachashmee-ar.medi"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="32"/>
+ </SubstLookupRecord>
+ </ChainSubRule>
+ </ChainSubRuleSet>
+ <ChainSubRuleSet index="2">
+ <!-- ChainSubRuleCount=1 -->
+ <ChainSubRule index="0">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="heh-ar.medi.meem"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="31"/>
+ </SubstLookupRecord>
+ </ChainSubRule>
+ </ChainSubRuleSet>
+ </ChainContextSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:253:5 -->
+ <Lookup index="31">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="heh-ar.init.heh" out="heh-ar.init.hah"/>
+ <Substitution in="heh-ar.medi.heh" out="heh-ar.medi.meem"/>
+ <Substitution in="hehDoachashmee-ar.medi.meem" out="hehDoachashmee-ar.medi.heh"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:256:5 -->
+ <Lookup index="32">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="heh-ar.init.heh" out="heh-ar.init.hah"/>
+ <Substitution in="heh-ar.medi.heh" out="heh-ar.medi.meem"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- calt_heh_4: &lt;features&gt;:262:5 in calt (arab/dflt) -->
+ <Lookup index="33">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=2 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="hehDoachashmee-ar.medi.heh"/>
+ </BacktrackCoverage>
+ <BacktrackCoverage index="1">
+ <Glyph value="hehDoachashmee-ar.medi.heh"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="heh-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="34"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:262:5 -->
+ <Lookup index="34">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="heh-ar.medi" out="hehDoachashmee-ar.medi"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- calt_heh_5: &lt;features&gt;:267:5 in calt (arab/dflt) -->
+ <Lookup index="35">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="hehDoachashmee-ar.medi.heh"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="hehDoachashmee-ar.medi.heh"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="hehDoachashmee-ar.medi"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="36"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:267:5 -->
+ <Lookup index="36">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="hehDoachashmee-ar.medi.heh" out="heh-ar.medi.meem"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- calt_yeh: &lt;features&gt;:272:5 in calt (arab/dflt) -->
+ <Lookup index="37">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="hah-ar.medi"/>
+ <Glyph value="hah-ar.init"/>
+ <Glyph value="seen-ar.medi"/>
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="sad-ar.init"/>
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="ain-ar.medi"/>
+ <Glyph value="ain-ar.init"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.init"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.init"/>
+ <Glyph value="meem-ar.medi"/>
+ <Glyph value="meem-ar.init"/>
+ <Glyph value="heh-ar.medi"/>
+ <Glyph value="heh-ar.init"/>
+ <Glyph value="hehgoal-ar.init"/>
+ <Glyph value="hehDoachashmee-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="alefMaksura-ar.fina"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="38"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:272:5 -->
+ <Lookup index="38">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="ain-ar.init" out="ain-ar.init.yeh"/>
+ <Substitution in="ain-ar.medi" out="ain-ar.medi.yeh"/>
+ <Substitution in="behDotless-ar.init" out="behDotless-ar.init.yeh"/>
+ <Substitution in="behDotless-ar.medi" out="behDotless-ar.medi.yeh"/>
+ <Substitution in="fehDotless-ar.init" out="fehDotless-ar.init.yeh"/>
+ <Substitution in="fehDotless-ar.medi" out="fehDotless-ar.medi.yeh"/>
+ <Substitution in="hah-ar.init" out="hah-ar.init.yeh"/>
+ <Substitution in="hah-ar.medi" out="hah-ar.medi.yeh"/>
+ <Substitution in="heh-ar.init" out="heh-ar.init.yeh"/>
+ <Substitution in="heh-ar.medi" out="heh-ar.medi.yeh"/>
+ <Substitution in="hehDoachashmee-ar.medi" out="hehDoachashmee-ar.medi.yeh"/>
+ <Substitution in="hehgoal-ar.init" out="hehgoal-ar.init.yeh"/>
+ <Substitution in="kaf-ar.init" out="kaf-ar.init.yeh"/>
+ <Substitution in="kaf-ar.medi" out="kaf-ar.medi.yeh"/>
+ <Substitution in="lam-ar.init" out="lam-ar.init.yeh"/>
+ <Substitution in="lam-ar.medi" out="lam-ar.medi.yeh"/>
+ <Substitution in="meem-ar.init" out="meem-ar.init.yeh"/>
+ <Substitution in="meem-ar.medi" out="meem-ar.medi.yeh"/>
+ <Substitution in="sad-ar.init" out="sad-ar.init.yeh"/>
+ <Substitution in="sad-ar.medi" out="sad-ar.medi.yeh"/>
+ <Substitution in="seen-ar.init" out="seen-ar.init.yeh"/>
+ <Substitution in="seen-ar.medi" out="seen-ar.medi.yeh"/>
+ <Substitution in="tah-ar.init" out="tah-ar.init.yeh"/>
+ <Substitution in="tah-ar.medi" out="tah-ar.medi.yeh"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- calt_yeh_by_yeh: &lt;features&gt;:278:5 in calt (arab/dflt) -->
+ <Lookup index="39">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="behDotless-ar.init.yeh"/>
+ <Glyph value="fehDotless-ar.init.yeh"/>
+ <Glyph value="kaf-ar.init.yeh"/>
+ <Glyph value="lam-ar.init.yeh"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="alefMaksura-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="40"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:278:5 -->
+ <Lookup index="40">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="alefMaksura-ar.fina" out="alefMaksura-ar.fina.yeh"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- calt_kaf_alef: &lt;features&gt;:284:5 in calt (arab/dflt) -->
+ <Lookup index="41">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="kaf-ar.init"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="alef-ar.fina"/>
+ <Glyph value="kaf-ar.fina"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.medi.ain"/>
+ <Glyph value="kaf-ar.medi.dal"/>
+ <Glyph value="kaf-ar.medi.feh"/>
+ <Glyph value="kaf-ar.medi.hah"/>
+ <Glyph value="kaf-ar.medi.heh"/>
+ <Glyph value="kaf-ar.medi.meem"/>
+ <Glyph value="kaf-ar.medi.ragaa"/>
+ <Glyph value="kaf-ar.medi.reh"/>
+ <Glyph value="kaf-ar.medi.sad"/>
+ <Glyph value="kaf-ar.medi.yeh"/>
+ <Glyph value="keheh-ar.fina"/>
+ <Glyph value="keheh-ar.fina.jalt"/>
+ <Glyph value="lam-ar.fina"/>
+ <Glyph value="lam-ar.fina.jalt"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.medi.ain"/>
+ <Glyph value="lam-ar.medi.alef"/>
+ <Glyph value="lam-ar.medi.dal"/>
+ <Glyph value="lam-ar.medi.feh"/>
+ <Glyph value="lam-ar.medi.hah"/>
+ <Glyph value="lam-ar.medi.heh"/>
+ <Glyph value="lam-ar.medi.meem"/>
+ <Glyph value="lam-ar.medi.ragaa"/>
+ <Glyph value="lam-ar.medi.reh"/>
+ <Glyph value="lam-ar.medi.sad"/>
+ <Glyph value="lam-ar.medi.yeh"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="42"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:284:5 -->
+ <Lookup index="42">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="kaf-ar.init" out="kaf-ar.init.alef"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- calt_kaf_kaf_kaf: &lt;features&gt;:289:5 in calt (arab/dflt) -->
+ <Lookup index="43">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="kaf-ar.init.alef"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="kaf-ar.init.alef"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="alef-ar.fina"/>
+ <Glyph value="kaf-ar.fina"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.medi.ain"/>
+ <Glyph value="kaf-ar.medi.dal"/>
+ <Glyph value="kaf-ar.medi.feh"/>
+ <Glyph value="kaf-ar.medi.hah"/>
+ <Glyph value="kaf-ar.medi.heh"/>
+ <Glyph value="kaf-ar.medi.meem"/>
+ <Glyph value="kaf-ar.medi.ragaa"/>
+ <Glyph value="kaf-ar.medi.reh"/>
+ <Glyph value="kaf-ar.medi.sad"/>
+ <Glyph value="kaf-ar.medi.yeh"/>
+ <Glyph value="keheh-ar.fina"/>
+ <Glyph value="keheh-ar.fina.jalt"/>
+ <Glyph value="lam-ar.fina"/>
+ <Glyph value="lam-ar.fina.jalt"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.medi.ain"/>
+ <Glyph value="lam-ar.medi.alef"/>
+ <Glyph value="lam-ar.medi.dal"/>
+ <Glyph value="lam-ar.medi.feh"/>
+ <Glyph value="lam-ar.medi.hah"/>
+ <Glyph value="lam-ar.medi.heh"/>
+ <Glyph value="lam-ar.medi.meem"/>
+ <Glyph value="lam-ar.medi.ragaa"/>
+ <Glyph value="lam-ar.medi.reh"/>
+ <Glyph value="lam-ar.medi.sad"/>
+ <Glyph value="lam-ar.medi.yeh"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="44"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:289:5 -->
+ <Lookup index="44">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="kaf-ar.init.alef" out="kaf-ar.medi"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- calt_kaf_init_medi: &lt;features&gt;:294:5 in calt (arab/dflt) -->
+ <Lookup index="45">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="hah-ar.medi"/>
+ <Glyph value="hah-ar.init"/>
+ <Glyph value="seen-ar.medi"/>
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="sad-ar.init"/>
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="ain-ar.medi"/>
+ <Glyph value="ain-ar.init"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.init"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.init"/>
+ <Glyph value="meem-ar.medi"/>
+ <Glyph value="meem-ar.init"/>
+ <Glyph value="heh-ar.init"/>
+ <Glyph value="hehDoachashmee-ar.medi"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="kaf-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="alef-ar.fina"/>
+ <Glyph value="kaf-ar.fina"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.medi.ain"/>
+ <Glyph value="kaf-ar.medi.dal"/>
+ <Glyph value="kaf-ar.medi.feh"/>
+ <Glyph value="kaf-ar.medi.hah"/>
+ <Glyph value="kaf-ar.medi.heh"/>
+ <Glyph value="kaf-ar.medi.meem"/>
+ <Glyph value="kaf-ar.medi.ragaa"/>
+ <Glyph value="kaf-ar.medi.reh"/>
+ <Glyph value="kaf-ar.medi.sad"/>
+ <Glyph value="kaf-ar.medi.yeh"/>
+ <Glyph value="keheh-ar.fina"/>
+ <Glyph value="keheh-ar.fina.jalt"/>
+ <Glyph value="lam-ar.fina"/>
+ <Glyph value="lam-ar.fina.jalt"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.medi.ain"/>
+ <Glyph value="lam-ar.medi.alef"/>
+ <Glyph value="lam-ar.medi.dal"/>
+ <Glyph value="lam-ar.medi.feh"/>
+ <Glyph value="lam-ar.medi.hah"/>
+ <Glyph value="lam-ar.medi.heh"/>
+ <Glyph value="lam-ar.medi.meem"/>
+ <Glyph value="lam-ar.medi.ragaa"/>
+ <Glyph value="lam-ar.medi.reh"/>
+ <Glyph value="lam-ar.medi.sad"/>
+ <Glyph value="lam-ar.medi.yeh"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="46"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:294:5 -->
+ <Lookup index="46">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="kaf-ar.medi" out="kaf-ar.init.alef"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- calt_lamalef: &lt;features&gt;:299:5 in calt (arab/dflt) -->
+ <Lookup index="47">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.init"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="alef-ar.fina"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="48"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:299:5 -->
+ <Lookup index="48">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="lam-ar.init" out="lam-ar.init.alef"/>
+ <Substitution in="lam-ar.medi" out="lam-ar.medi.alef"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- calt_alef: &lt;features&gt;:304:5 in calt (arab/dflt) -->
+ <Lookup index="49">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="lam-ar.medi.alef"/>
+ <Glyph value="lam-ar.init.alef"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="alef-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="50"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:304:5 -->
+ <Lookup index="50">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="alef-ar.fina" out="alef-ar.fina.lam"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- calt_beh_1: &lt;features&gt;:309:5 in calt (arab/dflt) -->
+ <Lookup index="51">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="noon-ar.fina"/>
+ <Glyph value="noonghunna-ar.jalt"/>
+ <Glyph value="noonghunna-ar.fina"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="52"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:309:5 -->
+ <Lookup index="52">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="behDotless-ar.medi" out="behDotless-ar.medi.noon"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- calt_beh_2: &lt;features&gt;:315:5 in calt (arab/dflt) -->
+ <Lookup index="53">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.init"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="alef-ar.fina"/>
+ <Glyph value="behDotless-ar.fina"/>
+ <Glyph value="behDotless-ar.fina.jalt"/>
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.medi.ain"/>
+ <Glyph value="behDotless-ar.medi.dal"/>
+ <Glyph value="behDotless-ar.medi.feh"/>
+ <Glyph value="behDotless-ar.medi.hah"/>
+ <Glyph value="behDotless-ar.medi.heh"/>
+ <Glyph value="behDotless-ar.medi.meem"/>
+ <Glyph value="behDotless-ar.medi.reh"/>
+ <Glyph value="behDotless-ar.medi.sad"/>
+ <Glyph value="behDotless-ar.medi.yeh"/>
+ <Glyph value="kaf-ar.fina"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.medi.ain"/>
+ <Glyph value="kaf-ar.medi.dal"/>
+ <Glyph value="kaf-ar.medi.feh"/>
+ <Glyph value="kaf-ar.medi.hah"/>
+ <Glyph value="kaf-ar.medi.heh"/>
+ <Glyph value="kaf-ar.medi.meem"/>
+ <Glyph value="kaf-ar.medi.reh"/>
+ <Glyph value="kaf-ar.medi.sad"/>
+ <Glyph value="kaf-ar.medi.yeh"/>
+ <Glyph value="kaf-ar.init.alef"/>
+ <Glyph value="keheh-ar.fina"/>
+ <Glyph value="keheh-ar.fina.jalt"/>
+ <Glyph value="lam-ar.fina"/>
+ <Glyph value="lam-ar.fina.jalt"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.medi.ain"/>
+ <Glyph value="lam-ar.medi.alef"/>
+ <Glyph value="lam-ar.medi.dal"/>
+ <Glyph value="lam-ar.medi.feh"/>
+ <Glyph value="lam-ar.medi.hah"/>
+ <Glyph value="lam-ar.medi.heh"/>
+ <Glyph value="lam-ar.medi.meem"/>
+ <Glyph value="lam-ar.medi.reh"/>
+ <Glyph value="lam-ar.medi.sad"/>
+ <Glyph value="lam-ar.medi.yeh"/>
+ <Glyph value="noon-ar.fina"/>
+ <Glyph value="noonghunna-ar.fina"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="54"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:315:5 -->
+ <Lookup index="54">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="behDotless-ar.init" out="behDotless-ar.init.ascend"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- calt_beh_3: &lt;features&gt;:320:5 in calt (arab/dflt) -->
+ <Lookup index="55">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="behDotless-ar.init.ascend"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="behDotless-ar.fina"/>
+ <Glyph value="behDotless-ar.fina.jalt"/>
+ <Glyph value="behDotless-ar.medi"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="56"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:320:5 -->
+ <Lookup index="56">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="behDotless-ar.medi" out="behDotless-ar.medi.high"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- high_beh: &lt;features&gt;:325:5 -->
+ <Lookup index="57">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="behDotless-ar.medi" out="behDotless-ar.medi.high2"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- calt_beh_4: &lt;features&gt;:332:5 in calt (arab/dflt) -->
+ <Lookup index="58">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="2">
+ <Coverage>
+ <Glyph value="behDotless-ar.medi"/>
+ </Coverage>
+ <BacktrackClassDef>
+ <ClassDef glyph="behDotless-ar.init.ascend" class="6"/>
+ <ClassDef glyph="behDotless-ar.medi" class="5"/>
+ <ClassDef glyph="behDotless-ar.medi.high" class="4"/>
+ <ClassDef glyph="sad-ar.init" class="3"/>
+ <ClassDef glyph="sad-ar.medi" class="2"/>
+ <ClassDef glyph="seen-ar.medi" class="1"/>
+ </BacktrackClassDef>
+ <InputClassDef>
+ <ClassDef glyph="behDotless-ar.medi" class="1"/>
+ </InputClassDef>
+ <LookAheadClassDef>
+ <ClassDef glyph="behDotless-ar.fina" class="5"/>
+ <ClassDef glyph="behDotless-ar.medi" class="4"/>
+ <ClassDef glyph="behDotless-ar.medi.ain" class="2"/>
+ <ClassDef glyph="behDotless-ar.medi.dal" class="3"/>
+ <ClassDef glyph="behDotless-ar.medi.feh" class="2"/>
+ <ClassDef glyph="behDotless-ar.medi.hah" class="2"/>
+ <ClassDef glyph="behDotless-ar.medi.heh" class="2"/>
+ <ClassDef glyph="behDotless-ar.medi.meem" class="2"/>
+ <ClassDef glyph="behDotless-ar.medi.reh" class="2"/>
+ <ClassDef glyph="behDotless-ar.medi.sad" class="2"/>
+ <ClassDef glyph="behDotless-ar.medi.yeh" class="2"/>
+ <ClassDef glyph="seen-ar.fina" class="1"/>
+ <ClassDef glyph="seen-ar.fina.jalt" class="1"/>
+ <ClassDef glyph="seen-ar.medi" class="1"/>
+ <ClassDef glyph="seen-ar.medi.ain" class="1"/>
+ <ClassDef glyph="seen-ar.medi.dal" class="1"/>
+ <ClassDef glyph="seen-ar.medi.feh" class="1"/>
+ <ClassDef glyph="seen-ar.medi.hah" class="1"/>
+ <ClassDef glyph="seen-ar.medi.heh" class="1"/>
+ <ClassDef glyph="seen-ar.medi.meem" class="1"/>
+ <ClassDef glyph="seen-ar.medi.ragaa" class="1"/>
+ <ClassDef glyph="seen-ar.medi.reh" class="1"/>
+ <ClassDef glyph="seen-ar.medi.sad" class="1"/>
+ <ClassDef glyph="seen-ar.medi.yeh" class="1"/>
+ </LookAheadClassDef>
+ <!-- ChainSubClassSetCount=2 -->
+ <ChainSubClassSet index="0">
+ <!-- ChainSubClassRuleCount=0 -->
+ </ChainSubClassSet>
+ <ChainSubClassSet index="1">
+ <!-- ChainSubClassRuleCount=10 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="5"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="4"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ <ChainSubClassRule index="1">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="5"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="3"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ <ChainSubClassRule index="2">
+ <!-- BacktrackGlyphCount=3 -->
+ <Backtrack index="0" value="5"/>
+ <Backtrack index="1" value="4"/>
+ <Backtrack index="2" value="6"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ <ChainSubClassRule index="3">
+ <!-- BacktrackGlyphCount=4 -->
+ <Backtrack index="0" value="5"/>
+ <Backtrack index="1" value="5"/>
+ <Backtrack index="2" value="4"/>
+ <Backtrack index="3" value="6"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ <ChainSubClassRule index="4">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ <ChainSubClassRule index="5">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="6"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="2"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ <ChainSubClassRule index="6">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="5"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="2"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ <ChainSubClassRule index="7">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="1"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="5"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ <ChainSubClassRule index="8">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="3"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="4"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ <ChainSubClassRule index="9">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="2"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="4"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ </ChainContextSubst>
+ </Lookup>
+ <!-- sub_chain_caltarab_36: &lt;features&gt;:346:5 in calt (arab/dflt) -->
+ <Lookup index="59">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=10 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ <ChainContextSubst index="1" Format="3">
+ <!-- BacktrackGlyphCount=3 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </BacktrackCoverage>
+ <BacktrackCoverage index="1">
+ <Glyph value="behDotless-ar.medi.high"/>
+ </BacktrackCoverage>
+ <BacktrackCoverage index="2">
+ <Glyph value="behDotless-ar.init.ascend"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ <ChainContextSubst index="2" Format="3">
+ <!-- BacktrackGlyphCount=4 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </BacktrackCoverage>
+ <BacktrackCoverage index="1">
+ <Glyph value="behDotless-ar.medi"/>
+ </BacktrackCoverage>
+ <BacktrackCoverage index="2">
+ <Glyph value="behDotless-ar.medi.high"/>
+ </BacktrackCoverage>
+ <BacktrackCoverage index="3">
+ <Glyph value="behDotless-ar.init.ascend"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ <ChainContextSubst index="3" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="seen-ar.fina"/>
+ <Glyph value="seen-ar.fina.jalt"/>
+ <Glyph value="seen-ar.medi"/>
+ <Glyph value="seen-ar.medi.ain"/>
+ <Glyph value="seen-ar.medi.dal"/>
+ <Glyph value="seen-ar.medi.feh"/>
+ <Glyph value="seen-ar.medi.hah"/>
+ <Glyph value="seen-ar.medi.heh"/>
+ <Glyph value="seen-ar.medi.meem"/>
+ <Glyph value="seen-ar.medi.ragaa"/>
+ <Glyph value="seen-ar.medi.reh"/>
+ <Glyph value="seen-ar.medi.sad"/>
+ <Glyph value="seen-ar.medi.yeh"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ <ChainContextSubst index="4" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="behDotless-ar.init.ascend"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="behDotless-ar.medi.ain"/>
+ <Glyph value="behDotless-ar.medi.feh"/>
+ <Glyph value="behDotless-ar.medi.hah"/>
+ <Glyph value="behDotless-ar.medi.heh"/>
+ <Glyph value="behDotless-ar.medi.meem"/>
+ <Glyph value="behDotless-ar.medi.reh"/>
+ <Glyph value="behDotless-ar.medi.sad"/>
+ <Glyph value="behDotless-ar.medi.yeh"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ <ChainContextSubst index="5" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="behDotless-ar.medi.ain"/>
+ <Glyph value="behDotless-ar.medi.feh"/>
+ <Glyph value="behDotless-ar.medi.hah"/>
+ <Glyph value="behDotless-ar.medi.heh"/>
+ <Glyph value="behDotless-ar.medi.meem"/>
+ <Glyph value="behDotless-ar.medi.reh"/>
+ <Glyph value="behDotless-ar.medi.sad"/>
+ <Glyph value="behDotless-ar.medi.yeh"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ <ChainContextSubst index="6" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="seen-ar.medi"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="behDotless-ar.fina"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ <ChainContextSubst index="7" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="sad-ar.init"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ <ChainContextSubst index="8" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="sad-ar.medi"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ <ChainContextSubst index="9" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="seen-ar.medi"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="behDotless-ar.medi.sad"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <!-- calt_beh_5: &lt;features&gt;:360:5 in calt (arab/dflt) -->
+ <Lookup index="60">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="behDotless-ar.medi.high2"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi.high2"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="61"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:360:5 -->
+ <Lookup index="61">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="behDotless-ar.medi.high2" out="behDotless-ar.medi"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- kaf_lam_tah: &lt;features&gt;:365:5 -->
+ <Lookup index="62">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="kaf-ar.medi" out="kaf-ar.medi.kaf"/>
+ <Substitution in="lam-ar.init" out="lam-ar.init.kaf"/>
+ <Substitution in="lam-ar.medi" out="lam-ar.medi.kaf"/>
+ <Substitution in="tah-ar.init" out="tah-ar.init.kaf"/>
+ <Substitution in="tah-ar.medi" out="tah-ar.medi.kaf"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- calt_kaf_lam_tah: &lt;features&gt;:374:5 in calt (arab/dflt) -->
+ <Lookup index="63">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=2 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.init"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="kaf-ar.init.alef"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="62"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ <ChainContextSubst index="1" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="kaf-ar.init.alef"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.init"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="kaf-ar.init.alef"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="62"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <!-- calt_yeh_ragaa: &lt;features&gt;:380:5 in calt (arab/dflt) -->
+ <Lookup index="64">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=2 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="hah-ar.medi"/>
+ <Glyph value="hah-ar.init"/>
+ <Glyph value="seen-ar.medi"/>
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="sad-ar.init"/>
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="ain-ar.medi"/>
+ <Glyph value="ain-ar.init"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.init"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.init"/>
+ <Glyph value="meem-ar.medi"/>
+ <Glyph value="meem-ar.init"/>
+ <Glyph value="heh-ar.medi"/>
+ <Glyph value="heh-ar.init"/>
+ <Glyph value="hehgoal-ar.init"/>
+ <Glyph value="hehDoachashmee-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="yehbarree-ar.fina"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="65"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ <ChainContextSubst index="1" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi.high2"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="yehbarree-ar.fina"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="65"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:380:5 -->
+ <Lookup index="65">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="ain-ar.init" out="ain-ar.init.ragaa"/>
+ <Substitution in="ain-ar.medi" out="ain-ar.medi.ragaa"/>
+ <Substitution in="behDotless-ar.init" out="behDotless-ar.init.ragaa"/>
+ <Substitution in="behDotless-ar.medi" out="behDotless-ar.medi.ragaa"/>
+ <Substitution in="behDotless-ar.medi.high2" out="behDotless-ar.medi.ragaa"/>
+ <Substitution in="fehDotless-ar.init" out="fehDotless-ar.init.ragaa"/>
+ <Substitution in="fehDotless-ar.medi" out="fehDotless-ar.medi.ragaa"/>
+ <Substitution in="hah-ar.init" out="hah-ar.init.ragaa"/>
+ <Substitution in="hah-ar.medi" out="hah-ar.medi.ragaa"/>
+ <Substitution in="heh-ar.init" out="heh-ar.init.ragaa"/>
+ <Substitution in="heh-ar.medi" out="heh-ar.medi.ragaa"/>
+ <Substitution in="hehDoachashmee-ar.medi" out="hehDoachashmee-ar.medi.ragaa"/>
+ <Substitution in="hehgoal-ar.init" out="hehgoal-ar.init.ragaa"/>
+ <Substitution in="kaf-ar.init" out="kaf-ar.init.ragaa"/>
+ <Substitution in="kaf-ar.medi" out="kaf-ar.medi.ragaa"/>
+ <Substitution in="lam-ar.init" out="lam-ar.init.ragaa"/>
+ <Substitution in="lam-ar.medi" out="lam-ar.medi.ragaa"/>
+ <Substitution in="meem-ar.init" out="meem-ar.init.ragaa"/>
+ <Substitution in="meem-ar.medi" out="meem-ar.medi.ragaa"/>
+ <Substitution in="sad-ar.init" out="sad-ar.init.ragaa"/>
+ <Substitution in="sad-ar.medi" out="sad-ar.medi.ragaa"/>
+ <Substitution in="seen-ar.init" out="seen-ar.init.ragaa"/>
+ <Substitution in="seen-ar.medi" out="seen-ar.medi.ragaa"/>
+ <Substitution in="tah-ar.init" out="tah-ar.init.ragaa"/>
+ <Substitution in="tah-ar.medi" out="tah-ar.medi.ragaa"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- calt_hah_yeh_ragaa: &lt;features&gt;:386:5 in calt (arab/dflt) -->
+ <Lookup index="66">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="hah-ar.medi.heh"/>
+ <Glyph value="hah-ar.init.heh"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="heh-ar.medi.ragaa"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="67"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:386:5 -->
+ <Lookup index="67">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="hah-ar.init.heh" out="hah-ar.init.heh.ragaa"/>
+ <Substitution in="hah-ar.medi.heh" out="hah-ar.medi.heh.ragaa"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- calt_sad_ragaa: &lt;features&gt;:391:5 in calt (arab/dflt) -->
+ <Lookup index="68">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi.sad"/>
+ <Glyph value="behDotless-ar.init.sad"/>
+ <Glyph value="hah-ar.medi.sad"/>
+ <Glyph value="hah-ar.init.sad"/>
+ <Glyph value="seen-ar.medi.sad"/>
+ <Glyph value="seen-ar.init.sad"/>
+ <Glyph value="sad-ar.medi.qantara"/>
+ <Glyph value="sad-ar.init.qantara"/>
+ <Glyph value="tah-ar.medi.qantara"/>
+ <Glyph value="tah-ar.init.qantara"/>
+ <Glyph value="ain-ar.medi.sad"/>
+ <Glyph value="ain-ar.init.sad"/>
+ <Glyph value="fehDotless-ar.medi.sad"/>
+ <Glyph value="fehDotless-ar.init.sad"/>
+ <Glyph value="kaf-ar.medi.sad"/>
+ <Glyph value="kaf-ar.init.sad"/>
+ <Glyph value="lam-ar.medi.sad"/>
+ <Glyph value="lam-ar.init.sad"/>
+ <Glyph value="meem-ar.medi.sad"/>
+ <Glyph value="meem-ar.init.sad"/>
+ <Glyph value="heh-ar.medi.sad"/>
+ <Glyph value="heh-ar.init.sad"/>
+ <Glyph value="hehgoal-ar.init.sad"/>
+ <Glyph value="hehDoachashmee-ar.medi.sad"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="sad-ar.medi.ragaa"/>
+ <Glyph value="tah-ar.medi.ragaa"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="69"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:391:5 -->
+ <Lookup index="69">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="ain-ar.init.sad" out="ain-ar.init"/>
+ <Substitution in="ain-ar.medi.sad" out="ain-ar.medi"/>
+ <Substitution in="behDotless-ar.init.sad" out="behDotless-ar.init"/>
+ <Substitution in="behDotless-ar.medi.sad" out="behDotless-ar.medi"/>
+ <Substitution in="fehDotless-ar.init.sad" out="fehDotless-ar.init"/>
+ <Substitution in="fehDotless-ar.medi.sad" out="fehDotless-ar.medi"/>
+ <Substitution in="hah-ar.init.sad" out="hah-ar.init"/>
+ <Substitution in="hah-ar.medi.sad" out="hah-ar.medi"/>
+ <Substitution in="heh-ar.init.sad" out="heh-ar.init"/>
+ <Substitution in="heh-ar.medi.sad" out="heh-ar.medi"/>
+ <Substitution in="hehDoachashmee-ar.medi.sad" out="hehDoachashmee-ar.medi"/>
+ <Substitution in="hehgoal-ar.init.sad" out="hehgoal-ar.init"/>
+ <Substitution in="kaf-ar.init.sad" out="kaf-ar.init"/>
+ <Substitution in="kaf-ar.medi.sad" out="kaf-ar.medi"/>
+ <Substitution in="lam-ar.init.sad" out="lam-ar.init"/>
+ <Substitution in="lam-ar.medi.sad" out="lam-ar.medi"/>
+ <Substitution in="meem-ar.init.sad" out="meem-ar.init"/>
+ <Substitution in="meem-ar.medi.sad" out="meem-ar.medi"/>
+ <Substitution in="sad-ar.init.qantara" out="sad-ar.init"/>
+ <Substitution in="sad-ar.medi.qantara" out="sad-ar.medi"/>
+ <Substitution in="seen-ar.init.sad" out="seen-ar.init"/>
+ <Substitution in="seen-ar.medi.sad" out="seen-ar.medi"/>
+ <Substitution in="tah-ar.init.qantara" out="tah-ar.init"/>
+ <Substitution in="tah-ar.medi.qantara" out="tah-ar.medi"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- calt_looped_kaf_1: &lt;features&gt;:396:5 in calt (arab/dflt) -->
+ <Lookup index="70">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="1">
+ <Coverage>
+ <Glyph value="kaf-ar.init.alef"/>
+ </Coverage>
+ <!-- ChainSubRuleSetCount=1 -->
+ <ChainSubRuleSet index="0">
+ <!-- ChainSubRuleCount=2 -->
+ <ChainSubRule index="0">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="fehDotless-ar.init"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="71"/>
+ </SubstLookupRecord>
+ </ChainSubRule>
+ <ChainSubRule index="1">
+ <!-- BacktrackGlyphCount=2 -->
+ <Backtrack index="0" value="meem-ar.medi"/>
+ <Backtrack index="1" value="lam-ar.init.meem"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="72"/>
+ </SubstLookupRecord>
+ </ChainSubRule>
+ </ChainSubRuleSet>
+ </ChainContextSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:396:5 -->
+ <Lookup index="71">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="kaf-ar.init.alef" out="kaf-ar.init.alef.loop"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:397:5 -->
+ <Lookup index="72">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="kaf-ar.init.alef" out="kaf-ar.init.alef.loop"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- calt_looped_kaf_2: &lt;features&gt;:403:5 in calt (arab/dflt) -->
+ <Lookup index="73">
+ <LookupType value="6"/>
+ <LookupFlag value="16"/><!-- useMarkFilteringSet -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=2 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="dotabove-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="threedotsupabove-ar"/>
+ </BacktrackCoverage>
+ <BacktrackCoverage index="1">
+ <Glyph value="ain-ar.init"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="kaf-ar.init.alef"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="74"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ <MarkFilteringSet value="0"/>
+ </Lookup>
+ <!-- &lt;features&gt;:403:5 -->
+ <Lookup index="74">
+ <LookupType value="1"/>
+ <LookupFlag value="16"/><!-- useMarkFilteringSet -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="kaf-ar.init.alef" out="kaf-ar.init.alef.loop"/>
+ </SingleSubst>
+ <MarkFilteringSet value="0"/>
+ </Lookup>
+ <!-- calt_postsad: &lt;features&gt;:408:5 in calt (arab/dflt) -->
+ <Lookup index="75">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="behDotless-ar.medi.sad"/>
+ <Glyph value="behDotless-ar.init.sad"/>
+ <Glyph value="hah-ar.medi.sad"/>
+ <Glyph value="hah-ar.init.sad"/>
+ <Glyph value="seen-ar.medi.sad"/>
+ <Glyph value="seen-ar.init.sad"/>
+ <Glyph value="sad-ar.medi.qantara"/>
+ <Glyph value="sad-ar.init.qantara"/>
+ <Glyph value="tah-ar.medi.qantara"/>
+ <Glyph value="tah-ar.init.qantara"/>
+ <Glyph value="ain-ar.medi.sad"/>
+ <Glyph value="ain-ar.init.sad"/>
+ <Glyph value="fehDotless-ar.medi.sad"/>
+ <Glyph value="fehDotless-ar.init.sad"/>
+ <Glyph value="kaf-ar.medi.sad"/>
+ <Glyph value="kaf-ar.init.sad"/>
+ <Glyph value="lam-ar.medi.sad"/>
+ <Glyph value="lam-ar.init.sad"/>
+ <Glyph value="meem-ar.medi.sad"/>
+ <Glyph value="meem-ar.init.sad"/>
+ <Glyph value="heh-ar.medi.sad"/>
+ <Glyph value="heh-ar.init.sad"/>
+ <Glyph value="hehgoal-ar.init.sad"/>
+ <Glyph value="hehDoachashmee-ar.medi.sad"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="tah-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="76"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:408:5 -->
+ <Lookup index="76">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="sad-ar.medi" out="sad-ar.medi.postsad"/>
+ <Substitution in="tah-ar.medi" out="tah-ar.medi.postsad"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- calt_alefabove: &lt;features&gt;:412:5 in calt (arab/dflt) -->
+ <Lookup index="77">
+ <LookupType value="5"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <ContextSubst index="0" Format="1">
+ <Coverage>
+ <Glyph value="space"/>
+ <Glyph value="kashida-ar"/>
+ </Coverage>
+ <!-- SubRuleSetCount=2 -->
+ <SubRuleSet index="0">
+ <!-- SubRuleCount=1 -->
+ <SubRule index="0">
+ <!-- GlyphCount=2 -->
+ <!-- SubstCount=1 -->
+ <Input index="0" value="alefabove-ar"/>
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="78"/>
+ </SubstLookupRecord>
+ </SubRule>
+ </SubRuleSet>
+ <SubRuleSet index="1">
+ <!-- SubRuleCount=1 -->
+ <SubRule index="0">
+ <!-- GlyphCount=2 -->
+ <!-- SubstCount=1 -->
+ <Input index="0" value="alefabove-ar"/>
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="79"/>
+ </SubstLookupRecord>
+ </SubRule>
+ </SubRuleSet>
+ </ContextSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:412:5 -->
+ <Lookup index="78">
+ <LookupType value="4"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <LigatureSubst index="0">
+ <LigatureSet glyph="space">
+ <Ligature components="alefabove-ar" glyph="alefabove-ar.isol"/>
+ </LigatureSet>
+ </LigatureSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:413:5 -->
+ <Lookup index="79">
+ <LookupType value="4"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <LigatureSubst index="0">
+ <LigatureSet glyph="kashida-ar">
+ <Ligature components="alefabove-ar" glyph="alefabove-ar.medi"/>
+ </LigatureSet>
+ </LigatureSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:454:5 in jalt (arab/dflt) -->
+ <Lookup index="80">
+ <LookupType value="2"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <MultipleSubst index="0">
+ <Substitution in="alefMaksura-ar" out="alefMaksura-ar.jalt"/>
+ <Substitution in="alefMaksura-ar.fina" out="alefMaksura-ar.fina.jalt"/>
+ <Substitution in="alefMaksura-ar.fina.yeh" out="alefMaksura-ar.fina.yeh.jalt"/>
+ <Substitution in="behDotless-ar" out="behDotless-ar.jalt"/>
+ <Substitution in="behDotless-ar.fina" out="behDotless-ar.fina.jalt"/>
+ <Substitution in="fehDotless-ar" out="fehDotless-ar.jalt"/>
+ <Substitution in="fehDotless-ar.fina" out="fehDotless-ar.fina.jalt"/>
+ <Substitution in="kaf-ar" out="kaf-ar.jalt"/>
+ <Substitution in="kaf-ar.fina" out="kaf-ar.fina.jalt"/>
+ <Substitution in="keheh-ar" out="keheh-ar.jalt"/>
+ <Substitution in="keheh-ar.fina" out="keheh-ar.fina.jalt"/>
+ <Substitution in="lam-ar" out="lam-ar.jalt"/>
+ <Substitution in="lam-ar.fina" out="lam-ar.fina.jalt"/>
+ <Substitution in="noon-ar" out="noonghunna-ar.jalt,dotabove-ar"/>
+ <Substitution in="noon-ar.fina" out="noonghunna-ar.jalt,dotabove-ar"/>
+ <Substitution in="noonghunna-ar" out="noonghunna-ar.jalt"/>
+ <Substitution in="noonghunna-ar.fina" out="noonghunna-ar.jalt"/>
+ <Substitution in="qaf-ar" out="qafDotless-ar.jalt,twodotshorizontalabove-ar"/>
+ <Substitution in="qaf-ar.fina" out="qafDotless-ar.fina.jalt,twodotshorizontalabove-ar"/>
+ <Substitution in="qafDotless-ar" out="qafDotless-ar.jalt"/>
+ <Substitution in="qafDotless-ar.fina" out="qafDotless-ar.fina.jalt"/>
+ <Substitution in="sad-ar" out="sad-ar.jalt"/>
+ <Substitution in="sad-ar.fina" out="sad-ar.fina.jalt"/>
+ <Substitution in="seen-ar" out="seen-ar.jalt"/>
+ <Substitution in="seen-ar.fina" out="seen-ar.fina.jalt"/>
+ </MultipleSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:487:5 in ss01 (arab/dflt) -->
+ <Lookup index="81">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="ain-ar.init.heh" out="ain-ar.init.meem"/>
+ <Substitution in="ain-ar.medi.heh" out="ain-ar.medi.meem"/>
+ <Substitution in="behDotless-ar.init.heh" out="behDotless-ar.init.meem"/>
+ <Substitution in="behDotless-ar.medi.heh" out="behDotless-ar.medi.meem"/>
+ <Substitution in="fehDotless-ar.init.heh" out="fehDotless-ar.init.meem"/>
+ <Substitution in="fehDotless-ar.medi.heh" out="fehDotless-ar.medi.meem"/>
+ <Substitution in="hah-ar.init.heh" out="hah-ar.init.meem"/>
+ <Substitution in="hah-ar.medi.heh" out="hah-ar.medi.meem"/>
+ <Substitution in="heh-ar.init.heh" out="heh-ar.init.meem"/>
+ <Substitution in="heh-ar.medi" out="hehDoachashmee-ar.medi"/>
+ <Substitution in="heh-ar.medi.ain" out="hehDoachashmee-ar.medi.ain"/>
+ <Substitution in="heh-ar.medi.dal" out="hehDoachashmee-ar.medi.dal"/>
+ <Substitution in="heh-ar.medi.feh" out="hehDoachashmee-ar.medi.feh"/>
+ <Substitution in="heh-ar.medi.hah" out="hehDoachashmee-ar.medi.hah"/>
+ <Substitution in="heh-ar.medi.heh" out="hehDoachashmee-ar.medi.heh"/>
+ <Substitution in="heh-ar.medi.meem" out="hehDoachashmee-ar.medi.meem"/>
+ <Substitution in="heh-ar.medi.reh" out="hehDoachashmee-ar.medi.reh"/>
+ <Substitution in="heh-ar.medi.sad" out="hehDoachashmee-ar.medi.sad"/>
+ <Substitution in="heh-ar.medi.yeh" out="hehDoachashmee-ar.medi.yeh"/>
+ <Substitution in="hehDoachashmee-ar.medi.heh" out="hehDoachashmee-ar.medi.meem"/>
+ <Substitution in="hehgoal-ar.init.heh" out="hehgoal-ar.init.meem"/>
+ <Substitution in="kaf-ar.init.heh" out="kaf-ar.init.meem"/>
+ <Substitution in="kaf-ar.medi.heh" out="kaf-ar.medi.meem"/>
+ <Substitution in="lam-ar.init.heh" out="lam-ar.init.meem"/>
+ <Substitution in="lam-ar.medi.heh" out="lam-ar.medi.meem"/>
+ <Substitution in="meem-ar.init.heh" out="meem-ar.init.meem"/>
+ <Substitution in="meem-ar.medi.heh" out="meem-ar.medi.meem"/>
+ <Substitution in="sad-ar.init.heh" out="sad-ar.init.meem"/>
+ <Substitution in="sad-ar.medi.heh" out="sad-ar.medi.meem"/>
+ <Substitution in="seen-ar.init" out="seen-ar.medi"/>
+ <Substitution in="seen-ar.init.heh" out="seen-ar.init.meem"/>
+ <Substitution in="seen-ar.medi.heh" out="seen-ar.medi.meem"/>
+ <Substitution in="tah-ar.init.heh" out="tah-ar.init.meem"/>
+ <Substitution in="tah-ar.medi.heh" out="tah-ar.medi.meem"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:529:5 in ss02 (arab/dflt) -->
+ <Lookup index="82">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="heh-ar.fina" out="hehgoal-ar.fina"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:538:5 in ss03 (arab/dflt) -->
+ <Lookup index="83">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="noon-ar" out="noon-ar.tail"/>
+ <Substitution in="noon-ar.fina" out="noon-ar.fina.tail"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:548:5 in ss04 (arab/dflt) -->
+ <Lookup index="84">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="kaf-ar.init.alef" out="kaf-ar.init.alef.loop"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:557:5 in ss05 (arab/dflt) -->
+ <Lookup index="85">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="two-ar" out="two-persian"/>
+ <Substitution in="two-persian" out="two-ar"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:566:5 in ss06 (arab/dflt) -->
+ <Lookup index="86">
+ <LookupType value="4"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <LigatureSubst index="0">
+ <LigatureSet glyph="seen-ar">
+ <Ligature components="threedotsupabove-ar" glyph="sheen-ar"/>
+ </LigatureSet>
+ </LigatureSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:575:5 in ss07 (arab/dflt) -->
+ <Lookup index="87">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="sad-ar.init.qantara" out="sad-ar.init.sad"/>
+ <Substitution in="sad-ar.medi.qantara" out="sad-ar.medi.sad"/>
+ <Substitution in="tah-ar.init.qantara" out="tah-ar.init.sad"/>
+ <Substitution in="tah-ar.medi.qantara" out="tah-ar.medi.sad"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:587:5 in ss08 (arab/dflt) -->
+ <Lookup index="88">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="sukun-ar" out="sukun-ar.alt"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:591:5 in numr (arab/dflt) -->
+ <Lookup index="89">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="eight-ar" out="eight-ar.numr"/>
+ <Substitution in="five-ar" out="five-ar.numr"/>
+ <Substitution in="five-persian" out="five-persian.numr"/>
+ <Substitution in="four-ar" out="four-ar.numr"/>
+ <Substitution in="four-persian" out="four-persian.numr"/>
+ <Substitution in="four-persian.urd" out="four-persian.urd.numr"/>
+ <Substitution in="nine-ar" out="nine-ar.numr"/>
+ <Substitution in="one-ar" out="one-ar.numr"/>
+ <Substitution in="seven-ar" out="seven-ar.numr"/>
+ <Substitution in="seven-persian" out="seven-ar.numr"/>
+ <Substitution in="seven-persian.urd" out="seven-persian.urd.numr"/>
+ <Substitution in="six-ar" out="six-ar.numr"/>
+ <Substitution in="six-persian" out="six-persian.numr"/>
+ <Substitution in="three-ar" out="three-ar.numr"/>
+ <Substitution in="two-ar" out="two-ar.numr"/>
+ <Substitution in="two-persian" out="two-persian.numr"/>
+ <Substitution in="zero-ar" out="zero-ar.numr"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:611:5 in dnom (arab/dflt) -->
+ <Lookup index="90">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="eight-ar" out="eight-ar.dnom"/>
+ <Substitution in="five-ar" out="five-ar.dnom"/>
+ <Substitution in="five-persian" out="five-persian.dnom"/>
+ <Substitution in="four-ar" out="four-ar.dnom"/>
+ <Substitution in="four-persian" out="four-persian.dnom"/>
+ <Substitution in="four-persian.urd" out="four-persian.urd.dnom"/>
+ <Substitution in="nine-ar" out="nine-ar.dnom"/>
+ <Substitution in="one-ar" out="one-ar.dnom"/>
+ <Substitution in="seven-ar" out="seven-ar.dnom"/>
+ <Substitution in="seven-persian" out="seven-ar.dnom"/>
+ <Substitution in="seven-persian.urd" out="seven-persian.urd.dnom"/>
+ <Substitution in="six-ar" out="six-ar.dnom"/>
+ <Substitution in="six-persian" out="six-persian.dnom"/>
+ <Substitution in="three-ar" out="three-ar.dnom"/>
+ <Substitution in="two-ar" out="two-ar.dnom"/>
+ <Substitution in="two-persian" out="two-persian.dnom"/>
+ <Substitution in="zero-ar" out="zero-ar.dnom"/>
+ </SingleSubst>
+ </Lookup>
+ </LookupList>
+ </GSUB>
+
+ <hmtx>
+ <mtx name=".notdef" width="500" lsb="50"/>
+ <mtx name="ae-ar" width="247" lsb="0"/>
+ <mtx name="ain-ar" width="683" lsb="0"/>
+ <mtx name="ain-ar.fina" width="341" lsb="0"/>
+ <mtx name="ain-ar.init" width="520" lsb="0"/>
+ <mtx name="ain-ar.init.ain" width="716" lsb="0"/>
+ <mtx name="ain-ar.init.dal" width="552" lsb="0"/>
+ <mtx name="ain-ar.init.feh" width="756" lsb="0"/>
+ <mtx name="ain-ar.init.hah" width="486" lsb="0"/>
+ <mtx name="ain-ar.init.heh" width="643" lsb="0"/>
+ <mtx name="ain-ar.init.meem" width="515" lsb="0"/>
+ <mtx name="ain-ar.init.ragaa" width="678" lsb="0"/>
+ <mtx name="ain-ar.init.reh" width="536" lsb="-1"/>
+ <mtx name="ain-ar.init.sad" width="781" lsb="1"/>
+ <mtx name="ain-ar.init.yeh" width="487" lsb="0"/>
+ <mtx name="ain-ar.medi" width="286" lsb="0"/>
+ <mtx name="ain-ar.medi.ain" width="406" lsb="0"/>
+ <mtx name="ain-ar.medi.dal" width="286" lsb="0"/>
+ <mtx name="ain-ar.medi.feh" width="467" lsb="0"/>
+ <mtx name="ain-ar.medi.hah" width="334" lsb="0"/>
+ <mtx name="ain-ar.medi.heh" width="509" lsb="0"/>
+ <mtx name="ain-ar.medi.meem" width="374" lsb="0"/>
+ <mtx name="ain-ar.medi.ragaa" width="294" lsb="0"/>
+ <mtx name="ain-ar.medi.reh" width="287" lsb="-1"/>
+ <mtx name="ain-ar.medi.sad" width="524" lsb="1"/>
+ <mtx name="ain-ar.medi.yeh" width="366" lsb="0"/>
+ <mtx name="ainThreedots-ar" width="683" lsb="0"/>
+ <mtx name="alef-ar" width="248" lsb="73"/>
+ <mtx name="alef-ar.fina" width="112" lsb="73"/>
+ <mtx name="alef-ar.fina.lam" width="394" lsb="289"/>
+ <mtx name="alefHamzaabove-ar" width="248" lsb="29"/>
+ <mtx name="alefHamzabelow-ar" width="248" lsb="36"/>
+ <mtx name="alefMadda-ar" width="248" lsb="-44"/>
+ <mtx name="alefMaksura-ar" width="615" lsb="0"/>
+ <mtx name="alefMaksura-ar.fina" width="414" lsb="1"/>
+ <mtx name="alefMaksura-ar.fina.jalt" width="796" lsb="1"/>
+ <mtx name="alefMaksura-ar.fina.yeh" width="640" lsb="1"/>
+ <mtx name="alefMaksura-ar.fina.yeh.jalt" width="793" lsb="1"/>
+ <mtx name="alefMaksura-ar.jalt" width="1083" lsb="1"/>
+ <mtx name="alefWasla-ar" width="248" lsb="20"/>
+ <mtx name="alefabove-ar" width="0" lsb="-40"/>
+ <mtx name="alefabove-ar.isol" width="121" lsb="50"/>
+ <mtx name="alefabove-ar.medi" width="0" lsb="50"/>
+ <mtx name="alefbelow-ar" width="0" lsb="-40"/>
+ <mtx name="beh-ar" width="801" lsb="86"/>
+ <mtx name="behDotless-ar" width="801" lsb="86"/>
+ <mtx name="behDotless-ar.fina" width="490" lsb="0"/>
+ <mtx name="behDotless-ar.fina.jalt" width="849" lsb="1"/>
+ <mtx name="behDotless-ar.init" width="294" lsb="0"/>
+ <mtx name="behDotless-ar.init.ain" width="492" lsb="0"/>
+ <mtx name="behDotless-ar.init.ascend" width="313" lsb="0"/>
+ <mtx name="behDotless-ar.init.dal" width="373" lsb="0"/>
+ <mtx name="behDotless-ar.init.feh" width="559" lsb="0"/>
+ <mtx name="behDotless-ar.init.hah" width="423" lsb="1"/>
+ <mtx name="behDotless-ar.init.heh" width="559" lsb="0"/>
+ <mtx name="behDotless-ar.init.meem" width="367" lsb="0"/>
+ <mtx name="behDotless-ar.init.ragaa" width="678" lsb="0"/>
+ <mtx name="behDotless-ar.init.reh" width="323" lsb="-1"/>
+ <mtx name="behDotless-ar.init.sad" width="643" lsb="1"/>
+ <mtx name="behDotless-ar.init.yeh" width="177" lsb="0"/>
+ <mtx name="behDotless-ar.jalt" width="1038" lsb="1"/>
+ <mtx name="behDotless-ar.medi" width="206" lsb="0"/>
+ <mtx name="behDotless-ar.medi.ain" width="347" lsb="0"/>
+ <mtx name="behDotless-ar.medi.dal" width="228" lsb="0"/>
+ <mtx name="behDotless-ar.medi.feh" width="395" lsb="0"/>
+ <mtx name="behDotless-ar.medi.hah" width="452" lsb="0"/>
+ <mtx name="behDotless-ar.medi.heh" width="572" lsb="0"/>
+ <mtx name="behDotless-ar.medi.high" width="326" lsb="0"/>
+ <mtx name="behDotless-ar.medi.high2" width="236" lsb="0"/>
+ <mtx name="behDotless-ar.medi.meem" width="287" lsb="0"/>
+ <mtx name="behDotless-ar.medi.noon" width="241" lsb="0"/>
+ <mtx name="behDotless-ar.medi.ragaa" width="259" lsb="0"/>
+ <mtx name="behDotless-ar.medi.reh" width="324" lsb="0"/>
+ <mtx name="behDotless-ar.medi.sad" width="488" lsb="1"/>
+ <mtx name="behDotless-ar.medi.yeh" width="258" lsb="0"/>
+ <mtx name="comma-ar" width="278" lsb="61"/>
+ <mtx name="comma-ar.alt" width="278" lsb="61"/>
+ <mtx name="dad-ar" width="881" lsb="-1"/>
+ <mtx name="dal-ar" width="367" lsb="0"/>
+ <mtx name="dal-ar.fina" width="390" lsb="0"/>
+ <mtx name="damma-ar" width="0" lsb="-127"/>
+ <mtx name="dammainverted-ar" width="0" lsb="-48"/>
+ <mtx name="dammainverted-ar.urd" width="0" lsb="-53"/>
+ <mtx name="dammatan-ar" width="0" lsb="-145"/>
+ <mtx name="ddal-ar" width="367" lsb="0"/>
+ <mtx name="dotabove-ar" width="0" lsb="-74"/>
+ <mtx name="dotbelow-ar" width="0" lsb="-74"/>
+ <mtx name="dul-ar" width="367" lsb="0"/>
+ <mtx name="eight-ar" width="376" lsb="24"/>
+ <mtx name="eight-ar.dnom" width="265" lsb="18"/>
+ <mtx name="eight-ar.numr" width="265" lsb="18"/>
+ <mtx name="ellipsis" width="1000" lsb="63"/>
+ <mtx name="emdash" width="1000" lsb="0"/>
+ <mtx name="endash" width="541" lsb="27"/>
+ <mtx name="exclam" width="253" lsb="26"/>
+ <mtx name="fatha-ar" width="0" lsb="-132"/>
+ <mtx name="fathatan-ar" width="0" lsb="-132"/>
+ <mtx name="feh-ar" width="679" lsb="34"/>
+ <mtx name="fehDotless-ar" width="679" lsb="34"/>
+ <mtx name="fehDotless-ar.fina" width="567" lsb="-1"/>
+ <mtx name="fehDotless-ar.fina.jalt" width="803" lsb="1"/>
+ <mtx name="fehDotless-ar.init" width="390" lsb="0"/>
+ <mtx name="fehDotless-ar.init.ain" width="553" lsb="0"/>
+ <mtx name="fehDotless-ar.init.dal" width="429" lsb="0"/>
+ <mtx name="fehDotless-ar.init.feh" width="621" lsb="0"/>
+ <mtx name="fehDotless-ar.init.hah" width="212" lsb="0"/>
+ <mtx name="fehDotless-ar.init.heh" width="599" lsb="0"/>
+ <mtx name="fehDotless-ar.init.meem" width="415" lsb="0"/>
+ <mtx name="fehDotless-ar.init.ragaa" width="678" lsb="0"/>
+ <mtx name="fehDotless-ar.init.reh" width="382" lsb="-1"/>
+ <mtx name="fehDotless-ar.init.sad" width="720" lsb="1"/>
+ <mtx name="fehDotless-ar.init.yeh" width="212" lsb="0"/>
+ <mtx name="fehDotless-ar.jalt" width="1035" lsb="1"/>
+ <mtx name="fehDotless-ar.medi" width="283" lsb="0"/>
+ <mtx name="fehDotless-ar.medi.ain" width="375" lsb="0"/>
+ <mtx name="fehDotless-ar.medi.dal" width="289" lsb="-1"/>
+ <mtx name="fehDotless-ar.medi.feh" width="491" lsb="0"/>
+ <mtx name="fehDotless-ar.medi.hah" width="319" lsb="0"/>
+ <mtx name="fehDotless-ar.medi.heh" width="511" lsb="0"/>
+ <mtx name="fehDotless-ar.medi.meem" width="345" lsb="0"/>
+ <mtx name="fehDotless-ar.medi.ragaa" width="270" lsb="0"/>
+ <mtx name="fehDotless-ar.medi.reh" width="314" lsb="-1"/>
+ <mtx name="fehDotless-ar.medi.sad" width="540" lsb="1"/>
+ <mtx name="fehDotless-ar.medi.yeh" width="345" lsb="0"/>
+ <mtx name="five-ar" width="338" lsb="28"/>
+ <mtx name="five-ar.dnom" width="265" lsb="36"/>
+ <mtx name="five-ar.numr" width="265" lsb="36"/>
+ <mtx name="five-persian" width="444" lsb="30"/>
+ <mtx name="five-persian.dnom" width="265" lsb="-2"/>
+ <mtx name="five-persian.numr" width="265" lsb="-2"/>
+ <mtx name="four-ar" width="358" lsb="27"/>
+ <mtx name="four-ar.dnom" width="265" lsb="25"/>
+ <mtx name="four-ar.numr" width="265" lsb="25"/>
+ <mtx name="four-persian" width="414" lsb="25"/>
+ <mtx name="four-persian.dnom" width="265" lsb="6"/>
+ <mtx name="four-persian.numr" width="265" lsb="6"/>
+ <mtx name="four-persian.urd" width="398" lsb="28"/>
+ <mtx name="four-persian.urd.dnom" width="265" lsb="12"/>
+ <mtx name="four-persian.urd.numr" width="265" lsb="12"/>
+ <mtx name="fullstop-ar" width="253" lsb="22"/>
+ <mtx name="gaf-ar" width="944" lsb="2"/>
+ <mtx name="gafsarkashabove-ar" width="0" lsb="-163"/>
+ <mtx name="ghain-ar" width="683" lsb="0"/>
+ <mtx name="hah-ar" width="683" lsb="-1"/>
+ <mtx name="hah-ar.fina" width="188" lsb="-1"/>
+ <mtx name="hah-ar.init" width="558" lsb="0"/>
+ <mtx name="hah-ar.init.ain" width="625" lsb="0"/>
+ <mtx name="hah-ar.init.dal" width="636" lsb="-2"/>
+ <mtx name="hah-ar.init.feh" width="791" lsb="0"/>
+ <mtx name="hah-ar.init.hah" width="514" lsb="0"/>
+ <mtx name="hah-ar.init.heh" width="632" lsb="0"/>
+ <mtx name="hah-ar.init.heh.ragaa" width="551" lsb="0"/>
+ <mtx name="hah-ar.init.meem" width="567" lsb="0"/>
+ <mtx name="hah-ar.init.ragaa" width="678" lsb="0"/>
+ <mtx name="hah-ar.init.reh" width="544" lsb="0"/>
+ <mtx name="hah-ar.init.sad" width="797" lsb="1"/>
+ <mtx name="hah-ar.init.yeh" width="514" lsb="0"/>
+ <mtx name="hah-ar.medi" width="281" lsb="0"/>
+ <mtx name="hah-ar.medi.ain" width="395" lsb="0"/>
+ <mtx name="hah-ar.medi.dal" width="291" lsb="11"/>
+ <mtx name="hah-ar.medi.feh" width="438" lsb="0"/>
+ <mtx name="hah-ar.medi.hah" width="268" lsb="0"/>
+ <mtx name="hah-ar.medi.heh" width="453" lsb="0"/>
+ <mtx name="hah-ar.medi.heh.ragaa" width="391" lsb="-1"/>
+ <mtx name="hah-ar.medi.meem" width="306" lsb="0"/>
+ <mtx name="hah-ar.medi.ragaa" width="198" lsb="0"/>
+ <mtx name="hah-ar.medi.reh" width="279" lsb="-1"/>
+ <mtx name="hah-ar.medi.sad" width="541" lsb="6"/>
+ <mtx name="hah-ar.medi.yeh" width="287" lsb="0"/>
+ <mtx name="hamza-ar" width="431" lsb="49"/>
+ <mtx name="hamzaabove-ar" width="0" lsb="-92"/>
+ <mtx name="hamzabelow-ar" width="0" lsb="-92"/>
+ <mtx name="heh-ar" width="247" lsb="0"/>
+ <mtx name="heh-ar.fina" width="196" lsb="0"/>
+ <mtx name="heh-ar.init" width="585" lsb="0"/>
+ <mtx name="heh-ar.init.ain" width="702" lsb="0"/>
+ <mtx name="heh-ar.init.dal" width="601" lsb="-1"/>
+ <mtx name="heh-ar.init.feh" width="817" lsb="0"/>
+ <mtx name="heh-ar.init.hah" width="627" lsb="0"/>
+ <mtx name="heh-ar.init.heh" width="780" lsb="0"/>
+ <mtx name="heh-ar.init.meem" width="641" lsb="0"/>
+ <mtx name="heh-ar.init.ragaa" width="678" lsb="0"/>
+ <mtx name="heh-ar.init.reh" width="588" lsb="-1"/>
+ <mtx name="heh-ar.init.sad" width="907" lsb="1"/>
+ <mtx name="heh-ar.init.yeh" width="630" lsb="0"/>
+ <mtx name="heh-ar.medi" width="212" lsb="0"/>
+ <mtx name="heh-ar.medi.ain" width="386" lsb="0"/>
+ <mtx name="heh-ar.medi.dal" width="257" lsb="0"/>
+ <mtx name="heh-ar.medi.feh" width="469" lsb="0"/>
+ <mtx name="heh-ar.medi.hah" width="399" lsb="0"/>
+ <mtx name="heh-ar.medi.heh" width="583" lsb="0"/>
+ <mtx name="heh-ar.medi.meem" width="363" lsb="3"/>
+ <mtx name="heh-ar.medi.ragaa" width="335" lsb="0"/>
+ <mtx name="heh-ar.medi.reh" width="313" lsb="-1"/>
+ <mtx name="heh-ar.medi.sad" width="580" lsb="1"/>
+ <mtx name="heh-ar.medi.yeh" width="329" lsb="1"/>
+ <mtx name="hehDoachashmee-ar" width="741" lsb="-1"/>
+ <mtx name="hehDoachashmee-ar.fina" width="501" lsb="-1"/>
+ <mtx name="hehDoachashmee-ar.medi" width="314" lsb="0"/>
+ <mtx name="hehDoachashmee-ar.medi.ain" width="492" lsb="0"/>
+ <mtx name="hehDoachashmee-ar.medi.dal" width="385" lsb="0"/>
+ <mtx name="hehDoachashmee-ar.medi.feh" width="561" lsb="0"/>
+ <mtx name="hehDoachashmee-ar.medi.hah" width="367" lsb="0"/>
+ <mtx name="hehDoachashmee-ar.medi.heh" width="598" lsb="0"/>
+ <mtx name="hehDoachashmee-ar.medi.meem" width="428" lsb="4"/>
+ <mtx name="hehDoachashmee-ar.medi.ragaa" width="397" lsb="0"/>
+ <mtx name="hehDoachashmee-ar.medi.reh" width="404" lsb="-1"/>
+ <mtx name="hehDoachashmee-ar.medi.sad" width="571" lsb="1"/>
+ <mtx name="hehDoachashmee-ar.medi.yeh" width="394" lsb="0"/>
+ <mtx name="hehHamzaabove-ar" width="247" lsb="0"/>
+ <mtx name="hehgoal-ar" width="247" lsb="0"/>
+ <mtx name="hehgoal-ar.fina" width="176" lsb="0"/>
+ <mtx name="hehgoal-ar.init" width="396" lsb="0"/>
+ <mtx name="hehgoal-ar.init.ain" width="495" lsb="0"/>
+ <mtx name="hehgoal-ar.init.dal" width="468" lsb="-1"/>
+ <mtx name="hehgoal-ar.init.feh" width="482" lsb="0"/>
+ <mtx name="hehgoal-ar.init.hah" width="548" lsb="3"/>
+ <mtx name="hehgoal-ar.init.heh" width="621" lsb="0"/>
+ <mtx name="hehgoal-ar.init.meem" width="444" lsb="0"/>
+ <mtx name="hehgoal-ar.init.ragaa" width="689" lsb="0"/>
+ <mtx name="hehgoal-ar.init.reh" width="434" lsb="-1"/>
+ <mtx name="hehgoal-ar.init.sad" width="706" lsb="1"/>
+ <mtx name="hehgoal-ar.init.yeh" width="466" lsb="0"/>
+ <mtx name="highhamza-ar" width="431" lsb="49"/>
+ <mtx name="jeem-ar" width="683" lsb="-1"/>
+ <mtx name="jeh-ar" width="469" lsb="0"/>
+ <mtx name="kaf-ar" width="568" lsb="-1"/>
+ <mtx name="kaf-ar.fina" width="511" lsb="-1"/>
+ <mtx name="kaf-ar.fina.jalt" width="925" lsb="1"/>
+ <mtx name="kaf-ar.init" width="498" lsb="0"/>
+ <mtx name="kaf-ar.init.ain" width="585" lsb="0"/>
+ <mtx name="kaf-ar.init.alef" width="566" lsb="0"/>
+ <mtx name="kaf-ar.init.alef.loop" width="333" lsb="-3"/>
+ <mtx name="kaf-ar.init.dal" width="519" lsb="-1"/>
+ <mtx name="kaf-ar.init.feh" width="670" lsb="0"/>
+ <mtx name="kaf-ar.init.hah" width="329" lsb="0"/>
+ <mtx name="kaf-ar.init.heh" width="576" lsb="0"/>
+ <mtx name="kaf-ar.init.meem" width="91" lsb="0"/>
+ <mtx name="kaf-ar.init.ragaa" width="678" lsb="0"/>
+ <mtx name="kaf-ar.init.reh" width="513" lsb="-1"/>
+ <mtx name="kaf-ar.init.sad" width="734" lsb="1"/>
+ <mtx name="kaf-ar.init.yeh" width="511" lsb="0"/>
+ <mtx name="kaf-ar.jalt" width="1030" lsb="1"/>
+ <mtx name="kaf-ar.medi" width="259" lsb="0"/>
+ <mtx name="kaf-ar.medi.ain" width="440" lsb="0"/>
+ <mtx name="kaf-ar.medi.dal" width="286" lsb="0"/>
+ <mtx name="kaf-ar.medi.feh" width="463" lsb="0"/>
+ <mtx name="kaf-ar.medi.hah" width="358" lsb="0"/>
+ <mtx name="kaf-ar.medi.heh" width="482" lsb="0"/>
+ <mtx name="kaf-ar.medi.kaf" width="342" lsb="0"/>
+ <mtx name="kaf-ar.medi.meem" width="320" lsb="0"/>
+ <mtx name="kaf-ar.medi.ragaa" width="250" lsb="0"/>
+ <mtx name="kaf-ar.medi.reh" width="312" lsb="-6"/>
+ <mtx name="kaf-ar.medi.sad" width="574" lsb="1"/>
+ <mtx name="kaf-ar.medi.yeh" width="320" lsb="0"/>
+ <mtx name="kafDotabove-ar" width="568" lsb="-1"/>
+ <mtx name="kashida-ar" width="0" lsb="0"/>
+ <mtx name="kasra-ar" width="0" lsb="-132"/>
+ <mtx name="kasratan-ar" width="0" lsb="-132"/>
+ <mtx name="keheh-ar" width="944" lsb="2"/>
+ <mtx name="keheh-ar.fina" width="511" lsb="0"/>
+ <mtx name="keheh-ar.fina.jalt" width="926" lsb="1"/>
+ <mtx name="keheh-ar.jalt" width="1383" lsb="1"/>
+ <mtx name="kehehDotabove-ar" width="944" lsb="2"/>
+ <mtx name="khah-ar" width="683" lsb="-1"/>
+ <mtx name="lam-ar" width="445" lsb="-1"/>
+ <mtx name="lam-ar.fina" width="428" lsb="-1"/>
+ <mtx name="lam-ar.fina.jalt" width="1030" lsb="1"/>
+ <mtx name="lam-ar.init" width="333" lsb="0"/>
+ <mtx name="lam-ar.init.ain" width="454" lsb="0"/>
+ <mtx name="lam-ar.init.alef" width="674" lsb="0"/>
+ <mtx name="lam-ar.init.dal" width="351" lsb="-1"/>
+ <mtx name="lam-ar.init.feh" width="562" lsb="0"/>
+ <mtx name="lam-ar.init.hah" width="176" lsb="0"/>
+ <mtx name="lam-ar.init.heh" width="443" lsb="0"/>
+ <mtx name="lam-ar.init.kaf" width="371" lsb="0"/>
+ <mtx name="lam-ar.init.meem" width="134" lsb="0"/>
+ <mtx name="lam-ar.init.ragaa" width="678" lsb="0"/>
+ <mtx name="lam-ar.init.reh" width="378" lsb="-1"/>
+ <mtx name="lam-ar.init.sad" width="612" lsb="1"/>
+ <mtx name="lam-ar.init.yeh" width="183" lsb="0"/>
+ <mtx name="lam-ar.jalt" width="1030" lsb="1"/>
+ <mtx name="lam-ar.medi" width="246" lsb="0"/>
+ <mtx name="lam-ar.medi.ain" width="441" lsb="0"/>
+ <mtx name="lam-ar.medi.alef" width="732" lsb="0"/>
+ <mtx name="lam-ar.medi.dal" width="285" lsb="0"/>
+ <mtx name="lam-ar.medi.feh" width="462" lsb="0"/>
+ <mtx name="lam-ar.medi.hah" width="355" lsb="0"/>
+ <mtx name="lam-ar.medi.heh" width="482" lsb="0"/>
+ <mtx name="lam-ar.medi.kaf" width="305" lsb="0"/>
+ <mtx name="lam-ar.medi.meem" width="320" lsb="0"/>
+ <mtx name="lam-ar.medi.ragaa" width="282" lsb="0"/>
+ <mtx name="lam-ar.medi.reh" width="312" lsb="-6"/>
+ <mtx name="lam-ar.medi.sad" width="574" lsb="1"/>
+ <mtx name="lam-ar.medi.yeh" width="320" lsb="0"/>
+ <mtx name="lamVabove-ar" width="445" lsb="-1"/>
+ <mtx name="madda-ar" width="0" lsb="-165"/>
+ <mtx name="meem-ar" width="505" lsb="3"/>
+ <mtx name="meem-ar.fina" width="350" lsb="3"/>
+ <mtx name="meem-ar.init" width="405" lsb="0"/>
+ <mtx name="meem-ar.init.ain" width="562" lsb="0"/>
+ <mtx name="meem-ar.init.dal" width="469" lsb="-1"/>
+ <mtx name="meem-ar.init.feh" width="658" lsb="0"/>
+ <mtx name="meem-ar.init.hah" width="514" lsb="0"/>
+ <mtx name="meem-ar.init.heh" width="594" lsb="3"/>
+ <mtx name="meem-ar.init.meem" width="443" lsb="0"/>
+ <mtx name="meem-ar.init.ragaa" width="678" lsb="0"/>
+ <mtx name="meem-ar.init.reh" width="448" lsb="-1"/>
+ <mtx name="meem-ar.init.sad" width="721" lsb="3"/>
+ <mtx name="meem-ar.init.yeh" width="424" lsb="0"/>
+ <mtx name="meem-ar.medi" width="405" lsb="0"/>
+ <mtx name="meem-ar.medi.ain" width="400" lsb="0"/>
+ <mtx name="meem-ar.medi.dal" width="360" lsb="-1"/>
+ <mtx name="meem-ar.medi.feh" width="495" lsb="0"/>
+ <mtx name="meem-ar.medi.hah" width="358" lsb="0"/>
+ <mtx name="meem-ar.medi.heh" width="431" lsb="0"/>
+ <mtx name="meem-ar.medi.meem" width="329" lsb="0"/>
+ <mtx name="meem-ar.medi.ragaa" width="312" lsb="0"/>
+ <mtx name="meem-ar.medi.reh" width="295" lsb="8"/>
+ <mtx name="meem-ar.medi.sad" width="580" lsb="0"/>
+ <mtx name="meem-ar.medi.yeh" width="269" lsb="0"/>
+ <mtx name="nine-ar" width="317" lsb="27"/>
+ <mtx name="nine-ar.dnom" width="265" lsb="39"/>
+ <mtx name="nine-ar.numr" width="265" lsb="39"/>
+ <mtx name="noon-ar" width="463" lsb="0"/>
+ <mtx name="noon-ar.fina" width="428" lsb="0"/>
+ <mtx name="noon-ar.fina.tail" width="537" lsb="0"/>
+ <mtx name="noon-ar.tail" width="537" lsb="0"/>
+ <mtx name="noonThreedotsabove-ar" width="463" lsb="-1"/>
+ <mtx name="noonghunna-ar" width="463" lsb="-1"/>
+ <mtx name="noonghunna-ar.fina" width="463" lsb="-1"/>
+ <mtx name="noonghunna-ar.jalt" width="878" lsb="0"/>
+ <mtx name="noonghunnaabove-ar" width="0" lsb="-50"/>
+ <mtx name="oe-ar" width="491" lsb="0"/>
+ <mtx name="one-ar" width="188" lsb="25"/>
+ <mtx name="one-ar.dnom" width="265" lsb="86"/>
+ <mtx name="one-ar.numr" width="265" lsb="86"/>
+ <mtx name="opendammatan-ar" width="0" lsb="-135"/>
+ <mtx name="parenleft-ar" width="485" lsb="39"/>
+ <mtx name="parenright-ar" width="485" lsb="39"/>
+ <mtx name="peh-ar" width="801" lsb="86"/>
+ <mtx name="percent-ar" width="440" lsb="24"/>
+ <mtx name="qaf-ar" width="634" lsb="6"/>
+ <mtx name="qaf-ar.fina" width="634" lsb="6"/>
+ <mtx name="qafDotless-ar" width="488" lsb="0"/>
+ <mtx name="qafDotless-ar.fina" width="488" lsb="0"/>
+ <mtx name="qafDotless-ar.fina.jalt" width="849" lsb="0"/>
+ <mtx name="qafDotless-ar.jalt" width="849" lsb="0"/>
+ <mtx name="question-ar" width="345" lsb="36"/>
+ <mtx name="quotedblbase" width="444" lsb="58"/>
+ <mtx name="quotedblleft" width="444" lsb="91"/>
+ <mtx name="quotedblright" width="444" lsb="58"/>
+ <mtx name="quoteleft" width="271" lsb="91"/>
+ <mtx name="quoteright" width="271" lsb="58"/>
+ <mtx name="quotesinglbase" width="271" lsb="58"/>
+ <mtx name="reh-ar" width="469" lsb="0"/>
+ <mtx name="reh-ar.fina" width="410" lsb="5"/>
+ <mtx name="rehVbelow-ar" width="469" lsb="0"/>
+ <mtx name="rnoon-ar" width="463" lsb="-1"/>
+ <mtx name="rreh-ar" width="469" lsb="0"/>
+ <mtx name="sad-ar" width="881" lsb="-1"/>
+ <mtx name="sad-ar.fina" width="563" lsb="-1"/>
+ <mtx name="sad-ar.fina.jalt" width="1099" lsb="6"/>
+ <mtx name="sad-ar.init" width="721" lsb="0"/>
+ <mtx name="sad-ar.init.ain" width="778" lsb="0"/>
+ <mtx name="sad-ar.init.dal" width="721" lsb="-1"/>
+ <mtx name="sad-ar.init.feh" width="849" lsb="0"/>
+ <mtx name="sad-ar.init.hah" width="833" lsb="0"/>
+ <mtx name="sad-ar.init.heh" width="975" lsb="0"/>
+ <mtx name="sad-ar.init.meem" width="781" lsb="0"/>
+ <mtx name="sad-ar.init.qantara" width="984" lsb="5"/>
+ <mtx name="sad-ar.init.ragaa" width="773" lsb="0"/>
+ <mtx name="sad-ar.init.reh" width="674" lsb="-1"/>
+ <mtx name="sad-ar.init.sad" width="885" lsb="-1"/>
+ <mtx name="sad-ar.init.yeh" width="747" lsb="8"/>
+ <mtx name="sad-ar.jalt" width="1390" lsb="1"/>
+ <mtx name="sad-ar.medi" width="331" lsb="0"/>
+ <mtx name="sad-ar.medi.ain" width="387" lsb="0"/>
+ <mtx name="sad-ar.medi.dal" width="333" lsb="-1"/>
+ <mtx name="sad-ar.medi.feh" width="455" lsb="0"/>
+ <mtx name="sad-ar.medi.hah" width="439" lsb="0"/>
+ <mtx name="sad-ar.medi.heh" width="574" lsb="0"/>
+ <mtx name="sad-ar.medi.meem" width="390" lsb="0"/>
+ <mtx name="sad-ar.medi.postsad" width="331" lsb="0"/>
+ <mtx name="sad-ar.medi.qantara" width="641" lsb="5"/>
+ <mtx name="sad-ar.medi.ragaa" width="385" lsb="0"/>
+ <mtx name="sad-ar.medi.reh" width="289" lsb="-1"/>
+ <mtx name="sad-ar.medi.sad" width="476" lsb="-1"/>
+ <mtx name="sad-ar.medi.yeh" width="357" lsb="8"/>
+ <mtx name="seen-ar" width="933" lsb="-1"/>
+ <mtx name="seen-ar.fina" width="507" lsb="0"/>
+ <mtx name="seen-ar.fina.jalt" width="1042" lsb="1"/>
+ <mtx name="seen-ar.init" width="685" lsb="0"/>
+ <mtx name="seen-ar.init.ain" width="725" lsb="0"/>
+ <mtx name="seen-ar.init.dal" width="696" lsb="2"/>
+ <mtx name="seen-ar.init.feh" width="839" lsb="0"/>
+ <mtx name="seen-ar.init.hah" width="749" lsb="10"/>
+ <mtx name="seen-ar.init.heh" width="889" lsb="0"/>
+ <mtx name="seen-ar.init.meem" width="590" lsb="0"/>
+ <mtx name="seen-ar.init.ragaa" width="678" lsb="0"/>
+ <mtx name="seen-ar.init.reh" width="706" lsb="8"/>
+ <mtx name="seen-ar.init.sad" width="791" lsb="1"/>
+ <mtx name="seen-ar.init.yeh" width="545" lsb="0"/>
+ <mtx name="seen-ar.jalt" width="1531" lsb="1"/>
+ <mtx name="seen-ar.medi" width="318" lsb="0"/>
+ <mtx name="seen-ar.medi.ain" width="416" lsb="0"/>
+ <mtx name="seen-ar.medi.dal" width="333" lsb="0"/>
+ <mtx name="seen-ar.medi.feh" width="535" lsb="0"/>
+ <mtx name="seen-ar.medi.hah" width="447" lsb="0"/>
+ <mtx name="seen-ar.medi.heh" width="609" lsb="0"/>
+ <mtx name="seen-ar.medi.meem" width="413" lsb="0"/>
+ <mtx name="seen-ar.medi.ragaa" width="382" lsb="0"/>
+ <mtx name="seen-ar.medi.reh" width="330" lsb="0"/>
+ <mtx name="seen-ar.medi.sad" width="580" lsb="1"/>
+ <mtx name="seen-ar.medi.yeh" width="370" lsb="0"/>
+ <mtx name="semicolon-ar" width="278" lsb="54"/>
+ <mtx name="semicolon-ar.alt" width="278" lsb="54"/>
+ <mtx name="seven-ar" width="376" lsb="25"/>
+ <mtx name="seven-ar.dnom" width="265" lsb="19"/>
+ <mtx name="seven-ar.numr" width="265" lsb="19"/>
+ <mtx name="seven-persian" width="376" lsb="25"/>
+ <mtx name="seven-persian.urd" width="545" lsb="26"/>
+ <mtx name="seven-persian.urd.dnom" width="265" lsb="-39"/>
+ <mtx name="seven-persian.urd.numr" width="265" lsb="-39"/>
+ <mtx name="shadda-ar" width="0" lsb="-115"/>
+ <mtx name="sheen-ar" width="1000" lsb="0"/>
+ <mtx name="six-ar" width="379" lsb="29"/>
+ <mtx name="six-ar.dnom" width="265" lsb="18"/>
+ <mtx name="six-ar.numr" width="265" lsb="18"/>
+ <mtx name="six-persian" width="476" lsb="24"/>
+ <mtx name="six-persian.dnom" width="265" lsb="-17"/>
+ <mtx name="six-persian.numr" width="265" lsb="-17"/>
+ <mtx name="space" width="146" lsb="0"/>
+ <mtx name="sukun-ar" width="0" lsb="-98"/>
+ <mtx name="sukun-ar.alt" width="0" lsb="-53"/>
+ <mtx name="tah-ar" width="681" lsb="1"/>
+ <mtx name="tah-ar.fina" width="320" lsb="0"/>
+ <mtx name="tah-ar.init" width="574" lsb="0"/>
+ <mtx name="tah-ar.init.ain" width="705" lsb="0"/>
+ <mtx name="tah-ar.init.dal" width="635" lsb="0"/>
+ <mtx name="tah-ar.init.feh" width="765" lsb="0"/>
+ <mtx name="tah-ar.init.hah" width="676" lsb="0"/>
+ <mtx name="tah-ar.init.heh" width="766" lsb="0"/>
+ <mtx name="tah-ar.init.kaf" width="618" lsb="0"/>
+ <mtx name="tah-ar.init.meem" width="585" lsb="0"/>
+ <mtx name="tah-ar.init.qantara" width="857" lsb="-1"/>
+ <mtx name="tah-ar.init.ragaa" width="678" lsb="0"/>
+ <mtx name="tah-ar.init.reh" width="586" lsb="-1"/>
+ <mtx name="tah-ar.init.sad" width="902" lsb="1"/>
+ <mtx name="tah-ar.init.yeh" width="561" lsb="0"/>
+ <mtx name="tah-ar.medi" width="206" lsb="0"/>
+ <mtx name="tah-ar.medi.ain" width="327" lsb="0"/>
+ <mtx name="tah-ar.medi.dal" width="260" lsb="0"/>
+ <mtx name="tah-ar.medi.feh" width="384" lsb="0"/>
+ <mtx name="tah-ar.medi.hah" width="299" lsb="0"/>
+ <mtx name="tah-ar.medi.heh" width="385" lsb="0"/>
+ <mtx name="tah-ar.medi.kaf" width="265" lsb="0"/>
+ <mtx name="tah-ar.medi.meem" width="326" lsb="0"/>
+ <mtx name="tah-ar.medi.postsad" width="206" lsb="0"/>
+ <mtx name="tah-ar.medi.qantara" width="489" lsb="-1"/>
+ <mtx name="tah-ar.medi.ragaa" width="219" lsb="0"/>
+ <mtx name="tah-ar.medi.reh" width="213" lsb="-1"/>
+ <mtx name="tah-ar.medi.sad" width="501" lsb="1"/>
+ <mtx name="tah-ar.medi.yeh" width="390" lsb="0"/>
+ <mtx name="tahabove-ar" width="0" lsb="-141"/>
+ <mtx name="tcheh-ar" width="683" lsb="-1"/>
+ <mtx name="teh-ar" width="801" lsb="86"/>
+ <mtx name="tehMarbuta-ar" width="247" lsb="0"/>
+ <mtx name="thal-ar" width="367" lsb="0"/>
+ <mtx name="theh-ar" width="801" lsb="86"/>
+ <mtx name="three-ar" width="414" lsb="25"/>
+ <mtx name="three-ar.dnom" width="265" lsb="6"/>
+ <mtx name="three-ar.numr" width="265" lsb="6"/>
+ <mtx name="threedotsdownbelow-ar" width="0" lsb="-121"/>
+ <mtx name="threedotsupabove-ar" width="0" lsb="-121"/>
+ <mtx name="tteh-ar" width="801" lsb="86"/>
+ <mtx name="two-ar" width="286" lsb="28"/>
+ <mtx name="two-ar.dnom" width="265" lsb="51"/>
+ <mtx name="two-ar.numr" width="265" lsb="51"/>
+ <mtx name="two-persian" width="392" lsb="24"/>
+ <mtx name="two-persian.dnom" width="265" lsb="12"/>
+ <mtx name="two-persian.numr" width="265" lsb="12"/>
+ <mtx name="twodotshorizontalabove-ar" width="0" lsb="-127"/>
+ <mtx name="twodotshorizontalbelow-ar" width="0" lsb="-127"/>
+ <mtx name="vabove-ar" width="0" lsb="-83"/>
+ <mtx name="vbelow-ar" width="0" lsb="-83"/>
+ <mtx name="veh-ar" width="679" lsb="34"/>
+ <mtx name="wasla-ar" width="0" lsb="-101"/>
+ <mtx name="waw-ar" width="491" lsb="0"/>
+ <mtx name="waw-ar.fina" width="491" lsb="0"/>
+ <mtx name="wawDotabove-ar" width="491" lsb="0"/>
+ <mtx name="wawHamzaabove-ar" width="491" lsb="0"/>
+ <mtx name="yeh-ar" width="615" lsb="0"/>
+ <mtx name="yeh-farsi" width="615" lsb="0"/>
+ <mtx name="yehHamzaabove-ar" width="615" lsb="0"/>
+ <mtx name="yehVabove-ar" width="615" lsb="0"/>
+ <mtx name="yehbarree-ar" width="699" lsb="3"/>
+ <mtx name="yehbarree-ar.fina" width="699" lsb="2"/>
+ <mtx name="yehbarreeHamzaabove-ar" width="699" lsb="3"/>
+ <mtx name="zah-ar" width="681" lsb="1"/>
+ <mtx name="zain-ar" width="469" lsb="0"/>
+ <mtx name="zero-ar" width="231" lsb="27"/>
+ <mtx name="zero-ar.dnom" width="265" lsb="70"/>
+ <mtx name="zero-ar.numr" width="265" lsb="70"/>
+ </hmtx>
+
+</ttFont>
diff --git a/Tests/merge/data/CFFFont2.ttx b/Tests/merge/data/CFFFont2.ttx
new file mode 100644
index 00000000..0c0c6b2b
--- /dev/null
+++ b/Tests/merge/data/CFFFont2.ttx
@@ -0,0 +1,6682 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ttFont sfntVersion="OTTO" ttLibVersion="4.28">
+
+ <GlyphOrder>
+ <!-- The 'id' attribute is only for humans; it is ignored when parsed. -->
+ <GlyphID id="0" name=".notdef"/>
+ <GlyphID id="1" name="A"/>
+ <GlyphID id="2" name="Aacute"/>
+ <GlyphID id="3" name="Acircumflex"/>
+ <GlyphID id="4" name="Adieresis"/>
+ <GlyphID id="5" name="Agrave"/>
+ <GlyphID id="6" name="Aring"/>
+ <GlyphID id="7" name="Atilde"/>
+ <GlyphID id="8" name="AE"/>
+ <GlyphID id="9" name="B"/>
+ <GlyphID id="10" name="C"/>
+ <GlyphID id="11" name="Ccedilla"/>
+ <GlyphID id="12" name="D"/>
+ <GlyphID id="13" name="Eth"/>
+ <GlyphID id="14" name="E"/>
+ <GlyphID id="15" name="Eacute"/>
+ <GlyphID id="16" name="Ecircumflex"/>
+ <GlyphID id="17" name="Edieresis"/>
+ <GlyphID id="18" name="Egrave"/>
+ <GlyphID id="19" name="F"/>
+ <GlyphID id="20" name="G"/>
+ <GlyphID id="21" name="H"/>
+ <GlyphID id="22" name="I"/>
+ <GlyphID id="23" name="Iacute"/>
+ <GlyphID id="24" name="Icircumflex"/>
+ <GlyphID id="25" name="Idieresis"/>
+ <GlyphID id="26" name="Igrave"/>
+ <GlyphID id="27" name="J"/>
+ <GlyphID id="28" name="K"/>
+ <GlyphID id="29" name="L"/>
+ <GlyphID id="30" name="M"/>
+ <GlyphID id="31" name="N"/>
+ <GlyphID id="32" name="Ntilde"/>
+ <GlyphID id="33" name="O"/>
+ <GlyphID id="34" name="Oacute"/>
+ <GlyphID id="35" name="Ocircumflex"/>
+ <GlyphID id="36" name="Odieresis"/>
+ <GlyphID id="37" name="Ograve"/>
+ <GlyphID id="38" name="Oslash"/>
+ <GlyphID id="39" name="Otilde"/>
+ <GlyphID id="40" name="OE"/>
+ <GlyphID id="41" name="P"/>
+ <GlyphID id="42" name="Thorn"/>
+ <GlyphID id="43" name="Q"/>
+ <GlyphID id="44" name="R"/>
+ <GlyphID id="45" name="S"/>
+ <GlyphID id="46" name="T"/>
+ <GlyphID id="47" name="U"/>
+ <GlyphID id="48" name="Uacute"/>
+ <GlyphID id="49" name="Ucircumflex"/>
+ <GlyphID id="50" name="Udieresis"/>
+ <GlyphID id="51" name="Ugrave"/>
+ <GlyphID id="52" name="V"/>
+ <GlyphID id="53" name="W"/>
+ <GlyphID id="54" name="X"/>
+ <GlyphID id="55" name="Y"/>
+ <GlyphID id="56" name="Yacute"/>
+ <GlyphID id="57" name="Z"/>
+ <GlyphID id="58" name="a"/>
+ <GlyphID id="59" name="aacute"/>
+ <GlyphID id="60" name="acircumflex"/>
+ <GlyphID id="61" name="adieresis"/>
+ <GlyphID id="62" name="agrave"/>
+ <GlyphID id="63" name="aring"/>
+ <GlyphID id="64" name="atilde"/>
+ <GlyphID id="65" name="ae"/>
+ <GlyphID id="66" name="b"/>
+ <GlyphID id="67" name="c"/>
+ <GlyphID id="68" name="ccedilla"/>
+ <GlyphID id="69" name="d"/>
+ <GlyphID id="70" name="eth"/>
+ <GlyphID id="71" name="e"/>
+ <GlyphID id="72" name="eacute"/>
+ <GlyphID id="73" name="ecircumflex"/>
+ <GlyphID id="74" name="edieresis"/>
+ <GlyphID id="75" name="egrave"/>
+ <GlyphID id="76" name="f"/>
+ <GlyphID id="77" name="g"/>
+ <GlyphID id="78" name="h"/>
+ <GlyphID id="79" name="i"/>
+ <GlyphID id="80" name="dotlessi"/>
+ <GlyphID id="81" name="iacute"/>
+ <GlyphID id="82" name="icircumflex"/>
+ <GlyphID id="83" name="idieresis"/>
+ <GlyphID id="84" name="igrave"/>
+ <GlyphID id="85" name="j"/>
+ <GlyphID id="86" name="dotlessj"/>
+ <GlyphID id="87" name="k"/>
+ <GlyphID id="88" name="l"/>
+ <GlyphID id="89" name="m"/>
+ <GlyphID id="90" name="n"/>
+ <GlyphID id="91" name="ntilde"/>
+ <GlyphID id="92" name="o"/>
+ <GlyphID id="93" name="oacute"/>
+ <GlyphID id="94" name="ocircumflex"/>
+ <GlyphID id="95" name="odieresis"/>
+ <GlyphID id="96" name="ograve"/>
+ <GlyphID id="97" name="oslash"/>
+ <GlyphID id="98" name="otilde"/>
+ <GlyphID id="99" name="oe"/>
+ <GlyphID id="100" name="p"/>
+ <GlyphID id="101" name="thorn"/>
+ <GlyphID id="102" name="q"/>
+ <GlyphID id="103" name="r"/>
+ <GlyphID id="104" name="s"/>
+ <GlyphID id="105" name="germandbls"/>
+ <GlyphID id="106" name="t"/>
+ <GlyphID id="107" name="u"/>
+ <GlyphID id="108" name="uacute"/>
+ <GlyphID id="109" name="ucircumflex"/>
+ <GlyphID id="110" name="udieresis"/>
+ <GlyphID id="111" name="ugrave"/>
+ <GlyphID id="112" name="v"/>
+ <GlyphID id="113" name="w"/>
+ <GlyphID id="114" name="x"/>
+ <GlyphID id="115" name="y"/>
+ <GlyphID id="116" name="yacute"/>
+ <GlyphID id="117" name="ydieresis"/>
+ <GlyphID id="118" name="z"/>
+ <GlyphID id="119" name="f.alt"/>
+ <GlyphID id="120" name="ordfeminine"/>
+ <GlyphID id="121" name="ordmasculine"/>
+ <GlyphID id="122" name="Gamma"/>
+ <GlyphID id="123" name="Theta"/>
+ <GlyphID id="124" name="Lambda"/>
+ <GlyphID id="125" name="Xi"/>
+ <GlyphID id="126" name="Pi"/>
+ <GlyphID id="127" name="Sigma"/>
+ <GlyphID id="128" name="Upsilon"/>
+ <GlyphID id="129" name="Phi"/>
+ <GlyphID id="130" name="Psi"/>
+ <GlyphID id="131" name="alpha"/>
+ <GlyphID id="132" name="beta"/>
+ <GlyphID id="133" name="gamma"/>
+ <GlyphID id="134" name="delta"/>
+ <GlyphID id="135" name="epsilon"/>
+ <GlyphID id="136" name="zeta"/>
+ <GlyphID id="137" name="eta"/>
+ <GlyphID id="138" name="theta"/>
+ <GlyphID id="139" name="iota"/>
+ <GlyphID id="140" name="kappa"/>
+ <GlyphID id="141" name="lambda"/>
+ <GlyphID id="142" name="nu"/>
+ <GlyphID id="143" name="xi"/>
+ <GlyphID id="144" name="pi"/>
+ <GlyphID id="145" name="rho"/>
+ <GlyphID id="146" name="sigma"/>
+ <GlyphID id="147" name="tau"/>
+ <GlyphID id="148" name="upsilon"/>
+ <GlyphID id="149" name="phi"/>
+ <GlyphID id="150" name="chi"/>
+ <GlyphID id="151" name="psi"/>
+ <GlyphID id="152" name="omega"/>
+ <GlyphID id="153" name="theta1"/>
+ <GlyphID id="154" name="phi1"/>
+ <GlyphID id="155" name="pi1"/>
+ <GlyphID id="156" name="zero"/>
+ <GlyphID id="157" name="one"/>
+ <GlyphID id="158" name="two"/>
+ <GlyphID id="159" name="three"/>
+ <GlyphID id="160" name="four"/>
+ <GlyphID id="161" name="five"/>
+ <GlyphID id="162" name="six"/>
+ <GlyphID id="163" name="seven"/>
+ <GlyphID id="164" name="eight"/>
+ <GlyphID id="165" name="nine"/>
+ <GlyphID id="166" name="zero.dnom"/>
+ <GlyphID id="167" name="one.dnom"/>
+ <GlyphID id="168" name="two.dnom"/>
+ <GlyphID id="169" name="three.dnom"/>
+ <GlyphID id="170" name="four.dnom"/>
+ <GlyphID id="171" name="five.dnom"/>
+ <GlyphID id="172" name="six.dnom"/>
+ <GlyphID id="173" name="seven.dnom"/>
+ <GlyphID id="174" name="eight.dnom"/>
+ <GlyphID id="175" name="nine.dnom"/>
+ <GlyphID id="176" name="zero.numr"/>
+ <GlyphID id="177" name="one.numr"/>
+ <GlyphID id="178" name="two.numr"/>
+ <GlyphID id="179" name="three.numr"/>
+ <GlyphID id="180" name="four.numr"/>
+ <GlyphID id="181" name="five.numr"/>
+ <GlyphID id="182" name="six.numr"/>
+ <GlyphID id="183" name="seven.numr"/>
+ <GlyphID id="184" name="eight.numr"/>
+ <GlyphID id="185" name="nine.numr"/>
+ <GlyphID id="186" name="onesuperior"/>
+ <GlyphID id="187" name="twosuperior"/>
+ <GlyphID id="188" name="threesuperior"/>
+ <GlyphID id="189" name="foursuperior"/>
+ <GlyphID id="190" name="fraction"/>
+ <GlyphID id="191" name="onehalf"/>
+ <GlyphID id="192" name="onequarter"/>
+ <GlyphID id="193" name="threequarters"/>
+ <GlyphID id="194" name="space"/>
+ <GlyphID id="195" name="period"/>
+ <GlyphID id="196" name="comma"/>
+ <GlyphID id="197" name="colon"/>
+ <GlyphID id="198" name="semicolon"/>
+ <GlyphID id="199" name="exclam"/>
+ <GlyphID id="200" name="exclamdown"/>
+ <GlyphID id="201" name="question"/>
+ <GlyphID id="202" name="questiondown"/>
+ <GlyphID id="203" name="periodcentered"/>
+ <GlyphID id="204" name="bullet"/>
+ <GlyphID id="205" name="asterisk"/>
+ <GlyphID id="206" name="numbersign"/>
+ <GlyphID id="207" name="slash"/>
+ <GlyphID id="208" name="backslash"/>
+ <GlyphID id="209" name="hyphen"/>
+ <GlyphID id="210" name="softhyphen"/>
+ <GlyphID id="211" name="underscore"/>
+ <GlyphID id="212" name="parenleft"/>
+ <GlyphID id="213" name="parenright"/>
+ <GlyphID id="214" name="braceleft"/>
+ <GlyphID id="215" name="braceright"/>
+ <GlyphID id="216" name="bracketleft"/>
+ <GlyphID id="217" name="bracketright"/>
+ <GlyphID id="218" name="quoteleft"/>
+ <GlyphID id="219" name="quoteright"/>
+ <GlyphID id="220" name="guillemotleft"/>
+ <GlyphID id="221" name="guillemotright"/>
+ <GlyphID id="222" name="guilsinglleft"/>
+ <GlyphID id="223" name="guilsinglright"/>
+ <GlyphID id="224" name="quotedbl"/>
+ <GlyphID id="225" name="quotesingle"/>
+ <GlyphID id="226" name="at"/>
+ <GlyphID id="227" name="ampersand"/>
+ <GlyphID id="228" name="paragraph"/>
+ <GlyphID id="229" name="section"/>
+ <GlyphID id="230" name="copyright"/>
+ <GlyphID id="231" name="registered"/>
+ <GlyphID id="232" name="degree"/>
+ <GlyphID id="233" name="bar"/>
+ <GlyphID id="234" name="brokenbar"/>
+ <GlyphID id="235" name="lscript"/>
+ <GlyphID id="236" name="weierstrass"/>
+ <GlyphID id="237" name="cent"/>
+ <GlyphID id="238" name="currency"/>
+ <GlyphID id="239" name="dollar"/>
+ <GlyphID id="240" name="euro"/>
+ <GlyphID id="241" name="sterling"/>
+ <GlyphID id="242" name="yen"/>
+ <GlyphID id="243" name="plus"/>
+ <GlyphID id="244" name="minus"/>
+ <GlyphID id="245" name="multiply"/>
+ <GlyphID id="246" name="divide"/>
+ <GlyphID id="247" name="equal"/>
+ <GlyphID id="248" name="greater"/>
+ <GlyphID id="249" name="less"/>
+ <GlyphID id="250" name="plusminus"/>
+ <GlyphID id="251" name="asciitilde"/>
+ <GlyphID id="252" name="logicalnot"/>
+ <GlyphID id="253" name="Omega"/>
+ <GlyphID id="254" name="Delta"/>
+ <GlyphID id="255" name="mu"/>
+ <GlyphID id="256" name="partialdiff"/>
+ <GlyphID id="257" name="percent"/>
+ <GlyphID id="258" name="dieresiscomb"/>
+ <GlyphID id="259" name="gravecomb"/>
+ <GlyphID id="260" name="acutecomb"/>
+ <GlyphID id="261" name="circumflexcomb"/>
+ <GlyphID id="262" name="ringcomb"/>
+ <GlyphID id="263" name="tildecomb"/>
+ <GlyphID id="264" name="macroncomb"/>
+ <GlyphID id="265" name="cedillacomb"/>
+ <GlyphID id="266" name="dieresis"/>
+ <GlyphID id="267" name="grave"/>
+ <GlyphID id="268" name="acute"/>
+ <GlyphID id="269" name="circumflex"/>
+ <GlyphID id="270" name="ring"/>
+ <GlyphID id="271" name="tilde"/>
+ <GlyphID id="272" name="macron"/>
+ <GlyphID id="273" name="cedilla"/>
+ <GlyphID id="274" name="epsilon1"/>
+ </GlyphOrder>
+
+ <head>
+ <!-- Most of this table will be recalculated by the compiler -->
+ <tableVersion value="1.0"/>
+ <fontRevision value="1.0"/>
+ <checkSumAdjustment value="0x37e808fc"/>
+ <magicNumber value="0x5f0f3cf5"/>
+ <flags value="00000000 00000011"/>
+ <unitsPerEm value="1000"/>
+ <created value="Sat Apr 18 10:46:40 2015"/>
+ <modified value="Thu Jan 1 00:00:00 1970"/>
+ <xMin value="-199"/>
+ <yMin value="-269"/>
+ <xMax value="1046"/>
+ <yMax value="954"/>
+ <macStyle value="00000000 00000000"/>
+ <lowestRecPPEM value="6"/>
+ <fontDirectionHint value="2"/>
+ <indexToLocFormat value="0"/>
+ <glyphDataFormat value="0"/>
+ </head>
+
+ <hhea>
+ <tableVersion value="0x00010000"/>
+ <ascent value="800"/>
+ <descent value="-200"/>
+ <lineGap value="90"/>
+ <advanceWidthMax value="1050"/>
+ <minLeftSideBearing value="-199"/>
+ <minRightSideBearing value="-199"/>
+ <xMaxExtent value="1046"/>
+ <caretSlopeRise value="1"/>
+ <caretSlopeRun value="0"/>
+ <caretOffset value="0"/>
+ <reserved0 value="0"/>
+ <reserved1 value="0"/>
+ <reserved2 value="0"/>
+ <reserved3 value="0"/>
+ <metricDataFormat value="0"/>
+ <numberOfHMetrics value="275"/>
+ </hhea>
+
+ <maxp>
+ <tableVersion value="0x5000"/>
+ <numGlyphs value="275"/>
+ </maxp>
+
+ <OS_2>
+ <!-- The fields 'usFirstCharIndex' and 'usLastCharIndex'
+ will be recalculated by the compiler -->
+ <version value="4"/>
+ <xAvgCharWidth value="520"/>
+ <usWeightClass value="500"/>
+ <usWidthClass value="5"/>
+ <fsType value="00000000 00000000"/>
+ <ySubscriptXSize value="650"/>
+ <ySubscriptYSize value="600"/>
+ <ySubscriptXOffset value="0"/>
+ <ySubscriptYOffset value="75"/>
+ <ySuperscriptXSize value="650"/>
+ <ySuperscriptYSize value="600"/>
+ <ySuperscriptXOffset value="0"/>
+ <ySuperscriptYOffset value="350"/>
+ <yStrikeoutSize value="50"/>
+ <yStrikeoutPosition value="277"/>
+ <sFamilyClass value="0"/>
+ <panose>
+ <bFamilyType value="0"/>
+ <bSerifStyle value="0"/>
+ <bWeight value="0"/>
+ <bProportion value="0"/>
+ <bContrast value="0"/>
+ <bStrokeVariation value="0"/>
+ <bArmStyle value="0"/>
+ <bLetterForm value="0"/>
+ <bMidline value="0"/>
+ <bXHeight value="0"/>
+ </panose>
+ <ulUnicodeRange1 value="10000000 00000000 00000000 11101111"/>
+ <ulUnicodeRange2 value="00000000 00000000 00000000 01001011"/>
+ <ulUnicodeRange3 value="00000000 00000000 00000000 00000000"/>
+ <ulUnicodeRange4 value="00000000 00000000 00000000 00000000"/>
+ <achVendID value="ALIF"/>
+ <fsSelection value="00000000 01000000"/>
+ <usFirstCharIndex value="32"/>
+ <usLastCharIndex value="8725"/>
+ <sTypoAscender value="800"/>
+ <sTypoDescender value="-200"/>
+ <sTypoLineGap value="90"/>
+ <usWinAscent value="931"/>
+ <usWinDescent value="275"/>
+ <ulCodePageRange1 value="00000000 00000000 00000000 00000001"/>
+ <ulCodePageRange2 value="00000000 00000000 00000000 00000000"/>
+ <sxHeight value="462"/>
+ <sCapHeight value="683"/>
+ <usDefaultChar value="0"/>
+ <usBreakChar value="32"/>
+ <usMaxContext value="2"/>
+ </OS_2>
+
+ <name>
+ <namerecord nameID="0" platformID="3" platEncID="1" langID="0x409">
+ Copyright (c) 1997, 2009, 2011 American Mathematical Society (&lt;http://www.ams.org&gt;), with Reserved Font Name EURM10.
+ </namerecord>
+ <namerecord nameID="1" platformID="3" platEncID="1" langID="0x409">
+ Euler Text
+ </namerecord>
+ <namerecord nameID="2" platformID="3" platEncID="1" langID="0x409">
+ Regular
+ </namerecord>
+ <namerecord nameID="3" platformID="3" platEncID="1" langID="0x409">
+ 1.000;ALIF;EulerText-Regular
+ </namerecord>
+ <namerecord nameID="4" platformID="3" platEncID="1" langID="0x409">
+ Euler Text Regular
+ </namerecord>
+ <namerecord nameID="5" platformID="3" platEncID="1" langID="0x409">
+ Version 1.000
+ </namerecord>
+ <namerecord nameID="6" platformID="3" platEncID="1" langID="0x409">
+ EulerText-Regular
+ </namerecord>
+ </name>
+
+ <cmap>
+ <tableVersion version="0"/>
+ <cmap_format_4 platformID="0" platEncID="3" language="0">
+ <map code="0x20" name="space"/><!-- SPACE -->
+ <map code="0x21" name="exclam"/><!-- EXCLAMATION MARK -->
+ <map code="0x22" name="quotedbl"/><!-- QUOTATION MARK -->
+ <map code="0x23" name="numbersign"/><!-- NUMBER SIGN -->
+ <map code="0x24" name="dollar"/><!-- DOLLAR SIGN -->
+ <map code="0x25" name="percent"/><!-- PERCENT SIGN -->
+ <map code="0x26" name="ampersand"/><!-- AMPERSAND -->
+ <map code="0x27" name="quotesingle"/><!-- APOSTROPHE -->
+ <map code="0x28" name="parenleft"/><!-- LEFT PARENTHESIS -->
+ <map code="0x29" name="parenright"/><!-- RIGHT PARENTHESIS -->
+ <map code="0x2a" name="asterisk"/><!-- ASTERISK -->
+ <map code="0x2b" name="plus"/><!-- PLUS SIGN -->
+ <map code="0x2c" name="comma"/><!-- COMMA -->
+ <map code="0x2d" name="hyphen"/><!-- HYPHEN-MINUS -->
+ <map code="0x2e" name="period"/><!-- FULL STOP -->
+ <map code="0x2f" name="slash"/><!-- SOLIDUS -->
+ <map code="0x30" name="zero"/><!-- DIGIT ZERO -->
+ <map code="0x31" name="one"/><!-- DIGIT ONE -->
+ <map code="0x32" name="two"/><!-- DIGIT TWO -->
+ <map code="0x33" name="three"/><!-- DIGIT THREE -->
+ <map code="0x34" name="four"/><!-- DIGIT FOUR -->
+ <map code="0x35" name="five"/><!-- DIGIT FIVE -->
+ <map code="0x36" name="six"/><!-- DIGIT SIX -->
+ <map code="0x37" name="seven"/><!-- DIGIT SEVEN -->
+ <map code="0x38" name="eight"/><!-- DIGIT EIGHT -->
+ <map code="0x39" name="nine"/><!-- DIGIT NINE -->
+ <map code="0x3a" name="colon"/><!-- COLON -->
+ <map code="0x3b" name="semicolon"/><!-- SEMICOLON -->
+ <map code="0x3c" name="less"/><!-- LESS-THAN SIGN -->
+ <map code="0x3d" name="equal"/><!-- EQUALS SIGN -->
+ <map code="0x3e" name="greater"/><!-- GREATER-THAN SIGN -->
+ <map code="0x3f" name="question"/><!-- QUESTION MARK -->
+ <map code="0x40" name="at"/><!-- COMMERCIAL AT -->
+ <map code="0x41" name="A"/><!-- LATIN CAPITAL LETTER A -->
+ <map code="0x42" name="B"/><!-- LATIN CAPITAL LETTER B -->
+ <map code="0x43" name="C"/><!-- LATIN CAPITAL LETTER C -->
+ <map code="0x44" name="D"/><!-- LATIN CAPITAL LETTER D -->
+ <map code="0x45" name="E"/><!-- LATIN CAPITAL LETTER E -->
+ <map code="0x46" name="F"/><!-- LATIN CAPITAL LETTER F -->
+ <map code="0x47" name="G"/><!-- LATIN CAPITAL LETTER G -->
+ <map code="0x48" name="H"/><!-- LATIN CAPITAL LETTER H -->
+ <map code="0x49" name="I"/><!-- LATIN CAPITAL LETTER I -->
+ <map code="0x4a" name="J"/><!-- LATIN CAPITAL LETTER J -->
+ <map code="0x4b" name="K"/><!-- LATIN CAPITAL LETTER K -->
+ <map code="0x4c" name="L"/><!-- LATIN CAPITAL LETTER L -->
+ <map code="0x4d" name="M"/><!-- LATIN CAPITAL LETTER M -->
+ <map code="0x4e" name="N"/><!-- LATIN CAPITAL LETTER N -->
+ <map code="0x4f" name="O"/><!-- LATIN CAPITAL LETTER O -->
+ <map code="0x50" name="P"/><!-- LATIN CAPITAL LETTER P -->
+ <map code="0x51" name="Q"/><!-- LATIN CAPITAL LETTER Q -->
+ <map code="0x52" name="R"/><!-- LATIN CAPITAL LETTER R -->
+ <map code="0x53" name="S"/><!-- LATIN CAPITAL LETTER S -->
+ <map code="0x54" name="T"/><!-- LATIN CAPITAL LETTER T -->
+ <map code="0x55" name="U"/><!-- LATIN CAPITAL LETTER U -->
+ <map code="0x56" name="V"/><!-- LATIN CAPITAL LETTER V -->
+ <map code="0x57" name="W"/><!-- LATIN CAPITAL LETTER W -->
+ <map code="0x58" name="X"/><!-- LATIN CAPITAL LETTER X -->
+ <map code="0x59" name="Y"/><!-- LATIN CAPITAL LETTER Y -->
+ <map code="0x5a" name="Z"/><!-- LATIN CAPITAL LETTER Z -->
+ <map code="0x5b" name="bracketleft"/><!-- LEFT SQUARE BRACKET -->
+ <map code="0x5c" name="backslash"/><!-- REVERSE SOLIDUS -->
+ <map code="0x5d" name="bracketright"/><!-- RIGHT SQUARE BRACKET -->
+ <map code="0x5e" name="circumflex"/><!-- CIRCUMFLEX ACCENT -->
+ <map code="0x5f" name="underscore"/><!-- LOW LINE -->
+ <map code="0x60" name="grave"/><!-- GRAVE ACCENT -->
+ <map code="0x61" name="a"/><!-- LATIN SMALL LETTER A -->
+ <map code="0x62" name="b"/><!-- LATIN SMALL LETTER B -->
+ <map code="0x63" name="c"/><!-- LATIN SMALL LETTER C -->
+ <map code="0x64" name="d"/><!-- LATIN SMALL LETTER D -->
+ <map code="0x65" name="e"/><!-- LATIN SMALL LETTER E -->
+ <map code="0x66" name="f"/><!-- LATIN SMALL LETTER F -->
+ <map code="0x67" name="g"/><!-- LATIN SMALL LETTER G -->
+ <map code="0x68" name="h"/><!-- LATIN SMALL LETTER H -->
+ <map code="0x69" name="i"/><!-- LATIN SMALL LETTER I -->
+ <map code="0x6a" name="j"/><!-- LATIN SMALL LETTER J -->
+ <map code="0x6b" name="k"/><!-- LATIN SMALL LETTER K -->
+ <map code="0x6c" name="l"/><!-- LATIN SMALL LETTER L -->
+ <map code="0x6d" name="m"/><!-- LATIN SMALL LETTER M -->
+ <map code="0x6e" name="n"/><!-- LATIN SMALL LETTER N -->
+ <map code="0x6f" name="o"/><!-- LATIN SMALL LETTER O -->
+ <map code="0x70" name="p"/><!-- LATIN SMALL LETTER P -->
+ <map code="0x71" name="q"/><!-- LATIN SMALL LETTER Q -->
+ <map code="0x72" name="r"/><!-- LATIN SMALL LETTER R -->
+ <map code="0x73" name="s"/><!-- LATIN SMALL LETTER S -->
+ <map code="0x74" name="t"/><!-- LATIN SMALL LETTER T -->
+ <map code="0x75" name="u"/><!-- LATIN SMALL LETTER U -->
+ <map code="0x76" name="v"/><!-- LATIN SMALL LETTER V -->
+ <map code="0x77" name="w"/><!-- LATIN SMALL LETTER W -->
+ <map code="0x78" name="x"/><!-- LATIN SMALL LETTER X -->
+ <map code="0x79" name="y"/><!-- LATIN SMALL LETTER Y -->
+ <map code="0x7a" name="z"/><!-- LATIN SMALL LETTER Z -->
+ <map code="0x7b" name="braceleft"/><!-- LEFT CURLY BRACKET -->
+ <map code="0x7c" name="bar"/><!-- VERTICAL LINE -->
+ <map code="0x7d" name="braceright"/><!-- RIGHT CURLY BRACKET -->
+ <map code="0x7e" name="asciitilde"/><!-- TILDE -->
+ <map code="0xa1" name="exclamdown"/><!-- INVERTED EXCLAMATION MARK -->
+ <map code="0xa2" name="cent"/><!-- CENT SIGN -->
+ <map code="0xa3" name="sterling"/><!-- POUND SIGN -->
+ <map code="0xa4" name="currency"/><!-- CURRENCY SIGN -->
+ <map code="0xa5" name="yen"/><!-- YEN SIGN -->
+ <map code="0xa6" name="brokenbar"/><!-- BROKEN BAR -->
+ <map code="0xa7" name="section"/><!-- SECTION SIGN -->
+ <map code="0xa8" name="dieresis"/><!-- DIAERESIS -->
+ <map code="0xa9" name="copyright"/><!-- COPYRIGHT SIGN -->
+ <map code="0xaa" name="ordfeminine"/><!-- FEMININE ORDINAL INDICATOR -->
+ <map code="0xab" name="guillemotleft"/><!-- LEFT-POINTING DOUBLE ANGLE QUOTATION MARK -->
+ <map code="0xac" name="logicalnot"/><!-- NOT SIGN -->
+ <map code="0xad" name="softhyphen"/><!-- SOFT HYPHEN -->
+ <map code="0xae" name="registered"/><!-- REGISTERED SIGN -->
+ <map code="0xaf" name="macron"/><!-- MACRON -->
+ <map code="0xb0" name="degree"/><!-- DEGREE SIGN -->
+ <map code="0xb1" name="plusminus"/><!-- PLUS-MINUS SIGN -->
+ <map code="0xb2" name="twosuperior"/><!-- SUPERSCRIPT TWO -->
+ <map code="0xb3" name="threesuperior"/><!-- SUPERSCRIPT THREE -->
+ <map code="0xb4" name="acute"/><!-- ACUTE ACCENT -->
+ <map code="0xb5" name="mu"/><!-- MICRO SIGN -->
+ <map code="0xb6" name="paragraph"/><!-- PILCROW SIGN -->
+ <map code="0xb7" name="periodcentered"/><!-- MIDDLE DOT -->
+ <map code="0xb8" name="cedilla"/><!-- CEDILLA -->
+ <map code="0xb9" name="onesuperior"/><!-- SUPERSCRIPT ONE -->
+ <map code="0xba" name="ordmasculine"/><!-- MASCULINE ORDINAL INDICATOR -->
+ <map code="0xbb" name="guillemotright"/><!-- RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -->
+ <map code="0xbc" name="onequarter"/><!-- VULGAR FRACTION ONE QUARTER -->
+ <map code="0xbd" name="onehalf"/><!-- VULGAR FRACTION ONE HALF -->
+ <map code="0xbe" name="threequarters"/><!-- VULGAR FRACTION THREE QUARTERS -->
+ <map code="0xbf" name="questiondown"/><!-- INVERTED QUESTION MARK -->
+ <map code="0xc0" name="Agrave"/><!-- LATIN CAPITAL LETTER A WITH GRAVE -->
+ <map code="0xc1" name="Aacute"/><!-- LATIN CAPITAL LETTER A WITH ACUTE -->
+ <map code="0xc2" name="Acircumflex"/><!-- LATIN CAPITAL LETTER A WITH CIRCUMFLEX -->
+ <map code="0xc3" name="Atilde"/><!-- LATIN CAPITAL LETTER A WITH TILDE -->
+ <map code="0xc4" name="Adieresis"/><!-- LATIN CAPITAL LETTER A WITH DIAERESIS -->
+ <map code="0xc5" name="Aring"/><!-- LATIN CAPITAL LETTER A WITH RING ABOVE -->
+ <map code="0xc6" name="AE"/><!-- LATIN CAPITAL LETTER AE -->
+ <map code="0xc7" name="Ccedilla"/><!-- LATIN CAPITAL LETTER C WITH CEDILLA -->
+ <map code="0xc8" name="Egrave"/><!-- LATIN CAPITAL LETTER E WITH GRAVE -->
+ <map code="0xc9" name="Eacute"/><!-- LATIN CAPITAL LETTER E WITH ACUTE -->
+ <map code="0xca" name="Ecircumflex"/><!-- LATIN CAPITAL LETTER E WITH CIRCUMFLEX -->
+ <map code="0xcb" name="Edieresis"/><!-- LATIN CAPITAL LETTER E WITH DIAERESIS -->
+ <map code="0xcc" name="Igrave"/><!-- LATIN CAPITAL LETTER I WITH GRAVE -->
+ <map code="0xcd" name="Iacute"/><!-- LATIN CAPITAL LETTER I WITH ACUTE -->
+ <map code="0xce" name="Icircumflex"/><!-- LATIN CAPITAL LETTER I WITH CIRCUMFLEX -->
+ <map code="0xcf" name="Idieresis"/><!-- LATIN CAPITAL LETTER I WITH DIAERESIS -->
+ <map code="0xd0" name="Eth"/><!-- LATIN CAPITAL LETTER ETH -->
+ <map code="0xd1" name="Ntilde"/><!-- LATIN CAPITAL LETTER N WITH TILDE -->
+ <map code="0xd2" name="Ograve"/><!-- LATIN CAPITAL LETTER O WITH GRAVE -->
+ <map code="0xd3" name="Oacute"/><!-- LATIN CAPITAL LETTER O WITH ACUTE -->
+ <map code="0xd4" name="Ocircumflex"/><!-- LATIN CAPITAL LETTER O WITH CIRCUMFLEX -->
+ <map code="0xd5" name="Otilde"/><!-- LATIN CAPITAL LETTER O WITH TILDE -->
+ <map code="0xd6" name="Odieresis"/><!-- LATIN CAPITAL LETTER O WITH DIAERESIS -->
+ <map code="0xd7" name="multiply"/><!-- MULTIPLICATION SIGN -->
+ <map code="0xd8" name="Oslash"/><!-- LATIN CAPITAL LETTER O WITH STROKE -->
+ <map code="0xd9" name="Ugrave"/><!-- LATIN CAPITAL LETTER U WITH GRAVE -->
+ <map code="0xda" name="Uacute"/><!-- LATIN CAPITAL LETTER U WITH ACUTE -->
+ <map code="0xdb" name="Ucircumflex"/><!-- LATIN CAPITAL LETTER U WITH CIRCUMFLEX -->
+ <map code="0xdc" name="Udieresis"/><!-- LATIN CAPITAL LETTER U WITH DIAERESIS -->
+ <map code="0xdd" name="Yacute"/><!-- LATIN CAPITAL LETTER Y WITH ACUTE -->
+ <map code="0xde" name="Thorn"/><!-- LATIN CAPITAL LETTER THORN -->
+ <map code="0xdf" name="germandbls"/><!-- LATIN SMALL LETTER SHARP S -->
+ <map code="0xe0" name="agrave"/><!-- LATIN SMALL LETTER A WITH GRAVE -->
+ <map code="0xe1" name="aacute"/><!-- LATIN SMALL LETTER A WITH ACUTE -->
+ <map code="0xe2" name="acircumflex"/><!-- LATIN SMALL LETTER A WITH CIRCUMFLEX -->
+ <map code="0xe3" name="atilde"/><!-- LATIN SMALL LETTER A WITH TILDE -->
+ <map code="0xe4" name="adieresis"/><!-- LATIN SMALL LETTER A WITH DIAERESIS -->
+ <map code="0xe5" name="aring"/><!-- LATIN SMALL LETTER A WITH RING ABOVE -->
+ <map code="0xe6" name="ae"/><!-- LATIN SMALL LETTER AE -->
+ <map code="0xe7" name="ccedilla"/><!-- LATIN SMALL LETTER C WITH CEDILLA -->
+ <map code="0xe8" name="egrave"/><!-- LATIN SMALL LETTER E WITH GRAVE -->
+ <map code="0xe9" name="eacute"/><!-- LATIN SMALL LETTER E WITH ACUTE -->
+ <map code="0xea" name="ecircumflex"/><!-- LATIN SMALL LETTER E WITH CIRCUMFLEX -->
+ <map code="0xeb" name="edieresis"/><!-- LATIN SMALL LETTER E WITH DIAERESIS -->
+ <map code="0xec" name="igrave"/><!-- LATIN SMALL LETTER I WITH GRAVE -->
+ <map code="0xed" name="iacute"/><!-- LATIN SMALL LETTER I WITH ACUTE -->
+ <map code="0xee" name="icircumflex"/><!-- LATIN SMALL LETTER I WITH CIRCUMFLEX -->
+ <map code="0xef" name="idieresis"/><!-- LATIN SMALL LETTER I WITH DIAERESIS -->
+ <map code="0xf0" name="eth"/><!-- LATIN SMALL LETTER ETH -->
+ <map code="0xf1" name="ntilde"/><!-- LATIN SMALL LETTER N WITH TILDE -->
+ <map code="0xf2" name="ograve"/><!-- LATIN SMALL LETTER O WITH GRAVE -->
+ <map code="0xf3" name="oacute"/><!-- LATIN SMALL LETTER O WITH ACUTE -->
+ <map code="0xf4" name="ocircumflex"/><!-- LATIN SMALL LETTER O WITH CIRCUMFLEX -->
+ <map code="0xf5" name="otilde"/><!-- LATIN SMALL LETTER O WITH TILDE -->
+ <map code="0xf6" name="odieresis"/><!-- LATIN SMALL LETTER O WITH DIAERESIS -->
+ <map code="0xf7" name="divide"/><!-- DIVISION SIGN -->
+ <map code="0xf8" name="oslash"/><!-- LATIN SMALL LETTER O WITH STROKE -->
+ <map code="0xf9" name="ugrave"/><!-- LATIN SMALL LETTER U WITH GRAVE -->
+ <map code="0xfa" name="uacute"/><!-- LATIN SMALL LETTER U WITH ACUTE -->
+ <map code="0xfb" name="ucircumflex"/><!-- LATIN SMALL LETTER U WITH CIRCUMFLEX -->
+ <map code="0xfc" name="udieresis"/><!-- LATIN SMALL LETTER U WITH DIAERESIS -->
+ <map code="0xfd" name="yacute"/><!-- LATIN SMALL LETTER Y WITH ACUTE -->
+ <map code="0xfe" name="thorn"/><!-- LATIN SMALL LETTER THORN -->
+ <map code="0xff" name="ydieresis"/><!-- LATIN SMALL LETTER Y WITH DIAERESIS -->
+ <map code="0x131" name="dotlessi"/><!-- LATIN SMALL LETTER DOTLESS I -->
+ <map code="0x152" name="OE"/><!-- LATIN CAPITAL LIGATURE OE -->
+ <map code="0x153" name="oe"/><!-- LATIN SMALL LIGATURE OE -->
+ <map code="0x237" name="dotlessj"/><!-- LATIN SMALL LETTER DOTLESS J -->
+ <map code="0x2c6" name="circumflex"/><!-- MODIFIER LETTER CIRCUMFLEX ACCENT -->
+ <map code="0x2da" name="ring"/><!-- RING ABOVE -->
+ <map code="0x2dc" name="tilde"/><!-- SMALL TILDE -->
+ <map code="0x300" name="gravecomb"/><!-- COMBINING GRAVE ACCENT -->
+ <map code="0x301" name="acutecomb"/><!-- COMBINING ACUTE ACCENT -->
+ <map code="0x302" name="circumflexcomb"/><!-- COMBINING CIRCUMFLEX ACCENT -->
+ <map code="0x303" name="tildecomb"/><!-- COMBINING TILDE -->
+ <map code="0x304" name="macroncomb"/><!-- COMBINING MACRON -->
+ <map code="0x308" name="dieresiscomb"/><!-- COMBINING DIAERESIS -->
+ <map code="0x30a" name="ringcomb"/><!-- COMBINING RING ABOVE -->
+ <map code="0x327" name="cedillacomb"/><!-- COMBINING CEDILLA -->
+ <map code="0x393" name="Gamma"/><!-- GREEK CAPITAL LETTER GAMMA -->
+ <map code="0x398" name="Theta"/><!-- GREEK CAPITAL LETTER THETA -->
+ <map code="0x39b" name="Lambda"/><!-- GREEK CAPITAL LETTER LAMDA -->
+ <map code="0x39e" name="Xi"/><!-- GREEK CAPITAL LETTER XI -->
+ <map code="0x3a0" name="Pi"/><!-- GREEK CAPITAL LETTER PI -->
+ <map code="0x3a3" name="Sigma"/><!-- GREEK CAPITAL LETTER SIGMA -->
+ <map code="0x3a5" name="Upsilon"/><!-- GREEK CAPITAL LETTER UPSILON -->
+ <map code="0x3a6" name="Phi"/><!-- GREEK CAPITAL LETTER PHI -->
+ <map code="0x3a8" name="Psi"/><!-- GREEK CAPITAL LETTER PSI -->
+ <map code="0x3b1" name="alpha"/><!-- GREEK SMALL LETTER ALPHA -->
+ <map code="0x3b2" name="beta"/><!-- GREEK SMALL LETTER BETA -->
+ <map code="0x3b3" name="gamma"/><!-- GREEK SMALL LETTER GAMMA -->
+ <map code="0x3b4" name="delta"/><!-- GREEK SMALL LETTER DELTA -->
+ <map code="0x3b5" name="epsilon"/><!-- GREEK SMALL LETTER EPSILON -->
+ <map code="0x3b6" name="zeta"/><!-- GREEK SMALL LETTER ZETA -->
+ <map code="0x3b7" name="eta"/><!-- GREEK SMALL LETTER ETA -->
+ <map code="0x3b8" name="theta"/><!-- GREEK SMALL LETTER THETA -->
+ <map code="0x3b9" name="iota"/><!-- GREEK SMALL LETTER IOTA -->
+ <map code="0x3ba" name="kappa"/><!-- GREEK SMALL LETTER KAPPA -->
+ <map code="0x3bb" name="lambda"/><!-- GREEK SMALL LETTER LAMDA -->
+ <map code="0x3bd" name="nu"/><!-- GREEK SMALL LETTER NU -->
+ <map code="0x3be" name="xi"/><!-- GREEK SMALL LETTER XI -->
+ <map code="0x3c0" name="pi"/><!-- GREEK SMALL LETTER PI -->
+ <map code="0x3c1" name="rho"/><!-- GREEK SMALL LETTER RHO -->
+ <map code="0x3c3" name="sigma"/><!-- GREEK SMALL LETTER SIGMA -->
+ <map code="0x3c4" name="tau"/><!-- GREEK SMALL LETTER TAU -->
+ <map code="0x3c5" name="upsilon"/><!-- GREEK SMALL LETTER UPSILON -->
+ <map code="0x3c6" name="phi"/><!-- GREEK SMALL LETTER PHI -->
+ <map code="0x3c7" name="chi"/><!-- GREEK SMALL LETTER CHI -->
+ <map code="0x3c8" name="psi"/><!-- GREEK SMALL LETTER PSI -->
+ <map code="0x3c9" name="omega"/><!-- GREEK SMALL LETTER OMEGA -->
+ <map code="0x3d1" name="theta1"/><!-- GREEK THETA SYMBOL -->
+ <map code="0x3d5" name="phi1"/><!-- GREEK PHI SYMBOL -->
+ <map code="0x3d6" name="pi1"/><!-- GREEK PI SYMBOL -->
+ <map code="0x2018" name="quoteleft"/><!-- LEFT SINGLE QUOTATION MARK -->
+ <map code="0x2019" name="quoteright"/><!-- RIGHT SINGLE QUOTATION MARK -->
+ <map code="0x2022" name="bullet"/><!-- BULLET -->
+ <map code="0x2039" name="guilsinglleft"/><!-- SINGLE LEFT-POINTING ANGLE QUOTATION MARK -->
+ <map code="0x203a" name="guilsinglright"/><!-- SINGLE RIGHT-POINTING ANGLE QUOTATION MARK -->
+ <map code="0x2044" name="fraction"/><!-- FRACTION SLASH -->
+ <map code="0x2074" name="foursuperior"/><!-- SUPERSCRIPT FOUR -->
+ <map code="0x20ac" name="euro"/><!-- EURO SIGN -->
+ <map code="0x2113" name="lscript"/><!-- SCRIPT SMALL L -->
+ <map code="0x2118" name="weierstrass"/><!-- SCRIPT CAPITAL P -->
+ <map code="0x2126" name="Omega"/><!-- OHM SIGN -->
+ <map code="0x2202" name="partialdiff"/><!-- PARTIAL DIFFERENTIAL -->
+ <map code="0x2206" name="Delta"/><!-- INCREMENT -->
+ <map code="0x2212" name="minus"/><!-- MINUS SIGN -->
+ <map code="0x2215" name="fraction"/><!-- DIVISION SLASH -->
+ </cmap_format_4>
+ <cmap_format_4 platformID="3" platEncID="1" language="0">
+ <map code="0x20" name="space"/><!-- SPACE -->
+ <map code="0x21" name="exclam"/><!-- EXCLAMATION MARK -->
+ <map code="0x22" name="quotedbl"/><!-- QUOTATION MARK -->
+ <map code="0x23" name="numbersign"/><!-- NUMBER SIGN -->
+ <map code="0x24" name="dollar"/><!-- DOLLAR SIGN -->
+ <map code="0x25" name="percent"/><!-- PERCENT SIGN -->
+ <map code="0x26" name="ampersand"/><!-- AMPERSAND -->
+ <map code="0x27" name="quotesingle"/><!-- APOSTROPHE -->
+ <map code="0x28" name="parenleft"/><!-- LEFT PARENTHESIS -->
+ <map code="0x29" name="parenright"/><!-- RIGHT PARENTHESIS -->
+ <map code="0x2a" name="asterisk"/><!-- ASTERISK -->
+ <map code="0x2b" name="plus"/><!-- PLUS SIGN -->
+ <map code="0x2c" name="comma"/><!-- COMMA -->
+ <map code="0x2d" name="hyphen"/><!-- HYPHEN-MINUS -->
+ <map code="0x2e" name="period"/><!-- FULL STOP -->
+ <map code="0x2f" name="slash"/><!-- SOLIDUS -->
+ <map code="0x30" name="zero"/><!-- DIGIT ZERO -->
+ <map code="0x31" name="one"/><!-- DIGIT ONE -->
+ <map code="0x32" name="two"/><!-- DIGIT TWO -->
+ <map code="0x33" name="three"/><!-- DIGIT THREE -->
+ <map code="0x34" name="four"/><!-- DIGIT FOUR -->
+ <map code="0x35" name="five"/><!-- DIGIT FIVE -->
+ <map code="0x36" name="six"/><!-- DIGIT SIX -->
+ <map code="0x37" name="seven"/><!-- DIGIT SEVEN -->
+ <map code="0x38" name="eight"/><!-- DIGIT EIGHT -->
+ <map code="0x39" name="nine"/><!-- DIGIT NINE -->
+ <map code="0x3a" name="colon"/><!-- COLON -->
+ <map code="0x3b" name="semicolon"/><!-- SEMICOLON -->
+ <map code="0x3c" name="less"/><!-- LESS-THAN SIGN -->
+ <map code="0x3d" name="equal"/><!-- EQUALS SIGN -->
+ <map code="0x3e" name="greater"/><!-- GREATER-THAN SIGN -->
+ <map code="0x3f" name="question"/><!-- QUESTION MARK -->
+ <map code="0x40" name="at"/><!-- COMMERCIAL AT -->
+ <map code="0x41" name="A"/><!-- LATIN CAPITAL LETTER A -->
+ <map code="0x42" name="B"/><!-- LATIN CAPITAL LETTER B -->
+ <map code="0x43" name="C"/><!-- LATIN CAPITAL LETTER C -->
+ <map code="0x44" name="D"/><!-- LATIN CAPITAL LETTER D -->
+ <map code="0x45" name="E"/><!-- LATIN CAPITAL LETTER E -->
+ <map code="0x46" name="F"/><!-- LATIN CAPITAL LETTER F -->
+ <map code="0x47" name="G"/><!-- LATIN CAPITAL LETTER G -->
+ <map code="0x48" name="H"/><!-- LATIN CAPITAL LETTER H -->
+ <map code="0x49" name="I"/><!-- LATIN CAPITAL LETTER I -->
+ <map code="0x4a" name="J"/><!-- LATIN CAPITAL LETTER J -->
+ <map code="0x4b" name="K"/><!-- LATIN CAPITAL LETTER K -->
+ <map code="0x4c" name="L"/><!-- LATIN CAPITAL LETTER L -->
+ <map code="0x4d" name="M"/><!-- LATIN CAPITAL LETTER M -->
+ <map code="0x4e" name="N"/><!-- LATIN CAPITAL LETTER N -->
+ <map code="0x4f" name="O"/><!-- LATIN CAPITAL LETTER O -->
+ <map code="0x50" name="P"/><!-- LATIN CAPITAL LETTER P -->
+ <map code="0x51" name="Q"/><!-- LATIN CAPITAL LETTER Q -->
+ <map code="0x52" name="R"/><!-- LATIN CAPITAL LETTER R -->
+ <map code="0x53" name="S"/><!-- LATIN CAPITAL LETTER S -->
+ <map code="0x54" name="T"/><!-- LATIN CAPITAL LETTER T -->
+ <map code="0x55" name="U"/><!-- LATIN CAPITAL LETTER U -->
+ <map code="0x56" name="V"/><!-- LATIN CAPITAL LETTER V -->
+ <map code="0x57" name="W"/><!-- LATIN CAPITAL LETTER W -->
+ <map code="0x58" name="X"/><!-- LATIN CAPITAL LETTER X -->
+ <map code="0x59" name="Y"/><!-- LATIN CAPITAL LETTER Y -->
+ <map code="0x5a" name="Z"/><!-- LATIN CAPITAL LETTER Z -->
+ <map code="0x5b" name="bracketleft"/><!-- LEFT SQUARE BRACKET -->
+ <map code="0x5c" name="backslash"/><!-- REVERSE SOLIDUS -->
+ <map code="0x5d" name="bracketright"/><!-- RIGHT SQUARE BRACKET -->
+ <map code="0x5e" name="circumflex"/><!-- CIRCUMFLEX ACCENT -->
+ <map code="0x5f" name="underscore"/><!-- LOW LINE -->
+ <map code="0x60" name="grave"/><!-- GRAVE ACCENT -->
+ <map code="0x61" name="a"/><!-- LATIN SMALL LETTER A -->
+ <map code="0x62" name="b"/><!-- LATIN SMALL LETTER B -->
+ <map code="0x63" name="c"/><!-- LATIN SMALL LETTER C -->
+ <map code="0x64" name="d"/><!-- LATIN SMALL LETTER D -->
+ <map code="0x65" name="e"/><!-- LATIN SMALL LETTER E -->
+ <map code="0x66" name="f"/><!-- LATIN SMALL LETTER F -->
+ <map code="0x67" name="g"/><!-- LATIN SMALL LETTER G -->
+ <map code="0x68" name="h"/><!-- LATIN SMALL LETTER H -->
+ <map code="0x69" name="i"/><!-- LATIN SMALL LETTER I -->
+ <map code="0x6a" name="j"/><!-- LATIN SMALL LETTER J -->
+ <map code="0x6b" name="k"/><!-- LATIN SMALL LETTER K -->
+ <map code="0x6c" name="l"/><!-- LATIN SMALL LETTER L -->
+ <map code="0x6d" name="m"/><!-- LATIN SMALL LETTER M -->
+ <map code="0x6e" name="n"/><!-- LATIN SMALL LETTER N -->
+ <map code="0x6f" name="o"/><!-- LATIN SMALL LETTER O -->
+ <map code="0x70" name="p"/><!-- LATIN SMALL LETTER P -->
+ <map code="0x71" name="q"/><!-- LATIN SMALL LETTER Q -->
+ <map code="0x72" name="r"/><!-- LATIN SMALL LETTER R -->
+ <map code="0x73" name="s"/><!-- LATIN SMALL LETTER S -->
+ <map code="0x74" name="t"/><!-- LATIN SMALL LETTER T -->
+ <map code="0x75" name="u"/><!-- LATIN SMALL LETTER U -->
+ <map code="0x76" name="v"/><!-- LATIN SMALL LETTER V -->
+ <map code="0x77" name="w"/><!-- LATIN SMALL LETTER W -->
+ <map code="0x78" name="x"/><!-- LATIN SMALL LETTER X -->
+ <map code="0x79" name="y"/><!-- LATIN SMALL LETTER Y -->
+ <map code="0x7a" name="z"/><!-- LATIN SMALL LETTER Z -->
+ <map code="0x7b" name="braceleft"/><!-- LEFT CURLY BRACKET -->
+ <map code="0x7c" name="bar"/><!-- VERTICAL LINE -->
+ <map code="0x7d" name="braceright"/><!-- RIGHT CURLY BRACKET -->
+ <map code="0x7e" name="asciitilde"/><!-- TILDE -->
+ <map code="0xa1" name="exclamdown"/><!-- INVERTED EXCLAMATION MARK -->
+ <map code="0xa2" name="cent"/><!-- CENT SIGN -->
+ <map code="0xa3" name="sterling"/><!-- POUND SIGN -->
+ <map code="0xa4" name="currency"/><!-- CURRENCY SIGN -->
+ <map code="0xa5" name="yen"/><!-- YEN SIGN -->
+ <map code="0xa6" name="brokenbar"/><!-- BROKEN BAR -->
+ <map code="0xa7" name="section"/><!-- SECTION SIGN -->
+ <map code="0xa8" name="dieresis"/><!-- DIAERESIS -->
+ <map code="0xa9" name="copyright"/><!-- COPYRIGHT SIGN -->
+ <map code="0xaa" name="ordfeminine"/><!-- FEMININE ORDINAL INDICATOR -->
+ <map code="0xab" name="guillemotleft"/><!-- LEFT-POINTING DOUBLE ANGLE QUOTATION MARK -->
+ <map code="0xac" name="logicalnot"/><!-- NOT SIGN -->
+ <map code="0xad" name="softhyphen"/><!-- SOFT HYPHEN -->
+ <map code="0xae" name="registered"/><!-- REGISTERED SIGN -->
+ <map code="0xaf" name="macron"/><!-- MACRON -->
+ <map code="0xb0" name="degree"/><!-- DEGREE SIGN -->
+ <map code="0xb1" name="plusminus"/><!-- PLUS-MINUS SIGN -->
+ <map code="0xb2" name="twosuperior"/><!-- SUPERSCRIPT TWO -->
+ <map code="0xb3" name="threesuperior"/><!-- SUPERSCRIPT THREE -->
+ <map code="0xb4" name="acute"/><!-- ACUTE ACCENT -->
+ <map code="0xb5" name="mu"/><!-- MICRO SIGN -->
+ <map code="0xb6" name="paragraph"/><!-- PILCROW SIGN -->
+ <map code="0xb7" name="periodcentered"/><!-- MIDDLE DOT -->
+ <map code="0xb8" name="cedilla"/><!-- CEDILLA -->
+ <map code="0xb9" name="onesuperior"/><!-- SUPERSCRIPT ONE -->
+ <map code="0xba" name="ordmasculine"/><!-- MASCULINE ORDINAL INDICATOR -->
+ <map code="0xbb" name="guillemotright"/><!-- RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -->
+ <map code="0xbc" name="onequarter"/><!-- VULGAR FRACTION ONE QUARTER -->
+ <map code="0xbd" name="onehalf"/><!-- VULGAR FRACTION ONE HALF -->
+ <map code="0xbe" name="threequarters"/><!-- VULGAR FRACTION THREE QUARTERS -->
+ <map code="0xbf" name="questiondown"/><!-- INVERTED QUESTION MARK -->
+ <map code="0xc0" name="Agrave"/><!-- LATIN CAPITAL LETTER A WITH GRAVE -->
+ <map code="0xc1" name="Aacute"/><!-- LATIN CAPITAL LETTER A WITH ACUTE -->
+ <map code="0xc2" name="Acircumflex"/><!-- LATIN CAPITAL LETTER A WITH CIRCUMFLEX -->
+ <map code="0xc3" name="Atilde"/><!-- LATIN CAPITAL LETTER A WITH TILDE -->
+ <map code="0xc4" name="Adieresis"/><!-- LATIN CAPITAL LETTER A WITH DIAERESIS -->
+ <map code="0xc5" name="Aring"/><!-- LATIN CAPITAL LETTER A WITH RING ABOVE -->
+ <map code="0xc6" name="AE"/><!-- LATIN CAPITAL LETTER AE -->
+ <map code="0xc7" name="Ccedilla"/><!-- LATIN CAPITAL LETTER C WITH CEDILLA -->
+ <map code="0xc8" name="Egrave"/><!-- LATIN CAPITAL LETTER E WITH GRAVE -->
+ <map code="0xc9" name="Eacute"/><!-- LATIN CAPITAL LETTER E WITH ACUTE -->
+ <map code="0xca" name="Ecircumflex"/><!-- LATIN CAPITAL LETTER E WITH CIRCUMFLEX -->
+ <map code="0xcb" name="Edieresis"/><!-- LATIN CAPITAL LETTER E WITH DIAERESIS -->
+ <map code="0xcc" name="Igrave"/><!-- LATIN CAPITAL LETTER I WITH GRAVE -->
+ <map code="0xcd" name="Iacute"/><!-- LATIN CAPITAL LETTER I WITH ACUTE -->
+ <map code="0xce" name="Icircumflex"/><!-- LATIN CAPITAL LETTER I WITH CIRCUMFLEX -->
+ <map code="0xcf" name="Idieresis"/><!-- LATIN CAPITAL LETTER I WITH DIAERESIS -->
+ <map code="0xd0" name="Eth"/><!-- LATIN CAPITAL LETTER ETH -->
+ <map code="0xd1" name="Ntilde"/><!-- LATIN CAPITAL LETTER N WITH TILDE -->
+ <map code="0xd2" name="Ograve"/><!-- LATIN CAPITAL LETTER O WITH GRAVE -->
+ <map code="0xd3" name="Oacute"/><!-- LATIN CAPITAL LETTER O WITH ACUTE -->
+ <map code="0xd4" name="Ocircumflex"/><!-- LATIN CAPITAL LETTER O WITH CIRCUMFLEX -->
+ <map code="0xd5" name="Otilde"/><!-- LATIN CAPITAL LETTER O WITH TILDE -->
+ <map code="0xd6" name="Odieresis"/><!-- LATIN CAPITAL LETTER O WITH DIAERESIS -->
+ <map code="0xd7" name="multiply"/><!-- MULTIPLICATION SIGN -->
+ <map code="0xd8" name="Oslash"/><!-- LATIN CAPITAL LETTER O WITH STROKE -->
+ <map code="0xd9" name="Ugrave"/><!-- LATIN CAPITAL LETTER U WITH GRAVE -->
+ <map code="0xda" name="Uacute"/><!-- LATIN CAPITAL LETTER U WITH ACUTE -->
+ <map code="0xdb" name="Ucircumflex"/><!-- LATIN CAPITAL LETTER U WITH CIRCUMFLEX -->
+ <map code="0xdc" name="Udieresis"/><!-- LATIN CAPITAL LETTER U WITH DIAERESIS -->
+ <map code="0xdd" name="Yacute"/><!-- LATIN CAPITAL LETTER Y WITH ACUTE -->
+ <map code="0xde" name="Thorn"/><!-- LATIN CAPITAL LETTER THORN -->
+ <map code="0xdf" name="germandbls"/><!-- LATIN SMALL LETTER SHARP S -->
+ <map code="0xe0" name="agrave"/><!-- LATIN SMALL LETTER A WITH GRAVE -->
+ <map code="0xe1" name="aacute"/><!-- LATIN SMALL LETTER A WITH ACUTE -->
+ <map code="0xe2" name="acircumflex"/><!-- LATIN SMALL LETTER A WITH CIRCUMFLEX -->
+ <map code="0xe3" name="atilde"/><!-- LATIN SMALL LETTER A WITH TILDE -->
+ <map code="0xe4" name="adieresis"/><!-- LATIN SMALL LETTER A WITH DIAERESIS -->
+ <map code="0xe5" name="aring"/><!-- LATIN SMALL LETTER A WITH RING ABOVE -->
+ <map code="0xe6" name="ae"/><!-- LATIN SMALL LETTER AE -->
+ <map code="0xe7" name="ccedilla"/><!-- LATIN SMALL LETTER C WITH CEDILLA -->
+ <map code="0xe8" name="egrave"/><!-- LATIN SMALL LETTER E WITH GRAVE -->
+ <map code="0xe9" name="eacute"/><!-- LATIN SMALL LETTER E WITH ACUTE -->
+ <map code="0xea" name="ecircumflex"/><!-- LATIN SMALL LETTER E WITH CIRCUMFLEX -->
+ <map code="0xeb" name="edieresis"/><!-- LATIN SMALL LETTER E WITH DIAERESIS -->
+ <map code="0xec" name="igrave"/><!-- LATIN SMALL LETTER I WITH GRAVE -->
+ <map code="0xed" name="iacute"/><!-- LATIN SMALL LETTER I WITH ACUTE -->
+ <map code="0xee" name="icircumflex"/><!-- LATIN SMALL LETTER I WITH CIRCUMFLEX -->
+ <map code="0xef" name="idieresis"/><!-- LATIN SMALL LETTER I WITH DIAERESIS -->
+ <map code="0xf0" name="eth"/><!-- LATIN SMALL LETTER ETH -->
+ <map code="0xf1" name="ntilde"/><!-- LATIN SMALL LETTER N WITH TILDE -->
+ <map code="0xf2" name="ograve"/><!-- LATIN SMALL LETTER O WITH GRAVE -->
+ <map code="0xf3" name="oacute"/><!-- LATIN SMALL LETTER O WITH ACUTE -->
+ <map code="0xf4" name="ocircumflex"/><!-- LATIN SMALL LETTER O WITH CIRCUMFLEX -->
+ <map code="0xf5" name="otilde"/><!-- LATIN SMALL LETTER O WITH TILDE -->
+ <map code="0xf6" name="odieresis"/><!-- LATIN SMALL LETTER O WITH DIAERESIS -->
+ <map code="0xf7" name="divide"/><!-- DIVISION SIGN -->
+ <map code="0xf8" name="oslash"/><!-- LATIN SMALL LETTER O WITH STROKE -->
+ <map code="0xf9" name="ugrave"/><!-- LATIN SMALL LETTER U WITH GRAVE -->
+ <map code="0xfa" name="uacute"/><!-- LATIN SMALL LETTER U WITH ACUTE -->
+ <map code="0xfb" name="ucircumflex"/><!-- LATIN SMALL LETTER U WITH CIRCUMFLEX -->
+ <map code="0xfc" name="udieresis"/><!-- LATIN SMALL LETTER U WITH DIAERESIS -->
+ <map code="0xfd" name="yacute"/><!-- LATIN SMALL LETTER Y WITH ACUTE -->
+ <map code="0xfe" name="thorn"/><!-- LATIN SMALL LETTER THORN -->
+ <map code="0xff" name="ydieresis"/><!-- LATIN SMALL LETTER Y WITH DIAERESIS -->
+ <map code="0x131" name="dotlessi"/><!-- LATIN SMALL LETTER DOTLESS I -->
+ <map code="0x152" name="OE"/><!-- LATIN CAPITAL LIGATURE OE -->
+ <map code="0x153" name="oe"/><!-- LATIN SMALL LIGATURE OE -->
+ <map code="0x237" name="dotlessj"/><!-- LATIN SMALL LETTER DOTLESS J -->
+ <map code="0x2c6" name="circumflex"/><!-- MODIFIER LETTER CIRCUMFLEX ACCENT -->
+ <map code="0x2da" name="ring"/><!-- RING ABOVE -->
+ <map code="0x2dc" name="tilde"/><!-- SMALL TILDE -->
+ <map code="0x300" name="gravecomb"/><!-- COMBINING GRAVE ACCENT -->
+ <map code="0x301" name="acutecomb"/><!-- COMBINING ACUTE ACCENT -->
+ <map code="0x302" name="circumflexcomb"/><!-- COMBINING CIRCUMFLEX ACCENT -->
+ <map code="0x303" name="tildecomb"/><!-- COMBINING TILDE -->
+ <map code="0x304" name="macroncomb"/><!-- COMBINING MACRON -->
+ <map code="0x308" name="dieresiscomb"/><!-- COMBINING DIAERESIS -->
+ <map code="0x30a" name="ringcomb"/><!-- COMBINING RING ABOVE -->
+ <map code="0x327" name="cedillacomb"/><!-- COMBINING CEDILLA -->
+ <map code="0x393" name="Gamma"/><!-- GREEK CAPITAL LETTER GAMMA -->
+ <map code="0x398" name="Theta"/><!-- GREEK CAPITAL LETTER THETA -->
+ <map code="0x39b" name="Lambda"/><!-- GREEK CAPITAL LETTER LAMDA -->
+ <map code="0x39e" name="Xi"/><!-- GREEK CAPITAL LETTER XI -->
+ <map code="0x3a0" name="Pi"/><!-- GREEK CAPITAL LETTER PI -->
+ <map code="0x3a3" name="Sigma"/><!-- GREEK CAPITAL LETTER SIGMA -->
+ <map code="0x3a5" name="Upsilon"/><!-- GREEK CAPITAL LETTER UPSILON -->
+ <map code="0x3a6" name="Phi"/><!-- GREEK CAPITAL LETTER PHI -->
+ <map code="0x3a8" name="Psi"/><!-- GREEK CAPITAL LETTER PSI -->
+ <map code="0x3b1" name="alpha"/><!-- GREEK SMALL LETTER ALPHA -->
+ <map code="0x3b2" name="beta"/><!-- GREEK SMALL LETTER BETA -->
+ <map code="0x3b3" name="gamma"/><!-- GREEK SMALL LETTER GAMMA -->
+ <map code="0x3b4" name="delta"/><!-- GREEK SMALL LETTER DELTA -->
+ <map code="0x3b5" name="epsilon"/><!-- GREEK SMALL LETTER EPSILON -->
+ <map code="0x3b6" name="zeta"/><!-- GREEK SMALL LETTER ZETA -->
+ <map code="0x3b7" name="eta"/><!-- GREEK SMALL LETTER ETA -->
+ <map code="0x3b8" name="theta"/><!-- GREEK SMALL LETTER THETA -->
+ <map code="0x3b9" name="iota"/><!-- GREEK SMALL LETTER IOTA -->
+ <map code="0x3ba" name="kappa"/><!-- GREEK SMALL LETTER KAPPA -->
+ <map code="0x3bb" name="lambda"/><!-- GREEK SMALL LETTER LAMDA -->
+ <map code="0x3bd" name="nu"/><!-- GREEK SMALL LETTER NU -->
+ <map code="0x3be" name="xi"/><!-- GREEK SMALL LETTER XI -->
+ <map code="0x3c0" name="pi"/><!-- GREEK SMALL LETTER PI -->
+ <map code="0x3c1" name="rho"/><!-- GREEK SMALL LETTER RHO -->
+ <map code="0x3c3" name="sigma"/><!-- GREEK SMALL LETTER SIGMA -->
+ <map code="0x3c4" name="tau"/><!-- GREEK SMALL LETTER TAU -->
+ <map code="0x3c5" name="upsilon"/><!-- GREEK SMALL LETTER UPSILON -->
+ <map code="0x3c6" name="phi"/><!-- GREEK SMALL LETTER PHI -->
+ <map code="0x3c7" name="chi"/><!-- GREEK SMALL LETTER CHI -->
+ <map code="0x3c8" name="psi"/><!-- GREEK SMALL LETTER PSI -->
+ <map code="0x3c9" name="omega"/><!-- GREEK SMALL LETTER OMEGA -->
+ <map code="0x3d1" name="theta1"/><!-- GREEK THETA SYMBOL -->
+ <map code="0x3d5" name="phi1"/><!-- GREEK PHI SYMBOL -->
+ <map code="0x3d6" name="pi1"/><!-- GREEK PI SYMBOL -->
+ <map code="0x2018" name="quoteleft"/><!-- LEFT SINGLE QUOTATION MARK -->
+ <map code="0x2019" name="quoteright"/><!-- RIGHT SINGLE QUOTATION MARK -->
+ <map code="0x2022" name="bullet"/><!-- BULLET -->
+ <map code="0x2039" name="guilsinglleft"/><!-- SINGLE LEFT-POINTING ANGLE QUOTATION MARK -->
+ <map code="0x203a" name="guilsinglright"/><!-- SINGLE RIGHT-POINTING ANGLE QUOTATION MARK -->
+ <map code="0x2044" name="fraction"/><!-- FRACTION SLASH -->
+ <map code="0x2074" name="foursuperior"/><!-- SUPERSCRIPT FOUR -->
+ <map code="0x20ac" name="euro"/><!-- EURO SIGN -->
+ <map code="0x2113" name="lscript"/><!-- SCRIPT SMALL L -->
+ <map code="0x2118" name="weierstrass"/><!-- SCRIPT CAPITAL P -->
+ <map code="0x2126" name="Omega"/><!-- OHM SIGN -->
+ <map code="0x2202" name="partialdiff"/><!-- PARTIAL DIFFERENTIAL -->
+ <map code="0x2206" name="Delta"/><!-- INCREMENT -->
+ <map code="0x2212" name="minus"/><!-- MINUS SIGN -->
+ <map code="0x2215" name="fraction"/><!-- DIVISION SLASH -->
+ </cmap_format_4>
+ </cmap>
+
+ <post>
+ <formatType value="3.0"/>
+ <italicAngle value="0.0"/>
+ <underlinePosition value="-100"/>
+ <underlineThickness value="50"/>
+ <isFixedPitch value="0"/>
+ <minMemType42 value="0"/>
+ <maxMemType42 value="0"/>
+ <minMemType1 value="0"/>
+ <maxMemType1 value="0"/>
+ </post>
+
+ <CFF>
+ <major value="1"/>
+ <minor value="0"/>
+ <CFFFont name="EulerText-Regular">
+ <version value="1.0"/>
+ <Copyright value="Copyright c 1997, 2009, 2011 American Mathematical Society http:www.ams.org, with Reserved Font Name EURM10."/>
+ <FullName value="Euler Text Regular"/>
+ <FamilyName value="Euler Text"/>
+ <isFixedPitch value="0"/>
+ <ItalicAngle value="0"/>
+ <UnderlinePosition value="-100"/>
+ <UnderlineThickness value="50"/>
+ <PaintType value="0"/>
+ <CharstringType value="2"/>
+ <FontMatrix value="0.001 0 0 0.001 0 0"/>
+ <FontBBox value="-199 -269 1046 954"/>
+ <StrokeWidth value="0"/>
+ <!-- charset is dumped separately as the 'GlyphOrder' element -->
+ <Encoding>
+ </Encoding>
+ <Private>
+ <BlueScale value="0.039625"/>
+ <BlueShift value="7"/>
+ <BlueFuzz value="1"/>
+ <ForceBold value="0"/>
+ <LanguageGroup value="0"/>
+ <ExpansionFactor value="0.06"/>
+ <initialRandomSeed value="0"/>
+ <defaultWidthX value="376"/>
+ <nominalWidthX value="545"/>
+ <Subrs>
+ <!-- The 'index' attribute is only for humans; it is ignored when parsed. -->
+ <CharString index="0">
+ -89 callsubr
+ -202 hmoveto
+ -48 callsubr
+ return
+ </CharString>
+ <CharString index="1">
+ rmoveto
+ 23 -12 143 131 121 -124 39 26 -157 160 rlineto
+ return
+ </CharString>
+ <CharString index="2">
+ rmoveto
+ 162 -154 18 31 -120 157 -13 2 rlineto
+ return
+ </CharString>
+ <CharString index="3">
+ rmoveto
+ -47 36 -13 -2 -120 -157 18 -31 rlineto
+ return
+ </CharString>
+ <CharString index="4">
+ rmoveto
+ -26 12 -31 13 -26 -4 -35 -5 -19 -58 -8 -35 14 -5 rcurveline
+ 12 33 10 12 24 3 17 2 18 -4 15 -7 63 -30 rcurveline
+ 20 -9 22 -6 22 3 32 4 20 56 3 29 -13 5 rcurveline
+ -9 -23 -8 -13 -24 -3 -16 -2 -16 5 -14 6 rrcurveto
+ return
+ </CharString>
+ <CharString index="5">
+ rmoveto
+ -170 -68 -140 -141 -90 36 -107 111 58 56 31 32 49 hvcurveto
+ 15 -4 rlineto
+ -34 6 14 -25 37 hhcurveto
+ 32 54 34 24 40 hvcurveto
+ -7 24 rlineto
+ -8 -21 -30 -10 -14 hhcurveto
+ -54 15 125 62 73 2 72 4 73 hvcurveto
+ -5 5 -53 -31 rlineto
+ 23 -32 -43 12 -32 hhcurveto
+ -21 -412 rmoveto
+ -47 callsubr
+ 16 -17 0 -26 -26 vvcurveto
+ -230 vlineto
+ -23 -30 -37 -22 -39 hhcurveto
+ endchar
+ </CharString>
+ <CharString index="6">
+ -49 callsubr
+ 160 -15 83 rrcurveto
+ -194 -65 callsubr
+ -206 586 -58 callsubr
+ </CharString>
+ <CharString index="7">
+ -41 callsubr
+ 54 -54 -79 22 -75 -39 callsubr
+ vhcurveto
+ 51 678 rmoveto
+ 169 61 -182 -142 -150 -62 -163 -166 -39 -61 10 67 -60 hvcurveto
+ -23 callsubr
+ endchar
+ </CharString>
+ <CharString index="8">
+ rmoveto
+ 44 49 14 66 65 vvcurveto
+ 112 -51 114 -147 -79 callsubr
+ vhcurveto
+ -34 callsubr
+ -163 367 rmoveto
+ -42 callsubr
+ 74 18 54 36 54 hhcurveto
+ endchar
+ </CharString>
+ <CharString index="9">
+ rmoveto
+ 44 -17 35 -45 -39 -56 -39 -36 -45 vhcurveto
+ 13 -18 rlineto
+ 15 24 34 17 22 hhcurveto
+ 26 9 -33 -52 hvcurveto
+ -6 -221 rlineto
+ -99 37 -13 43 55 52 52 45 34 vhcurveto
+ 11 vlineto
+ -13 10 rlineto
+ -24 -27 -27 -21 -38 hhcurveto
+ -35 -9 43 74 hvcurveto
+ endchar
+ </CharString>
+ <CharString index="10">
+ hlineto
+ -7 -40 rlineto
+ return
+ </CharString>
+ <CharString index="11">
+ -62 callsubr
+ -148 -1 -7 -7 1 -20 47 -7 23 -12 6 -13 rlinecurve
+ 9 -20 0 -30 -14 vvcurveto
+ -492 vlineto
+ -27 6 -28 20 -11 vhcurveto
+ 388 -82 callsubr
+ endchar
+ </CharString>
+ <CharString index="12">
+ rmoveto
+ -7 6 rlineto
+ -169 hlineto
+ -8 -7 2 -20 rlineto
+ 14 74 -12 -40 hvcurveto
+ -59 vlineto
+ -78 -2 -79 -77 vvcurveto
+ -61 1 -74 7 -46 vhcurveto
+ -59 12 33 -77 139 hhcurveto
+ 83 80 34 45 70 hvcurveto
+ 8 -6 rlineto
+ -30 -6 -39 39 31 71 21 16 51 vhcurveto
+ 5 7 -4 17 rlineto
+ -2 -20 -18 -6 -20 hhcurveto
+ -48 0 72 82 162 1 209 15 114 hvcurveto
+ -6 7 -88 -35 rlineto
+ -2 -182 -2 -183 -183 vvcurveto
+ -32 -54 -60 -27 -62 hhcurveto
+ -97 -79 49 168 hvcurveto
+ 8 273 rlineto
+ 17 5 101 3 14 vhcurveto
+ endchar
+ </CharString>
+ <CharString index="13">
+ rmoveto
+ -19 -26 -34 -23 -27 hhcurveto
+ -49 0 55 61 92 4 93 8 93 hvcurveto
+ -13 11 -77 -35 rlineto
+ 1 -21 0 -39 -46 -71 -1 -89 -65 vvcurveto
+ -24 -39 -47 -29 -45 hhcurveto
+ -92 2 91 102 169 9 55 -75 -42 -55 -43 -30 -39 hvcurveto
+ 13 -20 rlineto
+ 13 23 34 17 14 hhcurveto
+ 12 10 -2 -7 6 hvcurveto
+ 13 -14 4 -16 -91 -29 -4 -101 -33 vvcurveto
+ -56 19 -66 86 59 73 41 34 56 vhcurveto
+ 8 -1 rlineto
+ -42 4 19 -30 46 hhcurveto
+ 51 63 53 41 47 hvcurveto
+ -11 19 rlineto
+ endchar
+ </CharString>
+ <CharString index="14">
+ rmoveto
+ 77 -56 61 -86 -76 -72 -33 -57 -49 vhcurveto
+ -39 -45 -12 -59 -58 vvcurveto
+ -113 32 -125 134 86 80 58 58 62 vhcurveto
+ -31 callsubr
+ 282 122 rlineto
+ 11 5 10 4 12 vvcurveto
+ -177 98 rmoveto
+ -45 callsubr
+ 26 21 30 16 33 hhcurveto
+ endchar
+ </CharString>
+ <CharString index="15">
+ vlineto
+ 40 8 rlineto
+ return
+ </CharString>
+ <CharString index="16">
+ rmoveto
+ -1 -43 11 6 -21 hvcurveto
+ -42 11 11 75 -1 43 rrcurveto
+ -1 61 -1 62 67 vvcurveto
+ 78 -6 119 9 59 vhcurveto
+ 1 12 8 11 13 3 67 15 rcurveline
+ 21 vlineto
+ -6 -80 callsubr
+ -22 vlineto
+ 80 -18 7 5 2 -30 rrcurveto
+ 3 -38 0 -38 -39 vvcurveto
+ -363 vlineto
+ -4 -83 13 -7 -98 -19 rrcurveto
+ -26 265 vlineto
+ endchar
+ </CharString>
+ <CharString index="17">
+ 704 rmoveto
+ -11 -1 -433 -680 rlineto
+ -14 vlineto
+ 31 -13 437 688 -3 11 rlineto
+ return
+ </CharString>
+ <CharString index="18">
+ rmoveto
+ -48 callsubr
+ return
+ </CharString>
+ <CharString index="19">
+ rmoveto
+ -30 callsubr
+ return
+ </CharString>
+ <CharString index="20">
+ 885 -104 callsubr
+ return
+ </CharString>
+ <CharString index="21">
+ hlineto
+ -4 6 rlineto
+ return
+ </CharString>
+ <CharString index="22">
+ rmoveto
+ -28 27 53 -23 47 hhcurveto
+ 107 103 54 130 36 hvcurveto
+ 22 95 -15 212 14 204 -12 4 rcurveline
+ -79 -38 rlineto
+ 5 -69 3 -72 -72 vvcurveto
+ -36 -1 -36 -1 -35 vhcurveto
+ -22 -37 -49 -30 -48 hhcurveto
+ -24 -24 7 19 -15 hvcurveto
+ -16 21 -9 30 -3 93 rrcurveto
+ 58 4 58 56 vvcurveto
+ 37 -20 33 -43 -46 -79 -57 -10 -14 vhcurveto
+ 11 -19 rlineto
+ 12 23 31 16 17 hhcurveto
+ 41 5 -44 -72 hvcurveto
+ -50 -4 -42 -45 vvcurveto
+ -67 7 -98 97 64 68 42 35 56 vhcurveto
+ 6 -5 -1 -32 -1 -33 -6 -33 rlinecurve
+ -57 -10 -24 -101 -107 hhcurveto
+ -45 -38 39 38 -21 hvcurveto
+ -13 hlineto
+ -44 -56 rlineto
+ endchar
+ </CharString>
+ <CharString index="23">
+ -85 -17 -36 -57 -84 -145 -8 -14 rlinecurve
+ -54 -30 -35 -53 -5 hhcurveto
+ -6 -5 6 2 -1 hvcurveto
+ -141 325 rlineto
+ -145 hlineto
+ -7 -7 rlineto
+ -28 vlineto
+ 40 -6 23 -6 23 -45 return
+ </CharString>
+ <CharString index="24">
+ 575 -52 callsubr
+ endchar
+ </CharString>
+ <CharString index="25">
+ hlineto
+ 13 53 -5 5 rlineto
+ -14 -164 -23 0 -47 hhcurveto
+ -61 -21 6 26 -14 hvcurveto
+ -14 25 -1 49 38 vvcurveto
+ 139 vlineto
+ 18 71 -3 58 39 40 -3 -3 39 vhcurveto
+ return
+ </CharString>
+ <CharString index="26">
+ hlineto
+ 6 -8 rlineto
+ -108 vlineto
+ -91 -6 -94 -7 -99 vhcurveto
+ 17 -11 79 24 rlineto
+ -7 81 -3 95 94 vvcurveto
+ 111 vlineto
+ 6 6 rlineto
+ return
+ </CharString>
+ <CharString index="27">
+ 6 rlineto
+ -250 hlineto
+ -7 -6 rlineto
+ return
+ </CharString>
+ <CharString index="28">
+ -70 -71 -22 -52 -47 return
+ </CharString>
+ <CharString index="29">
+ hvcurveto
+ -8 6 rlineto
+ 37 return
+ </CharString>
+ <CharString index="30">
+ rmoveto
+ 21 -304 3 -99 -102 vvcurveto
+ -2 -1 -6 -5 -4 -4 5 3 -3 vhcurveto
+ -117 126 -162 215 -133 176 rrcurveto
+ -162 hlineto
+ -8 -7 4 -27 rlineto
+ 95 -23 -10 -4 -21 -43 1 -43 -43 vvcurveto
+ -158 -5 -159 -8 -158 vhcurveto
+ 9 -9 70 30 rlineto
+ -11 174 -13 219 129 vvcurveto
+ 5 0 12 7 4 4 -5 -4 3 vhcurveto
+ 49 -56 83 -95 102 -126 159 -198 rcurveline
+ 30 -38 14 -16 23 -26 rrcurveto
+ 36 hlineto
+ 227 2 232 13 227 vhcurveto
+ -6 8 rlineto
+ endchar
+ </CharString>
+ <CharString index="31">
+ rmoveto
+ 7 vlineto
+ 40 22 44 38 43 vvcurveto
+ 50 -49 33 -68 vhcurveto
+ -6 hlineto
+ -54 -19 -58 -27 -60 vvcurveto
+ -43 38 -34 38 -23 vhcurveto
+ -7 vlineto
+ -72 -37 -37 -24 -56 vvcurveto
+ -27 6 -27 22 -19 vhcurveto
+ -21 23 38 -6 32 hhcurveto
+ 81 83 47 77 49 -30 20 -71 44 hvcurveto
+ -22 16 rmoveto
+ -36 22 -41 33 35 vvcurveto
+ 23 8 17 31 18 vhcurveto
+ 58 29 -39 -30 -32 -20 -30 -29 -17 hvcurveto
+ -28 -47 rmoveto
+ 55 -31 37 -24 -44 vvcurveto
+ -49 -33 -33 -54 -53 -30 44 43 47 32 25 46 22 vhcurveto
+ endchar
+ </CharString>
+ <CharString index="32">
+ 263 697 -73 callsubr
+ </CharString>
+ <CharString index="33">
+ rmoveto
+ -206 -260 rlineto
+ -27 204 vlineto
+ 5 -5 rlineto
+ -38 1 -50 -4 -21 vhcurveto
+ 3 -3 58 20 rlineto
+ -2 13 -1 48 32 vvcurveto
+ 6 4 rlineto
+ 59 hlineto
+ 12 23 -3 4 rlineto
+ -68 hlineto
+ -6 5 rlineto
+ 93 1 164 1 16 vhcurveto
+ -6 3 rlineto
+ -55 -281 rmoveto
+ -155 hlineto
+ -3 4 1 13 60 83 27 35 rlinecurve
+ 21 27 21 28 25 23 rrcurveto
+ 1 1 1 1 2 hhcurveto
+ 2 1 -1 -4 hvcurveto
+ -205 vlineto
+ endchar
+ </CharString>
+ <CharString index="34">
+ rmoveto
+ -51 -21 -194 -260 rlineto
+ -26 192 vlineto
+ 5 -6 rlineto
+ -38 1 -49 -4 -21 vhcurveto
+ 3 -4 54 20 rlineto
+ -2 13 1 48 32 vvcurveto
+ 4 5 rlineto
+ 56 hlineto
+ 11 22 -3 4 rlineto
+ -64 hlineto
+ -4 5 rlineto
+ 93 -1 164 1 16 vhcurveto
+ -53 -273 rmoveto
+ -4 -5 rlineto
+ -146 hlineto
+ -3 4 rlineto
+ 13 57 84 26 35 vhcurveto
+ 20 27 20 28 23 23 rrcurveto
+ 1 1 2 0 1 hhcurveto
+ 2 1 -1 -4 hvcurveto
+ endchar
+ </CharString>
+ <CharString index="35">
+ rmoveto
+ 10 50 46 58 36 47 rrcurveto
+ 36 46 40 59 50 vvcurveto
+ 65 -49 39 -98 vhcurveto
+ -34 -13 -60 -27 -19 -22 rrcurveto
+ -19 -22 -7 -27 -31 vvcurveto
+ -58 58 -42 46 35 34 10 16 32 vhcurveto
+ 5 -3 rlineto
+ -22 -33 -58 -69 0 vvcurveto
+ -30 -35 -33 -38 -14 -28 7 -4 rcurveline
+ 151 235 rmoveto
+ -14 -16 -25 -5 -22 hhcurveto
+ -57 -31 51 47 31 23 46 38 73 38 -46 -51 -21 -4 -23 -17 -15 hvcurveto
+ endchar
+ </CharString>
+ <CharString index="36">
+ rmoveto
+ 4 -10 -17 3 -10 hhcurveto
+ -61 -57 -35 -39 -43 hvcurveto
+ -60 -55 -31 -72 -76 vvcurveto
+ -69 34 -82 96 81 78 64 71 51 -41 48 -61 -47 -42 -17 -26 -36 vhcurveto
+ -5 1 1 58 13 60 53 44 rlinecurve
+ 23 28 37 16 41 hhcurveto
+ 14 12 -2 -5 13 hvcurveto
+ 7 2 rlineto
+ -217 -221 rmoveto
+ 13 15 41 16 28 hhcurveto
+ 54 38 -41 -44 -47 -31 -37 -56 -70 -19 82 58 hvcurveto
+ endchar
+ </CharString>
+ <CharString index="37">
+ rmoveto
+ 59 15 48 39 58 vvcurveto
+ 53 -46 27 -53 -42 -46 -30 -26 -35 vhcurveto
+ 10 -13 rlineto
+ 15 26 31 16 26 hhcurveto
+ 41 32 -22 -37 -55 -48 -29 -81 -17 hvcurveto
+ -1 -16 rlineto
+ 41 54 -2 -25 26 hvcurveto
+ 20 -19 13 -23 -26 vvcurveto
+ -53 -39 -45 -60 -41 -29 27 32 -22 vhcurveto
+ -7 hlineto
+ -28 -44 4 -6 rlineto
+ -21 31 37 -12 39 hhcurveto
+ 89 90 56 83 62 -56 26 -83 7 hvcurveto
+ endchar
+ </CharString>
+ <CharString index="38">
+ rmoveto
+ 4 5 2 4 32 86 2 1 59 vhcurveto
+ 18 47 rlineto
+ -227 hlineto
+ -5 -4 rlineto
+ -196 vlineto
+ 8 -7 rlineto
+ 19 22 28 13 30 hhcurveto
+ 69 25 -53 -50 -62 -36 -56 -76 -41 -26 34 29 -14 hvcurveto
+ -8 hlineto
+ -29 -33 1 -8 rlineto
+ -29 28 40 -16 43 hhcurveto
+ 97 86 65 93 67 -50 48 -79 -31 -31 -10 -12 -28 hvcurveto
+ endchar
+ </CharString>
+ <CharString index="39">
+ 45 437 rmoveto
+ -150 121 -121 150 150 121 121 150 150 -121 121 -150 -150 -121 -121 -150 vhcurveto
+ 25 hmoveto
+ 136 110 110 136 136 110 -13 callsubr
+ -13 callsubr
+ 110 136 vhcurveto
+ return
+ </CharString>
+ <CharString index="40">
+ rmoveto
+ -29 -10 -34 -15 -22 -20 rrcurveto
+ -58 -51 -31 -72 -72 vvcurveto
+ -71 21 -119 97 122 50 123 99 79 -33 84 -83 45 vhcurveto
+ -38 -38 rmoveto
+ 31 -11 30 -42 4 -8 rrcurveto
+ 30 -47 17 -51 -54 vvcurveto
+ -59 -18 -81 -81 -45 -30 48 40 -14 vhcurveto
+ -11 33 -3 36 35 vvcurveto
+ 60 31 67 59 34 vhcurveto
+ endchar
+ </CharString>
+ <CharString index="41">
+ rmoveto
+ -3 5 rlineto
+ -209 hlineto
+ -4 -5 0 4 1 0 0 1 1 hvcurveto
+ 82 83 107 106 84 vvcurveto
+ 53 -44 40 -58 -56 -50 -32 -36 -37 vhcurveto
+ 13 -11 rlineto
+ 19 26 31 19 37 hhcurveto
+ 56 20 -46 -33 -72 -53 -60 -53 -55 hvcurveto
+ -36 -37 -38 -35 -38 -35 rrcurveto
+ -10 296 vlineto
+ endchar
+ </CharString>
+ <CharString index="42">
+ -27 hlineto
+ 90 -28 callsubr
+ -115 -204 -36 callsubr
+ 225 hlineto
+ 3 6 -5 -4 2 hvcurveto
+ 54 -188 rlineto
+ -44 12 13 -42 33 hhcurveto
+ return
+ </CharString>
+ <CharString index="43">
+ rmoveto
+ 13 25 35 20 16 hhcurveto
+ 36 8 -12 -242 -44 -3 -124 -17 -62 hvcurveto
+ -14 -50 -40 -45 -74 -44 16 -16 rcurveline
+ 90 43 76 60 30 87 rrcurveto
+ 12 35 0 140 20 vvcurveto
+ 37 0 167 -7 43 vhcurveto
+ 33 -3 -10 34 -48 hhcurveto
+ -43 -57 -43 -32 -41 hvcurveto
+ endchar
+ </CharString>
+ <CharString index="44">
+ hhcurveto
+ 86 80 58 58 62 hvcurveto
+ -31 callsubr
+ 42 199 rmoveto
+ 26 21 30 16 33 hhcurveto
+ -45 callsubr
+ return
+ </CharString>
+ <CharString index="45">
+ rmoveto
+ -61 callsubr
+ return
+ </CharString>
+ <CharString index="46">
+ -6 7 rlineto
+ -4 -53 -74 -3 -53 hhcurveto
+ -37 -29 -3 17 hvcurveto
+ 166 vlineto
+ 35 4 37 20 4 vhcurveto
+ 40 hlineto
+ 7 133 -6 -4 69 hvcurveto
+ 4 7 2 50 rlineto
+ 1 -13 -15 0 -18 hhcurveto
+ -1 -71 -101 -5 -70 hhcurveto
+ return
+ </CharString>
+ <CharString index="47">
+ rmoveto
+ 8 -140 vlineto
+ -31 -103 0 4 -13 hvcurveto
+ -14 -47 4 -5 rlineto
+ 228 hlineto
+ 5 -8 rlineto
+ -42 -59 -66 -103 0 vvcurveto
+ -37 -55 -58 -90 -16 -49 4 -5 rcurveline
+ 56 12 22 88 44 81 53 77 rlinecurve
+ endchar
+ </CharString>
+ <CharString index="48">
+ -38 -44 -50 -31 -59 hhcurveto
+ -117 -24 115 86 88 45 100 85 43 33 -39 -67 9 hvcurveto
+ 17 -6 -14 callsubr
+ -148 -105 -108 -150 -99 10 -137 163 return
+ </CharString>
+ <CharString index="49">
+ rmoveto
+ 3 3 -2 -2 1 hvcurveto
+ 70 -244 rlineto
+ -1 2 -8 0 vhcurveto
+ -3 -2 -4 -5 vhcurveto
+ -188 -27 callsubr
+ 1 3 3 3 vhcurveto
+ endchar
+ </CharString>
+ <CharString index="50">
+ -55 callsubr
+ 20 47 rcurveline
+ -36 hlineto
+ endchar
+ </CharString>
+ <CharString index="51">
+ 2 rmoveto
+ 104 131 16 73 67 hvcurveto
+ 77 83 22 84 127 vvcurveto
+ 177 -57 124 -310 vhcurveto
+ -313 hlineto
+ -7 -8 rlineto
+ -19 vlineto
+ 26 -8 47 -6 2 -25 rrcurveto
+ 1 -15 1 -16 -16 vvcurveto
+ return
+ </CharString>
+ <CharString index="52">
+ -112 -53 callsubr
+ return
+ </CharString>
+ <CharString index="53">
+ rmoveto
+ -146 -44 rlineto
+ -16 56 vlineto
+ 42 -10 -49 -67 -84 -2 -84 -3 -83 hvcurveto
+ 8 -3 57 16 rlineto
+ -2 46 0 118 82 vvcurveto
+ 53 1 55 4 53 vhcurveto
+ endchar
+ </CharString>
+ <CharString index="54">
+ rmoveto
+ 37 -11 50 -31 -28 -38 -14 -18 -32 -14 -26 -10 -5 -10 rcurveline
+ 6 -15 55 10 70 18 33 44 rlinecurve
+ 26 36 -9 36 -23 28 -19 23 -40 18 -13 5 return
+ </CharString>
+ <CharString index="55">
+ -32 callsubr
+ 30 hmoveto
+ -29 callsubr
+ return
+ </CharString>
+ <CharString index="56">
+ -36 rmoveto
+ -16 60 vlineto
+ 44 -10 -49 -67 -84 -1 -85 -4 -83 hvcurveto
+ 8 -3 61 17 rlineto
+ -2 46 -1 118 82 vvcurveto
+ 53 2 54 4 53 vhcurveto
+ -5 8 rlineto
+ return
+ </CharString>
+ <CharString index="57">
+ hhcurveto
+ -44 -52 -36 -32 -40 hvcurveto
+ 14 -19 rlineto
+ 14 24 28 15 21 hhcurveto
+ 30 9 -52 -45 hvcurveto
+ -221 vlineto
+ -57 -1 -205 -5 -58 vhcurveto
+ 10 -11 rlineto
+ 73 return
+ </CharString>
+ <CharString index="58">
+ rmoveto
+ 15 15 2 4 15 hvcurveto
+ 104 30 -1 26 rlineto
+ -1 -14 -15 -2 -14 hhcurveto
+ -27 -24 8 22 -13 hvcurveto
+ -36 60 -27 97 -22 81 -33 120 -45 return
+ </CharString>
+ <CharString index="59">
+ 30 -20 28 -34 -29 -35 -22 -34 -32 26 -26 32 32 26 23 33 2 vhcurveto
+ return
+ </CharString>
+ <CharString index="60">
+ -37 -41 8 33 -21 hvcurveto
+ -23 35 -6 43 1 42 2 101 29 55 23 22 rrcurveto
+ 25 26 33 13 36 hhcurveto
+ 25 25 -14 -19 18 hvcurveto
+ return
+ </CharString>
+ <CharString index="61">
+ hlineto
+ -7 -7 rlineto
+ -18 vlineto
+ 38 -5 33 -9 3 -40 rrcurveto
+ 3 -59 2 -59 -59 vvcurveto
+ -141 -5 -141 -2 -140 vhcurveto
+ 7 -7 return
+ </CharString>
+ <CharString index="62">
+ 56 35 -52 -42 -16 -7 -8 -6 -2 hvcurveto
+ -202 -80 -4 4 rlineto
+ -1 6 -1 6 6 vvcurveto
+ 49 7 45 39 42 vhcurveto
+ return
+ </CharString>
+ <CharString index="63">
+ vvcurveto
+ 19 65 -2 29 2 vhcurveto
+ 65 5 73 15 44 45 rrcurveto
+ 42 42 22 55 59 vvcurveto
+ 106 -67 59 -164 vhcurveto
+ return
+ </CharString>
+ <CharString index="64">
+ 6 vvcurveto
+ 37 47 41 21 51 hhcurveto
+ 64 39 -77 -87 -95 -34 -115 -121 -33 -31 15 22 -24 hvcurveto
+ endchar
+ </CharString>
+ <CharString index="65">
+ 113 19 -124 -82 -83 -23 -110 -108 -109 -26 128 84 26 2 26 6 25 hvcurveto
+ return
+ </CharString>
+ <CharString index="66">
+ rmoveto
+ 157 129 72 98 48 hvcurveto
+ 40 81 1 65 66 vvcurveto
+ 93 -22 104 -62 63 vhcurveto
+ return
+ </CharString>
+ <CharString index="67">
+ rmoveto
+ -85 -43 -83 -71 -92 vvcurveto
+ -71 44 -77 88 91 94 101 90 76 -73 67 -76 20 vhcurveto
+ return
+ </CharString>
+ <CharString index="68">
+ -22 callsubr
+ -165 74 -171 205 return
+ </CharString>
+ <CharString index="69">
+ -66 -139 -4 -7 3 9 87 2 113 4 88 hvcurveto
+ 5 2 6 7 vhcurveto
+ endchar
+ </CharString>
+ <CharString index="70">
+ rmoveto
+ 210 202 -192 188 -31 -46 149 -146 -150 -170 rlineto
+ return
+ </CharString>
+ <CharString index="71">
+ -119 -200 3 -10 rcurveline
+ 91 19 117 248 rlineto
+ 4 2 4 4 4 hhcurveto
+ return
+ </CharString>
+ <CharString index="72">
+ rmoveto
+ -37 30 -30 37 37 30 30 37 37 -30 30 -37 -37 -30 -30 -37 vhcurveto
+ endchar
+ </CharString>
+ <CharString index="73">
+ -48 -52 -7 -74 -69 vvcurveto
+ -106 7 49 -104 138 hhcurveto
+ 70 72 20 53 47 hvcurveto
+ return
+ </CharString>
+ <CharString index="74">
+ rmoveto
+ -18 callsubr
+ -192 -188 rlineto
+ return
+ </CharString>
+ <CharString index="75">
+ rmoveto
+ -54 43 -43 54 54 43 43 54 54 -43 43 -54 -54 -43 -43 -54 vhcurveto
+ return
+ </CharString>
+ <CharString index="76">
+ -13 18 -11 2 rlineto
+ -35 -45 -54 -33 -55 hhcurveto
+ -89 -34 78 63 -6 hvcurveto
+ return
+ </CharString>
+ <CharString index="77">
+ -31 26 -26 32 31 25 26 31 31 -25 26 -31 -32 -26 -26 -31 vhcurveto
+ return
+ </CharString>
+ <CharString index="78">
+ 37 30 30 37 37 30 -30 -37 -37 -30 -30 -37 -37 -30 30 37 vhcurveto
+ return
+ </CharString>
+ <CharString index="79">
+ -15 rlineto
+ 9 -2 3 -6 -3 vvcurveto
+ -3 0 -1 -1 -3 vhcurveto
+ -105 -208 return
+ </CharString>
+ <CharString index="80">
+ hlineto
+ -3 -4 4 3 1 0 6 1 2 hvcurveto
+ 116 244 rlineto
+ return
+ </CharString>
+ <CharString index="81">
+ 586 rmoveto
+ -40 -6 rlineto
+ -304 -303 vlineto
+ -7 -40 rlineto
+ 310 return
+ </CharString>
+ <CharString index="82">
+ -63 -60 -37 -70 -30 hvcurveto
+ -16 -36 -2 -51 -35 vvcurveto
+ -6 -6 rlineto
+ return
+ </CharString>
+ <CharString index="83">
+ hlineto
+ 52 186 -7 10 -22 2 -11 -3 -54 -195 rlineto
+ return
+ </CharString>
+ <CharString index="84">
+ -62 68 -17 86 94 vvcurveto
+ 152 64 160 173 vhcurveto
+ return
+ </CharString>
+ <CharString index="85">
+ hhcurveto
+ -93 -105 -20 -68 -63 hvcurveto
+ -74 -80 -27 -85 -129 vvcurveto
+ return
+ </CharString>
+ <CharString index="86">
+ 595 -17 callsubr
+ </CharString>
+ <CharString index="87">
+ 319 rmoveto
+ 11 5 10 4 12 vvcurveto
+ 77 -56 61 -86 return
+ </CharString>
+ <CharString index="88">
+ hlineto
+ -54 -195 4 -14 33 -3 59 212 rlineto
+ return
+ </CharString>
+ <CharString index="89">
+ 14 28 -150 170 149 146 -31 46 return
+ </CharString>
+ <CharString index="90">
+ rmoveto
+ -235 -97 callsubr
+ 236 hlineto
+ endchar
+ </CharString>
+ <CharString index="91">
+ rmoveto
+ -657 -97 callsubr
+ 658 hlineto
+ return
+ </CharString>
+ <CharString index="92">
+ rmoveto
+ -661 -97 callsubr
+ 662 hlineto
+ return
+ </CharString>
+ <CharString index="93">
+ 54 53 rlineto
+ 57 -6 -45 41 -65 hhcurveto
+ return
+ </CharString>
+ <CharString index="94">
+ -110 -136 -136 -110 return
+ </CharString>
+ </Subrs>
+ </Private>
+ <CharStrings>
+ <CharString name=".notdef">
+ -45 50 -200 rmoveto
+ 400 1000 -400 -1000 hlineto
+ 50 50 rmoveto
+ 900 300 -900 -300 vlineto
+ endchar
+ </CharString>
+ <CharString name="A">
+ 177 572 -10 -101 callsubr
+ </CharString>
+ <CharString name="AE">
+ 252 366 66 rmoveto
+ -27 6 -28 20 -11 vhcurveto
+ 388 -82 callsubr
+ 6 48 -61 callsubr
+ -194 -27 hlineto
+ 91 -28 callsubr
+ -116 -206 -36 callsubr
+ 142 hlineto
+ 39 vmoveto
+ -116 -27 callsubr
+ 2 5 4 0 -9 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="Aacute">
+ 177 517 882 -104 callsubr
+ 217 -738 -101 callsubr
+ </CharString>
+ <CharString name="Acircumflex">
+ 177 189 729 -106 callsubr
+ 214 -920 -101 callsubr
+ </CharString>
+ <CharString name="Adieresis">
+ 177 512 813 -107 callsubr
+ 262 -823 -101 callsubr
+ </CharString>
+ <CharString name="Agrave">
+ 177 222 883 -105 callsubr
+ 303 -929 -101 callsubr
+ </CharString>
+ <CharString name="Aring">
+ 177 572 -10 -49 callsubr
+ 159 -15 83 rrcurveto
+ 21 18 13 26 30 vvcurveto
+ 54 -43 43 -54 -54 -43 -43 -54 -29 13 -26 20 -18 vhcurveto
+ -67 -65 callsubr
+ -267 763 rmoveto
+ -29 callsubr
+ 61 -177 -58 callsubr
+ </CharString>
+ <CharString name="Atilde">
+ 177 350 838 -103 callsubr
+ 175 -827 -101 callsubr
+ </CharString>
+ <CharString name="B">
+ 14 335 378 rmoveto
+ 81 34 72 44 97 vvcurveto
+ 109 -116 24 -113 vhcurveto
+ -247 hlineto
+ -7 -7 -1 -17 rlineto
+ 37 -10 46 -7 -34 vvcurveto
+ -530 vlineto
+ -56 -3 16 -20 -30 vhcurveto
+ 1 -10 rlineto
+ 1 131 -2 66 hhcurveto
+ 121 144 48 154 98 -48 52 -146 19 hvcurveto
+ -165 259 rmoveto
+ 21 6 44 -2 23 hhcurveto
+ 85 76 -19 -84 -118 -94 -46 -106 -20 -12 0 10 -2 hvcurveto
+ -53 vmoveto
+ 10 5 21 -2 36 hhcurveto
+ 100 106 -19 -119 -117 -91 -52 -102 -67 -8 4 23 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="C">
+ 88 624 586 rmoveto
+ 85 -52 -76 28 -88 hhcurveto
+ -104 -101 -36 -73 -73 hvcurveto
+ -70 -70 -21 -98 -96 vvcurveto
+ -98 26 -99 70 -70 vhcurveto
+ -57 57 82 -17 79 hhcurveto
+ 87 80 42 49 72 hvcurveto
+ -17 29 rlineto
+ -38 -56 -63 -29 -68 hhcurveto
+ -82 -42 28 55 -55 hvcurveto
+ -33 33 -48 98 92 vvcurveto
+ 152 64 162 182 82 63 -39 -90 34 vhcurveto
+ 14 -1 rlineto
+ endchar
+ </CharString>
+ <CharString name="Ccedilla">
+ 88 285 -55 callsubr
+ 11 26 rcurveline
+ 83 4 76 40 69 47 -17 29 rcurveline
+ -38 -56 -63 -29 -68 hhcurveto
+ -82 -42 28 55 -55 hvcurveto
+ -33 33 -48 98 92 vvcurveto
+ 152 64 162 182 82 63 -39 -90 34 vhcurveto
+ 14 -1 57 58 rlineto
+ 85 -52 -76 28 -88 hhcurveto
+ -104 -101 -36 -73 -73 hvcurveto
+ -70 -70 -21 -98 -96 vvcurveto
+ -98 26 -99 70 -70 vhcurveto
+ 51 -51 71 -19 71 -3 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="D">
+ 192 295 -56 callsubr
+ -494 vlineto
+ -1 -38 -1 -14 -20 -15 rrcurveto
+ -10 vlineto
+ 106 573 rmoveto
+ 71 4 -10 10 5 vhcurveto
+ 3 6 17 1 43 hhcurveto
+ 131 100 -7 -47 48 hvcurveto
+ 56 -56 17 -97 -61 vvcurveto
+ -168 -65 -169 -270 -27 -39 0 13 -13 vhcurveto
+ -15 15 -2 62 -1 40 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="Delta">
+ 206 46 45 rmoveto
+ 2 -42 rlineto
+ 5 73 74 2 74 hhcurveto
+ 125 124 -6 -8 125 hvcurveto
+ 61 32 1 16 -108 209 -86 219 -74 224 rlinecurve
+ -58 -25 rlineto
+ 199 -621 rmoveto
+ -117 -118 3 -118 hhcurveto
+ -35 -35 0 -1 -35 hvcurveto
+ -3 12 80 169 80 157 95 164 rlinecurve
+ 11 hlineto
+ -1 160 -400 41 -94 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="E">
+ -27 417 384 -96 callsubr
+ </CharString>
+ <CharString name="Eacute">
+ -27 385 -87 callsubr
+ 194 -347 -96 callsubr
+ </CharString>
+ <CharString name="Ecircumflex">
+ -27 107 732 -106 callsubr
+ 141 -529 -96 callsubr
+ </CharString>
+ <CharString name="Edieresis">
+ -27 430 816 -107 callsubr
+ 189 -432 -96 callsubr
+ </CharString>
+ <CharString name="Egrave">
+ -27 140 886 -105 callsubr
+ 230 -538 -96 callsubr
+ </CharString>
+ <CharString name="Eth">
+ 201 304 -56 callsubr
+ -193 -69 vlineto
+ -7 -40 rlineto
+ 76 -261 hlineto
+ -1 -38 -1 -14 -20 -15 rrcurveto
+ -10 vlineto
+ 247 378 rmoveto
+ -141 195 hlineto
+ 71 4 -10 10 5 vhcurveto
+ 3 6 17 1 43 hhcurveto
+ 131 100 -7 -47 48 hvcurveto
+ 56 -56 17 -97 -61 vvcurveto
+ -168 -65 -169 -270 -27 -39 0 13 -13 vhcurveto
+ -15 15 -2 62 -1 40 rrcurveto
+ 170 135 vlineto
+ endchar
+ </CharString>
+ <CharString name="F">
+ -104 87 360 rmoveto
+ -121 -3 -120 -4 -121 vhcurveto
+ 92 15 rlineto
+ -4 101 -1 115 101 vvcurveto
+ 7 7 4 5 71 88 -1 -4 70 vhcurveto
+ 5 5 1 49 rlineto
+ -3 -72 -90 -9 -73 hhcurveto
+ -9 -4 8 5 211 3 10 4 14 hvcurveto
+ 17 5 14 6 13 hhcurveto
+ 72 72 -15 -5 72 hvcurveto
+ 8 8 rlineto
+ 53 vlineto
+ -2 -73 -206 0 -142 hhcurveto
+ -7 -7 rlineto
+ -21 vlineto
+ 55 -13 rlineto
+ 40 -10 -7 -73 -43 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="G">
+ 116 325 270 rmoveto
+ 6 -5 54 -2 64 -3 44 -4 rlinecurve
+ 38 -4 -10 -98 -20 vvcurveto
+ -30 6 -54 -26 -5 vhcurveto
+ -7 -31 -31 -3 -32 hhcurveto
+ -196 -82 159 146 152 55 158 187 81 59 -32 -88 44 hvcurveto
+ 12 -1 58 57 rlineto
+ 81 -53 -69 32 -87 hhcurveto
+ -105 -105 -31 -75 -75 hvcurveto
+ -70 -70 -22 -101 -98 vvcurveto
+ -95 25 -98 68 -68 vhcurveto
+ -54 54 75 -26 76 hhcurveto
+ 73 108 27 23 88 hvcurveto
+ 1 -3 182 -2 91 vhcurveto
+ -276 -11 rlineto
+ endchar
+ </CharString>
+ <CharString name="Gamma">
+ -53 464 697 rmoveto
+ -3 -60 -61 -1 -61 hhcurveto
+ -237 hlineto
+ -3 -20 26 -22 rlineto
+ 21 -18 -5 -50 -30 vvcurveto
+ -92 -4 -274 -3 -183 vhcurveto
+ 10 -11 77 23 rlineto
+ -3 178 0 178 177 vvcurveto
+ 37 -2 61 38 3 vhcurveto
+ 1 20 21 1 20 hhcurveto
+ 59 95 1 -49 15 hvcurveto
+ 25 -82 rlineto
+ 25 hlineto
+ endchar
+ </CharString>
+ <CharString name="H">
+ 161 699 32 rmoveto
+ -7 -70 11 36 hvcurveto
+ -3 81 -1 81 81 vvcurveto
+ 121 2 120 9 121 vhcurveto
+ -5 6 -88 -17 rlineto
+ -86 3 -104 -86 vvcurveto
+ -6 -1 -6 -11 vhcurveto
+ -346 hlineto
+ -10 -2 7 5 92 1 123 12 68 hvcurveto
+ -5 5 rlineto
+ -162 hlineto
+ -7 -7 1 -19 57 -20 14 4 2 -27 rlinecurve
+ 6 -83 0 -83 -83 vvcurveto
+ -122 0 -129 -10 -113 vhcurveto
+ 6 -5 92 28 rlineto
+ -6 50 0 44 58 54 1 57 45 vvcurveto
+ 7 6 5 7 vhcurveto
+ 343 hlineto
+ 9 3 -7 -5 -97 -3 -119 -2 -97 hvcurveto
+ 11 -21 rlineto
+ 149 hlineto
+ 6 14 rlineto
+ endchar
+ </CharString>
+ <CharString name="I">
+ -265 275 23 rmoveto
+ -1 -43 11 6 -21 hvcurveto
+ -42 11 11 75 -1 43 rrcurveto
+ -1 61 -1 62 67 vvcurveto
+ 78 -6 119 9 59 vhcurveto
+ 1 12 8 11 13 3 67 15 rcurveline
+ 21 vlineto
+ -6 -80 callsubr
+ -22 vlineto
+ 80 -18 7 5 2 -30 rrcurveto
+ 3 -38 0 -38 -39 vvcurveto
+ -363 vlineto
+ -4 -83 13 -7 -98 -19 rrcurveto
+ -26 265 vlineto
+ endchar
+ </CharString>
+ <CharString name="Iacute">
+ -265 252 -87 callsubr
+ 185 -708 -91 callsubr
+ </CharString>
+ <CharString name="Icircumflex">
+ -265 -26 732 -106 callsubr
+ 132 -890 -91 callsubr
+ </CharString>
+ <CharString name="Idieresis">
+ -265 297 816 -107 callsubr
+ 180 -793 -91 callsubr
+ </CharString>
+ <CharString name="Igrave">
+ -265 7 886 -105 callsubr
+ 221 -899 -91 callsubr
+ </CharString>
+ <CharString name="J">
+ -280 175 608 rmoveto
+ 18 9 17 12 3 vhcurveto
+ 68 14 2 24 -7 -80 callsubr
+ -21 vlineto
+ 72 -18 rlineto
+ 12 -3 4 -23 -11 vvcurveto
+ -512 vlineto
+ -202 -47 -61 -78 -49 vhcurveto
+ 14 -18 rlineto
+ 134 69 62 101 155 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="K">
+ 48 178 319 rmoveto
+ 108 -109 112 -105 105 -112 85 31 rcurveline
+ 1 11 -61 54 -165 164 -107 107 rlinecurve
+ -4 4 -1 2 3 vvcurveto
+ 3 5 5 3 3 vhcurveto
+ 291 294 1 9 rlineto
+ -90 hlineto
+ -287 -326 -8 1 rlineto
+ 202 4 83 11 33 vhcurveto
+ -7 7 rlineto
+ -158 hlineto
+ -8 -7 -2 -17 rlineto
+ 6 60 -16 -17 9 hvcurveto
+ 4 -10 1 -11 -10 vvcurveto
+ -594 vlineto
+ 8 -5 81 29 rlineto
+ -6 97 0 98 98 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="L">
+ -51 482 58 rmoveto
+ -1 -6 -182 -14 -104 hhcurveto
+ -5 -7 7 6 -1 hvcurveto
+ -4 108 -3 116 113 vvcurveto
+ 80 2 78 4 73 vhcurveto
+ 1 11 5 12 12 2 rrcurveto
+ 5 21 43 9 1 hhcurveto
+ 21 vlineto
+ -6 6 rlineto
+ -237 hlineto
+ -7 -7 -1 -17 rlineto
+ 1 37 -8 -4 20 hvcurveto
+ 15 -3 6 -16 -14 vvcurveto
+ -478 vlineto
+ -52 -6 -53 -16 -22 vhcurveto
+ -14 vlineto
+ 138 201 0 -7 74 hvcurveto
+ 14 53 rlineto
+ endchar
+ </CharString>
+ <CharString name="Lambda">
+ 203 368 673 rmoveto
+ -115 -227 -123 -222 -127 -220 13 -10 rcurveline
+ 27 4 26 9 25 10 28 66 146 294 95 188 rrcurveto
+ 12 hlineto
+ 63 -188 59 -190 68 -186 23 -8 rcurveline
+ 53 10 52 14 52 16 1 22 rcurveline
+ -67 -3 -13 -1 -14 8 -5 12 rlinecurve
+ -96 200 -63 212 -54 215 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="M">
+ 417 475 147 rmoveto
+ -4 -2 -6 -5 -4 hhcurveto
+ -4 -5 10 4 -2 hvcurveto
+ -83 177 -94 200 -55 161 rrcurveto
+ -176 hlineto
+ -7 -7 -2 -22 68 -19 rlineto
+ 18 -5 10 -16 -18 vvcurveto
+ -4 0 -4 -1 -4 vhcurveto
+ -27 -198 -35 -197 -38 -196 7 -3 rcurveline
+ 75 26 rlineto
+ 90 7 34 435 21 hhcurveto
+ 4 4 -5 -5 3 hvcurveto
+ 63 -128 94 -229 75 -180 rrcurveto
+ 30 hlineto
+ 286 554 rlineto
+ 5 3 5 3 3 hhcurveto
+ 5 3 -7 -8 hvcurveto
+ 2 -66 8 -246 -25 vvcurveto
+ -182 vlineto
+ -26 33 -9 30 40 52 18 16 44 vhcurveto
+ 24 vlineto
+ -2 -18 -25 -4 -13 hhcurveto
+ -33 -22 27 29 -3 hvcurveto
+ -17 164 -1 153 164 vvcurveto
+ 44 -2 37 27 14 vhcurveto
+ 12 -103 vlineto
+ endchar
+ </CharString>
+ <CharString name="N">
+ 187 577 678 -77 callsubr
+ </CharString>
+ <CharString name="Ntilde">
+ 187 393 841 -103 callsubr
+ 137 -142 -77 callsubr
+ </CharString>
+ <CharString name="O">
+ 192 320 -18 -100 callsubr
+ </CharString>
+ <CharString name="OE">
+ 452 896 384 -62 callsubr
+ -117 -1 rlineto
+ 13 -37 -39 6 -39 -39 callsubr
+ 47 45 6 12 40 vhcurveto
+ 528 -82 callsubr
+ -756 12 rmoveto
+ 152 64 160 173 99 62 -62 -80 34 vhcurveto
+ -363 vlineto
+ -76 -34 -62 -56 -97 hhcurveto
+ -39 -61 10 67 -60 hvcurveto
+ -62 68 -17 86 94 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="Oacute">
+ 209 557 918 -104 callsubr
+ -75 -782 -100 callsubr
+ </CharString>
+ <CharString name="Ocircumflex">
+ 192 218 742 -106 callsubr
+ -67 -941 -100 callsubr
+ </CharString>
+ <CharString name="Odieresis">
+ 192 541 826 -107 callsubr
+ -19 -844 -100 callsubr
+ </CharString>
+ <CharString name="Ograve">
+ 192 251 896 -105 callsubr
+ 22 -950 -100 callsubr
+ </CharString>
+ <CharString name="Omega">
+ 360 853 60 rmoveto
+ -70 -96 -5 -4 -85 hvcurveto
+ 12 vlineto
+ 135 55 50 138 129 vvcurveto
+ 153 -69 151 -237 -99 -99 -23 -71 -71 vhcurveto
+ -68 -68 -28 -93 -96 vvcurveto
+ -113 30 -97 110 -59 vhcurveto
+ -6 -15 -53 5 -76 3 -61 3 rlinecurve
+ -17 -61 rlineto
+ 3 40 40 1 41 hhcurveto
+ 69 69 -4 -6 70 hvcurveto
+ 21 55 rlineto
+ -144 28 -45 130 118 vvcurveto
+ 160 68 165 190 167 68 -149 -137 -138 -43 -137 -154 -36 vhcurveto
+ -9 -58 rlineto
+ 4 56 56 2 56 hhcurveto
+ 59 60 -2 -5 59 hvcurveto
+ 25 53 rlineto
+ endchar
+ </CharString>
+ <CharString name="Oslash">
+ 192 320 -18 -41 callsubr
+ -21 21 -25 16 -26 12 43 100 rcurveline
+ -5 11 -22 5 -11 -2 -44 -100 rlineto
+ 9 -31 -33 4 -33 -22 callsubr
+ -129 45 -133 118 -51 vhcurveto
+ -46 -106 3 -14 32 -8 50 114 rlineto
+ -6 23 26 -3 28 hhcurveto
+ 51 678 rmoveto
+ 41 35 -11 -18 29 hvcurveto
+ -240 -554 -8 7 -7 8 -8 8 rlinecurve
+ -23 callsubr
+ 230 -324 rmoveto
+ -150 -62 -163 -166 -27 -37 5 24 -40 vhcurveto
+ 240 553 rlineto
+ 66 -65 26 -111 -93 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="Otilde">
+ 192 379 851 -103 callsubr
+ -106 -848 -100 callsubr
+ </CharString>
+ <CharString name="P">
+ -18 172 22 rmoveto
+ -1 101 -6 126 25 -44 callsubr
+ -257 -46 callsubr
+ rlineto
+ 147 646 rmoveto
+ 92 81 -30 -104 -111 -94 -38 callsubr
+ </CharString>
+ <CharString name="Phi">
+ 187 234 657 rmoveto
+ 63 -9 rlineto
+ 13 -2 10 -12 -14 vvcurveto
+ -12 vlineto
+ -8 -7 -82 -2 -81 -29 -57 -58 rlinecurve
+ -47 -48 -17 -67 -65 vvcurveto
+ -173 141 -71 144 -2 vhcurveto
+ 7 -6 -2 -16 -6 -22 -16 -4 rlinecurve
+ -62 -15 rlineto
+ -21 268 24 vlineto
+ -59 12 -21 4 -13 18 -3 20 rlinecurve
+ 8 6 72 3 92 27 52 52 rlinecurve
+ 53 53 20 77 75 vvcurveto
+ 130 -77 98 -213 vhcurveto
+ -7 7 rlineto
+ 13 vlineto
+ 14 9 14 15 2 vhcurveto
+ 63 10 rlineto
+ 25 vlineto
+ -259 -2 rlineto
+ 179 -111 rmoveto
+ 109 -2 89 -48 -171 vvcurveto
+ -119 -60 -116 -139 -3 vhcurveto
+ -6 8 rlineto
+ 443 vlineto
+ -93 -451 rmoveto
+ -126 3 -67 121 109 vvcurveto
+ 116 71 105 122 5 vhcurveto
+ 7 -8 rlineto
+ -444 vlineto
+ endchar
+ </CharString>
+ <CharString name="Pi">
+ 123 668 686 rmoveto
+ -2 -81 -119 -3 -44 hhcurveto
+ -198 hlineto
+ -75 -75 4 5 -75 hvcurveto
+ -30 vlineto
+ 57 -17 9 -3 9 -8 rrcurveto
+ 12 -12 1 -56 -30 vvcurveto
+ -73 vlineto
+ -154 -1 -152 -7 -153 vhcurveto
+ 7 -6 85 19 rlineto
+ -2 103 -3 122 82 vvcurveto
+ 102 0 101 7 101 vhcurveto
+ 8 8 6 6 vhcurveto
+ 289 hlineto
+ 2 11 -3 -10 hvcurveto
+ 1 -108 1 -121 -108 vvcurveto
+ -98 0 -97 -3 -98 vhcurveto
+ 14 -11 80 22 rlineto
+ -10 135 -2 134 135 vvcurveto
+ 101 2 115 5 7 vhcurveto
+ 4 3 4 2 5 1 76 17 rcurveline
+ endchar
+ </CharString>
+ <CharString name="Psi">
+ 191 443 251 rmoveto
+ 117 2 74 32 31 203 16 90 1 55 44 28 -3 18 rcurveline
+ -35 -4 -35 -8 -34 -12 -12 -43 -1 -45 -6 -44 -18 -127 -29 -114 -112 -6 -7 6 rcurveline
+ -2 58 -1 59 59 vvcurveto
+ 75 6 74 7 75 vhcurveto
+ -4 8 -86 -23 rlineto
+ 6 -82 0 -120 -100 vvcurveto
+ -83 vlineto
+ -6 -7 rlineto
+ -150 8 -18 180 132 vvcurveto
+ 58 -7 41 -36 -12 -20 0 -2 -3 vhcurveto
+ -108 -36 7 -22 63 10 rlineto
+ 2 hlineto
+ 67 -47 -105 -167 49 hvcurveto
+ -90 23 71 -34 119 hhcurveto
+ 6 -6 rlineto
+ -155 vlineto
+ -9 -7 -36 -22 -4 vhcurveto
+ -68 -12 rlineto
+ -27 266 27 vlineto
+ -57 12 rlineto
+ -22 5 -11 21 22 vvcurveto
+ -2 158 rlineto
+ endchar
+ </CharString>
+ <CharString name="Q">
+ 195 722 -174 rmoveto
+ -6 -23 -48 -9 -16 hhcurveto
+ -89 -42 46 21 -15 hvcurveto
+ -20 26 -26 49 -16 30 4 10 rcurveline
+ 63 15 70 30 45 49 42 46 11 33 15 44 rrcurveto
+ 13 41 6 18 97 vvcurveto
+ 83 -20 110 -63 63 vhcurveto
+ 58 -58 -78 18 -77 hhcurveto
+ -95 -95 -19 -70 -68 hvcurveto
+ -74 -76 -27 -95 -138 vvcurveto
+ -90 29 -90 56 -63 vhcurveto
+ -55 49 77 -18 69 hhcurveto
+ -101 62 75 -118 116 hhcurveto
+ 51 65 25 16 39 hvcurveto
+ -364 216 rmoveto
+ -53 -55 30 40 -38 hvcurveto
+ -62 64 -23 89 89 vvcurveto
+ 147 50 179 192 151 74 -165 -157 -140 -50 -176 -186 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="R">
+ 3 275 331 rmoveto
+ 119 13 96 56 139 vvcurveto
+ 93 -81 47 -122 vhcurveto
+ -272 hlineto
+ -6 -6 -1 -17 rlineto
+ 9 68 -13 -32 hvcurveto
+ -57 3 -100 -15 vvcurveto
+ -145 -1 -146 -8 -145 vhcurveto
+ 11 -9 83 29 rlineto
+ -5 96 0 97 96 vvcurveto
+ 6 9 -4 -5 5 hvcurveto
+ 29 -29 127 -163 93 -119 99 26 rcurveline
+ 9 vlineto
+ -263 296 rlineto
+ -106 47 rmoveto
+ 5 4 175 2 64 vhcurveto
+ 19 1 3 7 8 hhcurveto
+ 40 hlineto
+ 78 89 -21 -96 -119 -106 -49 -110 -7 -2 9 6 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="S">
+ -61 451 606 rmoveto
+ 83 -44 -60 13 -73 hhcurveto
+ -109 -103 -65 -125 -98 62 -48 121 -52 hvcurveto
+ 60 -26 61 -54 -56 vvcurveto
+ -84 -65 -63 -78 -71 -41 51 70 -21 vhcurveto
+ -17 1 -57 -66 rlineto
+ -73 28 68 -29 69 hhcurveto
+ 127 146 92 132 80 -54 54 -105 46 hvcurveto
+ -78 34 -75 46 78 vvcurveto
+ 65 47 53 64 68 37 -46 -66 17 vhcurveto
+ 13 -3 rlineto
+ endchar
+ </CharString>
+ <CharString name="Sigma">
+ 26 299 362 rmoveto
+ 4 7 7 9 6 vvcurveto
+ 6 -2 5 -3 5 vhcurveto
+ -137 222 11 13 rlineto
+ 331 hlineto
+ 22 49 -4 11 rlineto
+ -5 -102 -102 -3 -102 hhcurveto
+ -36 -36 0 1 -36 hvcurveto
+ -68 -47 152 -225 14 -20 14 -24 8 -22 rlinecurve
+ -10 -25 -25 -34 -19 -26 -163 -216 rcurveline
+ -4 -19 -5 -27 -1 vvcurveto
+ 90 90 7 90 hhcurveto
+ 89 88 -1 -3 89 hvcurveto
+ 15 89 -3 10 rlineto
+ -8 -53 -54 -2 -54 hhcurveto
+ -89 -88 0 2 -89 hvcurveto
+ -5 10 rlineto
+ endchar
+ </CharString>
+ <CharString name="T">
+ 6 543 696 rmoveto
+ -4 -88 -99 -6 -75 hhcurveto
+ -177 0 8 3 -95 hvcurveto
+ -7 -7 rlineto
+ -48 vlineto
+ 8 -7 rlineto
+ 4 111 79 3 24 hhcurveto
+ 5 4 -2 -4 hvcurveto
+ 1 -30 1 -144 -82 vvcurveto
+ -127 -5 -127 -8 -127 vhcurveto
+ 9 -9 100 27 rlineto
+ -7 121 -6 179 121 vvcurveto
+ 121 -1 85 14 21 21 -2 -8 168 vhcurveto
+ 8 7 rlineto
+ 48 vlineto
+ endchar
+ </CharString>
+ <CharString name="Theta">
+ 233 348 -12 rmoveto
+ 196 194 83 310 87 -20 93 -63 63 hvcurveto
+ 57 -57 -84 20 -79 hhcurveto
+ -152 -139 -58 -100 -58 hvcurveto
+ -43 -74 -2 -42 -96 vvcurveto
+ -99 26 -102 71 -71 vhcurveto
+ -55 54 80 -16 76 hhcurveto
+ 43 43 rmoveto
+ -183 -74 166 148 159 53 159 194 68 69 -18 -49 49 hvcurveto
+ 57 -57 20 -82 -80 vvcurveto
+ -91 -6 -119 -59 -59 vhcurveto
+ -50 -50 -53 -27 -85 hhcurveto
+ -171 210 rmoveto
+ 27 65 hlineto
+ 14 15 2 10 vhcurveto
+ 2 46 51 2 40 35 34 -4 35 hhcurveto
+ 22 -3 -42 -22 hvcurveto
+ -5 -1 -4 -5 vvcurveto
+ 30 -1 rlineto
+ 214 -28 vlineto
+ 2 -51 rlineto
+ -31 1 -83 9 -40 hhcurveto
+ -53 -114 -5 21 hvcurveto
+ 19 -4 19 19 vvcurveto
+ -25 hlineto
+ 3 -108 rlineto
+ endchar
+ </CharString>
+ <CharString name="Thorn">
+ -18 168 679 rmoveto
+ -151 -46 callsubr
+ 83 28 rlineto
+ -1 101 -6 22 24 -44 callsubr
+ -105 hlineto
+ 1 27 1 53 4 19 rrcurveto
+ 61 -138 rmoveto
+ 92 81 -30 -104 -111 -96 -38 callsubr
+ </CharString>
+ <CharString name="U">
+ 167 183 674 -95 callsubr
+ </CharString>
+ <CharString name="Uacute">
+ 167 482 -87 callsubr
+ -137 -57 -95 callsubr
+ </CharString>
+ <CharString name="Ucircumflex">
+ 167 204 732 -106 callsubr
+ -190 -239 -95 callsubr
+ </CharString>
+ <CharString name="Udieresis">
+ 167 527 816 -107 callsubr
+ -142 -142 -95 callsubr
+ </CharString>
+ <CharString name="Ugrave">
+ 167 237 886 -105 callsubr
+ -101 -248 -95 callsubr
+ </CharString>
+ <CharString name="Upsilon">
+ 137 672 546 rmoveto
+ 75 -21 76 -85 -155 -48 -199 -123 -21 vhcurveto
+ -9 hlineto
+ 130 -13 -32 192 -146 hhcurveto
+ -94 -29 -73 -69 -12 hvcurveto
+ 19 -7 rlineto
+ 40 12 27 37 47 hhcurveto
+ 84 48 -102 -77 21 hvcurveto
+ 20 -73 7 -76 -76 vvcurveto
+ -75 0 -75 -4 -75 vhcurveto
+ 17 -7 67 36 rlineto
+ 322 2 113 127 127 vhcurveto
+ 20 20 25 11 28 hhcurveto
+ 52 18 -38 -37 6 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="V">
+ 162 614 680 rmoveto
+ -25 -43 -25 -44 -19 -45 -119 -274 rcurveline
+ -41 -89 -23 -52 -7 -2 -2 1 -4 2 -2 4 -71 182 -55 187 -39 191 -175 -10 rcurveline
+ -7 -6 1 -27 56 -8 23 -5 16 -33 rlinecurve
+ 20 -44 13 -46 15 -46 143 -482 rcurveline
+ 10 -7 68 26 57 165 73 160 72 133 rlinecurve
+ 12 21 62 110 65 79 -6 19 rcurveline
+ endchar
+ </CharString>
+ <CharString name="W">
+ 505 965 675 rmoveto
+ -17 -32 -22 -39 -21 -46 -109 -242 rcurveline
+ -80 -170 rlineto
+ -3 -2 -2 -4 -9 hhcurveto
+ -18 -19 131 55 -12 hvcurveto
+ -31 146 -31 151 62 vvcurveto
+ -7 6 -76 -29 -45 -126 -132 -291 -42 -83 rlinecurve
+ -2 -1 -3 -2 -3 hhcurveto
+ -2 -4 1 5 -1 hvcurveto
+ -39 175 -59 270 -15 81 -156 -3 rcurveline
+ -8 -7 2 -24 31 -6 30 -7 11 -28 rlinecurve
+ 30 -77 20 -81 20 -81 30 -126 25 -127 23 -128 11 -5 rcurveline
+ 64 29 47 155 81 179 54 121 rlinecurve
+ 28 63 rlineto
+ 5 2 4 7 3 hhcurveto
+ 5 1 -7 -5 1 hvcurveto
+ 40 -179 37 -179 32 -181 12 -8 rcurveline
+ 60 27 65 157 116 230 47 77 rlinecurve
+ 115 188 rlineto
+ 21 vlineto
+ endchar
+ </CharString>
+ <CharString name="X">
+ 79 612 687 rmoveto
+ -95 -13 -9 -21 -138 -198 -33 -33 rlinecurve
+ -9 hlineto
+ -147 266 -45 -3 -76 -4 -25 -1 rlinecurve
+ -7 -6 rlineto
+ -25 vlineto
+ 41 -11 42 -10 22 -38 rrcurveto
+ -82 47 93 -163 5 hhcurveto
+ -271 -329 rlineto
+ -16 vlineto
+ 94 11 36 76 111 157 43 52 rlinecurve
+ 12 hlineto
+ 143 -239 13 -22 15 -22 18 -18 rlinecurve
+ 14 -6 110 27 rlineto
+ 16 vlineto
+ -5 4 -8 2 -22 14 -7 7 rlinecurve
+ -60 72 -40 48 -115 189 -1 12 rlinecurve
+ 4 7 33 44 30 35 187 206 rcurveline
+ endchar
+ </CharString>
+ <CharString name="Xi">
+ 68 49 695 rmoveto
+ -5 -57 -1 -58 -7 -57 27 2 rcurveline
+ 23 64 rlineto
+ 20 7 24 9 20 hhcurveto
+ 346 hlineto
+ 18 23 -12 -21 4 hvcurveto
+ 16 -61 rlineto
+ 34 hlineto
+ -22 164 rlineto
+ -425 -359 rmoveto
+ 2 47 47 1 47 hhcurveto
+ 55 54 -1 -1 54 hvcurveto
+ 15 72 rlineto
+ -3 -64 -63 -2 -64 hhcurveto
+ -37 -37 0 2 -37 hvcurveto
+ 405 -252 rmoveto
+ -63 -18 1 -12 -22 hhcurveto
+ -401 hlineto
+ -17 -15 11 19 -5 hvcurveto
+ -14 51 -26 -1 rlineto
+ 4 -51 7 -100 -1 vvcurveto
+ -2 172 343 -4 1 hhcurveto
+ 15 153 rlineto
+ endchar
+ </CharString>
+ <CharString name="Y">
+ 47 231 -2 rmoveto
+ 11 -9 90 29 -9 288 83 128 74 96 111 145 rlinecurve
+ -4 18 -84 callsubr
+ 149 -295 rcurveline
+ -100 0 -101 -3 -100 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="Yacute">
+ 47 451 -87 callsubr
+ -58 -733 rmoveto
+ 11 -9 90 29 -9 288 83 128 74 96 111 145 rlinecurve
+ -4 18 -84 callsubr
+ 149 -295 rcurveline
+ -100 0 -101 -3 -100 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="Z">
+ 58 552 683 rmoveto
+ -149 -148 3 9 -148 hvcurveto
+ -9 -8 rlineto
+ -54 vlineto
+ 6 -5 rlineto
+ 3 27 102 6 187 hhcurveto
+ 7 -10 -424 -606 1 -21 rlineto
+ 192 254 0 -12 129 hvcurveto
+ 18 71 -9 9 rlineto
+ -429 hlineto
+ -6 -7 90 139 174 271 135 193 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="a">
+ 3 278 466 -102 callsubr
+ </CharString>
+ <CharString name="aacute">
+ 3 389 702 -104 callsubr
+ 51 -82 -102 callsubr
+ </CharString>
+ <CharString name="acircumflex">
+ 3 111 549 -106 callsubr
+ -2 -264 -102 callsubr
+ </CharString>
+ <CharString name="acute">
+ -25 405 664 -104 callsubr
+ endchar
+ </CharString>
+ <CharString name="acutecomb">
+ -545 115 664 -104 callsubr
+ endchar
+ </CharString>
+ <CharString name="adieresis">
+ 3 434 633 -107 callsubr
+ 46 -167 -102 callsubr
+ </CharString>
+ <CharString name="ae">
+ 207 707 -20 callsubr
+ -67 -64 -25 -46 -48 vhcurveto
+ 39 -22 -65 20 -42 hhcurveto
+ -170 -68 -140 -141 -90 36 -107 111 67 65 41 37 51 hvcurveto
+ -46 25 41 -32 68 -63 callsubr
+ -104 -48 rmoveto
+ -18 -37 -7 -43 -42 vvcurveto
+ -45 5 -46 14 -40 vhcurveto
+ -21 -29 -34 -20 -37 hhcurveto
+ -47 callsubr
+ 12 -13 3 -18 1 -19 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="agrave">
+ 3 144 703 -105 callsubr
+ 87 -273 -102 callsubr
+ </CharString>
+ <CharString name="alpha">
+ 64 410 307 rmoveto
+ -10 1 rlineto
+ 55 -15 -34 105 -89 hhcurveto
+ -151 -81 -161 -138 -68 25 -113 81 60 60 50 44 36 hvcurveto
+ 65 78 11 -2 46 -134 rlineto
+ -25 6 25 -19 23 hhcurveto
+ 34 49 42 54 68 hvcurveto
+ -7 19 -10 1 rlineto
+ -21 -27 -35 -25 -25 hhcurveto
+ -48 -34 127 60 -16 hvcurveto
+ 1 92 138 46 69 vhcurveto
+ -51 23 rlineto
+ -155 -256 rmoveto
+ -72 -51 -58 -78 -58 hhcurveto
+ -69 -17 97 57 74 24 121 92 76 27 -87 -112 34 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="ampersand">
+ 193 326 356 rmoveto
+ 3 23 23 2 23 hhcurveto
+ 22 23 0 -16 16 hvcurveto
+ 21 -21 15 -28 -30 vvcurveto
+ -48 -12 -49 -26 -38 vhcurveto
+ -84 86 -64 93 -48 106 17 8 74 43 30 28 rrcurveto
+ 33 30 14 37 44 vvcurveto
+ 55 -52 37 -50 -102 -61 -87 -91 -42 10 -42 16 -39 vhcurveto
+ -111 -68 -47 -43 -91 vvcurveto
+ -55 23 -54 39 -39 vhcurveto
+ -43 43 64 -12 60 hhcurveto
+ 58 55 28 32 40 hvcurveto
+ 5 -4 rlineto
+ -34 35 45 -25 50 hhcurveto
+ 109 43 106 89 16 hvcurveto
+ -21 5 rlineto
+ -64 -15 -30 -72 -71 hhcurveto
+ -40 -39 31 28 -26 hvcurveto
+ -3 3 rlineto
+ 41 53 33 60 67 vvcurveto
+ 21 -4 21 -5 21 vhcurveto
+ 49 57 0 -7 41 hvcurveto
+ 3 48 rlineto
+ -3 -30 -74 0 -52 hhcurveto
+ -67 -77 0 3 -56 hvcurveto
+ -78 36 rmoveto
+ -17 40 -11 41 43 vvcurveto
+ 46 5 58 60 32 35 -46 -35 -65 -21 -30 -83 -52 vhcurveto
+ 146 -367 rmoveto
+ -26 -32 -38 -11 -53 hhcurveto
+ -99 -67 94 93 63 21 50 68 45 hvcurveto
+ 46 -110 74 -109 80 -89 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="aring">
+ 3 177 613 -52 callsubr
+ 71 -147 -102 callsubr
+ </CharString>
+ <CharString name="asciitilde">
+ 127 342 291 rmoveto
+ 25 -41 -50 31 -44 hhcurveto
+ -59 -36 -49 -58 -29 hvcurveto
+ 22 -12 rlineto
+ 53 29 21 24 40 hhcurveto
+ 29 27 -13 -15 24 hvcurveto
+ 99 -63 rlineto
+ -20 31 36 -16 38 hhcurveto
+ 55 37 49 48 20 hvcurveto
+ -21 11 rlineto
+ -37 -20 -20 -30 -40 hhcurveto
+ -27 -25 12 14 -22 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="asterisk">
+ -244 175 448 rmoveto
+ -8 36 -2 33 -1 35 26 -20 24 -22 17 -19 26 29 rcurveline
+ -28 13 -29 20 -31 23 28 20 28 17 32 15 -25 31 rcurveline
+ -20 -21 -23 -21 -25 -20 2 33 2 29 7 33 rrcurveto
+ -40 hlineto
+ 8 -33 0 -31 -32 vvcurveto
+ -25 19 -21 19 -22 21 -27 -28 rcurveline
+ 29 -15 27 -16 29 -21 -26 -18 -27 -18 -34 -17 21 -35 rcurveline
+ 24 28 26 23 27 21 -1 -43 -2 -30 -6 -38 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="at">
+ 183 472 371 rmoveto
+ 16 -25 -35 8 -25 hhcurveto
+ -132 -56 -97 -99 -64 29 -74 88 46 44 22 22 39 hvcurveto
+ 12 -3 rlineto
+ -24 4 11 -17 29 hhcurveto
+ 34 61 34 27 24 hvcurveto
+ 39 39 27 53 5 63 14 185 -185 137 -175 -34 -109 -21 -98 -87 -52 -86 -56 -92 -9 -122 57 -98 44 -76 83 -68 105 -8 43 42 rcurveline
+ -14 15 -67 5 -58 28 -42 39 rlinecurve
+ -98 105 6 189 91 109 42 35 50 25 53 10 168 32 163 -114 -13 -178 rrcurveto
+ -54 -4 -23 -90 -63 hhcurveto
+ -27 -2 29 17 hvcurveto
+ 27 -1 28 27 vvcurveto
+ 52 0 52 4 52 vhcurveto
+ -4 4 rlineto
+ -59 -255 rmoveto
+ -15 -23 -29 -16 -32 hhcurveto
+ -29 -32 6 23 -17 hvcurveto
+ -18 24 -6 31 1 29 1 71 24 38 18 15 rrcurveto
+ 18 21 26 9 29 hhcurveto
+ 20 19 -10 -13 14 hvcurveto
+ 13 -12 0 -19 -18 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="atilde">
+ 3 272 658 -103 callsubr
+ -41 -171 -102 callsubr
+ </CharString>
+ <CharString name="b">
+ -23 -14 640 rmoveto
+ 86 -13 8 7 -35 vvcurveto
+ -476 vlineto
+ -111 66 -22 51 114 117 80 107 35 vhcurveto
+ 14 43 5 44 44 vvcurveto
+ 84 -48 76 -93 -68 -58 -34 -40 -53 vhcurveto
+ -9 5 rlineto
+ 33 vlineto
+ 82 6 81 8 82 vhcurveto
+ -6 7 -169 -18 -6 -5 rlineto
+ 171 -314 rmoveto
+ 34 39 45 25 53 hhcurveto
+ 38 24 -23 -20 13 hvcurveto
+ 14 -21 16 -42 -73 vvcurveto
+ -92 -41 -97 -106 -88 -11 78 113 39 2 45 2 34 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="backslash">
+ -155 404 -184 rmoveto
+ 3 13 -388 893 -31 -7 -5 -11 389 -896 rlineto
+ endchar
+ </CharString>
+ <CharString name="bar">
+ -329 128 738 rmoveto
+ -40 -8 rlineto
+ -897 -92 callsubr
+ endchar
+ </CharString>
+ <CharString name="beta">
+ -15 325 392 rmoveto
+ 65 25 58 71 75 vvcurveto
+ 75 -61 60 -75 -106 -71 -57 -81 -38 vhcurveto
+ -22 -47 -8 -78 -2 -51 -8 -190 4 -191 -5 -190 12 -15 rcurveline
+ 76 33 rlineto
+ -7 125 -2 126 126 vvcurveto
+ 186 -6 64 22 87 vhcurveto
+ 61 15 35 45 68 hhcurveto
+ 60 41 -55 -56 -106 -80 -48 -89 hvcurveto
+ -2 -36 rlineto
+ 2 21 21 0 21 hhcurveto
+ 98 67 -57 -101 -74 -36 -99 -84 -38 -34 31 38 hvcurveto
+ 7 vlineto
+ -13 6 -49 -69 rlineto
+ -35 20 36 -14 38 hhcurveto
+ 129 116 79 138 48 -20 50 -34 35 hvcurveto
+ -30 31 -55 12 -49 2 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="braceleft">
+ -232 303 -154 rmoveto
+ -97 -36 2 182 91 7 120 -92 32 hvcurveto
+ 1 vlineto
+ 64 23 21 88 133 vvcurveto
+ 66 -4 101 50 13 vhcurveto
+ 7 27 31 1 29 hhcurveto
+ 24 vlineto
+ -160 -24 -1 -215 -93 6 -88 -32 -28 hvcurveto
+ -19 -22 -24 -1 -39 hhcurveto
+ -26 vlineto
+ 31 37 -2 -21 19 hvcurveto
+ 25 -28 0 -105 -69 vvcurveto
+ -101 -8 -85 75 -20 vhcurveto
+ -6 24 53 0 39 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="braceright">
+ -232 10 -175 rmoveto
+ 149 34 -1 213 104 -3 101 61 15 hvcurveto
+ 17 4 19 2 18 -1 rrcurveto
+ 26 vlineto
+ -107 -4 36 193 114 6 30 -32 40 hvcurveto
+ -27 34 -53 -3 -78 1 rrcurveto
+ -24 vlineto
+ 62 50 4 -74 15 hvcurveto
+ 12 -79 -10 -81 11 -81 9 -68 32 -40 37 -13 rrcurveto
+ -1 vlineto
+ -92 -33 7 -123 -87 vvcurveto
+ -67 3 -98 -56 -13 vhcurveto
+ -6 -23 -30 0 -27 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="bracketleft">
+ -287 247 736 rmoveto
+ -54 -66 0 5 -39 hvcurveto
+ -866 vlineto
+ 5 52 53 0 54 hhcurveto
+ 24 vlineto
+ -119 13 rlineto
+ 782 vlineto
+ 119 13 rlineto
+ endchar
+ </CharString>
+ <CharString name="bracketright">
+ -287 130 -83 rmoveto
+ -119 -13 rlineto
+ -24 vlineto
+ 54 53 0 -5 52 hvcurveto
+ 866 vlineto
+ -5 -39 -66 0 -54 hhcurveto
+ -24 vlineto
+ 119 -13 rlineto
+ endchar
+ </CharString>
+ <CharString name="brokenbar">
+ -337 124 738 rmoveto
+ -40 -8 rlineto
+ -403 -92 callsubr
+ -91 vmoveto
+ -40 -8 rlineto
+ -403 -92 callsubr
+ endchar
+ </CharString>
+ <CharString name="bullet">
+ -213 69 265 -32 callsubr
+ endchar
+ </CharString>
+ <CharString name="c">
+ -90 425 116 rmoveto
+ -59 callsubr
+ 89 73 54 61 62 hvcurveto
+ -11 18 rlineto
+ endchar
+ </CharString>
+ <CharString name="ccedilla">
+ -90 180 -122 -53 callsubr
+ 15 36 rcurveline
+ 71 14 59 46 52 51 -11 18 rcurveline
+ -9 2 rlineto
+ -59 callsubr
+ hvcurveto
+ 1 2 0 1 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="cedilla">
+ -25 188 -57 callsubr
+ </CharString>
+ <CharString name="cedillacomb">
+ -545 -72 -57 callsubr
+ </CharString>
+ <CharString name="cent">
+ -84 418 116 rmoveto
+ -38 -44 -50 -31 -59 hhcurveto
+ -2 388 hlineto
+ 39 -5 29 -38 8 -62 17 -6 rcurveline
+ -14 callsubr
+ -11 -10 -1 -1 -10 hvcurveto
+ 169 vlineto
+ -40 -8 rlineto
+ -168 vlineto
+ -109 -29 -73 -95 -125 vvcurveto
+ -99 10 -137 163 vhcurveto
+ 3 3 0 3 hhcurveto
+ -148 -92 callsubr
+ 146 vlineto
+ 67 15 58 45 50 49 -11 18 rcurveline
+ -303 134 rmoveto
+ 77 34 85 65 21 vhcurveto
+ -378 vlineto
+ -81 24 -18 96 75 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="chi">
+ -20 284 206 rmoveto
+ -90 192 rlineto
+ 30 -14 -23 38 -37 hhcurveto
+ -25 -25 -8 -15 -19 hvcurveto
+ -63 -48 15 -21 rlineto
+ 15 19 28 22 18 hhcurveto
+ 29 22 -34 -28 14 hvcurveto
+ 35 -72 74 -142 -1 vvcurveto
+ -74 -96 -69 -99 -68 -100 50 -30 rcurveline
+ 17 6 36 91 60 89 58 88 rlinecurve
+ 10 hlineto
+ -147 62 42 -133 66 hhcurveto
+ 41 54 32 25 43 hvcurveto
+ -8 23 rlineto
+ -11 -21 -24 -4 -24 hhcurveto
+ -62 -70 170 118 -53 hvcurveto
+ 15 21 17 19 16 19 179 206 rcurveline
+ -1 7 -33 32 -20 -4 -187 -250 rlineto
+ endchar
+ </CharString>
+ <CharString name="circumflex">
+ -45 103 511 -106 callsubr
+ endchar
+ </CharString>
+ <CharString name="circumflexcomb">
+ -545 -163 511 -106 callsubr
+ endchar
+ </CharString>
+ <CharString name="colon">
+ -361 35 398 -88 callsubr
+ -353 vmoveto
+ -30 callsubr
+ endchar
+ </CharString>
+ <CharString name="comma">
+ -312 77 -210 rmoveto
+ 71 82 33 51 50 vvcurveto
+ 35 -35 130 -53 -25 -34 -22 -26 -10 3 -11 4 -5 vhcurveto
+ 70 -83 rlineto
+ 9 -11 4 -17 -14 vvcurveto
+ -40 -31 -49 -35 -46 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="copyright">
+ 87 -68 callsubr
+ 413 126 rmoveto
+ 42 -31 -46 14 -52 hhcurveto
+ -63 -60 -18 -36 -44 hvcurveto
+ -42 -35 -13 -49 -48 vvcurveto
+ -49 16 -49 42 -35 vhcurveto
+ -28 34 49 -10 48 hhcurveto
+ 52 48 22 24 43 hvcurveto
+ -10 14 rlineto
+ -19 -34 -37 -15 -41 hhcurveto
+ -49 -26 14 28 -33 hvcurveto
+ -20 16 -28 50 46 vvcurveto
+ 44 11 49 36 31 vhcurveto
+ 22 26 38 11 36 hhcurveto
+ 49 39 -20 -45 20 hvcurveto
+ 8 hlineto
+ endchar
+ </CharString>
+ <CharString name="currency">
+ 45 75 484 rmoveto
+ 49 -49 rlineto
+ -30 -34 -12 -36 -52 vvcurveto
+ -50 12 -35 30 -38 vhcurveto
+ -49 -49 45 -45 48 48 rlineto
+ -30 37 37 -12 53 hhcurveto
+ 53 37 12 30 37 hvcurveto
+ 48 -48 45 45 -49 49 rlineto
+ 30 38 12 35 50 vvcurveto
+ 52 -12 36 -30 34 vhcurveto
+ 49 49 -47 47 -48 -48 rlineto
+ 28 -38 -39 13 -48 hhcurveto
+ -48 -40 -13 -28 -37 hvcurveto
+ -48 48 rlineto
+ 176 -66 rmoveto
+ 81 70 -70 -82 -84 -69 -68 -85 -85 -69 68 85 83 70 68 87 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="d">
+ 6 269 638 rmoveto
+ 33 47 -1 -35 11 hvcurveto
+ 7 -26 -1 -72 1 -53 -7 -4 rcurveline
+ 9 -27 -27 6 -29 hhcurveto
+ -162 -75 -142 -140 -89 35 -109 114 59 64 37 35 51 hvcurveto
+ -35 2 18 -38 39 hhcurveto
+ 39 51 36 27 39 hvcurveto
+ -8 23 rlineto
+ -8 -20 -31 -11 -10 hhcurveto
+ -30 -6 33 29 -2 hvcurveto
+ 565 vlineto
+ -8 9 -163 -20 -5 -4 rlineto
+ 95 -565 rmoveto
+ -27 -27 -56 -20 -35 hhcurveto
+ -90 -28 85 70 94 34 131 112 83 11 -64 -54 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="degree">
+ -213 69 -83 callsubr
+ </CharString>
+ <CharString name="delta">
+ -122 349 687 rmoveto
+ 4 -29 -24 3 -27 hhcurveto
+ -73 -63 -21 -71 -35 hvcurveto
+ -6 -12 -5 -12 -13 vvcurveto
+ -38 54 -50 38 -35 vhcurveto
+ -77 -77 -81 -102 -103 vvcurveto
+ -82 44 -87 104 131 103 131 129 55 -30 50 -38 39 vhcurveto
+ -95 91 rlineto
+ -80 76 -25 16 27 vvcurveto
+ 32 32 9 33 66 38 -7 -2 35 vhcurveto
+ 15 42 rlineto
+ -151 -257 rmoveto
+ 60 -60 76 -81 -72 vvcurveto
+ -83 -45 -82 -75 -85 -36 96 72 76 35 62 70 72 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="dieresis">
+ -25 420 595 -107 callsubr
+ endchar
+ </CharString>
+ <CharString name="dieresiscomb">
+ -545 160 595 -107 callsubr
+ endchar
+ </CharString>
+ <CharString name="divide">
+ 279 471 514 -89 callsubr
+ 273 -238 -16 callsubr
+ -267 -238 -89 callsubr
+ endchar
+ </CharString>
+ <CharString name="dollar">
+ -69 439 593 rmoveto
+ 79 -42 -57 12 -69 -1 -1 0 -1 hhcurveto
+ 114 vlineto
+ -40 -8 rlineto
+ -110 vlineto
+ -86 -14 -73 -60 -102 vvcurveto
+ -89 54 -47 105 -46 vhcurveto
+ -275 vlineto
+ -2 -2 0 -2 hhcurveto
+ -67 -39 49 66 -20 hvcurveto
+ -16 1 -55 -63 rlineto
+ -69 27 64 -28 66 hhcurveto
+ 15 16 1 3 15 hvcurveto
+ -114 -92 callsubr
+ 116 vlineto
+ 93 29 81 74 96 vvcurveto
+ 76 -52 51 -100 44 vhcurveto
+ -7 3 -8 4 -7 3 rrcurveto
+ 251 vlineto
+ 54 -7 29 -41 15 -57 13 -3 rcurveline
+ -234 -3 rmoveto
+ 54 34 45 49 11 vhcurveto
+ -229 vlineto
+ -47 29 -36 37 53 vvcurveto
+ 213 -351 rmoveto
+ -63 -38 -49 -52 -19 vhcurveto
+ 247 vlineto
+ 48 -27 42 -44 -45 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="dotlessi">
+ -222 192 392 -98 callsubr
+ </CharString>
+ <CharString name="dotlessj">
+ -257 18 375 -64 callsubr
+ </CharString>
+ <CharString name="e">
+ -83 438 340 -93 callsubr
+ </CharString>
+ <CharString name="eacute">
+ -107 354 714 -104 callsubr
+ 246 -220 -93 callsubr
+ </CharString>
+ <CharString name="ecircumflex">
+ -107 76 561 -106 callsubr
+ 193 -402 -93 callsubr
+ </CharString>
+ <CharString name="edieresis">
+ -107 399 615 -107 callsubr
+ 241 -275 -93 callsubr
+ </CharString>
+ <CharString name="egrave">
+ -107 109 716 -105 callsubr
+ 282 -412 -93 callsubr
+ </CharString>
+ <CharString name="eight">
+ -45 312 396 rmoveto
+ 60 37 63 63 72 vvcurveto
+ 82 -70 56 -102 vhcurveto
+ -9 hlineto
+ -81 -32 -84 -46 -98 vvcurveto
+ -71 57 -58 55 -38 vhcurveto
+ -11 vlineto
+ -108 -63 -53 -39 -93 vvcurveto
+ -45 10 -45 32 -32 vhcurveto
+ -35 35 54 -10 48 hhcurveto
+ 119 123 78 129 80 -43 36 -106 72 hvcurveto
+ -33 27 rmoveto
+ -53 37 -60 54 59 vvcurveto
+ 39 11 28 46 30 vhcurveto
+ 85 43 -66 -50 -53 -30 -49 -42 -29 hvcurveto
+ -41 -78 rmoveto
+ 82 -52 54 -39 -75 vvcurveto
+ -79 -46 -57 -83 -79 -43 75 70 77 46 44 69 36 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="eight.dnom">
+ 230 231 -76 callsubr
+ </CharString>
+ <CharString name="eight.numr">
+ 230 506 -76 callsubr
+ </CharString>
+ <CharString name="epsilon">
+ -175 335 430 rmoveto
+ 22 -31 -35 19 -39 hhcurveto
+ -85 -82 -55 -96 -30 20 -34 23 -14 hvcurveto
+ -7 vlineto
+ -54 -25 -31 -44 -57 vvcurveto
+ -79 74 -45 74 79 72 40 57 53 vhcurveto
+ -8 14 -9 2 rlineto
+ -32 -39 -48 -28 -46 hhcurveto
+ -64 -68 40 73 54 48 27 45 16 15 -1 -4 15 hvcurveto
+ 21 47 rlineto
+ -81 5 -58 -13 87 vvcurveto
+ 49 46 28 40 40 41 -21 -43 15 vhcurveto
+ 11 -1 rlineto
+ endchar
+ </CharString>
+ <CharString name="epsilon1">
+ -125 213 258 rmoveto
+ -2 -1 -64 1 -37 hhcurveto
+ -6 6 rlineto
+ 78 2 35 87 96 hhcurveto
+ 53 26 -12 -59 42 hvcurveto
+ 13 2 37 53 rlineto
+ 37 -37 -49 22 -52 hhcurveto
+ -144 -105 -128 -140 -60 16 -62 43 -43 hvcurveto
+ -37 37 56 -12 51 hhcurveto
+ 72 71 42 44 56 hvcurveto
+ -12 20 -8 1 rlineto
+ -33 -39 -51 -16 -51 hhcurveto
+ -36 -45 5 24 -24 hvcurveto
+ -35 35 -18 48 -2 49 5 6 rcurveline
+ 1 26 42 2 1 hhcurveto
+ 47 64 0 -1 30 hvcurveto
+ 14 42 rlineto
+ endchar
+ </CharString>
+ <CharString name="equal">
+ 278 745 369 -15 callsubr
+ 6 -157 -15 callsubr
+ endchar
+ </CharString>
+ <CharString name="eta">
+ -5 498 -164 rmoveto
+ -15 122 -2 123 123 vvcurveto
+ 177 11 85 -104 -64 -71 -38 -37 -56 vhcurveto
+ -11 2 rlineto
+ 49 -3 -25 21 -41 hhcurveto
+ -45 -49 -41 -29 -36 hvcurveto
+ 16 -18 rlineto
+ 14 22 28 19 19 hhcurveto
+ 37 2 -42 -32 hvcurveto
+ -335 vlineto
+ 9 -10 72 25 rlineto
+ -3 57 -4 67 46 vvcurveto
+ 53 0 83 2 24 vhcurveto
+ 29 41 48 29 47 hhcurveto
+ 105 -20 -107 -170 -105 0 -181 -1 -27 hvcurveto
+ 9 -11 rlineto
+ endchar
+ </CharString>
+ <CharString name="eth">
+ -84 144 662 rmoveto
+ 27 -16 23 -17 20 -22 -108 -57 rcurveline
+ 13 -39 122 65 22 -31 20 -36 18 -43 rlinecurve
+ -3 -5 -37 4 -23 -1 -21 -3 rlinecurve
+ -151 -24 -54 -135 20 -127 7 -46 25 -69 40 -35 41 -36 54 0 57 9 41 7 38 23 28 33 70 81 -2 114 -16 100 -15 96 -51 86 -62 62 92 49 rcurveline
+ -13 39 -112 -59 -31 25 -32 19 -33 11 rlinecurve
+ 187 -539 rmoveto
+ -8 -47 -23 -51 -52 -8 -98 -15 -41 119 -8 47 -14 90 16 133 116 18 27 4 28 -4 26 -7 14 -37 10 -39 6 -40 8 -53 3 -57 -10 -53 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="euro">
+ 93 425 270 rmoveto
+ 10 40 rlineto
+ -225 hlineto
+ -1 11 -1 12 11 vvcurveto
+ 9 0 9 1 8 vhcurveto
+ 242 hlineto
+ 10 40 rlineto
+ -249 hlineto
+ 34 246 224 39 63 -166 14 -1 rcurveline
+ 57 58 -125 142 -168 -22 -101 -116 rlinecurve
+ -46 -53 -26 -61 -12 -66 rrcurveto
+ -65 hlineto
+ -10 -40 rlineto
+ 70 hlineto
+ -1 -15 -1 -14 -15 -5 0 -6 -5 vvcurveto
+ -84 hlineto
+ -10 -40 rlineto
+ 97 hlineto
+ 9 -79 27 -75 57 -57 rrcurveto
+ -45 45 53 -18 52 hhcurveto
+ 85 -1 81 43 41 38 -17 29 rcurveline
+ -71 -37 -104 -23 -77 64 -42 35 -31 60 -14 66 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="exclam">
+ -329 112 186 rmoveto
+ 36 371 rlineto
+ 3 29 2 29 29 vvcurveto
+ 20 -7 26 -30 -32 -18 -14 -51 vhcurveto
+ -1 -17 3 -22 1 -19 27 -383 rcurveline
+ -42 -138 -88 callsubr
+ endchar
+ </CharString>
+ <CharString name="exclamdown">
+ -329 54 442 -88 callsubr
+ 58 -140 rmoveto
+ -16 2 -27 -383 -1 -19 -3 -22 1 -17 rlinecurve
+ -51 18 -14 32 30 7 26 20 29 -2 29 -3 29 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="f">
+ -216 3 428 rmoveto
+ -4 -22 5 -7 rlineto
+ 112 -81 callsubr
+ 115 hlineto
+ 7 6 7 22 -5 7 rlineto
+ -124 -86 callsubr
+ 102 17 87 43 47 7 -43 -21 4 vhcurveto
+ 12 -4 58 54 rlineto
+ 27 -13 -26 27 -54 hhcurveto
+ -25 callsubr
+ -105 hlineto
+ endchar
+ </CharString>
+ <CharString name="f.alt">
+ -228 314 641 rmoveto
+ 28 -22 vlineto
+ -63 -60 -37 -70 -30 hvcurveto
+ -16 -36 -2 -51 -35 vvcurveto
+ -6 -6 rlineto
+ -105 hlineto
+ -7 -6 -4 -22 5 -7 rlineto
+ 112 -81 callsubr
+ 115 hlineto
+ 7 6 7 22 -5 7 rlineto
+ -124 -86 callsubr
+ 66 6 64 22 37 vhcurveto
+ 12 20 16 9 22 2 43 4 -10 -2 6 1 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="five">
+ -45 125 594 rmoveto
+ 6 6 4 6 48 126 3 2 87 vhcurveto
+ 27 78 rlineto
+ -335 hlineto
+ -7 -7 rlineto
+ -327 vlineto
+ 13 -11 rlineto
+ 31 32 41 22 44 hhcurveto
+ 103 36 -90 -82 -102 -54 -95 -112 -62 -35 57 49 -22 hvcurveto
+ -11 hlineto
+ -44 -56 1 -12 rlineto
+ -49 41 61 -26 63 hhcurveto
+ 145 125 109 153 112 -74 80 -117 -46 -45 -17 -20 -41 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="five.dnom">
+ 103 356 -69 callsubr
+ </CharString>
+ <CharString name="five.numr">
+ 103 631 -69 callsubr
+ </CharString>
+ <CharString name="four">
+ -45 285 669 rmoveto
+ -286 -434 rlineto
+ -44 284 vlineto
+ 7 -9 rlineto
+ -63 0 -83 -5 -35 vhcurveto
+ 5 -6 80 33 rlineto
+ -3 22 0 79 54 vvcurveto
+ 8 8 rlineto
+ 82 hlineto
+ 16 37 -5 7 rlineto
+ -94 hlineto
+ -7 9 rlineto
+ 155 0 272 1 27 vhcurveto
+ -7 6 rlineto
+ -77 -469 rmoveto
+ -215 hlineto
+ -5 7 1 22 84 138 38 59 rlinecurve
+ 29 45 30 46 34 39 rrcurveto
+ 1 1 2 1 2 hhcurveto
+ 3 2 -3 -5 hvcurveto
+ -342 vlineto
+ endchar
+ </CharString>
+ <CharString name="four.dnom">
+ 263 422 -73 callsubr
+ </CharString>
+ <CharString name="four.numr">
+ -75 callsubr
+ </CharString>
+ <CharString name="foursuperior">
+ -69 -75 callsubr
+ </CharString>
+ <CharString name="fraction">
+ -475 245 -90 callsubr
+ endchar
+ </CharString>
+ <CharString name="g">
+ -34 365 45 rmoveto
+ -130 -4 -45 -107 -106 hhcurveto
+ -36 -46 41 36 -18 hvcurveto
+ -14 hlineto
+ -49 -62 rlineto
+ -46 49 45 -10 44 hhcurveto
+ 61 50 15 39 51 hvcurveto
+ 20 15 37 34 16 44 rrcurveto
+ 20 58 2 71 39 vvcurveto
+ 209 4 72 5 91 vhcurveto
+ -14 6 -51 -29 rlineto
+ 25 -33 -43 9 -41 hhcurveto
+ -128 -101 -103 -178 -116 62 -79 83 63 56 33 30 52 hvcurveto
+ 9 47 rmoveto
+ -18 -23 -56 -29 -46 hhcurveto
+ -50 -64 61 90 90 32 138 118 42 44 -21 -47 3 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="gamma">
+ 44 525 465 rmoveto
+ -37 -95 -82 -160 -65 -120 -8 2 rcurveline
+ 146 -24 231 -149 -77 -42 -34 -77 -50 vhcurveto
+ 16 -12 23 27 rlineto
+ 23 20 40 7 27 hhcurveto
+ 26 25 -13 -18 19 hvcurveto
+ 73 -72 31 -261 -39 vvcurveto
+ -53 -165 17 -14 18 -12 21 -7 rlinecurve
+ 34 26 rlineto
+ 5 52 3 55 53 vvcurveto
+ 23 vlineto
+ 17 43 75 134 90 124 80 131 rlinecurve
+ -60 27 rlineto
+ endchar
+ </CharString>
+ <CharString name="germandbls">
+ -92 3 428 rmoveto
+ -4 -22 5 -7 rlineto
+ 68 -81 callsubr
+ 153 hlineto
+ -76 -133 rlineto
+ -24 vlineto
+ 29 -23 48 -43 28 -49 21 -38 4 -39 -15 -44 -23 -67 -77 -58 -85 -17 5 -24 rcurveline
+ 162 103 100 128 1 hvcurveto
+ 94 -70 56 -51 41 vhcurveto
+ 83 146 7 22 -5 7 rlineto
+ -242 -86 callsubr
+ 102 17 87 43 47 7 -43 -21 4 vhcurveto
+ 12 -4 58 54 rlineto
+ 27 -13 -26 27 -54 hhcurveto
+ -25 callsubr
+ -61 hlineto
+ endchar
+ </CharString>
+ <CharString name="grave">
+ -25 70 665 -105 callsubr
+ endchar
+ </CharString>
+ <CharString name="gravecomb">
+ -545 -130 665 -105 callsubr
+ endchar
+ </CharString>
+ <CharString name="greater">
+ 166 574 254 rmoveto
+ -9 vlineto
+ -518 -243 -4 -9 8 -24 10 -5 600 280 rlineto
+ 12 vlineto
+ -602 275 -10 -3 -10 -24 2 -10 rlineto
+ endchar
+ </CharString>
+ <CharString name="guillemotleft">
+ -129 374 36 -33 callsubr
+ 58 -202 -33 callsubr
+ endchar
+ </CharString>
+ <CharString name="guillemotright">
+ -129 42 36 -37 callsubr
+ 166 -28 -37 callsubr
+ endchar
+ </CharString>
+ <CharString name="guilsinglleft">
+ -281 12 238 rmoveto
+ 210 -202 -18 callsubr
+ rlineto
+ endchar
+ </CharString>
+ <CharString name="guilsinglright">
+ -281 252 238 rmoveto
+ -192 188 -31 -46 149 -146 -150 -170 14 -28 rlineto
+ endchar
+ </CharString>
+ <CharString name="h">
+ 47 499 62 rmoveto
+ -53 9 83 41 hvcurveto
+ 74 vlineto
+ 80 6 70 -30 28 vhcurveto
+ 18 -19 -31 10 -15 hhcurveto
+ -73 -69 -40 -36 -59 hvcurveto
+ -8 8 rlineto
+ 92 0 99 4 85 vhcurveto
+ -6 7 -158 -17 -5 -4 rlineto
+ -18 vlineto
+ 27 -6 41 -8 9 -12 rrcurveto
+ 26 -36 -6 -79 -101 vvcurveto
+ -1 -132 -6 -132 -7 -132 6 -10 rcurveline
+ 72 22 rlineto
+ 108 2 110 110 vvcurveto
+ 28 39 48 32 55 hhcurveto
+ 74 12 -62 -76 hvcurveto
+ -36 -4 -87 -54 vvcurveto
+ -49 19 -50 47 60 53 49 47 44 vhcurveto
+ 11 vlineto
+ -13 10 rlineto
+ -18 -19 -32 -27 -39 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="hyphen">
+ -192 297 276 -17 callsubr
+ </CharString>
+ <CharString name="i">
+ -222 206 625 -89 callsubr
+ -14 -233 -98 callsubr
+ </CharString>
+ <CharString name="iacute">
+ -287 279 707 -104 callsubr
+ 75 -161 -98 callsubr
+ </CharString>
+ <CharString name="icircumflex">
+ -287 -51 562 -106 callsubr
+ 74 -351 -98 callsubr
+ </CharString>
+ <CharString name="idieresis">
+ -287 272 607 -107 callsubr
+ 122 -215 -98 callsubr
+ </CharString>
+ <CharString name="igrave">
+ -287 -70 708 -105 callsubr
+ 215 -352 -98 callsubr
+ </CharString>
+ <CharString name="iota">
+ -267 266 108 rmoveto
+ -20 -20 -27 -24 -28 hhcurveto
+ -61 2 86 45 90 2 90 15 89 hvcurveto
+ -11 10 -81 -25 rlineto
+ -347 vlineto
+ -50 29 -61 52 57 55 56 48 38 vhcurveto
+ -13 14 rlineto
+ endchar
+ </CharString>
+ <CharString name="j">
+ -254 159 683 rmoveto
+ -32 -27 -26 -32 -32 23 -28 33 35 26 30 34 32 -28 22 -30 hvcurveto
+ -141 -308 -64 callsubr
+ </CharString>
+ <CharString name="k">
+ -29 154 266 rmoveto
+ 413 vlineto
+ 3 7 -160 -23 -5 -4 rlineto
+ -21 vlineto
+ 53 -6 24 -7 9 -31 rrcurveto
+ 7 -27 2 -48 -51 vvcurveto
+ -158 -8 -153 -4 -157 vhcurveto
+ 6 -7 71 20 rlineto
+ 221 vlineto
+ 12 7 rlineto
+ 71 -79 89 -120 0 vvcurveto
+ -38 33 16 -11 30 hhcurveto
+ 53 50 67 32 24 hvcurveto
+ -19 20 rlineto
+ -23 -22 -23 -16 -33 hhcurveto
+ -40 -97 110 75 -59 hvcurveto
+ -3 5 -5 5 6 vvcurveto
+ 5 11 9 7 6 vhcurveto
+ 67 56 71 51 75 44 rrcurveto
+ 11 vlineto
+ -46 29 -24 -14 -11 -11 -78 -71 rlinecurve
+ -134 -123 rlineto
+ endchar
+ </CharString>
+ <CharString name="kappa">
+ -86 399 472 rmoveto
+ -94 -60 -88 -68 -76 -82 -6 2 rcurveline
+ 1 31 4 106 2 58 -5 6 rcurveline
+ -79 -26 rlineto
+ 3 -83 1 -82 -83 vvcurveto
+ -63 0 -64 -1 -63 vhcurveto
+ 16 -5 63 26 rlineto
+ -3 63 -3 66 61 vvcurveto
+ 9 4 76 -70 90 -76 85 -72 rlinecurve
+ 67 36 1 14 -89 64 -86 68 -80 75 rlinecurve
+ -4 11 rlineto
+ 2 0 2 1 2 vhcurveto
+ 43 51 113 65 89 38 1 15 rcurveline
+ endchar
+ </CharString>
+ <CharString name="l">
+ -244 289 112 rmoveto
+ -22 -25 -28 -25 -33 hhcurveto
+ -60 4 12 91 99 vvcurveto
+ 140 10 140 4 140 vhcurveto
+ -6 7 -165 -20 -6 -5 rlineto
+ -23 vlineto
+ 32 -2 48 3 7 -31 rrcurveto
+ 5 -24 0 -43 -33 vvcurveto
+ -7 -378 rlineto
+ -115 31 -26 51 66 52 58 53 34 vhcurveto
+ -11 12 rlineto
+ endchar
+ </CharString>
+ <CharString name="lambda">
+ -64 408 -11 rmoveto
+ 73 26 rlineto
+ 0 2 4 4 2 -1 1 1 vvcurveto
+ -101 220 -35 97 -18 52 -24 65 -30 107 -22 44 rrcurveto
+ 62 -32 -26 16 -32 hhcurveto
+ -52 -50 -15 -16 -44 hvcurveto
+ 8 -25 rlineto
+ 5 23 32 7 15 hhcurveto
+ 81 45 -170 -34 4 hvcurveto
+ -231 -435 18 -13 59 17 26 78 9 19 128 271 rlinecurve
+ 1 3 2 3 4 1 rrcurveto
+ 4 3 -3 -3 1 hvcurveto
+ 146 -384 rlineto
+ endchar
+ </CharString>
+ <CharString name="less">
+ 165 653 528 rmoveto
+ -11 3 -601 -275 rlineto
+ -12 vlineto
+ 600 -280 10 5 11 23 -5 10 -519 241 rlineto
+ 12 vlineto
+ 522 241 2 9 rlineto
+ endchar
+ </CharString>
+ <CharString name="logicalnot">
+ 232 57 409 rmoveto
+ -40 563 -163 40 203 vlineto
+ endchar
+ </CharString>
+ <CharString name="lscript">
+ -165 296 84 rmoveto
+ -10 -8 -28 -23 -19 hhcurveto
+ -68 -11 108 91 -7 hvcurveto
+ 80 101 93 133 124 vvcurveto
+ 59 -18 37 -53 -98 -40 -114 -82 -17 vhcurveto
+ -14 -64 -4 -67 -66 vvcurveto
+ -28 0 -28 2 -27 vhcurveto
+ -66 -74 15 -18 46 44 9 -3 rlineto
+ -70 4 4 -116 106 hhcurveto
+ 55 41 50 28 17 hvcurveto
+ 28 40 -17 13 rlineto
+ -176 182 rmoveto
+ 89 14 107 10 55 vhcurveto
+ 40 7 22 77 36 hhcurveto
+ 22 16 -10 -56 -104 -41 -95 -78 -105 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="m">
+ 328 393 -10 rmoveto
+ 74 28 rlineto
+ -4 69 -2 71 70 vvcurveto
+ 46 1 46 1 46 vhcurveto
+ 16 28 35 18 49 hhcurveto
+ 65 20 -49 -82 hvcurveto
+ -74 -5 -120 -16 vvcurveto
+ -38 21 -39 47 60 55 48 41 45 vhcurveto
+ -7 21 rlineto
+ -14 hlineto
+ -18 -24 -32 -22 -21 hhcurveto
+ -44 -7 38 27 hvcurveto
+ 131 vlineto
+ 100 6 58 -26 27 vhcurveto
+ 21 -21 -29 6 -29 hhcurveto
+ -59 -63 -35 -20 -38 hvcurveto
+ -16 2 rlineto
+ 32 -19 -34 20 -37 hhcurveto
+ -60 -60 -40 -28 -52 -78 callsubr
+ -12 37 -50 vhcurveto
+ -49 -2 -48 -35 -40 -32 12 -19 rcurveline
+ 13 23 36 16 16 hhcurveto
+ 41 -1 -64 -75 -91 -6 -92 -1 -92 hvcurveto
+ 14 -8 67 24 rlineto
+ -2 41 0 42 42 vvcurveto
+ 73 2 72 3 72 vhcurveto
+ 6 9 61 38 47 hhcurveto
+ 66 16 -48 -83 hvcurveto
+ -114 -10 -127 -32 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="macron">
+ -25 381 -21 callsubr
+ </CharString>
+ <CharString name="macroncomb">
+ -545 121 -21 callsubr
+ </CharString>
+ <CharString name="minus">
+ 347 778 276 -16 callsubr
+ endchar
+ </CharString>
+ <CharString name="mu">
+ 137 415 434 rmoveto
+ 2 -57 2 -57 -58 vvcurveto
+ -21 -2 -73 -1 -48 vhcurveto
+ -39 -36 -56 -24 -36 hhcurveto
+ -85 -8 73 56 hvcurveto
+ 269 vlineto
+ -9 7 -83 -26 rlineto
+ 4 -24 13 -85 -55 vvcurveto
+ -189 vlineto
+ -92 -2 -92 -2 -92 vhcurveto
+ 12 -6 53 20 rlineto
+ -13 63 -6 75 66 vvcurveto
+ 6 2 rlineto
+ -20 17 13 -10 32 hhcurveto
+ 49 76 43 33 58 hvcurveto
+ 8 -5 rlineto
+ -41 6 11 -28 52 hhcurveto
+ 55 56 46 38 41 hvcurveto
+ -8 14 -11 2 rlineto
+ -15 -24 -30 -18 -23 hhcurveto
+ -47 -5 65 34 hvcurveto
+ 167 vlineto
+ 31 3 51 3 41 vhcurveto
+ -8 11 rlineto
+ endchar
+ </CharString>
+ <CharString name="multiply">
+ 58 81 502 rmoveto
+ -24 -32 215 -215 -214 -215 23 -33 220 219 219 -219 23 33 -214 215 218 217 -25 32 -221 -221 rlineto
+ endchar
+ </CharString>
+ <CharString name="n">
+ 86 195 18 rmoveto
+ -2 40 -1 30 28 vvcurveto
+ 73 3 88 3 72 vhcurveto
+ 29 36 47 32 46 hhcurveto
+ 71 19 -61 -100 hvcurveto
+ -5 -171 rlineto
+ -48 17 -40 55 48 63 44 45 46 vhcurveto
+ -9 21 rlineto
+ -13 hlineto
+ -19 -25 -32 -21 -23 hhcurveto
+ -55 7 45 151 64 0 96 -20 24 hvcurveto
+ 22 -19 -29 7 -29 hhcurveto
+ -64 -69 -38 -34 -56 -78 callsubr
+ -6 -16 31 -50 hhcurveto
+ -37 -57 -41 -30 -41 hvcurveto
+ 17 -22 rlineto
+ 19 29 25 16 21 hhcurveto
+ 33 4 -48 -67 -81 -7 -165 -2 -51 hvcurveto
+ 15 -7 rlineto
+ endchar
+ </CharString>
+ <CharString name="nine">
+ -45 214 11 rmoveto
+ 13 83 69 97 54 79 rrcurveto
+ 52 77 60 96 85 vvcurveto
+ 107 -71 67 -145 vhcurveto
+ -50 -22 -88 -46 -29 -36 rrcurveto
+ -29 -36 -10 -45 -52 vvcurveto
+ -96 85 -70 69 52 49 17 26 49 vhcurveto
+ 5 -6 rlineto
+ -32 -55 -85 -114 0 vvcurveto
+ -45 -58 -48 -64 -20 -46 10 -8 rcurveline
+ 222 393 rmoveto
+ -24 -24 -35 -8 -33 hhcurveto
+ -84 -46 86 77 52 33 77 57 108 55 -78 -84 -35 -6 -38 -25 -25 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="nine.dnom">
+ 164 7 -72 callsubr
+ </CharString>
+ <CharString name="nine.numr">
+ 164 282 -72 callsubr
+ </CharString>
+ <CharString name="ntilde">
+ 86 315 620 -103 callsubr
+ -167 -581 rmoveto
+ -2 40 -1 30 28 vvcurveto
+ 73 3 88 3 72 vhcurveto
+ 29 36 47 32 46 hhcurveto
+ 71 19 -61 -100 hvcurveto
+ -5 -171 rlineto
+ -48 17 -40 55 48 63 44 45 46 vhcurveto
+ -9 21 rlineto
+ -13 hlineto
+ -19 -25 -32 -21 -23 hhcurveto
+ -55 7 45 151 64 0 96 -20 24 hvcurveto
+ 22 -19 -29 7 -29 hhcurveto
+ -64 -69 -38 -34 -56 -78 callsubr
+ -6 -16 31 -50 hhcurveto
+ -37 -57 -41 -30 -41 hvcurveto
+ 17 -22 rlineto
+ 19 29 25 16 21 hhcurveto
+ 33 4 -48 -67 -81 -7 -165 -2 -51 hvcurveto
+ 15 -7 rlineto
+ endchar
+ </CharString>
+ <CharString name="nu">
+ -16 531 452 rmoveto
+ -57 16 -23 -10 -33 -129 -36 -110 -56 -118 rlinecurve
+ -5 hlineto
+ -26 119 -37 164 -55 55 rrcurveto
+ 21 -21 -33 11 -30 hhcurveto
+ -53 -43 -22 -39 -35 hvcurveto
+ 20 -26 rlineto
+ 10 15 21 8 31 hhcurveto
+ 73 43 -98 -66 23 hvcurveto
+ 27 -77 16 -81 12 -81 7 -7 rcurveline
+ 56 32 20 50 22 48 24 48 rlinecurve
+ 136 274 rlineto
+ endchar
+ </CharString>
+ <CharString name="numbersign">
+ 170 10 228 rmoveto
+ 6 -10 rlineto
+ 165 -19 callsubr
+ 207 -19 callsubr
+ 164 hlineto
+ 12 8 -6 33 rlineto
+ -158 hlineto
+ 58 209 rlineto
+ 154 hlineto
+ 12 8 -6 33 rlineto
+ -149 -24 callsubr
+ -207 -24 callsubr
+ -183 hlineto
+ -8 -10 4 -21 6 -10 rlineto
+ 170 hlineto
+ -59 -209 rlineto
+ -178 hlineto
+ -8 -10 rlineto
+ 229 10 rmoveto
+ 58 209 rlineto
+ 207 hlineto
+ -59 -209 rlineto
+ endchar
+ </CharString>
+ <CharString name="o">
+ -8 431 59 -99 callsubr
+ </CharString>
+ <CharString name="oacute">
+ -44 366 694 -104 callsubr
+ 227 -481 -99 callsubr
+ </CharString>
+ <CharString name="ocircumflex">
+ -44 88 555 -106 callsubr
+ 174 -677 -99 callsubr
+ </CharString>
+ <CharString name="odieresis">
+ -8 429 595 -107 callsubr
+ 204 -536 -99 callsubr
+ </CharString>
+ <CharString name="oe">
+ 270 770 -20 callsubr
+ -76 -72 -33 -57 -49 vhcurveto
+ -2 -2 rlineto
+ 47 -30 -51 32 -78 hhcurveto
+ -79 callsubr
+ hvcurveto
+ -34 callsubr
+ 1 1 1 2 2 1 rrcurveto
+ -44 24 42 -31 66 -63 callsubr
+ -388 -80 rmoveto
+ 74 18 54 36 54 hhcurveto
+ -42 callsubr
+ endchar
+ </CharString>
+ <CharString name="ograve">
+ -44 121 695 -105 callsubr
+ 263 -672 -99 callsubr
+ </CharString>
+ <CharString name="omega">
+ 226 609 409 rmoveto
+ 48 -41 20 -63 -61 vvcurveto
+ -87 -45 -96 -94 -94 -14 118 85 65 0 71 9 59 vhcurveto
+ -6 7 -75 -28 rlineto
+ -189 vlineto
+ -53 -4 -71 -33 -33 vhcurveto
+ -24 -24 -31 -18 -34 hhcurveto
+ -90 -30 102 80 91 30 69 78 60 hvcurveto
+ -16 14 rlineto
+ -135 -47 -39 -126 -117 vvcurveto
+ -91 54 -98 104 70 57 54 46 45 vhcurveto
+ 12 hlineto
+ -77 36 28 -14 57 hhcurveto
+ 146 105 168 142 64 -25 62 -51 40 hvcurveto
+ -14 -3 -42 -48 rlineto
+ endchar
+ </CharString>
+ <CharString name="one">
+ -45 92 639 rmoveto
+ -27 83 vlineto
+ 62 -15 -82 -111 -140 -3 -140 -5 -139 hvcurveto
+ 12 -5 84 27 rlineto
+ -3 76 0 198 136 vvcurveto
+ 89 2 90 5 89 vhcurveto
+ -6 12 rlineto
+ endchar
+ </CharString>
+ <CharString name="one.dnom">
+ 227 427 -54 callsubr
+ </CharString>
+ <CharString name="one.numr">
+ 227 702 -54 callsubr
+ </CharString>
+ <CharString name="onehalf">
+ 245 589 -90 callsubr
+ -587 -51 callsubr
+ 566 -651 rmoveto
+ -222 hlineto
+ -4 -6 0 4 1 1 0 1 1 hvcurveto
+ 86 83 115 105 85 vvcurveto
+ 54 -47 39 -62 -61 -52 -33 -35 -39 vhcurveto
+ 14 -11 rlineto
+ 19 28 31 19 40 hhcurveto
+ 59 23 -45 -34 -71 -57 -61 -56 -55 hvcurveto
+ -38 -37 -41 -35 -41 -35 rrcurveto
+ -10 315 vlineto
+ 17 47 rlineto
+ endchar
+ </CharString>
+ <CharString name="onequarter">
+ 245 593 -90 callsubr
+ -591 -51 callsubr
+ 435 -304 -74 callsubr
+ </CharString>
+ <CharString name="onesuperior">
+ -367 -28 685 rmoveto
+ -17 61 vlineto
+ 46 -12 -53 -73 -91 -3 -91 -3 -90 hvcurveto
+ 9 -3 62 17 rlineto
+ -2 49 0 130 88 vvcurveto
+ 58 1 58 4 58 vhcurveto
+ -5 8 rlineto
+ endchar
+ </CharString>
+ <CharString name="ordfeminine">
+ -179 269 550 rmoveto
+ 15 -23 -33 8 -23 hhcurveto
+ -123 -52 -90 -92 -59 28 -70 81 43 41 20 21 36 hvcurveto
+ 11 -2 rlineto
+ -22 4 10 -17 27 hhcurveto
+ 23 41 22 16 29 hvcurveto
+ -5 16 rlineto
+ -5 -16 -22 -7 -10 hhcurveto
+ -25 -2 26 16 hvcurveto
+ 25 -2 26 25 vvcurveto
+ 48 2 49 3 48 vhcurveto
+ -4 3 rlineto
+ -55 -236 rmoveto
+ -14 -21 -28 -15 -29 hhcurveto
+ -27 -29 6 21 -16 hvcurveto
+ -17 23 -5 28 1 27 1 66 21 35 17 14 rrcurveto
+ 16 20 24 9 27 hhcurveto
+ 18 18 -9 -12 13 hvcurveto
+ 12 -11 0 -17 -17 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="ordmasculine">
+ -189 159 261 rmoveto
+ 51 53 13 34 35 hvcurveto
+ 32 32 10 43 42 vvcurveto
+ 43 -13 48 -37 30 vhcurveto
+ 21 -26 -35 5 -34 hhcurveto
+ -51 -53 -14 -34 -35 hvcurveto
+ -35 -34 -5 -48 -45 vvcurveto
+ -71 6 37 -65 100 hhcurveto
+ -74 214 rmoveto
+ 47 13 41 25 39 hhcurveto
+ 83 14 -81 -53 -54 -17 -71 -79 -81 -19 82 55 17 2 17 4 16 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="oslash">
+ -25 431 59 rmoveto
+ 44 49 14 66 65 vvcurveto
+ 88 -31 88 -84 35 vhcurveto
+ 28 65 -6 11 -22 5 -10 -2 -29 -68 rlineto
+ 3 -14 -14 1 -16 hhcurveto
+ -79 callsubr
+ hvcurveto
+ -48 -52 -7 -74 -69 vvcurveto
+ 5 -74 25 -73 62 -38 -34 -79 rcurveline
+ 2 -14 32 -8 37 85 rlineto
+ -6 19 22 -3 24 hhcurveto
+ 70 72 20 53 47 hvcurveto
+ -163 367 rmoveto
+ 18 16 -3 -6 14 hvcurveto
+ -145 -334 rlineto
+ -28 44 -9 63 49 vvcurveto
+ 26 2 26 6 25 vhcurveto
+ 74 18 54 36 54 hhcurveto
+ 132 -206 rmoveto
+ -83 -23 -110 -108 -28 -23 8 14 -18 vhcurveto
+ 150 345 rlineto
+ 41 -42 9 -76 -56 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="otilde">
+ -8 267 620 -103 callsubr
+ 117 -540 -99 callsubr
+ </CharString>
+ <CharString name="p">
+ 17 203 -206 rmoveto
+ -6 52 -3 97 -1 46 10 8 rcurveline
+ -5 19 20 -3 20 hhcurveto
+ 155 105 162 147 75 -35 92 -102 -69 -61 -31 -43 -54 hvcurveto
+ -8 4 rlineto
+ 44 -4 -16 31 -45 -50 callsubr
+ 303 rmoveto
+ 1 -2 103 82 11 3 76 -43 callsubr
+ </CharString>
+ <CharString name="paragraph">
+ -92 294 13 rmoveto
+ 62 -19 7 7 rlineto
+ -2 140 -5 141 141 vvcurveto
+ 59 2 59 3 59 vhcurveto
+ 3 40 33 9 38 5 rrcurveto
+ 18 vlineto
+ -7 7 -150 3 -148 3 -95 -95 -6 -106 rlinecurve
+ -4 -84 52 -97 128 -10 rrcurveto
+ 29 -2 67 2 -19 vvcurveto
+ -25 -6 -135 -1 -101 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="parenleft">
+ -288 246 -163 rmoveto
+ -129 25 -7 243 169 vvcurveto
+ 151 9 254 127 32 vhcurveto
+ 27 vlineto
+ -104 -18 -45 -114 -19 -96 rrcurveto
+ -15 -75 -5 -78 -77 vvcurveto
+ -81 4 -81 14 -80 vhcurveto
+ 17 -95 48 -121 105 -9 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="parenright">
+ -286 11 709 rmoveto
+ 81 -29 23 -94 15 -75 rrcurveto
+ 15 -77 4 -80 -78 vvcurveto
+ -114 2 -122 -36 -107 vhcurveto
+ -20 -60 -38 -26 -46 -12 rrcurveto
+ -24 vlineto
+ 179 23 11 267 171 vvcurveto
+ 167 -21 262 -169 35 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="partialdiff">
+ 22 100 548 rmoveto
+ 48 21 34 46 64 hhcurveto
+ 93 52 -94 -100 25 hvcurveto
+ -4 -4 rlineto
+ 10 -36 -23 3 -21 hhcurveto
+ -153 -74 -125 -129 -47 13 -71 34 -41 hvcurveto
+ -42 35 53 -9 58 hhcurveto
+ 42 41 18 28 33 hvcurveto
+ 82 69 15 113 101 vvcurveto
+ 158 -53 219 -175 -90 -56 -62 -82 -28 vhcurveto
+ 300 -430 rmoveto
+ -45 -15 -30 -47 -53 hhcurveto
+ -99 -23 124 48 91 37 129 117 27 27 -9 -11 25 hvcurveto
+ 8 -39 4 -40 -40 vvcurveto
+ -54 -7 -56 -18 -51 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="percent">
+ 282 228 795 -40 callsubr
+ 475 -18 rmoveto
+ -11 hlineto
+ -616 -746 -1 -14 28 -18 621 754 -1 13 rlineto
+ -545 -23 rmoveto
+ 85 -6 57 -67 -72 vvcurveto
+ -50 -14 -61 -72 -74 -41 74 63 45 14 48 45 26 vhcurveto
+ 446 -401 -40 callsubr
+ -50 -52 rmoveto
+ 85 -6 57 -67 -72 vvcurveto
+ -50 -14 -61 -72 -74 -41 74 63 45 14 48 45 26 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="period">
+ -273 69 52 -35 callsubr
+ </CharString>
+ <CharString name="periodcentered">
+ -273 69 257 -35 callsubr
+ </CharString>
+ <CharString name="phi">
+ 99 365 -156 rmoveto
+ -7 49 -4 50 49 vvcurveto
+ 9 10 70 2 67 21 50 50 rlinecurve
+ 48 48 21 69 67 vvcurveto
+ 124 -70 90 -185 vhcurveto
+ -8 10 rlineto
+ 68 3 68 5 67 vhcurveto
+ -7 8 -82 -42 rlineto
+ 4 -56 2 -57 -57 vvcurveto
+ -9 -9 rlineto
+ -42 -83 -21 -47 -47 hvcurveto
+ -50 -51 -24 -70 -72 vvcurveto
+ -115 50 -96 197 -5 vhcurveto
+ 8 -9 rlineto
+ -57 -4 -55 -1 -57 vhcurveto
+ 17 -10 rlineto
+ 61 234 rmoveto
+ 392 vlineto
+ 9 9 47 -1 46 -7 34 -34 rlinecurve
+ 36 -37 11 -52 -51 vvcurveto
+ -105 -62 -116 -113 -7 vhcurveto
+ -81 400 rmoveto
+ -395 vlineto
+ -8 -9 rlineto
+ -110 -54 114 99 56 12 59 41 41 hvcurveto
+ 30 30 49 13 31 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="phi1">
+ 97 265 -197 rmoveto
+ 69 21 rlineto
+ -5 54 -3 53 54 vvcurveto
+ 7 8 81 11 77 28 58 58 rlinecurve
+ 49 49 19 69 69 vvcurveto
+ 96 -50 91 -111 -42 -51 -11 -37 -43 vhcurveto
+ -58 -50 -8 -65 -61 vvcurveto
+ -205 vlineto
+ -7 -7 rlineto
+ -19 -27 9 37 -37 hvcurveto
+ -48 47 -13 79 67 vvcurveto
+ 81 31 58 84 39 vhcurveto
+ -12 22 rlineto
+ -99 -29 -84 -83 -106 vvcurveto
+ -69 18 -60 45 -52 vhcurveto
+ 52 -60 50 -10 59 -6 7 -7 rcurveline
+ -2 -168 rlineto
+ 74 216 rmoveto
+ 232 vlineto
+ 91 29 69 82 82 15 -120 -28 -66 -15 -74 -45 -46 vhcurveto
+ -38 -39 -49 -24 -54 -2 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="pi">
+ 51 171 460 rmoveto
+ -58 -61 -1 -58 -18 hvcurveto
+ -28 -113 21 -9 18 46 rlineto
+ 59 23 26 10 49 hhcurveto
+ 74 hlineto
+ -25 -112 -54 -143 -67 -116 1 -13 rcurveline
+ 55 -15 11 10 44 128 45 131 27 130 rlinecurve
+ 143 hlineto
+ 6 -6 rlineto
+ -10 -80 -6 -80 -81 vvcurveto
+ -45 2 -63 29 -27 vhcurveto
+ -12 12 22 0 19 hhcurveto
+ 41 41 32 28 31 hvcurveto
+ -10 17 -6 2 rlineto
+ -10 -15 -16 -6 -18 hhcurveto
+ -65 2 129 90 34 4 36 2 35 hvcurveto
+ 7 7 38 1 37 11 34 16 rlinecurve
+ 35 59 -8 7 rlineto
+ -18 -34 -38 -10 -39 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="pi1">
+ 230 356 302 rmoveto
+ 2 -22 3 -22 -22 vvcurveto
+ -81 -26 -108 -104 -83 -29 104 73 53 17 52 38 37 vhcurveto
+ -10 21 rlineto
+ -74 -51 -50 -58 -84 vvcurveto
+ -88 38 -114 105 73 63 39 53 49 vhcurveto
+ 8 -1 rlineto
+ -58 20 49 -37 58 hhcurveto
+ 134 112 176 142 161 -141 74 -207 -155 -63 -26 -26 -42 hvcurveto
+ -45 -28 -30 -37 -33 -39 15 -16 rcurveline
+ 68 68 46 40 200 hhcurveto
+ 87 110 -9 -61 59 hvcurveto
+ 51 -54 13 -46 -58 vvcurveto
+ -84 -38 -109 -97 -57 -45 45 63 vhcurveto
+ 154 vlineto
+ -8 12 rlineto
+ endchar
+ </CharString>
+ <CharString name="plus">
+ 202 392 -26 callsubr
+ -310 hlineto
+ 40 7 rlineto
+ 303 308 vlineto
+ 5 40 rlineto
+ -313 hlineto
+ endchar
+ </CharString>
+ <CharString name="plusminus">
+ 218 399 -26 callsubr
+ -271 -303 -97 callsubr
+ 658 hlineto
+ 6 40 rlineto
+ -314 271 308 hlineto
+ 5 40 rlineto
+ -313 hlineto
+ endchar
+ </CharString>
+ <CharString name="psi">
+ 159 358 -189 rmoveto
+ 76 35 rlineto
+ -7 49 -2 51 50 vvcurveto
+ 7 8 rlineto
+ 139 29 108 114 139 vvcurveto
+ 66 -25 64 -41 51 vhcurveto
+ -21 3 -44 -48 -3 -13 rlineto
+ 36 -39 27 -49 -54 vvcurveto
+ -56 -11 -53 -36 -44 vhcurveto
+ -14 -18 -53 -54 -63 -5 -6 7 rcurveline
+ 352 vlineto
+ 98 0 164 2 30 vhcurveto
+ -7 7 -80 -33 rlineto
+ 6 -101 6 -108 -96 vvcurveto
+ -315 vlineto
+ -7 -6 rlineto
+ -44 -51 23 21 -22 hvcurveto
+ -29 28 -12 41 80 vvcurveto
+ 129 vlineto
+ 116 -35 -2 -29 -47 -49 -35 -31 -39 vhcurveto
+ 17 -21 rlineto
+ 13 20 25 17 19 hhcurveto
+ 38 6 -60 -30 hvcurveto
+ -153 vlineto
+ -106 42 -64 190 vhcurveto
+ 7 -8 rlineto
+ -176 vlineto
+ endchar
+ </CharString>
+ <CharString name="q">
+ -37 451 -214 rmoveto
+ -8 89 -4 116 122 vvcurveto
+ 132 4 139 10 116 vhcurveto
+ -21 4 -44 -59 -9 -2 rlineto
+ 14 -28 -40 14 -31 hhcurveto
+ -169 -71 -146 -139 -84 38 -109 105 63 58 28 38 51 hvcurveto
+ 7 -5 -3 -96 -2 -144 -3 -41 rlinecurve
+ 16 -16 rlineto
+ -8 348 rmoveto
+ -29 -33 -44 -21 -39 hhcurveto
+ -82 -32 75 83 112 34 109 113 26 23 -14 -18 18 hvcurveto
+ 16 -16 0 -30 -25 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="question">
+ -192 162 222 rmoveto
+ -16 12 -11 20 20 vvcurveto
+ 62 122 61 47 79 vhcurveto
+ 17 29 13 27 33 vvcurveto
+ 77 -53 51 -76 -79 -105 -53 -83 -26 10 -27 18 -16 vhcurveto
+ 67 40 rlineto
+ -19 15 -13 22 24 vvcurveto
+ 45 42 27 39 50 48 -62 -54 -113 -99 -44 -64 -83 vhcurveto
+ -13 -16 -13 -19 -20 vvcurveto
+ -30 19 -27 23 -14 vhcurveto
+ 46 32 rlineto
+ -80 -165 rmoveto
+ -31 25 -26 31 32 26 26 31 31 -26 26 -32 -31 -25 -26 -31 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="questiondown">
+ -192 271 442 rmoveto
+ 31 -25 26 -31 -32 -26 -26 -31 -31 26 -26 32 31 25 26 31 vhcurveto
+ -80 -176 rmoveto
+ 16 -12 11 -20 -20 vvcurveto
+ -62 -122 -61 -47 -79 vhcurveto
+ -17 -29 -13 -27 -33 vvcurveto
+ -77 53 -51 76 79 105 53 83 26 -10 27 -18 16 vhcurveto
+ -67 -40 rlineto
+ 19 -15 13 -22 -24 vvcurveto
+ -45 -42 -27 -39 -50 -48 62 54 113 99 44 64 83 vhcurveto
+ 13 16 13 19 20 vvcurveto
+ 30 -19 27 -23 14 vhcurveto
+ -46 -32 rlineto
+ endchar
+ </CharString>
+ <CharString name="quotedbl">
+ -212 118 432 rmoveto
+ 21 191 rlineto
+ 52 vlineto
+ 14 -19 6 -14 -25 -9 -17 -21 -24 2 -25 3 -24 vhcurveto
+ 20 -152 rlineto
+ 142 hmoveto
+ 19 194 rlineto
+ 1 15 0 16 16 vvcurveto
+ 13 -18 6 -11 -18 -21 -5 -19 -5 3 -24 2 -14 vhcurveto
+ 22 -193 rlineto
+ endchar
+ </CharString>
+ <CharString name="quoteleft">
+ -345 115 532 rmoveto
+ -9 14 -5 15 16 vvcurveto
+ 35 28 47 21 36 vhcurveto
+ -14 14 rlineto
+ -39 -49 -56 -68 -51 vvcurveto
+ -48 44 -87 30 15 33 24 18 8 -11 19 -5 8 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="quoteright">
+ -348 66 395 rmoveto
+ 35 53 54 54 62 vvcurveto
+ 42 -43 89 -28 -16 -32 -26 -15 -7 8 -16 6 -10 vhcurveto
+ 35 -57 rlineto
+ 7 -13 6 -12 -14 vvcurveto
+ -40 -24 -38 -24 -41 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="quotesingle">
+ -335 110 436 rmoveto
+ 26 186 rlineto
+ 2 13 2 16 11 vvcurveto
+ 19 -9 14 -21 -19 -17 -10 -19 -13 1 -12 1 -12 vhcurveto
+ 18 -193 rlineto
+ endchar
+ </CharString>
+ <CharString name="r">
+ -129 406 388 rmoveto
+ 52 -5 -25 27 -49 hhcurveto
+ -36 -45 -42 -28 -29 hvcurveto
+ -10 4 rlineto
+ 42 -6 -21 30 -45 hhcurveto
+ -41 -55 -44 -31 -39 hvcurveto
+ 12 -17 rlineto
+ 14 25 30 17 23 hhcurveto
+ 46 -3 -91 -78 -80 -6 -87 -6 -70 hvcurveto
+ 15 -9 70 21 rlineto
+ -2 51 -1 50 51 vvcurveto
+ 54 -7 83 14 33 vhcurveto
+ 27 11 25 35 41 hhcurveto
+ 33 15 -30 -28 5 hvcurveto
+ 12 -5 rlineto
+ endchar
+ </CharString>
+ <CharString name="registered">
+ 87 -68 callsubr
+ 257 -1 rmoveto
+ 72 6 57 28 70 vvcurveto
+ 48 -52 22 -70 vhcurveto
+ -162 hlineto
+ -4 -4 -1 -8 rlineto
+ 5 41 -6 -16 hvcurveto
+ -28 2 -50 -8 vvcurveto
+ -72 0 -74 -5 -72 vhcurveto
+ 6 -5 50 15 rlineto
+ -3 48 0 48 48 vvcurveto
+ 4 4 -2 -2 4 hvcurveto
+ 18 -14 75 -82 56 -60 60 13 rcurveline
+ 5 vlineto
+ -158 148 rlineto
+ -64 23 rmoveto
+ 2 2 88 2 32 vhcurveto
+ 10 2 3 5 vhcurveto
+ 24 hlineto
+ 44 57 -8 -50 -60 -64 -24 -66 -4 -2 4 3 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="rho">
+ -61 133 -169 rmoveto
+ 2 4 4 8 1 vvcurveto
+ -20 78 -4 72 -3 80 7 1 rcurveline
+ -50 33 45 -28 54 hhcurveto
+ 120 84 136 118 58 -9 74 -40 40 hvcurveto
+ 36 -37 -47 18 -51 hhcurveto
+ -54 -57 -16 -36 -41 hvcurveto
+ -76 -67 3 -105 -120 vvcurveto
+ -105 5 -105 6 -104 vhcurveto
+ 20 -8 rlineto
+ 40 420 rmoveto
+ 90 28 120 111 91 20 -117 -90 -87 -41 -100 -104 -84 -21 107 77 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="ring">
+ -45 153 -83 callsubr
+ </CharString>
+ <CharString name="ringcomb">
+ -545 -97 -83 callsubr
+ </CharString>
+ <CharString name="s">
+ -166 342 383 rmoveto
+ 61 -3 -58 22 -52 hhcurveto
+ -83 -90 -53 -90 -66 62 -36 63 -26 hvcurveto
+ 47 -20 52 -27 -51 vvcurveto
+ -41 -43 -35 -42 -63 -47 53 62 -4 vhcurveto
+ -14 1 -49 -71 rlineto
+ -63 33 54 -20 60 hhcurveto
+ 88 100 53 102 47 -38 36 -77 33 hvcurveto
+ -73 31 -37 25 40 vvcurveto
+ 46 35 35 47 45 17 -34 -44 3 vhcurveto
+ 12 -7 rlineto
+ endchar
+ </CharString>
+ <CharString name="section">
+ -80 35 23 rmoveto
+ -99 9 91 -31 81 hhcurveto
+ 99 81 83 99 26 -5 27 -13 21 hvcurveto
+ 33 37 19 48 51 vvcurveto
+ 86 -87 24 -63 36 vhcurveto
+ -75 43 -60 13 74 vvcurveto
+ 58 32 52 51 44 24 -36 -60 vhcurveto
+ 15 -11 59 21 rlineto
+ 2 12 4 18 7 vvcurveto
+ 61 -69 18 -49 -102 -68 -79 -97 -21 4 -20 6 -20 vhcurveto
+ -26 -38 -22 -42 -46 vvcurveto
+ -86 58 -38 86 -38 vhcurveto
+ 82 -40 60 -26 -62 vvcurveto
+ -69 -43 -60 -62 -71 -45 58 68 -2 vhcurveto
+ -8 5 rlineto
+ 259 116 rmoveto
+ -64 66 -211 33 108 vvcurveto
+ 24 10 27 14 18 vhcurveto
+ 41 -56 144 -28 51 -53 rrcurveto
+ 20 -20 16 -24 -29 vvcurveto
+ -22 -5 -22 -13 -18 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="semicolon">
+ -352 29 400 -88 callsubr
+ 41 -590 rmoveto
+ 40 49 50 58 61 vvcurveto
+ 39 -36 82 -35 -12 -11 -4 -7 -9 vhcurveto
+ -2 -2 rlineto
+ -8 -8 -1 -15 -12 vvcurveto
+ -9 4 -9 5 -8 vhcurveto
+ 34 -51 rlineto
+ 7 -12 6 -12 -14 vvcurveto
+ -36 -23 -45 -24 -32 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="seven">
+ -45 494 686 rmoveto
+ -208 hlineto
+ -45 -153 2 6 -18 hvcurveto
+ -21 -79 7 -9 rlineto
+ 336 hlineto
+ 6 -12 rlineto
+ -62 -99 -98 -171 0 vvcurveto
+ -54 -92 -85 -150 -24 -82 6 -8 rcurveline
+ 84 20 32 146 65 136 78 128 rlinecurve
+ 154 252 rlineto
+ endchar
+ </CharString>
+ <CharString name="seven.dnom">
+ 353 404 -60 callsubr
+ </CharString>
+ <CharString name="seven.numr">
+ 353 679 -60 callsubr
+ </CharString>
+ <CharString name="sigma">
+ -2 210 462 rmoveto
+ -126 -5 -53 -118 -118 vvcurveto
+ -109 46 -117 129 145 87 101 132 83 -35 70 -67 45 vhcurveto
+ 1 6 66 -8 69 -8 64 -13 rlinecurve
+ 7 6 14 57 -5 10 rlineto
+ -323 -47 rmoveto
+ 104 26 -122 -91 -69 -20 -111 -96 -60 -40 66 48 -15 hvcurveto
+ -11 34 -3 34 35 vvcurveto
+ 74 27 102 88 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="six">
+ -45 471 688 rmoveto
+ 6 -15 -25 6 -15 hhcurveto
+ -89 -86 -59 -65 -62 hvcurveto
+ -89 -89 -45 -124 -125 vvcurveto
+ -114 50 -137 141 120 115 107 117 85 -59 81 -91 -69 -63 -29 -43 -53 vhcurveto
+ -7 1 1 96 19 101 79 73 rlinecurve
+ 38 41 54 27 61 hhcurveto
+ 20 18 -3 -8 20 hvcurveto
+ 9 4 rlineto
+ -319 -369 rmoveto
+ 21 22 61 28 41 hhcurveto
+ 79 57 -68 -74 -76 -44 -64 -85 -106 -25 142 91 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="six.dnom">
+ 338 413 -71 callsubr
+ </CharString>
+ <CharString name="six.numr">
+ 338 688 -71 callsubr
+ </CharString>
+ <CharString name="slash">
+ -155 380 720 rmoveto
+ -11 -2 -386 -888 3 -14 32 -8 389 896 -5 11 rlineto
+ endchar
+ </CharString>
+ <CharString name="softhyphen">
+ -545 endchar
+ </CharString>
+ <CharString name="space">
+ -212 endchar
+ </CharString>
+ <CharString name="sterling">
+ 104 301 134 rmoveto
+ 0 -50 36 -80 vhcurveto
+ -3 6 31 16 49 50 17 61 rlinecurve
+ 2 5 1 4 2 5 59 -1 36 -1 89 -3 4 48 rcurveline
+ -178 -6 rlineto
+ 134 32 -4 163 108 hhcurveto
+ 35 28 -29 -32 -37 13 -7 23 hvcurveto
+ 0 46 1 60 vvcurveto
+ 55 -50 23 -51 -142 -78 -109 -173 -22 vhcurveto
+ -2 -15 -3 -17 -3 -18 -36 3 -27 1 -43 1 -8 -45 rcurveline
+ 35 1 36 1 35 1 -11 -50 -17 -48 -20 -19 -31 -31 -41 -15 -22 -37 -23 -39 -12 -33 -3 -33 20 -17 rcurveline
+ 46 15 24 75 67 hhcurveto
+ 26 52 -21 -43 66 hvcurveto
+ -29 36 59 -29 81 hhcurveto
+ 43 25 25 30 29 hvcurveto
+ 39 41 5 57 56 vvcurveto
+ 11 -1 30 -4 17 vhcurveto
+ -24 -5 rlineto
+ 2 -14 2 -24 -17 vvcurveto
+ -67 -36 -61 -63 -44 -86 25 37 -54 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="t">
+ -160 121 582 rmoveto
+ 2 -26 0 -64 -51 vvcurveto
+ -6 -6 rlineto
+ -104 hlineto
+ -6 -6 -7 -24 5 -5 rlineto
+ 112 hlineto
+ 6 -7 rlineto
+ -190 vlineto
+ -135 2 -19 21 -27 vhcurveto
+ -24 18 31 -7 23 hhcurveto
+ 58 60 45 43 46 hvcurveto
+ -7 15 -12 2 rlineto
+ -19 -30 -36 -22 -25 hhcurveto
+ -63 -8 79 71 hvcurveto
+ 189 vlineto
+ 6 6 rlineto
+ 119 hlineto
+ 6 5 8 26 -5 4 rlineto
+ -128 hlineto
+ -6 5 1 58 5 51 5 57 rlinecurve
+ -7 5 rlineto
+ endchar
+ </CharString>
+ <CharString name="tau">
+ -59 130 461 rmoveto
+ -29 -39 -5 -30 -20 hvcurveto
+ -13 -20 -22 -102 -4 -19 22 -3 rcurveline
+ 13 34 17 46 13 14 rrcurveto
+ 20 20 37 2 28 hhcurveto
+ 75 hlineto
+ 7 -7 rlineto
+ -7 -83 -8 -83 -83 vvcurveto
+ -63 10 -88 68 43 53 38 37 39 vhcurveto
+ -9 14 -9 2 rlineto
+ -10 -16 -26 -15 -19 hhcurveto
+ -62 1 134 34 54 9 77 2 34 hvcurveto
+ 9 8 rlineto
+ 68 hlineto
+ 28 28 4 6 27 hvcurveto
+ 43 67 -13 9 rlineto
+ -16 -34 -38 -7 -38 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="theta">
+ -45 214 -11 rmoveto
+ 109 91 99 103 32 hvcurveto
+ 18 56 5 61 60 vvcurveto
+ 134 -16 193 -153 -115 -89 -82 -108 -34 vhcurveto
+ -19 -58 -1 -62 -60 vvcurveto
+ -135 19 -201 153 vhcurveto
+ -95 388 rmoveto
+ 94 11 177 125 118 5 -167 -104 6 vhcurveto
+ -5 -7 rlineto
+ -254 hlineto
+ 264 -45 rmoveto
+ -85 -4 -109 -47 -48 vhcurveto
+ -19 -19 -21 -17 -27 hhcurveto
+ -125 -27 168 111 hvcurveto
+ 7 7 rlineto
+ 255 hlineto
+ endchar
+ </CharString>
+ <CharString name="theta1">
+ -19 114 118 rmoveto
+ -76 31 -56 73 104 91 94 100 35 vhcurveto
+ 17 50 7 47 53 vvcurveto
+ 4 4 rlineto
+ 52 27 -53 -86 callsubr
+ 99 -20 116 -76 76 vhcurveto
+ 24 -24 -32 16 -34 hhcurveto
+ -84 -65 -63 -84 -135 129 -72 132 -13 hvcurveto
+ 4 -5 rlineto
+ -103 -19 -189 -125 -56 -13 37 118 vhcurveto
+ 108 vlineto
+ 39 -19 36 -39 -50 -52 -35 -33 -38 vhcurveto
+ 11 -20 rlineto
+ 13 22 25 15 22 hhcurveto
+ 40 4 -48 -36 hvcurveto
+ 278 137 rmoveto
+ -111 10 -103 87 115 vvcurveto
+ 43 33 39 44 61 40 -80 -58 19 vhcurveto
+ 16 -49 6 -50 -52 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="thorn">
+ -2 199 -206 rmoveto
+ -5 52 0 13 -2 46 10 8 rcurveline
+ -5 19 17 -3 20 hhcurveto
+ 155 105 162 147 75 -35 92 -102 -69 -59 -31 -43 -54 hvcurveto
+ -8 4 rlineto
+ 10 0 28 -1 31 vhcurveto
+ 69 -2 -28 21 -36 -50 callsubr
+ 219 rmoveto
+ 1 -1 81 82 11 2 98 -43 callsubr
+ </CharString>
+ <CharString name="three">
+ -45 241 382 rmoveto
+ 87 25 71 65 96 vvcurveto
+ 87 -65 47 -81 -62 -68 -51 -43 -51 vhcurveto
+ 14 -22 rlineto
+ 24 37 46 29 39 hhcurveto
+ 60 49 -37 -62 -90 -70 -51 -121 -28 hvcurveto
+ -1 -26 rlineto
+ 60 79 -4 -41 39 hvcurveto
+ 29 -31 20 -40 -43 vvcurveto
+ -86 -56 -77 -90 -61 -45 47 51 -30 vhcurveto
+ -10 hlineto
+ -42 -72 7 -11 rlineto
+ -35 45 54 -20 57 hhcurveto
+ 133 132 95 137 100 -78 48 -127 11 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="three.dnom">
+ 182 229 -70 callsubr
+ </CharString>
+ <CharString name="three.numr">
+ 182 504 -70 callsubr
+ </CharString>
+ <CharString name="threequarters">
+ 245 633 -90 callsubr
+ -475 -188 rmoveto
+ 62 15 52 39 58 vvcurveto
+ 53 -49 27 -56 -46 -48 -31 -25 -37 vhcurveto
+ 10 -13 rlineto
+ 14 27 32 17 29 hhcurveto
+ 41 37 -20 -39 -55 -51 -29 -86 -17 hvcurveto
+ -1 -16 rlineto
+ 43 58 -2 -25 28 hvcurveto
+ 20 -18 15 -25 -25 vvcurveto
+ -52 -40 -46 -65 -43 -33 28 31 -22 vhcurveto
+ -7 hlineto
+ -30 -44 4 -6 rlineto
+ -21 32 40 -12 41 hhcurveto
+ 96 94 57 82 59 -53 29 -94 7 hvcurveto
+ 435 -103 -74 callsubr
+ </CharString>
+ <CharString name="threesuperior">
+ -246 144 518 rmoveto
+ 64 16 52 43 62 vvcurveto
+ 58 -50 29 -57 -46 -49 -32 -29 -38 vhcurveto
+ 10 -14 rlineto
+ 16 28 33 18 29 hhcurveto
+ 45 35 -24 -40 -59 -53 -33 -88 -18 hvcurveto
+ -17 vlineto
+ 44 57 -2 -27 29 hvcurveto
+ 21 -20 16 -26 -28 vvcurveto
+ -57 -42 -49 -65 -44 -32 30 34 -24 vhcurveto
+ -8 hlineto
+ -31 -47 5 -7 rlineto
+ -23 33 40 -13 42 hhcurveto
+ 96 99 61 90 67 -61 29 -90 7 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="tilde">
+ -45 249 620 -103 callsubr
+ endchar
+ </CharString>
+ <CharString name="tildecomb">
+ -545 -2 620 -103 callsubr
+ endchar
+ </CharString>
+ <CharString name="two">
+ -45 467 88 rmoveto
+ -309 hlineto
+ -5 -8 1 6 2 1 1 1 1 hvcurveto
+ 84 98 88 101 59 107 rrcurveto
+ 26 46 22 48 54 vvcurveto
+ 87 -63 68 -88 -84 -73 -53 -60 -54 vhcurveto
+ 20 -19 rlineto
+ 32 38 44 32 55 hhcurveto
+ 85 28 -80 -52 -119 -78 -101 -78 -91 hvcurveto
+ -53 -62 -56 -59 -57 -58 rrcurveto
+ -16 437 vlineto
+ 23 78 rlineto
+ endchar
+ </CharString>
+ <CharString name="two.dnom">
+ 338 48 -66 callsubr
+ </CharString>
+ <CharString name="two.numr">
+ 338 323 -66 callsubr
+ </CharString>
+ <CharString name="twosuperior">
+ -241 308 327 rmoveto
+ -227 hlineto
+ -5 -4 1 4 1 0 0 1 1 hvcurveto
+ 88 90 117 114 91 vvcurveto
+ 58 -48 43 -63 -61 -54 -34 -39 -40 vhcurveto
+ 14 -13 rlineto
+ 21 28 34 21 40 hhcurveto
+ 60 22 -50 -36 -78 -57 -65 -57 -59 hvcurveto
+ -39 -40 -41 -38 -42 -38 rrcurveto
+ -11 321 vlineto
+ 17 51 rlineto
+ endchar
+ </CharString>
+ <CharString name="u">
+ 93 627 107 -94 callsubr
+ </CharString>
+ <CharString name="uacute">
+ 88 442 704 -104 callsubr
+ 347 -443 -94 callsubr
+ </CharString>
+ <CharString name="ucircumflex">
+ 88 154 561 -106 callsubr
+ 304 -635 -94 callsubr
+ </CharString>
+ <CharString name="udieresis">
+ 88 477 606 -107 callsubr
+ 352 -499 -94 callsubr
+ </CharString>
+ <CharString name="ugrave">
+ 88 187 705 -105 callsubr
+ 393 -634 -94 callsubr
+ </CharString>
+ <CharString name="underscore">
+ 211 756 -74 rmoveto
+ -756 -40 756 hlineto
+ endchar
+ </CharString>
+ <CharString name="upsilon">
+ -2 387 398 rmoveto
+ 39 -38 18 -53 -54 vvcurveto
+ -76 -35 -126 -129 -67 -27 58 72 vhcurveto
+ 69 5 60 66 vvcurveto
+ 46 -10 50 -56 -50 -49 -37 -34 -38 vhcurveto
+ 16 -22 rlineto
+ 17 21 24 18 26 hhcurveto
+ 30 8 -43 -41 hvcurveto
+ -211 vlineto
+ -65 27 -66 81 156 142 152 156 66 -29 61 -45 48 vhcurveto
+ -20 -4 -42 -51 rlineto
+ endchar
+ </CharString>
+ <CharString name="v">
+ -52 363 425 rmoveto
+ -2 -2 -2 -3 -3 vvcurveto
+ -2 0 -2 1 -1 vhcurveto
+ 17 -32 20 -36 -32 vvcurveto
+ -71 -57 -78 -50 -59 vhcurveto
+ -8 -8 -11 -14 -5 hhcurveto
+ -21 -32 151 60 -15 hvcurveto
+ 107 -28 -14 69 -51 hhcurveto
+ -39 -50 -33 -25 -36 hvcurveto
+ 9 -24 rlineto
+ 13 23 18 8 22 hhcurveto
+ 31 24 -76 -85 23 hvcurveto
+ 69 -258 rlineto
+ 24 hlineto
+ 5 3 14 14 11 11 59 60 55 63 45 72 rrcurveto
+ 28 45 27 50 55 vvcurveto
+ 58 -27 42 -19 -2 -3 0 -2 -3 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="w">
+ 256 668 416 rmoveto
+ 18 -31 20 -40 -33 vvcurveto
+ -81 -63 -76 -51 -64 vhcurveto
+ -4 -3 -8 -6 -4 hhcurveto
+ -8 -7 8 7 -3 hvcurveto
+ -44 118 -27 124 -26 126 -12 3 rcurveline
+ -52 -26 -52 -106 -57 -104 -57 -103 rlinecurve
+ -11 2 -10 81 -4 82 -15 80 rlinecurve
+ 41 -8 -16 55 -54 hhcurveto
+ -41 -54 -40 -28 -39 hvcurveto
+ 9 -20 rlineto
+ 14 27 33 17 23 hhcurveto
+ 10 34 1 -191 21 hvcurveto
+ 24 -224 7 -6 42 13 55 119 68 128 56 103 rlinecurve
+ 3 1 6 2 4 hhcurveto
+ 5 2 -6 -4 2 hvcurveto
+ 29 -114 45 -175 17 -48 rrcurveto
+ -9 3 12 -12 11 hhcurveto
+ 13 12 11 10 10 hvcurveto
+ 58 63 55 66 45 74 rrcurveto
+ 28 47 28 51 55 vvcurveto
+ 24 -18 72 -25 -3 -2 0 -1 -1 vhcurveto
+ -57 -35 rlineto
+ -2 -1 0 -3 -3 vvcurveto
+ -2 0 -2 1 -2 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="weierstrass">
+ 46 182 464 rmoveto
+ -51 -37 -42 -55 -66 vvcurveto
+ -43 21 -42 20 -37 vhcurveto
+ -28 -52 -58 -121 -76 vvcurveto
+ -61 31 -70 75 92 42 100 82 15 -2 14 -4 15 vhcurveto
+ -21 20 27 -15 30 hhcurveto
+ 37 39 29 28 28 hvcurveto
+ 66 66 25 97 92 vvcurveto
+ 72 -21 94 -99 -118 -79 -119 -62 -39 vhcurveto
+ -18 -26 rlineto
+ -9 hlineto
+ -11 22 -11 28 27 vvcurveto
+ 43 25 36 26 33 vhcurveto
+ 73 -395 rmoveto
+ -19 56 -31 59 -30 53 40 62 63 92 39 16 rrcurveto
+ 11 28 10 2 19 hhcurveto
+ 80 22 -94 -65 -92 -23 -110 -88 -27 -20 17 35 -9 hvcurveto
+ -7 1 rlineto
+ -162 42 rmoveto
+ 38 -60 51 -75 -60 vvcurveto
+ -45 -19 -52 -58 -56 -16 71 47 50 21 72 30 52 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="x">
+ -55 410 462 rmoveto
+ 2 -2 -2 0 -2 hhcurveto
+ -3 -2 0 -2 -1 hvcurveto
+ -44 -51 -59 -70 -36 -48 -6 1 rcurveline
+ -29 56 -41 72 -21 23 rrcurveto
+ 15 -14 -23 4 -17 hhcurveto
+ -33 -50 -37 -27 -35 hvcurveto
+ 14 -18 rlineto
+ 12 18 25 13 21 hhcurveto
+ 49 48 -107 -77 38 hvcurveto
+ -49 -64 -50 -69 -43 -69 rrcurveto
+ -8 vlineto
+ 28 -25 16 4 30 77 40 62 39 60 rlinecurve
+ 7 hlineto
+ -129 66 34 -74 51 hhcurveto
+ 42 51 56 38 35 hvcurveto
+ -8 19 rlineto
+ -8 hlineto
+ -17 -20 -27 -21 -24 hhcurveto
+ -44 -59 106 90 -41 hvcurveto
+ 52 61 64 65 56 39 rrcurveto
+ 2 1 1 1 3 vvcurveto
+ 1 -2 2 -1 1 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="xi">
+ -73 411 -137 rmoveto
+ 32 43 42 54 47 vvcurveto
+ 42 -55 9 -32 vhcurveto
+ -40 -84 -11 -56 hhcurveto
+ -66 -53 39 69 132 122 48 108 hvcurveto
+ 23 vlineto
+ -74 8 -86 21 91 vvcurveto
+ 110 112 34 87 10 vhcurveto
+ 28 vlineto
+ -6 -32 -35 -5 -31 hhcurveto
+ -50 -51 13 32 -39 hvcurveto
+ -8 hlineto
+ -28 -46 41 -22 47 -5 44 -1 rlinecurve
+ 1 -8 rlineto
+ -68 -27 -68 -55 -79 vvcurveto
+ -70 57 -24 51 -11 vhcurveto
+ -6 vlineto
+ -94 -29 -91 -77 -108 vvcurveto
+ -81 62 -53 83 vhcurveto
+ 28 106 16 52 hhcurveto
+ 34 45 -9 -42 -24 -19 -30 -15 -25 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="y">
+ 27 104 -182 -85 callsubr
+ </CharString>
+ <CharString name="yacute">
+ 7 441 699 -104 callsubr
+ -175 -727 -85 callsubr
+ </CharString>
+ <CharString name="ydieresis">
+ 7 456 605 -107 callsubr
+ -150 -787 -85 callsubr
+ </CharString>
+ <CharString name="yen">
+ 78 250 299 rmoveto
+ -21 0 -20 -21 vvcurveto
+ -149 -97 callsubr
+ 156 hlineto
+ -66 -1 -67 -2 -66 vhcurveto
+ 11 -9 90 29 -6 179 rlineto
+ 166 hlineto
+ 6 40 rlineto
+ -173 hlineto
+ -2 69 5 8 5 7 5 8 rlinecurve
+ 152 hlineto
+ 6 40 rlineto
+ -131 hlineto
+ 67 99 67 87 92 120 -4 18 rcurveline
+ -84 callsubr
+ 114 -225 rcurveline
+ -116 -97 callsubr
+ 143 hlineto
+ endchar
+ </CharString>
+ <CharString name="z">
+ -82 402 462 rmoveto
+ -17 -21 -23 -14 -29 -56 -68 31 -51 hhcurveto
+ -29 -13 -10 -31 -20 hvcurveto
+ -50 -89 20 -13 rlineto
+ 43 31 21 28 37 36 51 -19 33 hhcurveto
+ 11 9 0 2 10 hvcurveto
+ -295 -381 15 -19 rlineto
+ 6 hlineto
+ 23 16 22 20 24 hhcurveto
+ 117 -11 43 -4 75 -10 11 1 rlinecurve
+ 50 -1 27 28 20 40 41 80 rcurveline
+ -22 12 rlineto
+ -36 -23 -29 -42 -57 hhcurveto
+ -9 -98 3 10 -98 hvcurveto
+ -5 8 99 134 108 133 83 88 rlinecurve
+ -14 13 rlineto
+ endchar
+ </CharString>
+ <CharString name="zero">
+ -45 290 704 rmoveto
+ -44 -18 -49 -24 -33 -33 rrcurveto
+ -85 -85 -45 -121 -120 vvcurveto
+ -115 28 -202 145 184 69 211 159 133 -49 138 -121 77 vhcurveto
+ -56 -64 rmoveto
+ 45 -19 44 -70 7 -12 rrcurveto
+ 44 -79 24 -85 -90 vvcurveto
+ -97 -24 -136 -122 -64 -46 79 68 -20 vhcurveto
+ -16 55 -5 59 58 vvcurveto
+ 101 45 113 88 55 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="zero.dnom">
+ 215 422 -67 callsubr
+ </CharString>
+ <CharString name="zero.numr">
+ 215 697 -67 callsubr
+ </CharString>
+ <CharString name="zeta">
+ -124 363 -136 rmoveto
+ 32 40 40 54 48 vvcurveto
+ 36 -39 11 -41 vhcurveto
+ -24 -37 -6 -40 hhcurveto
+ -104 -45 80 83 181 148 196 155 49 hvcurveto
+ 19 vlineto
+ -5 -34 -29 -3 -26 hhcurveto
+ -55 -42 12 32 -48 hvcurveto
+ 4 -7 1 0 -2 hhcurveto
+ -2 -1 0 -1 -2 hvcurveto
+ -28 -35 rlineto
+ -2 -2 0 -1 -1 vvcurveto
+ 18 -17 26 -6 25 -4 91 -8 rcurveline
+ 1 -7 rlineto
+ -130 -109 -134 -171 -159 vvcurveto
+ -93 38 -91 124 vhcurveto
+ 26 68 9 41 hhcurveto
+ 22 29 -14 -24 -26 -19 -32 -15 -27 hvcurveto
+ endchar
+ </CharString>
+ </CharStrings>
+ </CFFFont>
+
+ <GlobalSubrs>
+ <!-- The 'index' attribute is only for humans; it is ignored when parsed. -->
+ </GlobalSubrs>
+ </CFF>
+
+ <GDEF>
+ <Version value="0x00010002"/>
+ <GlyphClassDef>
+ <ClassDef glyph="A" class="1"/>
+ <ClassDef glyph="Aacute" class="1"/>
+ <ClassDef glyph="Acircumflex" class="1"/>
+ <ClassDef glyph="Adieresis" class="1"/>
+ <ClassDef glyph="Agrave" class="1"/>
+ <ClassDef glyph="Aring" class="1"/>
+ <ClassDef glyph="Atilde" class="1"/>
+ <ClassDef glyph="C" class="1"/>
+ <ClassDef glyph="Ccedilla" class="1"/>
+ <ClassDef glyph="E" class="1"/>
+ <ClassDef glyph="Eacute" class="1"/>
+ <ClassDef glyph="Ecircumflex" class="1"/>
+ <ClassDef glyph="Edieresis" class="1"/>
+ <ClassDef glyph="Egrave" class="1"/>
+ <ClassDef glyph="I" class="1"/>
+ <ClassDef glyph="Iacute" class="1"/>
+ <ClassDef glyph="Icircumflex" class="1"/>
+ <ClassDef glyph="Idieresis" class="1"/>
+ <ClassDef glyph="Igrave" class="1"/>
+ <ClassDef glyph="N" class="1"/>
+ <ClassDef glyph="Ntilde" class="1"/>
+ <ClassDef glyph="O" class="1"/>
+ <ClassDef glyph="Oacute" class="1"/>
+ <ClassDef glyph="Ocircumflex" class="1"/>
+ <ClassDef glyph="Odieresis" class="1"/>
+ <ClassDef glyph="Ograve" class="1"/>
+ <ClassDef glyph="Oslash" class="1"/>
+ <ClassDef glyph="Otilde" class="1"/>
+ <ClassDef glyph="U" class="1"/>
+ <ClassDef glyph="Uacute" class="1"/>
+ <ClassDef glyph="Ucircumflex" class="1"/>
+ <ClassDef glyph="Udieresis" class="1"/>
+ <ClassDef glyph="Ugrave" class="1"/>
+ <ClassDef glyph="Y" class="1"/>
+ <ClassDef glyph="Yacute" class="1"/>
+ <ClassDef glyph="a" class="1"/>
+ <ClassDef glyph="aacute" class="1"/>
+ <ClassDef glyph="acircumflex" class="1"/>
+ <ClassDef glyph="acutecomb" class="3"/>
+ <ClassDef glyph="adieresis" class="1"/>
+ <ClassDef glyph="agrave" class="1"/>
+ <ClassDef glyph="aring" class="1"/>
+ <ClassDef glyph="atilde" class="1"/>
+ <ClassDef glyph="c" class="1"/>
+ <ClassDef glyph="ccedilla" class="1"/>
+ <ClassDef glyph="cedillacomb" class="3"/>
+ <ClassDef glyph="circumflexcomb" class="3"/>
+ <ClassDef glyph="dieresiscomb" class="3"/>
+ <ClassDef glyph="dotlessi" class="1"/>
+ <ClassDef glyph="e" class="1"/>
+ <ClassDef glyph="eacute" class="1"/>
+ <ClassDef glyph="ecircumflex" class="1"/>
+ <ClassDef glyph="edieresis" class="1"/>
+ <ClassDef glyph="egrave" class="1"/>
+ <ClassDef glyph="gravecomb" class="3"/>
+ <ClassDef glyph="iacute" class="1"/>
+ <ClassDef glyph="icircumflex" class="1"/>
+ <ClassDef glyph="idieresis" class="1"/>
+ <ClassDef glyph="igrave" class="1"/>
+ <ClassDef glyph="macroncomb" class="3"/>
+ <ClassDef glyph="n" class="1"/>
+ <ClassDef glyph="ntilde" class="1"/>
+ <ClassDef glyph="o" class="1"/>
+ <ClassDef glyph="oacute" class="1"/>
+ <ClassDef glyph="ocircumflex" class="1"/>
+ <ClassDef glyph="odieresis" class="1"/>
+ <ClassDef glyph="ograve" class="1"/>
+ <ClassDef glyph="oslash" class="1"/>
+ <ClassDef glyph="otilde" class="1"/>
+ <ClassDef glyph="ringcomb" class="3"/>
+ <ClassDef glyph="tildecomb" class="3"/>
+ <ClassDef glyph="u" class="1"/>
+ <ClassDef glyph="uacute" class="1"/>
+ <ClassDef glyph="ucircumflex" class="1"/>
+ <ClassDef glyph="udieresis" class="1"/>
+ <ClassDef glyph="ugrave" class="1"/>
+ <ClassDef glyph="y" class="1"/>
+ <ClassDef glyph="yacute" class="1"/>
+ <ClassDef glyph="ydieresis" class="1"/>
+ </GlyphClassDef>
+ <MarkGlyphSetsDef>
+ <MarkSetTableFormat value="1"/>
+ <!-- MarkSetCount=2 -->
+ <Coverage index="0">
+ <Glyph value="cedillacomb"/>
+ </Coverage>
+ <Coverage index="1">
+ <Glyph value="dieresiscomb"/>
+ <Glyph value="gravecomb"/>
+ <Glyph value="acutecomb"/>
+ <Glyph value="circumflexcomb"/>
+ <Glyph value="ringcomb"/>
+ <Glyph value="tildecomb"/>
+ <Glyph value="macroncomb"/>
+ </Coverage>
+ </MarkGlyphSetsDef>
+ </GDEF>
+
+ <GPOS>
+ <Version value="0x00010000"/>
+ <ScriptList>
+ <!-- ScriptCount=3 -->
+ <ScriptRecord index="0">
+ <ScriptTag value="DFLT"/>
+ <Script>
+ <DefaultLangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=3 -->
+ <FeatureIndex index="0" value="0"/>
+ <FeatureIndex index="1" value="1"/>
+ <FeatureIndex index="2" value="2"/>
+ </DefaultLangSys>
+ <!-- LangSysCount=0 -->
+ </Script>
+ </ScriptRecord>
+ <ScriptRecord index="1">
+ <ScriptTag value="grek"/>
+ <Script>
+ <DefaultLangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=3 -->
+ <FeatureIndex index="0" value="0"/>
+ <FeatureIndex index="1" value="1"/>
+ <FeatureIndex index="2" value="2"/>
+ </DefaultLangSys>
+ <!-- LangSysCount=0 -->
+ </Script>
+ </ScriptRecord>
+ <ScriptRecord index="2">
+ <ScriptTag value="latn"/>
+ <Script>
+ <DefaultLangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=3 -->
+ <FeatureIndex index="0" value="0"/>
+ <FeatureIndex index="1" value="1"/>
+ <FeatureIndex index="2" value="2"/>
+ </DefaultLangSys>
+ <!-- LangSysCount=0 -->
+ </Script>
+ </ScriptRecord>
+ </ScriptList>
+ <FeatureList>
+ <!-- FeatureCount=3 -->
+ <FeatureRecord index="0">
+ <FeatureTag value="kern"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="0"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="1">
+ <FeatureTag value="mark"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="1"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="2">
+ <FeatureTag value="mkmk"/>
+ <Feature>
+ <!-- LookupCount=2 -->
+ <LookupListIndex index="0" value="2"/>
+ <LookupListIndex index="1" value="3"/>
+ </Feature>
+ </FeatureRecord>
+ </FeatureList>
+ <LookupList>
+ <!-- LookupCount=4 -->
+ <!-- kern_ltr: &lt;features&gt;:55:5 in kern (latn/dflt) -->
+ <Lookup index="0">
+ <LookupType value="2"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <PairPos index="0" Format="1">
+ <Coverage>
+ <Glyph value="r"/>
+ </Coverage>
+ <ValueFormat1 value="4"/>
+ <ValueFormat2 value="0"/>
+ <!-- PairSetCount=1 -->
+ <PairSet index="0">
+ <!-- PairValueCount=26 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="a"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="aacute"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="acircumflex"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="adieresis"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="agrave"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="aring"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="atilde"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="ae"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="c"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="ccedilla"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="d"/>
+ <Value1 XAdvance="-26"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="e"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="eacute"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="13">
+ <SecondGlyph value="ecircumflex"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="14">
+ <SecondGlyph value="edieresis"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="15">
+ <SecondGlyph value="egrave"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="16">
+ <SecondGlyph value="g"/>
+ <Value1 XAdvance="-26"/>
+ </PairValueRecord>
+ <PairValueRecord index="17">
+ <SecondGlyph value="o"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="18">
+ <SecondGlyph value="oacute"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="19">
+ <SecondGlyph value="ocircumflex"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="20">
+ <SecondGlyph value="odieresis"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="21">
+ <SecondGlyph value="ograve"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="22">
+ <SecondGlyph value="oslash"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="23">
+ <SecondGlyph value="otilde"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="24">
+ <SecondGlyph value="oe"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="25">
+ <SecondGlyph value="q"/>
+ <Value1 XAdvance="-26"/>
+ </PairValueRecord>
+ </PairSet>
+ </PairPos>
+ </Lookup>
+ <!-- mark2base: &lt;features&gt;:76:9 in mark (latn/dflt) -->
+ <Lookup index="1">
+ <LookupType value="4"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <MarkBasePos index="0" Format="1">
+ <MarkCoverage>
+ <Glyph value="dieresiscomb"/>
+ <Glyph value="gravecomb"/>
+ <Glyph value="acutecomb"/>
+ <Glyph value="circumflexcomb"/>
+ <Glyph value="ringcomb"/>
+ <Glyph value="tildecomb"/>
+ <Glyph value="macroncomb"/>
+ <Glyph value="cedillacomb"/>
+ </MarkCoverage>
+ <BaseCoverage>
+ <Glyph value="A"/>
+ <Glyph value="Aacute"/>
+ <Glyph value="Acircumflex"/>
+ <Glyph value="Adieresis"/>
+ <Glyph value="Agrave"/>
+ <Glyph value="Aring"/>
+ <Glyph value="Atilde"/>
+ <Glyph value="C"/>
+ <Glyph value="Ccedilla"/>
+ <Glyph value="E"/>
+ <Glyph value="Eacute"/>
+ <Glyph value="Ecircumflex"/>
+ <Glyph value="Edieresis"/>
+ <Glyph value="Egrave"/>
+ <Glyph value="I"/>
+ <Glyph value="Iacute"/>
+ <Glyph value="Icircumflex"/>
+ <Glyph value="Idieresis"/>
+ <Glyph value="Igrave"/>
+ <Glyph value="N"/>
+ <Glyph value="Ntilde"/>
+ <Glyph value="O"/>
+ <Glyph value="Oacute"/>
+ <Glyph value="Ocircumflex"/>
+ <Glyph value="Odieresis"/>
+ <Glyph value="Ograve"/>
+ <Glyph value="Oslash"/>
+ <Glyph value="Otilde"/>
+ <Glyph value="U"/>
+ <Glyph value="Uacute"/>
+ <Glyph value="Ucircumflex"/>
+ <Glyph value="Udieresis"/>
+ <Glyph value="Ugrave"/>
+ <Glyph value="Y"/>
+ <Glyph value="Yacute"/>
+ <Glyph value="a"/>
+ <Glyph value="aacute"/>
+ <Glyph value="acircumflex"/>
+ <Glyph value="adieresis"/>
+ <Glyph value="agrave"/>
+ <Glyph value="aring"/>
+ <Glyph value="atilde"/>
+ <Glyph value="c"/>
+ <Glyph value="ccedilla"/>
+ <Glyph value="e"/>
+ <Glyph value="eacute"/>
+ <Glyph value="ecircumflex"/>
+ <Glyph value="edieresis"/>
+ <Glyph value="egrave"/>
+ <Glyph value="dotlessi"/>
+ <Glyph value="iacute"/>
+ <Glyph value="icircumflex"/>
+ <Glyph value="idieresis"/>
+ <Glyph value="igrave"/>
+ <Glyph value="n"/>
+ <Glyph value="ntilde"/>
+ <Glyph value="o"/>
+ <Glyph value="oacute"/>
+ <Glyph value="ocircumflex"/>
+ <Glyph value="odieresis"/>
+ <Glyph value="ograve"/>
+ <Glyph value="oslash"/>
+ <Glyph value="otilde"/>
+ <Glyph value="u"/>
+ <Glyph value="uacute"/>
+ <Glyph value="ucircumflex"/>
+ <Glyph value="udieresis"/>
+ <Glyph value="ugrave"/>
+ <Glyph value="y"/>
+ <Glyph value="yacute"/>
+ <Glyph value="ydieresis"/>
+ </BaseCoverage>
+ <!-- ClassCount=2 -->
+ <MarkArray>
+ <!-- MarkCount=8 -->
+ <MarkRecord index="0">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="462"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="1">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="462"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="2">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="462"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="3">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="462"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="4">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="462"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="5">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="462"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="6">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="462"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="7">
+ <Class value="1"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ </MarkArray>
+ <BaseArray>
+ <!-- BaseCount=71 -->
+ <BaseRecord index="0">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="352"/>
+ <YCoordinate value="680"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="331"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="1">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="402"/>
+ <YCoordinate value="918"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="331"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="2">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="352"/>
+ <YCoordinate value="910"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="331"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="3">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="352"/>
+ <YCoordinate value="680"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="331"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="4">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="352"/>
+ <YCoordinate value="919"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="331"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="5">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="372"/>
+ <YCoordinate value="850"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="331"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="6">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="352"/>
+ <YCoordinate value="860"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="331"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="7">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="317"/>
+ <YCoordinate value="683"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="357"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="8">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="317"/>
+ <YCoordinate value="683"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="357"/>
+ <YCoordinate value="-259"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="9">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="270"/>
+ <YCoordinate value="683"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="259"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="10">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="270"/>
+ <YCoordinate value="921"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="259"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="11">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="270"/>
+ <YCoordinate value="913"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="259"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="12">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="270"/>
+ <YCoordinate value="683"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="259"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="13">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="270"/>
+ <YCoordinate value="922"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="259"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="14">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="137"/>
+ <YCoordinate value="683"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="141"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="15">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="137"/>
+ <YCoordinate value="921"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="141"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="16">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="137"/>
+ <YCoordinate value="913"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="141"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="17">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="137"/>
+ <YCoordinate value="874"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="141"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="18">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="137"/>
+ <YCoordinate value="922"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="141"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="19">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="395"/>
+ <YCoordinate value="683"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="366"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="20">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="395"/>
+ <YCoordinate value="863"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="366"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="21">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="381"/>
+ <YCoordinate value="693"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="369"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="22">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="442"/>
+ <YCoordinate value="954"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="369"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="23">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="381"/>
+ <YCoordinate value="923"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="369"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="24">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="381"/>
+ <YCoordinate value="693"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="369"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="25">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="381"/>
+ <YCoordinate value="932"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="369"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="26">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="381"/>
+ <YCoordinate value="693"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="369"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="27">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="381"/>
+ <YCoordinate value="873"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="369"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="28">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="367"/>
+ <YCoordinate value="683"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="29">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="367"/>
+ <YCoordinate value="921"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="30">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="367"/>
+ <YCoordinate value="913"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="31">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="367"/>
+ <YCoordinate value="683"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="32">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="367"/>
+ <YCoordinate value="922"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="33">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="336"/>
+ <YCoordinate value="683"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="296"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="34">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="336"/>
+ <YCoordinate value="921"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="296"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="35">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="274"/>
+ <YCoordinate value="500"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="274"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="36">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="274"/>
+ <YCoordinate value="738"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="274"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="37">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="274"/>
+ <YCoordinate value="730"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="274"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="38">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="274"/>
+ <YCoordinate value="500"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="274"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="39">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="274"/>
+ <YCoordinate value="739"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="274"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="40">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="274"/>
+ <YCoordinate value="710"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="274"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="41">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="274"/>
+ <YCoordinate value="680"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="274"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="42">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="232"/>
+ <YCoordinate value="462"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="252"/>
+ <YCoordinate value="-10"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="43">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="232"/>
+ <YCoordinate value="462"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="252"/>
+ <YCoordinate value="-269"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="44">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="256"/>
+ <YCoordinate value="462"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="236"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="45">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="239"/>
+ <YCoordinate value="750"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="236"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="46">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="239"/>
+ <YCoordinate value="742"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="236"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="47">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="256"/>
+ <YCoordinate value="462"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="236"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="48">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="239"/>
+ <YCoordinate value="752"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="236"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="49">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="130"/>
+ <YCoordinate value="462"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="165"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="50">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="164"/>
+ <YCoordinate value="743"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="165"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="51">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="112"/>
+ <YCoordinate value="743"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="165"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="52">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="130"/>
+ <YCoordinate value="462"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="165"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="53">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="60"/>
+ <YCoordinate value="744"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="165"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="54">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="317"/>
+ <YCoordinate value="462"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="317"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="55">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="317"/>
+ <YCoordinate value="642"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="317"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="56">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="269"/>
+ <YCoordinate value="462"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="269"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="57">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="251"/>
+ <YCoordinate value="730"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="269"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="58">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="251"/>
+ <YCoordinate value="736"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="269"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="59">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="269"/>
+ <YCoordinate value="462"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="269"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="60">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="251"/>
+ <YCoordinate value="731"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="269"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="61">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="269"/>
+ <YCoordinate value="462"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="269"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="62">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="269"/>
+ <YCoordinate value="642"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="269"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="63">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="319"/>
+ <YCoordinate value="462"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="319"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="64">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="327"/>
+ <YCoordinate value="740"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="319"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="65">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="317"/>
+ <YCoordinate value="742"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="319"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="66">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="319"/>
+ <YCoordinate value="462"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="319"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="67">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="317"/>
+ <YCoordinate value="741"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="319"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="68">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="277"/>
+ <YCoordinate value="462"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="277"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="69">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="326"/>
+ <YCoordinate value="735"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="277"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="70">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="277"/>
+ <YCoordinate value="462"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="277"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ </BaseArray>
+ </MarkBasePos>
+ </Lookup>
+ <!-- mark2mark_bottom: &lt;features&gt;:297:9 in mkmk (latn/dflt) -->
+ <Lookup index="2">
+ <LookupType value="6"/>
+ <LookupFlag value="16"/><!-- useMarkFilteringSet -->
+ <!-- SubTableCount=1 -->
+ <MarkMarkPos index="0" Format="1">
+ <Mark1Coverage>
+ <Glyph value="cedillacomb"/>
+ </Mark1Coverage>
+ <Mark2Coverage>
+ <Glyph value="cedillacomb"/>
+ </Mark2Coverage>
+ <!-- ClassCount=1 -->
+ <Mark1Array>
+ <!-- MarkCount=1 -->
+ <MarkRecord index="0">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ </Mark1Array>
+ <Mark2Array>
+ <!-- Mark2Count=1 -->
+ <Mark2Record index="0">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="-259"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ </Mark2Array>
+ </MarkMarkPos>
+ <MarkFilteringSet value="0"/>
+ </Lookup>
+ <!-- mark2mark_top: &lt;features&gt;:304:9 in mkmk (latn/dflt) -->
+ <Lookup index="3">
+ <LookupType value="6"/>
+ <LookupFlag value="16"/><!-- useMarkFilteringSet -->
+ <!-- SubTableCount=1 -->
+ <MarkMarkPos index="0" Format="1">
+ <Mark1Coverage>
+ <Glyph value="dieresiscomb"/>
+ <Glyph value="gravecomb"/>
+ <Glyph value="acutecomb"/>
+ <Glyph value="circumflexcomb"/>
+ <Glyph value="ringcomb"/>
+ <Glyph value="tildecomb"/>
+ <Glyph value="macroncomb"/>
+ </Mark1Coverage>
+ <Mark2Coverage>
+ <Glyph value="dieresiscomb"/>
+ <Glyph value="gravecomb"/>
+ <Glyph value="acutecomb"/>
+ <Glyph value="circumflexcomb"/>
+ <Glyph value="ringcomb"/>
+ <Glyph value="tildecomb"/>
+ <Glyph value="macroncomb"/>
+ </Mark2Coverage>
+ <!-- ClassCount=1 -->
+ <Mark1Array>
+ <!-- MarkCount=7 -->
+ <MarkRecord index="0">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="462"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="1">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="462"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="2">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="462"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="3">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="462"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="4">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="462"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="5">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="462"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="6">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="462"/>
+ </MarkAnchor>
+ </MarkRecord>
+ </Mark1Array>
+ <Mark2Array>
+ <!-- Mark2Count=7 -->
+ <Mark2Record index="0">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="653"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ <Mark2Record index="1">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="701"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ <Mark2Record index="2">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="700"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ <Mark2Record index="3">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="692"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ <Mark2Record index="4">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="672"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ <Mark2Record index="5">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="642"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ <Mark2Record index="6">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="595"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ </Mark2Array>
+ </MarkMarkPos>
+ <MarkFilteringSet value="1"/>
+ </Lookup>
+ </LookupList>
+ </GPOS>
+
+ <GSUB>
+ <Version value="0x00010000"/>
+ <ScriptList>
+ <!-- ScriptCount=3 -->
+ <ScriptRecord index="0">
+ <ScriptTag value="DFLT"/>
+ <Script>
+ <DefaultLangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=4 -->
+ <FeatureIndex index="0" value="0"/>
+ <FeatureIndex index="1" value="1"/>
+ <FeatureIndex index="2" value="2"/>
+ <FeatureIndex index="3" value="3"/>
+ </DefaultLangSys>
+ <!-- LangSysCount=0 -->
+ </Script>
+ </ScriptRecord>
+ <ScriptRecord index="1">
+ <ScriptTag value="grek"/>
+ <Script>
+ <DefaultLangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=4 -->
+ <FeatureIndex index="0" value="0"/>
+ <FeatureIndex index="1" value="1"/>
+ <FeatureIndex index="2" value="2"/>
+ <FeatureIndex index="3" value="3"/>
+ </DefaultLangSys>
+ <!-- LangSysCount=0 -->
+ </Script>
+ </ScriptRecord>
+ <ScriptRecord index="2">
+ <ScriptTag value="latn"/>
+ <Script>
+ <DefaultLangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=4 -->
+ <FeatureIndex index="0" value="0"/>
+ <FeatureIndex index="1" value="1"/>
+ <FeatureIndex index="2" value="2"/>
+ <FeatureIndex index="3" value="3"/>
+ </DefaultLangSys>
+ <!-- LangSysCount=0 -->
+ </Script>
+ </ScriptRecord>
+ </ScriptList>
+ <FeatureList>
+ <!-- FeatureCount=4 -->
+ <FeatureRecord index="0">
+ <FeatureTag value="calt"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="0"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="1">
+ <FeatureTag value="dnom"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="3"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="2">
+ <FeatureTag value="locl"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="4"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="3">
+ <FeatureTag value="numr"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="2"/>
+ </Feature>
+ </FeatureRecord>
+ </FeatureList>
+ <LookupList>
+ <!-- LookupCount=5 -->
+ <!-- &lt;features&gt;:7:5 in calt (latn/dflt) -->
+ <Lookup index="0">
+ <LookupType value="6"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="f"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="b"/>
+ <Glyph value="h"/>
+ <Glyph value="k"/>
+ <Glyph value="l"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="1"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:7:5 -->
+ <Lookup index="1">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="f" out="f.alt"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:12:5 in numr (latn/dflt) -->
+ <Lookup index="2">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="eight" out="eight.numr"/>
+ <Substitution in="five" out="five.numr"/>
+ <Substitution in="four" out="four.numr"/>
+ <Substitution in="nine" out="nine.numr"/>
+ <Substitution in="one" out="one.numr"/>
+ <Substitution in="seven" out="seven.numr"/>
+ <Substitution in="six" out="six.numr"/>
+ <Substitution in="three" out="three.numr"/>
+ <Substitution in="two" out="two.numr"/>
+ <Substitution in="zero" out="zero.numr"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:26:5 in dnom (latn/dflt) -->
+ <Lookup index="3">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="eight" out="eight.dnom"/>
+ <Substitution in="five" out="five.dnom"/>
+ <Substitution in="four" out="four.dnom"/>
+ <Substitution in="nine" out="nine.dnom"/>
+ <Substitution in="one" out="one.dnom"/>
+ <Substitution in="seven" out="seven.dnom"/>
+ <Substitution in="six" out="six.dnom"/>
+ <Substitution in="three" out="three.dnom"/>
+ <Substitution in="two" out="two.dnom"/>
+ <Substitution in="zero" out="zero.dnom"/>
+ </SingleSubst>
+ </Lookup>
+ <!-- &lt;features&gt;:40:5 in locl (latn/dflt) -->
+ <Lookup index="4">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="space" out="space"/>
+ </SingleSubst>
+ </Lookup>
+ </LookupList>
+ </GSUB>
+
+ <hmtx>
+ <mtx name=".notdef" width="500" lsb="50"/>
+ <mtx name="A" width="722" lsb="3"/>
+ <mtx name="AE" width="797" lsb="3"/>
+ <mtx name="Aacute" width="722" lsb="3"/>
+ <mtx name="Acircumflex" width="722" lsb="3"/>
+ <mtx name="Adieresis" width="722" lsb="3"/>
+ <mtx name="Agrave" width="722" lsb="3"/>
+ <mtx name="Aring" width="722" lsb="3"/>
+ <mtx name="Atilde" width="722" lsb="3"/>
+ <mtx name="B" width="559" lsb="4"/>
+ <mtx name="C" width="633" lsb="39"/>
+ <mtx name="Ccedilla" width="633" lsb="39"/>
+ <mtx name="D" width="737" lsb="9"/>
+ <mtx name="Delta" width="751" lsb="46"/>
+ <mtx name="E" width="518" lsb="1"/>
+ <mtx name="Eacute" width="518" lsb="1"/>
+ <mtx name="Ecircumflex" width="518" lsb="1"/>
+ <mtx name="Edieresis" width="518" lsb="1"/>
+ <mtx name="Egrave" width="518" lsb="1"/>
+ <mtx name="Eth" width="746" lsb="18"/>
+ <mtx name="F" width="441" lsb="1"/>
+ <mtx name="G" width="661" lsb="39"/>
+ <mtx name="Gamma" width="492" lsb="42"/>
+ <mtx name="H" width="706" lsb="8"/>
+ <mtx name="I" width="280" lsb="5"/>
+ <mtx name="Iacute" width="280" lsb="5"/>
+ <mtx name="Icircumflex" width="280" lsb="-26"/>
+ <mtx name="Idieresis" width="280" lsb="-23"/>
+ <mtx name="Igrave" width="280" lsb="5"/>
+ <mtx name="J" width="265" lsb="-35"/>
+ <mtx name="K" width="593" lsb="6"/>
+ <mtx name="L" width="494" lsb="8"/>
+ <mtx name="Lambda" width="748" lsb="3"/>
+ <mtx name="M" width="962" lsb="30"/>
+ <mtx name="N" width="732" lsb="2"/>
+ <mtx name="Ntilde" width="732" lsb="2"/>
+ <mtx name="O" width="737" lsb="41"/>
+ <mtx name="OE" width="997" lsb="41"/>
+ <mtx name="Oacute" width="754" lsb="41"/>
+ <mtx name="Ocircumflex" width="737" lsb="41"/>
+ <mtx name="Odieresis" width="737" lsb="41"/>
+ <mtx name="Ograve" width="737" lsb="41"/>
+ <mtx name="Omega" width="905" lsb="43"/>
+ <mtx name="Oslash" width="737" lsb="41"/>
+ <mtx name="Otilde" width="737" lsb="41"/>
+ <mtx name="P" width="527" lsb="10"/>
+ <mtx name="Phi" width="732" lsb="28"/>
+ <mtx name="Pi" width="668" lsb="1"/>
+ <mtx name="Psi" width="736" lsb="0"/>
+ <mtx name="Q" width="740" lsb="41"/>
+ <mtx name="R" width="548" lsb="8"/>
+ <mtx name="S" width="484" lsb="16"/>
+ <mtx name="Sigma" width="571" lsb="8"/>
+ <mtx name="T" width="551" lsb="2"/>
+ <mtx name="Theta" width="778" lsb="41"/>
+ <mtx name="Thorn" width="527" lsb="10"/>
+ <mtx name="U" width="712" lsb="-1"/>
+ <mtx name="Uacute" width="712" lsb="-1"/>
+ <mtx name="Ucircumflex" width="712" lsb="-1"/>
+ <mtx name="Udieresis" width="712" lsb="-1"/>
+ <mtx name="Ugrave" width="712" lsb="-1"/>
+ <mtx name="Upsilon" width="682" lsb="7"/>
+ <mtx name="V" width="707" lsb="0"/>
+ <mtx name="W" width="1050" lsb="-1"/>
+ <mtx name="X" width="624" lsb="7"/>
+ <mtx name="Xi" width="613" lsb="36"/>
+ <mtx name="Y" width="592" lsb="-1"/>
+ <mtx name="Yacute" width="592" lsb="-1"/>
+ <mtx name="Z" width="603" lsb="3"/>
+ <mtx name="a" width="548" lsb="40"/>
+ <mtx name="aacute" width="548" lsb="40"/>
+ <mtx name="acircumflex" width="548" lsb="40"/>
+ <mtx name="acute" width="520" lsb="225"/>
+ <mtx name="acutecomb" width="0" lsb="-65"/>
+ <mtx name="adieresis" width="548" lsb="40"/>
+ <mtx name="ae" width="752" lsb="40"/>
+ <mtx name="agrave" width="548" lsb="40"/>
+ <mtx name="alpha" width="609" lsb="30"/>
+ <mtx name="ampersand" width="738" lsb="29"/>
+ <mtx name="aring" width="548" lsb="40"/>
+ <mtx name="asciitilde" width="672" lsb="83"/>
+ <mtx name="asterisk" width="301" lsb="46"/>
+ <mtx name="at" width="728" lsb="39"/>
+ <mtx name="atilde" width="548" lsb="40"/>
+ <mtx name="b" width="522" lsb="-14"/>
+ <mtx name="backslash" width="390" lsb="-17"/>
+ <mtx name="bar" width="216" lsb="88"/>
+ <mtx name="beta" width="530" lsb="56"/>
+ <mtx name="braceleft" width="313" lsb="8"/>
+ <mtx name="braceright" width="313" lsb="10"/>
+ <mtx name="bracketleft" width="258" lsb="88"/>
+ <mtx name="bracketright" width="258" lsb="11"/>
+ <mtx name="brokenbar" width="208" lsb="84"/>
+ <mtx name="bullet" width="332" lsb="69"/>
+ <mtx name="c" width="455" lsb="48"/>
+ <mtx name="ccedilla" width="455" lsb="48"/>
+ <mtx name="cedilla" width="520" lsb="170"/>
+ <mtx name="cedillacomb" width="0" lsb="-90"/>
+ <mtx name="cent" width="461" lsb="41"/>
+ <mtx name="chi" width="525" lsb="-12"/>
+ <mtx name="circumflex" width="500" lsb="103"/>
+ <mtx name="circumflexcomb" width="0" lsb="-163"/>
+ <mtx name="colon" width="184" lsb="35"/>
+ <mtx name="comma" width="233" lsb="34"/>
+ <mtx name="copyright" width="632" lsb="45"/>
+ <mtx name="currency" width="590" lsb="75"/>
+ <mtx name="d" width="551" lsb="40"/>
+ <mtx name="degree" width="332" lsb="69"/>
+ <mtx name="delta" width="423" lsb="21"/>
+ <mtx name="dieresis" width="520" lsb="100"/>
+ <mtx name="dieresiscomb" width="0" lsb="-160"/>
+ <mtx name="divide" width="824" lsb="80"/>
+ <mtx name="dollar" width="476" lsb="25"/>
+ <mtx name="dotlessi" width="323" lsb="-10"/>
+ <mtx name="dotlessj" width="288" lsb="-10"/>
+ <mtx name="e" width="462" lsb="48"/>
+ <mtx name="eacute" width="438" lsb="48"/>
+ <mtx name="ecircumflex" width="438" lsb="48"/>
+ <mtx name="edieresis" width="438" lsb="48"/>
+ <mtx name="egrave" width="438" lsb="48"/>
+ <mtx name="eight" width="500" lsb="40"/>
+ <mtx name="eight.dnom" width="376" lsb="46"/>
+ <mtx name="eight.numr" width="376" lsb="46"/>
+ <mtx name="epsilon" width="370" lsb="21"/>
+ <mtx name="epsilon1" width="420" lsb="22"/>
+ <mtx name="equal" width="823" lsb="77"/>
+ <mtx name="eta" width="540" lsb="-13"/>
+ <mtx name="eth" width="461" lsb="28"/>
+ <mtx name="euro" width="638" lsb="25"/>
+ <mtx name="exclam" width="216" lsb="54"/>
+ <mtx name="exclamdown" width="216" lsb="54"/>
+ <mtx name="f" width="329" lsb="-1"/>
+ <mtx name="f.alt" width="317" lsb="-1"/>
+ <mtx name="five" width="500" lsb="12"/>
+ <mtx name="five.dnom" width="376" lsb="27"/>
+ <mtx name="five.numr" width="376" lsb="27"/>
+ <mtx name="four" width="500" lsb="-1"/>
+ <mtx name="four.dnom" width="376" lsb="18"/>
+ <mtx name="four.numr" width="376" lsb="18"/>
+ <mtx name="foursuperior" width="476" lsb="18"/>
+ <mtx name="fraction" width="70" lsb="-199"/>
+ <mtx name="g" width="511" lsb="40"/>
+ <mtx name="gamma" width="589" lsb="-9"/>
+ <mtx name="germandbls" width="453" lsb="-1"/>
+ <mtx name="grave" width="520" lsb="70"/>
+ <mtx name="gravecomb" width="0" lsb="-130"/>
+ <mtx name="greater" width="711" lsb="48"/>
+ <mtx name="guillemotleft" width="416" lsb="12"/>
+ <mtx name="guillemotright" width="416" lsb="28"/>
+ <mtx name="guilsinglleft" width="264" lsb="12"/>
+ <mtx name="guilsinglright" width="264" lsb="28"/>
+ <mtx name="h" width="592" lsb="-8"/>
+ <mtx name="hyphen" width="353" lsb="55"/>
+ <mtx name="i" width="323" lsb="-10"/>
+ <mtx name="iacute" width="258" lsb="-10"/>
+ <mtx name="icircumflex" width="258" lsb="-51"/>
+ <mtx name="idieresis" width="258" lsb="-48"/>
+ <mtx name="igrave" width="258" lsb="-70"/>
+ <mtx name="iota" width="278" lsb="57"/>
+ <mtx name="j" width="291" lsb="-10"/>
+ <mtx name="k" width="516" lsb="-8"/>
+ <mtx name="kappa" width="459" lsb="58"/>
+ <mtx name="l" width="301" lsb="-8"/>
+ <mtx name="lambda" width="481" lsb="-7"/>
+ <mtx name="less" width="710" lsb="41"/>
+ <mtx name="logicalnot" width="777" lsb="57"/>
+ <mtx name="lscript" width="380" lsb="20"/>
+ <mtx name="m" width="873" lsb="-10"/>
+ <mtx name="macron" width="520" lsb="139"/>
+ <mtx name="macroncomb" width="0" lsb="-121"/>
+ <mtx name="minus" width="892" lsb="114"/>
+ <mtx name="mu" width="682" lsb="103"/>
+ <mtx name="multiply" width="603" lsb="57"/>
+ <mtx name="n" width="631" lsb="-10"/>
+ <mtx name="nine" width="500" lsb="40"/>
+ <mtx name="nine.dnom" width="376" lsb="46"/>
+ <mtx name="nine.numr" width="376" lsb="46"/>
+ <mtx name="ntilde" width="631" lsb="-10"/>
+ <mtx name="nu" width="529" lsb="-12"/>
+ <mtx name="numbersign" width="715" lsb="6"/>
+ <mtx name="o" width="537" lsb="48"/>
+ <mtx name="oacute" width="501" lsb="48"/>
+ <mtx name="ocircumflex" width="501" lsb="48"/>
+ <mtx name="odieresis" width="537" lsb="48"/>
+ <mtx name="oe" width="815" lsb="48"/>
+ <mtx name="ograve" width="501" lsb="48"/>
+ <mtx name="omega" width="771" lsb="30"/>
+ <mtx name="one" width="500" lsb="92"/>
+ <mtx name="one.dnom" width="376" lsb="81"/>
+ <mtx name="one.numr" width="376" lsb="81"/>
+ <mtx name="onehalf" width="790" lsb="23"/>
+ <mtx name="onequarter" width="790" lsb="23"/>
+ <mtx name="onesuperior" width="178" lsb="-28"/>
+ <mtx name="ordfeminine" width="366" lsb="15"/>
+ <mtx name="ordmasculine" width="356" lsb="16"/>
+ <mtx name="oslash" width="520" lsb="48"/>
+ <mtx name="otilde" width="537" lsb="48"/>
+ <mtx name="p" width="562" lsb="-8"/>
+ <mtx name="paragraph" width="453" lsb="29"/>
+ <mtx name="parenleft" width="257" lsb="58"/>
+ <mtx name="parenright" width="259" lsb="11"/>
+ <mtx name="partialdiff" width="567" lsb="78"/>
+ <mtx name="percent" width="827" lsb="60"/>
+ <mtx name="period" width="272" lsb="69"/>
+ <mtx name="periodcentered" width="272" lsb="69"/>
+ <mtx name="phi" width="644" lsb="26"/>
+ <mtx name="phi1" width="642" lsb="23"/>
+ <mtx name="pi" width="596" lsb="6"/>
+ <mtx name="pi1" width="775" lsb="33"/>
+ <mtx name="plus" width="747" lsb="42"/>
+ <mtx name="plusminus" width="763" lsb="49"/>
+ <mtx name="psi" width="704" lsb="-12"/>
+ <mtx name="q" width="508" lsb="40"/>
+ <mtx name="question" width="353" lsb="21"/>
+ <mtx name="questiondown" width="353" lsb="19"/>
+ <mtx name="quotedbl" width="333" lsb="72"/>
+ <mtx name="quoteleft" width="200" lsb="41"/>
+ <mtx name="quoteright" width="197" lsb="36"/>
+ <mtx name="quotesingle" width="210" lsb="74"/>
+ <mtx name="r" width="416" lsb="0"/>
+ <mtx name="registered" width="632" lsb="45"/>
+ <mtx name="rho" width="484" lsb="46"/>
+ <mtx name="ring" width="500" lsb="153"/>
+ <mtx name="ringcomb" width="0" lsb="-97"/>
+ <mtx name="s" width="379" lsb="18"/>
+ <mtx name="section" width="465" lsb="35"/>
+ <mtx name="semicolon" width="193" lsb="29"/>
+ <mtx name="seven" width="500" lsb="49"/>
+ <mtx name="seven.dnom" width="376" lsb="52"/>
+ <mtx name="seven.numr" width="376" lsb="52"/>
+ <mtx name="sigma" width="543" lsb="31"/>
+ <mtx name="six" width="500" lsb="45"/>
+ <mtx name="six.dnom" width="376" lsb="49"/>
+ <mtx name="six.numr" width="376" lsb="49"/>
+ <mtx name="slash" width="390" lsb="-17"/>
+ <mtx name="softhyphen" width="0" lsb="0"/>
+ <mtx name="space" width="333" lsb="0"/>
+ <mtx name="sterling" width="649" lsb="22"/>
+ <mtx name="t" width="385" lsb="0"/>
+ <mtx name="tau" width="486" lsb="3"/>
+ <mtx name="theta" width="500" lsb="42"/>
+ <mtx name="theta1" width="526" lsb="-10"/>
+ <mtx name="thorn" width="543" lsb="-12"/>
+ <mtx name="three" width="500" lsb="18"/>
+ <mtx name="three.dnom" width="376" lsb="31"/>
+ <mtx name="three.numr" width="376" lsb="31"/>
+ <mtx name="threequarters" width="790" lsb="19"/>
+ <mtx name="threesuperior" width="299" lsb="-20"/>
+ <mtx name="tilde" width="500" lsb="104"/>
+ <mtx name="tildecomb" width="0" lsb="-147"/>
+ <mtx name="two" width="500" lsb="12"/>
+ <mtx name="two.dnom" width="376" lsb="27"/>
+ <mtx name="two.numr" width="376" lsb="27"/>
+ <mtx name="twosuperior" width="304" lsb="-26"/>
+ <mtx name="u" width="638" lsb="-10"/>
+ <mtx name="uacute" width="633" lsb="-10"/>
+ <mtx name="ucircumflex" width="633" lsb="-10"/>
+ <mtx name="udieresis" width="633" lsb="-10"/>
+ <mtx name="ugrave" width="633" lsb="-10"/>
+ <mtx name="underscore" width="756" lsb="0"/>
+ <mtx name="upsilon" width="543" lsb="-12"/>
+ <mtx name="v" width="493" lsb="-20"/>
+ <mtx name="w" width="801" lsb="-20"/>
+ <mtx name="weierstrass" width="591" lsb="44"/>
+ <mtx name="x" width="490" lsb="-10"/>
+ <mtx name="xi" width="472" lsb="14"/>
+ <mtx name="y" width="572" lsb="-10"/>
+ <mtx name="yacute" width="552" lsb="-10"/>
+ <mtx name="ydieresis" width="552" lsb="-10"/>
+ <mtx name="yen" width="623" lsb="15"/>
+ <mtx name="z" width="463" lsb="6"/>
+ <mtx name="zero" width="500" lsb="34"/>
+ <mtx name="zero.dnom" width="376" lsb="41"/>
+ <mtx name="zero.numr" width="376" lsb="41"/>
+ <mtx name="zeta" width="421" lsb="28"/>
+ </hmtx>
+
+</ttFont>
diff --git a/Tests/merge/data/CFFFont_expected.ttx b/Tests/merge/data/CFFFont_expected.ttx
new file mode 100644
index 00000000..6e0acc22
--- /dev/null
+++ b/Tests/merge/data/CFFFont_expected.ttx
@@ -0,0 +1,30063 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ttFont sfntVersion="OTTO" ttLibVersion="4.28">
+
+ <GlyphOrder>
+ <!-- The 'id' attribute is only for humans; it is ignored when parsed. -->
+ <GlyphID id="0" name=".notdef"/>
+ <GlyphID id="1" name="hamza-ar"/>
+ <GlyphID id="2" name="highhamza-ar"/>
+ <GlyphID id="3" name="alef-ar"/>
+ <GlyphID id="4" name="alef-ar.fina"/>
+ <GlyphID id="5" name="alef-ar.fina.lam"/>
+ <GlyphID id="6" name="alefHamzaabove-ar"/>
+ <GlyphID id="7" name="alefHamzabelow-ar"/>
+ <GlyphID id="8" name="alefMadda-ar"/>
+ <GlyphID id="9" name="alefWasla-ar"/>
+ <GlyphID id="10" name="behDotless-ar"/>
+ <GlyphID id="11" name="behDotless-ar.jalt"/>
+ <GlyphID id="12" name="behDotless-ar.fina"/>
+ <GlyphID id="13" name="behDotless-ar.fina.jalt"/>
+ <GlyphID id="14" name="behDotless-ar.medi"/>
+ <GlyphID id="15" name="behDotless-ar.medi.ain"/>
+ <GlyphID id="16" name="behDotless-ar.medi.dal"/>
+ <GlyphID id="17" name="behDotless-ar.medi.feh"/>
+ <GlyphID id="18" name="behDotless-ar.medi.hah"/>
+ <GlyphID id="19" name="behDotless-ar.medi.heh"/>
+ <GlyphID id="20" name="behDotless-ar.medi.high"/>
+ <GlyphID id="21" name="behDotless-ar.medi.high2"/>
+ <GlyphID id="22" name="behDotless-ar.medi.meem"/>
+ <GlyphID id="23" name="behDotless-ar.medi.noon"/>
+ <GlyphID id="24" name="behDotless-ar.medi.ragaa"/>
+ <GlyphID id="25" name="behDotless-ar.medi.reh"/>
+ <GlyphID id="26" name="behDotless-ar.medi.sad"/>
+ <GlyphID id="27" name="behDotless-ar.medi.yeh"/>
+ <GlyphID id="28" name="behDotless-ar.init"/>
+ <GlyphID id="29" name="behDotless-ar.init.ain"/>
+ <GlyphID id="30" name="behDotless-ar.init.ascend"/>
+ <GlyphID id="31" name="behDotless-ar.init.dal"/>
+ <GlyphID id="32" name="behDotless-ar.init.feh"/>
+ <GlyphID id="33" name="behDotless-ar.init.hah"/>
+ <GlyphID id="34" name="behDotless-ar.init.heh"/>
+ <GlyphID id="35" name="behDotless-ar.init.meem"/>
+ <GlyphID id="36" name="behDotless-ar.init.ragaa"/>
+ <GlyphID id="37" name="behDotless-ar.init.reh"/>
+ <GlyphID id="38" name="behDotless-ar.init.sad"/>
+ <GlyphID id="39" name="behDotless-ar.init.yeh"/>
+ <GlyphID id="40" name="beh-ar"/>
+ <GlyphID id="41" name="peh-ar"/>
+ <GlyphID id="42" name="teh-ar"/>
+ <GlyphID id="43" name="theh-ar"/>
+ <GlyphID id="44" name="tteh-ar"/>
+ <GlyphID id="45" name="jeem-ar"/>
+ <GlyphID id="46" name="tcheh-ar"/>
+ <GlyphID id="47" name="hah-ar"/>
+ <GlyphID id="48" name="hah-ar.fina"/>
+ <GlyphID id="49" name="hah-ar.medi"/>
+ <GlyphID id="50" name="hah-ar.medi.ain"/>
+ <GlyphID id="51" name="hah-ar.medi.dal"/>
+ <GlyphID id="52" name="hah-ar.medi.feh"/>
+ <GlyphID id="53" name="hah-ar.medi.hah"/>
+ <GlyphID id="54" name="hah-ar.medi.heh"/>
+ <GlyphID id="55" name="hah-ar.medi.heh.ragaa"/>
+ <GlyphID id="56" name="hah-ar.medi.meem"/>
+ <GlyphID id="57" name="hah-ar.medi.ragaa"/>
+ <GlyphID id="58" name="hah-ar.medi.reh"/>
+ <GlyphID id="59" name="hah-ar.medi.sad"/>
+ <GlyphID id="60" name="hah-ar.medi.yeh"/>
+ <GlyphID id="61" name="hah-ar.init"/>
+ <GlyphID id="62" name="hah-ar.init.ain"/>
+ <GlyphID id="63" name="hah-ar.init.dal"/>
+ <GlyphID id="64" name="hah-ar.init.feh"/>
+ <GlyphID id="65" name="hah-ar.init.hah"/>
+ <GlyphID id="66" name="hah-ar.init.heh"/>
+ <GlyphID id="67" name="hah-ar.init.heh.ragaa"/>
+ <GlyphID id="68" name="hah-ar.init.meem"/>
+ <GlyphID id="69" name="hah-ar.init.ragaa"/>
+ <GlyphID id="70" name="hah-ar.init.reh"/>
+ <GlyphID id="71" name="hah-ar.init.sad"/>
+ <GlyphID id="72" name="hah-ar.init.yeh"/>
+ <GlyphID id="73" name="khah-ar"/>
+ <GlyphID id="74" name="dal-ar"/>
+ <GlyphID id="75" name="dal-ar.fina"/>
+ <GlyphID id="76" name="thal-ar"/>
+ <GlyphID id="77" name="ddal-ar"/>
+ <GlyphID id="78" name="dul-ar"/>
+ <GlyphID id="79" name="reh-ar"/>
+ <GlyphID id="80" name="reh-ar.fina"/>
+ <GlyphID id="81" name="zain-ar"/>
+ <GlyphID id="82" name="rreh-ar"/>
+ <GlyphID id="83" name="rehVbelow-ar"/>
+ <GlyphID id="84" name="jeh-ar"/>
+ <GlyphID id="85" name="seen-ar"/>
+ <GlyphID id="86" name="seen-ar.jalt"/>
+ <GlyphID id="87" name="seen-ar.fina"/>
+ <GlyphID id="88" name="seen-ar.fina.jalt"/>
+ <GlyphID id="89" name="seen-ar.medi"/>
+ <GlyphID id="90" name="seen-ar.medi.ain"/>
+ <GlyphID id="91" name="seen-ar.medi.dal"/>
+ <GlyphID id="92" name="seen-ar.medi.feh"/>
+ <GlyphID id="93" name="seen-ar.medi.hah"/>
+ <GlyphID id="94" name="seen-ar.medi.heh"/>
+ <GlyphID id="95" name="seen-ar.medi.meem"/>
+ <GlyphID id="96" name="seen-ar.medi.ragaa"/>
+ <GlyphID id="97" name="seen-ar.medi.reh"/>
+ <GlyphID id="98" name="seen-ar.medi.sad"/>
+ <GlyphID id="99" name="seen-ar.medi.yeh"/>
+ <GlyphID id="100" name="seen-ar.init"/>
+ <GlyphID id="101" name="seen-ar.init.ain"/>
+ <GlyphID id="102" name="seen-ar.init.dal"/>
+ <GlyphID id="103" name="seen-ar.init.feh"/>
+ <GlyphID id="104" name="seen-ar.init.hah"/>
+ <GlyphID id="105" name="seen-ar.init.heh"/>
+ <GlyphID id="106" name="seen-ar.init.meem"/>
+ <GlyphID id="107" name="seen-ar.init.ragaa"/>
+ <GlyphID id="108" name="seen-ar.init.reh"/>
+ <GlyphID id="109" name="seen-ar.init.sad"/>
+ <GlyphID id="110" name="seen-ar.init.yeh"/>
+ <GlyphID id="111" name="sheen-ar"/>
+ <GlyphID id="112" name="sad-ar"/>
+ <GlyphID id="113" name="sad-ar.jalt"/>
+ <GlyphID id="114" name="sad-ar.fina"/>
+ <GlyphID id="115" name="sad-ar.fina.jalt"/>
+ <GlyphID id="116" name="sad-ar.medi"/>
+ <GlyphID id="117" name="sad-ar.medi.ain"/>
+ <GlyphID id="118" name="sad-ar.medi.dal"/>
+ <GlyphID id="119" name="sad-ar.medi.feh"/>
+ <GlyphID id="120" name="sad-ar.medi.hah"/>
+ <GlyphID id="121" name="sad-ar.medi.heh"/>
+ <GlyphID id="122" name="sad-ar.medi.meem"/>
+ <GlyphID id="123" name="sad-ar.medi.postsad"/>
+ <GlyphID id="124" name="sad-ar.medi.qantara"/>
+ <GlyphID id="125" name="sad-ar.medi.ragaa"/>
+ <GlyphID id="126" name="sad-ar.medi.reh"/>
+ <GlyphID id="127" name="sad-ar.medi.sad"/>
+ <GlyphID id="128" name="sad-ar.medi.yeh"/>
+ <GlyphID id="129" name="sad-ar.init"/>
+ <GlyphID id="130" name="sad-ar.init.ain"/>
+ <GlyphID id="131" name="sad-ar.init.dal"/>
+ <GlyphID id="132" name="sad-ar.init.feh"/>
+ <GlyphID id="133" name="sad-ar.init.hah"/>
+ <GlyphID id="134" name="sad-ar.init.heh"/>
+ <GlyphID id="135" name="sad-ar.init.meem"/>
+ <GlyphID id="136" name="sad-ar.init.qantara"/>
+ <GlyphID id="137" name="sad-ar.init.ragaa"/>
+ <GlyphID id="138" name="sad-ar.init.reh"/>
+ <GlyphID id="139" name="sad-ar.init.sad"/>
+ <GlyphID id="140" name="sad-ar.init.yeh"/>
+ <GlyphID id="141" name="dad-ar"/>
+ <GlyphID id="142" name="tah-ar"/>
+ <GlyphID id="143" name="tah-ar.fina"/>
+ <GlyphID id="144" name="tah-ar.medi"/>
+ <GlyphID id="145" name="tah-ar.medi.ain"/>
+ <GlyphID id="146" name="tah-ar.medi.dal"/>
+ <GlyphID id="147" name="tah-ar.medi.feh"/>
+ <GlyphID id="148" name="tah-ar.medi.hah"/>
+ <GlyphID id="149" name="tah-ar.medi.heh"/>
+ <GlyphID id="150" name="tah-ar.medi.kaf"/>
+ <GlyphID id="151" name="tah-ar.medi.meem"/>
+ <GlyphID id="152" name="tah-ar.medi.postsad"/>
+ <GlyphID id="153" name="tah-ar.medi.qantara"/>
+ <GlyphID id="154" name="tah-ar.medi.ragaa"/>
+ <GlyphID id="155" name="tah-ar.medi.reh"/>
+ <GlyphID id="156" name="tah-ar.medi.sad"/>
+ <GlyphID id="157" name="tah-ar.medi.yeh"/>
+ <GlyphID id="158" name="tah-ar.init"/>
+ <GlyphID id="159" name="tah-ar.init.ain"/>
+ <GlyphID id="160" name="tah-ar.init.dal"/>
+ <GlyphID id="161" name="tah-ar.init.feh"/>
+ <GlyphID id="162" name="tah-ar.init.hah"/>
+ <GlyphID id="163" name="tah-ar.init.heh"/>
+ <GlyphID id="164" name="tah-ar.init.kaf"/>
+ <GlyphID id="165" name="tah-ar.init.meem"/>
+ <GlyphID id="166" name="tah-ar.init.qantara"/>
+ <GlyphID id="167" name="tah-ar.init.ragaa"/>
+ <GlyphID id="168" name="tah-ar.init.reh"/>
+ <GlyphID id="169" name="tah-ar.init.sad"/>
+ <GlyphID id="170" name="tah-ar.init.yeh"/>
+ <GlyphID id="171" name="zah-ar"/>
+ <GlyphID id="172" name="ain-ar"/>
+ <GlyphID id="173" name="ain-ar.fina"/>
+ <GlyphID id="174" name="ain-ar.medi"/>
+ <GlyphID id="175" name="ain-ar.medi.ain"/>
+ <GlyphID id="176" name="ain-ar.medi.dal"/>
+ <GlyphID id="177" name="ain-ar.medi.feh"/>
+ <GlyphID id="178" name="ain-ar.medi.hah"/>
+ <GlyphID id="179" name="ain-ar.medi.heh"/>
+ <GlyphID id="180" name="ain-ar.medi.meem"/>
+ <GlyphID id="181" name="ain-ar.medi.ragaa"/>
+ <GlyphID id="182" name="ain-ar.medi.reh"/>
+ <GlyphID id="183" name="ain-ar.medi.sad"/>
+ <GlyphID id="184" name="ain-ar.medi.yeh"/>
+ <GlyphID id="185" name="ain-ar.init"/>
+ <GlyphID id="186" name="ain-ar.init.ain"/>
+ <GlyphID id="187" name="ain-ar.init.dal"/>
+ <GlyphID id="188" name="ain-ar.init.feh"/>
+ <GlyphID id="189" name="ain-ar.init.hah"/>
+ <GlyphID id="190" name="ain-ar.init.heh"/>
+ <GlyphID id="191" name="ain-ar.init.meem"/>
+ <GlyphID id="192" name="ain-ar.init.ragaa"/>
+ <GlyphID id="193" name="ain-ar.init.reh"/>
+ <GlyphID id="194" name="ain-ar.init.sad"/>
+ <GlyphID id="195" name="ain-ar.init.yeh"/>
+ <GlyphID id="196" name="ainThreedots-ar"/>
+ <GlyphID id="197" name="ghain-ar"/>
+ <GlyphID id="198" name="feh-ar"/>
+ <GlyphID id="199" name="veh-ar"/>
+ <GlyphID id="200" name="fehDotless-ar"/>
+ <GlyphID id="201" name="fehDotless-ar.jalt"/>
+ <GlyphID id="202" name="fehDotless-ar.fina"/>
+ <GlyphID id="203" name="fehDotless-ar.fina.jalt"/>
+ <GlyphID id="204" name="fehDotless-ar.medi"/>
+ <GlyphID id="205" name="fehDotless-ar.medi.ain"/>
+ <GlyphID id="206" name="fehDotless-ar.medi.dal"/>
+ <GlyphID id="207" name="fehDotless-ar.medi.feh"/>
+ <GlyphID id="208" name="fehDotless-ar.medi.hah"/>
+ <GlyphID id="209" name="fehDotless-ar.medi.heh"/>
+ <GlyphID id="210" name="fehDotless-ar.medi.meem"/>
+ <GlyphID id="211" name="fehDotless-ar.medi.ragaa"/>
+ <GlyphID id="212" name="fehDotless-ar.medi.reh"/>
+ <GlyphID id="213" name="fehDotless-ar.medi.sad"/>
+ <GlyphID id="214" name="fehDotless-ar.medi.yeh"/>
+ <GlyphID id="215" name="fehDotless-ar.init"/>
+ <GlyphID id="216" name="fehDotless-ar.init.ain"/>
+ <GlyphID id="217" name="fehDotless-ar.init.dal"/>
+ <GlyphID id="218" name="fehDotless-ar.init.feh"/>
+ <GlyphID id="219" name="fehDotless-ar.init.hah"/>
+ <GlyphID id="220" name="fehDotless-ar.init.heh"/>
+ <GlyphID id="221" name="fehDotless-ar.init.meem"/>
+ <GlyphID id="222" name="fehDotless-ar.init.ragaa"/>
+ <GlyphID id="223" name="fehDotless-ar.init.reh"/>
+ <GlyphID id="224" name="fehDotless-ar.init.sad"/>
+ <GlyphID id="225" name="fehDotless-ar.init.yeh"/>
+ <GlyphID id="226" name="qafDotless-ar"/>
+ <GlyphID id="227" name="qafDotless-ar.jalt"/>
+ <GlyphID id="228" name="qafDotless-ar.fina"/>
+ <GlyphID id="229" name="qafDotless-ar.fina.jalt"/>
+ <GlyphID id="230" name="qaf-ar"/>
+ <GlyphID id="231" name="qaf-ar.fina"/>
+ <GlyphID id="232" name="kaf-ar"/>
+ <GlyphID id="233" name="kaf-ar.jalt"/>
+ <GlyphID id="234" name="kaf-ar.fina"/>
+ <GlyphID id="235" name="kaf-ar.fina.jalt"/>
+ <GlyphID id="236" name="kaf-ar.medi"/>
+ <GlyphID id="237" name="kaf-ar.medi.ain"/>
+ <GlyphID id="238" name="kaf-ar.medi.dal"/>
+ <GlyphID id="239" name="kaf-ar.medi.feh"/>
+ <GlyphID id="240" name="kaf-ar.medi.hah"/>
+ <GlyphID id="241" name="kaf-ar.medi.heh"/>
+ <GlyphID id="242" name="kaf-ar.medi.kaf"/>
+ <GlyphID id="243" name="kaf-ar.medi.meem"/>
+ <GlyphID id="244" name="kaf-ar.medi.ragaa"/>
+ <GlyphID id="245" name="kaf-ar.medi.reh"/>
+ <GlyphID id="246" name="kaf-ar.medi.sad"/>
+ <GlyphID id="247" name="kaf-ar.medi.yeh"/>
+ <GlyphID id="248" name="kaf-ar.init"/>
+ <GlyphID id="249" name="kaf-ar.init.ain"/>
+ <GlyphID id="250" name="kaf-ar.init.alef"/>
+ <GlyphID id="251" name="kaf-ar.init.alef.loop"/>
+ <GlyphID id="252" name="kaf-ar.init.dal"/>
+ <GlyphID id="253" name="kaf-ar.init.feh"/>
+ <GlyphID id="254" name="kaf-ar.init.hah"/>
+ <GlyphID id="255" name="kaf-ar.init.heh"/>
+ <GlyphID id="256" name="kaf-ar.init.meem"/>
+ <GlyphID id="257" name="kaf-ar.init.ragaa"/>
+ <GlyphID id="258" name="kaf-ar.init.reh"/>
+ <GlyphID id="259" name="kaf-ar.init.sad"/>
+ <GlyphID id="260" name="kaf-ar.init.yeh"/>
+ <GlyphID id="261" name="keheh-ar"/>
+ <GlyphID id="262" name="keheh-ar.jalt"/>
+ <GlyphID id="263" name="keheh-ar.fina"/>
+ <GlyphID id="264" name="keheh-ar.fina.jalt"/>
+ <GlyphID id="265" name="kehehDotabove-ar"/>
+ <GlyphID id="266" name="gaf-ar"/>
+ <GlyphID id="267" name="kafDotabove-ar"/>
+ <GlyphID id="268" name="lam-ar"/>
+ <GlyphID id="269" name="lam-ar.jalt"/>
+ <GlyphID id="270" name="lam-ar.fina"/>
+ <GlyphID id="271" name="lam-ar.fina.jalt"/>
+ <GlyphID id="272" name="lam-ar.medi"/>
+ <GlyphID id="273" name="lam-ar.medi.ain"/>
+ <GlyphID id="274" name="lam-ar.medi.alef"/>
+ <GlyphID id="275" name="lam-ar.medi.dal"/>
+ <GlyphID id="276" name="lam-ar.medi.feh"/>
+ <GlyphID id="277" name="lam-ar.medi.hah"/>
+ <GlyphID id="278" name="lam-ar.medi.heh"/>
+ <GlyphID id="279" name="lam-ar.medi.kaf"/>
+ <GlyphID id="280" name="lam-ar.medi.meem"/>
+ <GlyphID id="281" name="lam-ar.medi.ragaa"/>
+ <GlyphID id="282" name="lam-ar.medi.reh"/>
+ <GlyphID id="283" name="lam-ar.medi.sad"/>
+ <GlyphID id="284" name="lam-ar.medi.yeh"/>
+ <GlyphID id="285" name="lam-ar.init"/>
+ <GlyphID id="286" name="lam-ar.init.ain"/>
+ <GlyphID id="287" name="lam-ar.init.alef"/>
+ <GlyphID id="288" name="lam-ar.init.dal"/>
+ <GlyphID id="289" name="lam-ar.init.feh"/>
+ <GlyphID id="290" name="lam-ar.init.hah"/>
+ <GlyphID id="291" name="lam-ar.init.heh"/>
+ <GlyphID id="292" name="lam-ar.init.kaf"/>
+ <GlyphID id="293" name="lam-ar.init.meem"/>
+ <GlyphID id="294" name="lam-ar.init.ragaa"/>
+ <GlyphID id="295" name="lam-ar.init.reh"/>
+ <GlyphID id="296" name="lam-ar.init.sad"/>
+ <GlyphID id="297" name="lam-ar.init.yeh"/>
+ <GlyphID id="298" name="lamVabove-ar"/>
+ <GlyphID id="299" name="meem-ar"/>
+ <GlyphID id="300" name="meem-ar.fina"/>
+ <GlyphID id="301" name="meem-ar.medi"/>
+ <GlyphID id="302" name="meem-ar.medi.ain"/>
+ <GlyphID id="303" name="meem-ar.medi.dal"/>
+ <GlyphID id="304" name="meem-ar.medi.feh"/>
+ <GlyphID id="305" name="meem-ar.medi.hah"/>
+ <GlyphID id="306" name="meem-ar.medi.heh"/>
+ <GlyphID id="307" name="meem-ar.medi.meem"/>
+ <GlyphID id="308" name="meem-ar.medi.ragaa"/>
+ <GlyphID id="309" name="meem-ar.medi.reh"/>
+ <GlyphID id="310" name="meem-ar.medi.sad"/>
+ <GlyphID id="311" name="meem-ar.medi.yeh"/>
+ <GlyphID id="312" name="meem-ar.init"/>
+ <GlyphID id="313" name="meem-ar.init.ain"/>
+ <GlyphID id="314" name="meem-ar.init.dal"/>
+ <GlyphID id="315" name="meem-ar.init.feh"/>
+ <GlyphID id="316" name="meem-ar.init.hah"/>
+ <GlyphID id="317" name="meem-ar.init.heh"/>
+ <GlyphID id="318" name="meem-ar.init.meem"/>
+ <GlyphID id="319" name="meem-ar.init.ragaa"/>
+ <GlyphID id="320" name="meem-ar.init.reh"/>
+ <GlyphID id="321" name="meem-ar.init.sad"/>
+ <GlyphID id="322" name="meem-ar.init.yeh"/>
+ <GlyphID id="323" name="noon-ar"/>
+ <GlyphID id="324" name="noon-ar.tail"/>
+ <GlyphID id="325" name="noon-ar.fina"/>
+ <GlyphID id="326" name="noon-ar.fina.tail"/>
+ <GlyphID id="327" name="noonghunna-ar"/>
+ <GlyphID id="328" name="noonghunna-ar.jalt"/>
+ <GlyphID id="329" name="noonghunna-ar.fina"/>
+ <GlyphID id="330" name="rnoon-ar"/>
+ <GlyphID id="331" name="noonThreedotsabove-ar"/>
+ <GlyphID id="332" name="heh-ar"/>
+ <GlyphID id="333" name="heh-ar.fina"/>
+ <GlyphID id="334" name="heh-ar.medi"/>
+ <GlyphID id="335" name="heh-ar.medi.ain"/>
+ <GlyphID id="336" name="heh-ar.medi.dal"/>
+ <GlyphID id="337" name="heh-ar.medi.feh"/>
+ <GlyphID id="338" name="heh-ar.medi.hah"/>
+ <GlyphID id="339" name="heh-ar.medi.heh"/>
+ <GlyphID id="340" name="heh-ar.medi.meem"/>
+ <GlyphID id="341" name="heh-ar.medi.ragaa"/>
+ <GlyphID id="342" name="heh-ar.medi.reh"/>
+ <GlyphID id="343" name="heh-ar.medi.sad"/>
+ <GlyphID id="344" name="heh-ar.medi.yeh"/>
+ <GlyphID id="345" name="heh-ar.init"/>
+ <GlyphID id="346" name="heh-ar.init.ain"/>
+ <GlyphID id="347" name="heh-ar.init.dal"/>
+ <GlyphID id="348" name="heh-ar.init.feh"/>
+ <GlyphID id="349" name="heh-ar.init.hah"/>
+ <GlyphID id="350" name="heh-ar.init.heh"/>
+ <GlyphID id="351" name="heh-ar.init.meem"/>
+ <GlyphID id="352" name="heh-ar.init.ragaa"/>
+ <GlyphID id="353" name="heh-ar.init.reh"/>
+ <GlyphID id="354" name="heh-ar.init.sad"/>
+ <GlyphID id="355" name="heh-ar.init.yeh"/>
+ <GlyphID id="356" name="hehHamzaabove-ar"/>
+ <GlyphID id="357" name="hehgoal-ar"/>
+ <GlyphID id="358" name="hehgoal-ar.fina"/>
+ <GlyphID id="359" name="hehgoal-ar.init"/>
+ <GlyphID id="360" name="hehgoal-ar.init.ain"/>
+ <GlyphID id="361" name="hehgoal-ar.init.dal"/>
+ <GlyphID id="362" name="hehgoal-ar.init.feh"/>
+ <GlyphID id="363" name="hehgoal-ar.init.hah"/>
+ <GlyphID id="364" name="hehgoal-ar.init.heh"/>
+ <GlyphID id="365" name="hehgoal-ar.init.meem"/>
+ <GlyphID id="366" name="hehgoal-ar.init.ragaa"/>
+ <GlyphID id="367" name="hehgoal-ar.init.reh"/>
+ <GlyphID id="368" name="hehgoal-ar.init.sad"/>
+ <GlyphID id="369" name="hehgoal-ar.init.yeh"/>
+ <GlyphID id="370" name="hehDoachashmee-ar"/>
+ <GlyphID id="371" name="hehDoachashmee-ar.fina"/>
+ <GlyphID id="372" name="hehDoachashmee-ar.medi"/>
+ <GlyphID id="373" name="hehDoachashmee-ar.medi.ain"/>
+ <GlyphID id="374" name="hehDoachashmee-ar.medi.dal"/>
+ <GlyphID id="375" name="hehDoachashmee-ar.medi.feh"/>
+ <GlyphID id="376" name="hehDoachashmee-ar.medi.hah"/>
+ <GlyphID id="377" name="hehDoachashmee-ar.medi.heh"/>
+ <GlyphID id="378" name="hehDoachashmee-ar.medi.meem"/>
+ <GlyphID id="379" name="hehDoachashmee-ar.medi.ragaa"/>
+ <GlyphID id="380" name="hehDoachashmee-ar.medi.reh"/>
+ <GlyphID id="381" name="hehDoachashmee-ar.medi.sad"/>
+ <GlyphID id="382" name="hehDoachashmee-ar.medi.yeh"/>
+ <GlyphID id="383" name="tehMarbuta-ar"/>
+ <GlyphID id="384" name="waw-ar"/>
+ <GlyphID id="385" name="waw-ar.fina"/>
+ <GlyphID id="386" name="wawDotabove-ar"/>
+ <GlyphID id="387" name="wawHamzaabove-ar"/>
+ <GlyphID id="388" name="oe-ar"/>
+ <GlyphID id="389" name="alefMaksura-ar"/>
+ <GlyphID id="390" name="alefMaksura-ar.jalt"/>
+ <GlyphID id="391" name="alefMaksura-ar.fina"/>
+ <GlyphID id="392" name="alefMaksura-ar.fina.jalt"/>
+ <GlyphID id="393" name="alefMaksura-ar.fina.yeh"/>
+ <GlyphID id="394" name="alefMaksura-ar.fina.yeh.jalt"/>
+ <GlyphID id="395" name="yeh-ar"/>
+ <GlyphID id="396" name="yehHamzaabove-ar"/>
+ <GlyphID id="397" name="yehVabove-ar"/>
+ <GlyphID id="398" name="yeh-farsi"/>
+ <GlyphID id="399" name="yehbarree-ar"/>
+ <GlyphID id="400" name="yehbarree-ar.fina"/>
+ <GlyphID id="401" name="yehbarreeHamzaabove-ar"/>
+ <GlyphID id="402" name="ae-ar"/>
+ <GlyphID id="403" name="zero-ar"/>
+ <GlyphID id="404" name="one-ar"/>
+ <GlyphID id="405" name="two-ar"/>
+ <GlyphID id="406" name="three-ar"/>
+ <GlyphID id="407" name="four-ar"/>
+ <GlyphID id="408" name="five-ar"/>
+ <GlyphID id="409" name="six-ar"/>
+ <GlyphID id="410" name="seven-ar"/>
+ <GlyphID id="411" name="eight-ar"/>
+ <GlyphID id="412" name="nine-ar"/>
+ <GlyphID id="413" name="two-persian"/>
+ <GlyphID id="414" name="four-persian"/>
+ <GlyphID id="415" name="five-persian"/>
+ <GlyphID id="416" name="six-persian"/>
+ <GlyphID id="417" name="seven-persian"/>
+ <GlyphID id="418" name="zero-ar.dnom"/>
+ <GlyphID id="419" name="one-ar.dnom"/>
+ <GlyphID id="420" name="two-ar.dnom"/>
+ <GlyphID id="421" name="three-ar.dnom"/>
+ <GlyphID id="422" name="four-ar.dnom"/>
+ <GlyphID id="423" name="five-ar.dnom"/>
+ <GlyphID id="424" name="six-ar.dnom"/>
+ <GlyphID id="425" name="seven-ar.dnom"/>
+ <GlyphID id="426" name="eight-ar.dnom"/>
+ <GlyphID id="427" name="nine-ar.dnom"/>
+ <GlyphID id="428" name="two-persian.dnom"/>
+ <GlyphID id="429" name="four-persian.dnom"/>
+ <GlyphID id="430" name="five-persian.dnom"/>
+ <GlyphID id="431" name="six-persian.dnom"/>
+ <GlyphID id="432" name="zero-ar.numr"/>
+ <GlyphID id="433" name="one-ar.numr"/>
+ <GlyphID id="434" name="two-ar.numr"/>
+ <GlyphID id="435" name="three-ar.numr"/>
+ <GlyphID id="436" name="four-ar.numr"/>
+ <GlyphID id="437" name="five-ar.numr"/>
+ <GlyphID id="438" name="six-ar.numr"/>
+ <GlyphID id="439" name="seven-ar.numr"/>
+ <GlyphID id="440" name="eight-ar.numr"/>
+ <GlyphID id="441" name="nine-ar.numr"/>
+ <GlyphID id="442" name="two-persian.numr"/>
+ <GlyphID id="443" name="four-persian.numr"/>
+ <GlyphID id="444" name="five-persian.numr"/>
+ <GlyphID id="445" name="six-persian.numr"/>
+ <GlyphID id="446" name="four-persian.urd"/>
+ <GlyphID id="447" name="seven-persian.urd"/>
+ <GlyphID id="448" name="four-persian.urd.dnom"/>
+ <GlyphID id="449" name="seven-persian.urd.dnom"/>
+ <GlyphID id="450" name="four-persian.urd.numr"/>
+ <GlyphID id="451" name="seven-persian.urd.numr"/>
+ <GlyphID id="452" name="space"/>
+ <GlyphID id="453" name="fullstop-ar"/>
+ <GlyphID id="454" name="comma-ar"/>
+ <GlyphID id="455" name="comma-ar.alt"/>
+ <GlyphID id="456" name="semicolon-ar"/>
+ <GlyphID id="457" name="semicolon-ar.alt"/>
+ <GlyphID id="458" name="question-ar"/>
+ <GlyphID id="459" name="parenleft-ar"/>
+ <GlyphID id="460" name="parenright-ar"/>
+ <GlyphID id="461" name="ellipsis"/>
+ <GlyphID id="462" name="exclam"/>
+ <GlyphID id="463" name="endash"/>
+ <GlyphID id="464" name="emdash"/>
+ <GlyphID id="465" name="quotesinglbase"/>
+ <GlyphID id="466" name="quotedblbase"/>
+ <GlyphID id="467" name="quotedblleft"/>
+ <GlyphID id="468" name="quotedblright"/>
+ <GlyphID id="469" name="quoteleft"/>
+ <GlyphID id="470" name="quoteright"/>
+ <GlyphID id="471" name="percent-ar"/>
+ <GlyphID id="472" name="kashida-ar"/>
+ <GlyphID id="473" name="tahabove-ar"/>
+ <GlyphID id="474" name="dotabove-ar"/>
+ <GlyphID id="475" name="dotbelow-ar"/>
+ <GlyphID id="476" name="twodotshorizontalabove-ar"/>
+ <GlyphID id="477" name="twodotshorizontalbelow-ar"/>
+ <GlyphID id="478" name="threedotsdownbelow-ar"/>
+ <GlyphID id="479" name="threedotsupabove-ar"/>
+ <GlyphID id="480" name="wasla-ar"/>
+ <GlyphID id="481" name="gafsarkashabove-ar"/>
+ <GlyphID id="482" name="alefabove-ar"/>
+ <GlyphID id="483" name="alefabove-ar.isol"/>
+ <GlyphID id="484" name="alefabove-ar.medi"/>
+ <GlyphID id="485" name="alefbelow-ar"/>
+ <GlyphID id="486" name="hamzaabove-ar"/>
+ <GlyphID id="487" name="hamzabelow-ar"/>
+ <GlyphID id="488" name="fathatan-ar"/>
+ <GlyphID id="489" name="dammatan-ar"/>
+ <GlyphID id="490" name="kasratan-ar"/>
+ <GlyphID id="491" name="fatha-ar"/>
+ <GlyphID id="492" name="damma-ar"/>
+ <GlyphID id="493" name="kasra-ar"/>
+ <GlyphID id="494" name="shadda-ar"/>
+ <GlyphID id="495" name="sukun-ar"/>
+ <GlyphID id="496" name="sukun-ar.alt"/>
+ <GlyphID id="497" name="madda-ar"/>
+ <GlyphID id="498" name="noonghunnaabove-ar"/>
+ <GlyphID id="499" name="dammainverted-ar"/>
+ <GlyphID id="500" name="dammainverted-ar.urd"/>
+ <GlyphID id="501" name="vabove-ar"/>
+ <GlyphID id="502" name="vbelow-ar"/>
+ <GlyphID id="503" name="opendammatan-ar"/>
+ <GlyphID id="504" name=".notdef#1"/>
+ <GlyphID id="505" name="A"/>
+ <GlyphID id="506" name="Aacute"/>
+ <GlyphID id="507" name="Acircumflex"/>
+ <GlyphID id="508" name="Adieresis"/>
+ <GlyphID id="509" name="Agrave"/>
+ <GlyphID id="510" name="Aring"/>
+ <GlyphID id="511" name="Atilde"/>
+ <GlyphID id="512" name="AE"/>
+ <GlyphID id="513" name="B"/>
+ <GlyphID id="514" name="C"/>
+ <GlyphID id="515" name="Ccedilla"/>
+ <GlyphID id="516" name="D"/>
+ <GlyphID id="517" name="Eth"/>
+ <GlyphID id="518" name="E"/>
+ <GlyphID id="519" name="Eacute"/>
+ <GlyphID id="520" name="Ecircumflex"/>
+ <GlyphID id="521" name="Edieresis"/>
+ <GlyphID id="522" name="Egrave"/>
+ <GlyphID id="523" name="F"/>
+ <GlyphID id="524" name="G"/>
+ <GlyphID id="525" name="H"/>
+ <GlyphID id="526" name="I"/>
+ <GlyphID id="527" name="Iacute"/>
+ <GlyphID id="528" name="Icircumflex"/>
+ <GlyphID id="529" name="Idieresis"/>
+ <GlyphID id="530" name="Igrave"/>
+ <GlyphID id="531" name="J"/>
+ <GlyphID id="532" name="K"/>
+ <GlyphID id="533" name="L"/>
+ <GlyphID id="534" name="M"/>
+ <GlyphID id="535" name="N"/>
+ <GlyphID id="536" name="Ntilde"/>
+ <GlyphID id="537" name="O"/>
+ <GlyphID id="538" name="Oacute"/>
+ <GlyphID id="539" name="Ocircumflex"/>
+ <GlyphID id="540" name="Odieresis"/>
+ <GlyphID id="541" name="Ograve"/>
+ <GlyphID id="542" name="Oslash"/>
+ <GlyphID id="543" name="Otilde"/>
+ <GlyphID id="544" name="OE"/>
+ <GlyphID id="545" name="P"/>
+ <GlyphID id="546" name="Thorn"/>
+ <GlyphID id="547" name="Q"/>
+ <GlyphID id="548" name="R"/>
+ <GlyphID id="549" name="S"/>
+ <GlyphID id="550" name="T"/>
+ <GlyphID id="551" name="U"/>
+ <GlyphID id="552" name="Uacute"/>
+ <GlyphID id="553" name="Ucircumflex"/>
+ <GlyphID id="554" name="Udieresis"/>
+ <GlyphID id="555" name="Ugrave"/>
+ <GlyphID id="556" name="V"/>
+ <GlyphID id="557" name="W"/>
+ <GlyphID id="558" name="X"/>
+ <GlyphID id="559" name="Y"/>
+ <GlyphID id="560" name="Yacute"/>
+ <GlyphID id="561" name="Z"/>
+ <GlyphID id="562" name="a"/>
+ <GlyphID id="563" name="aacute"/>
+ <GlyphID id="564" name="acircumflex"/>
+ <GlyphID id="565" name="adieresis"/>
+ <GlyphID id="566" name="agrave"/>
+ <GlyphID id="567" name="aring"/>
+ <GlyphID id="568" name="atilde"/>
+ <GlyphID id="569" name="ae"/>
+ <GlyphID id="570" name="b"/>
+ <GlyphID id="571" name="c"/>
+ <GlyphID id="572" name="ccedilla"/>
+ <GlyphID id="573" name="d"/>
+ <GlyphID id="574" name="eth"/>
+ <GlyphID id="575" name="e"/>
+ <GlyphID id="576" name="eacute"/>
+ <GlyphID id="577" name="ecircumflex"/>
+ <GlyphID id="578" name="edieresis"/>
+ <GlyphID id="579" name="egrave"/>
+ <GlyphID id="580" name="f"/>
+ <GlyphID id="581" name="g"/>
+ <GlyphID id="582" name="h"/>
+ <GlyphID id="583" name="i"/>
+ <GlyphID id="584" name="dotlessi"/>
+ <GlyphID id="585" name="iacute"/>
+ <GlyphID id="586" name="icircumflex"/>
+ <GlyphID id="587" name="idieresis"/>
+ <GlyphID id="588" name="igrave"/>
+ <GlyphID id="589" name="j"/>
+ <GlyphID id="590" name="dotlessj"/>
+ <GlyphID id="591" name="k"/>
+ <GlyphID id="592" name="l"/>
+ <GlyphID id="593" name="m"/>
+ <GlyphID id="594" name="n"/>
+ <GlyphID id="595" name="ntilde"/>
+ <GlyphID id="596" name="o"/>
+ <GlyphID id="597" name="oacute"/>
+ <GlyphID id="598" name="ocircumflex"/>
+ <GlyphID id="599" name="odieresis"/>
+ <GlyphID id="600" name="ograve"/>
+ <GlyphID id="601" name="oslash"/>
+ <GlyphID id="602" name="otilde"/>
+ <GlyphID id="603" name="oe"/>
+ <GlyphID id="604" name="p"/>
+ <GlyphID id="605" name="thorn"/>
+ <GlyphID id="606" name="q"/>
+ <GlyphID id="607" name="r"/>
+ <GlyphID id="608" name="s"/>
+ <GlyphID id="609" name="germandbls"/>
+ <GlyphID id="610" name="t"/>
+ <GlyphID id="611" name="u"/>
+ <GlyphID id="612" name="uacute"/>
+ <GlyphID id="613" name="ucircumflex"/>
+ <GlyphID id="614" name="udieresis"/>
+ <GlyphID id="615" name="ugrave"/>
+ <GlyphID id="616" name="v"/>
+ <GlyphID id="617" name="w"/>
+ <GlyphID id="618" name="x"/>
+ <GlyphID id="619" name="y"/>
+ <GlyphID id="620" name="yacute"/>
+ <GlyphID id="621" name="ydieresis"/>
+ <GlyphID id="622" name="z"/>
+ <GlyphID id="623" name="f.alt"/>
+ <GlyphID id="624" name="ordfeminine"/>
+ <GlyphID id="625" name="ordmasculine"/>
+ <GlyphID id="626" name="Gamma"/>
+ <GlyphID id="627" name="Theta"/>
+ <GlyphID id="628" name="Lambda"/>
+ <GlyphID id="629" name="Xi"/>
+ <GlyphID id="630" name="Pi"/>
+ <GlyphID id="631" name="Sigma"/>
+ <GlyphID id="632" name="Upsilon"/>
+ <GlyphID id="633" name="Phi"/>
+ <GlyphID id="634" name="Psi"/>
+ <GlyphID id="635" name="alpha"/>
+ <GlyphID id="636" name="beta"/>
+ <GlyphID id="637" name="gamma"/>
+ <GlyphID id="638" name="delta"/>
+ <GlyphID id="639" name="epsilon"/>
+ <GlyphID id="640" name="zeta"/>
+ <GlyphID id="641" name="eta"/>
+ <GlyphID id="642" name="theta"/>
+ <GlyphID id="643" name="iota"/>
+ <GlyphID id="644" name="kappa"/>
+ <GlyphID id="645" name="lambda"/>
+ <GlyphID id="646" name="nu"/>
+ <GlyphID id="647" name="xi"/>
+ <GlyphID id="648" name="pi"/>
+ <GlyphID id="649" name="rho"/>
+ <GlyphID id="650" name="sigma"/>
+ <GlyphID id="651" name="tau"/>
+ <GlyphID id="652" name="upsilon"/>
+ <GlyphID id="653" name="phi"/>
+ <GlyphID id="654" name="chi"/>
+ <GlyphID id="655" name="psi"/>
+ <GlyphID id="656" name="omega"/>
+ <GlyphID id="657" name="theta1"/>
+ <GlyphID id="658" name="phi1"/>
+ <GlyphID id="659" name="pi1"/>
+ <GlyphID id="660" name="zero"/>
+ <GlyphID id="661" name="one"/>
+ <GlyphID id="662" name="two"/>
+ <GlyphID id="663" name="three"/>
+ <GlyphID id="664" name="four"/>
+ <GlyphID id="665" name="five"/>
+ <GlyphID id="666" name="six"/>
+ <GlyphID id="667" name="seven"/>
+ <GlyphID id="668" name="eight"/>
+ <GlyphID id="669" name="nine"/>
+ <GlyphID id="670" name="zero.dnom"/>
+ <GlyphID id="671" name="one.dnom"/>
+ <GlyphID id="672" name="two.dnom"/>
+ <GlyphID id="673" name="three.dnom"/>
+ <GlyphID id="674" name="four.dnom"/>
+ <GlyphID id="675" name="five.dnom"/>
+ <GlyphID id="676" name="six.dnom"/>
+ <GlyphID id="677" name="seven.dnom"/>
+ <GlyphID id="678" name="eight.dnom"/>
+ <GlyphID id="679" name="nine.dnom"/>
+ <GlyphID id="680" name="zero.numr"/>
+ <GlyphID id="681" name="one.numr"/>
+ <GlyphID id="682" name="two.numr"/>
+ <GlyphID id="683" name="three.numr"/>
+ <GlyphID id="684" name="four.numr"/>
+ <GlyphID id="685" name="five.numr"/>
+ <GlyphID id="686" name="six.numr"/>
+ <GlyphID id="687" name="seven.numr"/>
+ <GlyphID id="688" name="eight.numr"/>
+ <GlyphID id="689" name="nine.numr"/>
+ <GlyphID id="690" name="onesuperior"/>
+ <GlyphID id="691" name="twosuperior"/>
+ <GlyphID id="692" name="threesuperior"/>
+ <GlyphID id="693" name="foursuperior"/>
+ <GlyphID id="694" name="fraction"/>
+ <GlyphID id="695" name="onehalf"/>
+ <GlyphID id="696" name="onequarter"/>
+ <GlyphID id="697" name="threequarters"/>
+ <GlyphID id="698" name="space#1"/>
+ <GlyphID id="699" name="period"/>
+ <GlyphID id="700" name="comma"/>
+ <GlyphID id="701" name="colon"/>
+ <GlyphID id="702" name="semicolon"/>
+ <GlyphID id="703" name="exclam#1"/>
+ <GlyphID id="704" name="exclamdown"/>
+ <GlyphID id="705" name="question"/>
+ <GlyphID id="706" name="questiondown"/>
+ <GlyphID id="707" name="periodcentered"/>
+ <GlyphID id="708" name="bullet"/>
+ <GlyphID id="709" name="asterisk"/>
+ <GlyphID id="710" name="numbersign"/>
+ <GlyphID id="711" name="slash"/>
+ <GlyphID id="712" name="backslash"/>
+ <GlyphID id="713" name="hyphen"/>
+ <GlyphID id="714" name="softhyphen"/>
+ <GlyphID id="715" name="underscore"/>
+ <GlyphID id="716" name="parenleft"/>
+ <GlyphID id="717" name="parenright"/>
+ <GlyphID id="718" name="braceleft"/>
+ <GlyphID id="719" name="braceright"/>
+ <GlyphID id="720" name="bracketleft"/>
+ <GlyphID id="721" name="bracketright"/>
+ <GlyphID id="722" name="quoteleft#1"/>
+ <GlyphID id="723" name="quoteright#1"/>
+ <GlyphID id="724" name="guillemotleft"/>
+ <GlyphID id="725" name="guillemotright"/>
+ <GlyphID id="726" name="guilsinglleft"/>
+ <GlyphID id="727" name="guilsinglright"/>
+ <GlyphID id="728" name="quotedbl"/>
+ <GlyphID id="729" name="quotesingle"/>
+ <GlyphID id="730" name="at"/>
+ <GlyphID id="731" name="ampersand"/>
+ <GlyphID id="732" name="paragraph"/>
+ <GlyphID id="733" name="section"/>
+ <GlyphID id="734" name="copyright"/>
+ <GlyphID id="735" name="registered"/>
+ <GlyphID id="736" name="degree"/>
+ <GlyphID id="737" name="bar"/>
+ <GlyphID id="738" name="brokenbar"/>
+ <GlyphID id="739" name="lscript"/>
+ <GlyphID id="740" name="weierstrass"/>
+ <GlyphID id="741" name="cent"/>
+ <GlyphID id="742" name="currency"/>
+ <GlyphID id="743" name="dollar"/>
+ <GlyphID id="744" name="euro"/>
+ <GlyphID id="745" name="sterling"/>
+ <GlyphID id="746" name="yen"/>
+ <GlyphID id="747" name="plus"/>
+ <GlyphID id="748" name="minus"/>
+ <GlyphID id="749" name="multiply"/>
+ <GlyphID id="750" name="divide"/>
+ <GlyphID id="751" name="equal"/>
+ <GlyphID id="752" name="greater"/>
+ <GlyphID id="753" name="less"/>
+ <GlyphID id="754" name="plusminus"/>
+ <GlyphID id="755" name="asciitilde"/>
+ <GlyphID id="756" name="logicalnot"/>
+ <GlyphID id="757" name="Omega"/>
+ <GlyphID id="758" name="Delta"/>
+ <GlyphID id="759" name="mu"/>
+ <GlyphID id="760" name="partialdiff"/>
+ <GlyphID id="761" name="percent"/>
+ <GlyphID id="762" name="dieresiscomb"/>
+ <GlyphID id="763" name="gravecomb"/>
+ <GlyphID id="764" name="acutecomb"/>
+ <GlyphID id="765" name="circumflexcomb"/>
+ <GlyphID id="766" name="ringcomb"/>
+ <GlyphID id="767" name="tildecomb"/>
+ <GlyphID id="768" name="macroncomb"/>
+ <GlyphID id="769" name="cedillacomb"/>
+ <GlyphID id="770" name="dieresis"/>
+ <GlyphID id="771" name="grave"/>
+ <GlyphID id="772" name="acute"/>
+ <GlyphID id="773" name="circumflex"/>
+ <GlyphID id="774" name="ring"/>
+ <GlyphID id="775" name="tilde"/>
+ <GlyphID id="776" name="macron"/>
+ <GlyphID id="777" name="cedilla"/>
+ <GlyphID id="778" name="epsilon1"/>
+ </GlyphOrder>
+
+ <head>
+ <!-- Most of this table will be recalculated by the compiler -->
+ <tableVersion value="1.0"/>
+ <fontRevision value="1.003"/>
+ <checkSumAdjustment value="0x490fa241"/>
+ <magicNumber value="0x5f0f3cf5"/>
+ <flags value="00000000 00000011"/>
+ <unitsPerEm value="1000"/>
+ <created value="Thu Jan 1 00:00:00 1970"/>
+ <modified value="Thu Jan 1 00:00:00 1970"/>
+ <xMin value="-199"/>
+ <yMin value="-364"/>
+ <xMax value="1459"/>
+ <yMax value="1028"/>
+ <macStyle value="00000000 00000000"/>
+ <lowestRecPPEM value="6"/>
+ <fontDirectionHint value="2"/>
+ <indexToLocFormat value="0"/>
+ <glyphDataFormat value="0"/>
+ </head>
+
+ <hhea>
+ <tableVersion value="0x00010000"/>
+ <ascent value="1221"/>
+ <descent value="-244"/>
+ <lineGap value="98"/>
+ <advanceWidthMax value="1531"/>
+ <minLeftSideBearing value="-199"/>
+ <minRightSideBearing value="-461"/>
+ <xMaxExtent value="1460"/>
+ <caretSlopeRise value="1"/>
+ <caretSlopeRun value="0"/>
+ <caretOffset value="0"/>
+ <reserved0 value="0"/>
+ <reserved1 value="0"/>
+ <reserved2 value="0"/>
+ <reserved3 value="0"/>
+ <metricDataFormat value="0"/>
+ <numberOfHMetrics value="779"/>
+ </hhea>
+
+ <maxp>
+ <tableVersion value="0x5000"/>
+ <numGlyphs value="779"/>
+ </maxp>
+
+ <OS_2>
+ <!-- The fields 'usFirstCharIndex' and 'usLastCharIndex'
+ will be recalculated by the compiler -->
+ <version value="4"/>
+ <xAvgCharWidth value="505"/>
+ <usWeightClass value="400"/>
+ <usWidthClass value="5"/>
+ <fsType value="00000000 00000000"/>
+ <ySubscriptXSize value="650"/>
+ <ySubscriptYSize value="700"/>
+ <ySubscriptXOffset value="47"/>
+ <ySubscriptYOffset value="140"/>
+ <ySuperscriptXSize value="650"/>
+ <ySuperscriptYSize value="700"/>
+ <ySuperscriptXOffset value="-164"/>
+ <ySuperscriptYOffset value="480"/>
+ <yStrikeoutSize value="49"/>
+ <yStrikeoutPosition value="258"/>
+ <sFamilyClass value="0"/>
+ <panose>
+ <bFamilyType value="2"/>
+ <bSerifStyle value="0"/>
+ <bWeight value="5"/>
+ <bProportion value="3"/>
+ <bContrast value="0"/>
+ <bStrokeVariation value="0"/>
+ <bArmStyle value="0"/>
+ <bLetterForm value="0"/>
+ <bMidline value="0"/>
+ <bXHeight value="0"/>
+ </panose>
+ <ulUnicodeRange1 value="10000000 00000000 00100000 11101111"/>
+ <ulUnicodeRange2 value="10000000 00000000 00000000 01001011"/>
+ <ulUnicodeRange3 value="00000000 00000000 00000000 00000000"/>
+ <ulUnicodeRange4 value="00000000 00000000 00000000 00000000"/>
+ <achVendID value="ALIF"/>
+ <fsSelection value="00000000 11000000"/>
+ <usFirstCharIndex value="32"/>
+ <usLastCharIndex value="64831"/>
+ <sTypoAscender value="1221"/>
+ <sTypoDescender value="-244"/>
+ <sTypoLineGap value="98"/>
+ <usWinAscent value="1221"/>
+ <usWinDescent value="439"/>
+ <ulCodePageRange1 value="00000000 00000000 00000000 01000001"/>
+ <ulCodePageRange2 value="00000000 00000000 00000000 00000000"/>
+ <sxHeight value="462"/>
+ <sCapHeight value="683"/>
+ <usDefaultChar value="0"/>
+ <usBreakChar value="32"/>
+ <usMaxContext value="4"/>
+ </OS_2>
+
+ <name>
+ <namerecord nameID="0" platformID="3" platEncID="1" langID="0x409">
+ Copyright 2015-2021 The Aref Ruqaa Project Authors (https://github.com/aliftype/aref-ruqaa), with Reserved Font Name EURM10.
+ </namerecord>
+ <namerecord nameID="1" platformID="3" platEncID="1" langID="0x409">
+ Aref Ruqaa
+ </namerecord>
+ <namerecord nameID="2" platformID="3" platEncID="1" langID="0x409">
+ Regular
+ </namerecord>
+ <namerecord nameID="3" platformID="3" platEncID="1" langID="0x409">
+ 1.003;ALIF;ArefRuqaa-Regular
+ </namerecord>
+ <namerecord nameID="4" platformID="3" platEncID="1" langID="0x409">
+ Aref Ruqaa Regular
+ </namerecord>
+ <namerecord nameID="5" platformID="3" platEncID="1" langID="0x409">
+ Version 1.003
+ </namerecord>
+ <namerecord nameID="6" platformID="3" platEncID="1" langID="0x409">
+ ArefRuqaa-Regular
+ </namerecord>
+ <namerecord nameID="9" platformID="3" platEncID="1" langID="0x409">
+ Abdullah Aref
+ </namerecord>
+ <namerecord nameID="10" platformID="3" platEncID="1" langID="0x409">
+ Aref Ruqaa is an Arabic typeface that aspires to capture the essence of the classical Ruqaa calligraphic style.
+ </namerecord>
+ <namerecord nameID="13" platformID="3" platEncID="1" langID="0x409">
+ This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: https://scripts.sil.org/OFL
+ </namerecord>
+ <namerecord nameID="14" platformID="3" platEncID="1" langID="0x409">
+ https://scripts.sil.org/OFL
+ </namerecord>
+ <namerecord nameID="19" platformID="3" platEncID="1" langID="0x409">
+ الحب سماء لا تمطر غير الأحلام
+ </namerecord>
+ <namerecord nameID="256" platformID="3" platEncID="1" langID="0x409">
+ Looped Haa
+ </namerecord>
+ <namerecord nameID="257" platformID="3" platEncID="1" langID="0x409">
+ Open final Haa
+ </namerecord>
+ <namerecord nameID="258" platformID="3" platEncID="1" langID="0x409">
+ Tailed Noon
+ </namerecord>
+ <namerecord nameID="259" platformID="3" platEncID="1" langID="0x409">
+ Looped initial Kaf
+ </namerecord>
+ <namerecord nameID="260" platformID="3" platEncID="1" langID="0x409">
+ Alternate Arabic digit two
+ </namerecord>
+ <namerecord nameID="261" platformID="3" platEncID="1" langID="0x409">
+ Tailed Sheen
+ </namerecord>
+ <namerecord nameID="262" platformID="3" platEncID="1" langID="0x409">
+ Alternate Sad-Tah/Tah-Sad
+ </namerecord>
+ <namerecord nameID="263" platformID="3" platEncID="1" langID="0x409">
+ Alternate Sukun
+ </namerecord>
+ </name>
+
+ <cmap>
+ <tableVersion version="0"/>
+ <cmap_format_4 platformID="3" platEncID="1" language="0">
+ <map code="0x20" name="space"/><!-- SPACE -->
+ <map code="0x21" name="exclam"/><!-- EXCLAMATION MARK -->
+ <map code="0x22" name="quotedbl"/><!-- QUOTATION MARK -->
+ <map code="0x23" name="numbersign"/><!-- NUMBER SIGN -->
+ <map code="0x24" name="dollar"/><!-- DOLLAR SIGN -->
+ <map code="0x25" name="percent"/><!-- PERCENT SIGN -->
+ <map code="0x26" name="ampersand"/><!-- AMPERSAND -->
+ <map code="0x27" name="quotesingle"/><!-- APOSTROPHE -->
+ <map code="0x28" name="parenleft"/><!-- LEFT PARENTHESIS -->
+ <map code="0x29" name="parenright"/><!-- RIGHT PARENTHESIS -->
+ <map code="0x2a" name="asterisk"/><!-- ASTERISK -->
+ <map code="0x2b" name="plus"/><!-- PLUS SIGN -->
+ <map code="0x2c" name="comma"/><!-- COMMA -->
+ <map code="0x2d" name="hyphen"/><!-- HYPHEN-MINUS -->
+ <map code="0x2e" name="period"/><!-- FULL STOP -->
+ <map code="0x2f" name="slash"/><!-- SOLIDUS -->
+ <map code="0x30" name="zero"/><!-- DIGIT ZERO -->
+ <map code="0x31" name="one"/><!-- DIGIT ONE -->
+ <map code="0x32" name="two"/><!-- DIGIT TWO -->
+ <map code="0x33" name="three"/><!-- DIGIT THREE -->
+ <map code="0x34" name="four"/><!-- DIGIT FOUR -->
+ <map code="0x35" name="five"/><!-- DIGIT FIVE -->
+ <map code="0x36" name="six"/><!-- DIGIT SIX -->
+ <map code="0x37" name="seven"/><!-- DIGIT SEVEN -->
+ <map code="0x38" name="eight"/><!-- DIGIT EIGHT -->
+ <map code="0x39" name="nine"/><!-- DIGIT NINE -->
+ <map code="0x3a" name="colon"/><!-- COLON -->
+ <map code="0x3b" name="semicolon"/><!-- SEMICOLON -->
+ <map code="0x3c" name="less"/><!-- LESS-THAN SIGN -->
+ <map code="0x3d" name="equal"/><!-- EQUALS SIGN -->
+ <map code="0x3e" name="greater"/><!-- GREATER-THAN SIGN -->
+ <map code="0x3f" name="question"/><!-- QUESTION MARK -->
+ <map code="0x40" name="at"/><!-- COMMERCIAL AT -->
+ <map code="0x41" name="A"/><!-- LATIN CAPITAL LETTER A -->
+ <map code="0x42" name="B"/><!-- LATIN CAPITAL LETTER B -->
+ <map code="0x43" name="C"/><!-- LATIN CAPITAL LETTER C -->
+ <map code="0x44" name="D"/><!-- LATIN CAPITAL LETTER D -->
+ <map code="0x45" name="E"/><!-- LATIN CAPITAL LETTER E -->
+ <map code="0x46" name="F"/><!-- LATIN CAPITAL LETTER F -->
+ <map code="0x47" name="G"/><!-- LATIN CAPITAL LETTER G -->
+ <map code="0x48" name="H"/><!-- LATIN CAPITAL LETTER H -->
+ <map code="0x49" name="I"/><!-- LATIN CAPITAL LETTER I -->
+ <map code="0x4a" name="J"/><!-- LATIN CAPITAL LETTER J -->
+ <map code="0x4b" name="K"/><!-- LATIN CAPITAL LETTER K -->
+ <map code="0x4c" name="L"/><!-- LATIN CAPITAL LETTER L -->
+ <map code="0x4d" name="M"/><!-- LATIN CAPITAL LETTER M -->
+ <map code="0x4e" name="N"/><!-- LATIN CAPITAL LETTER N -->
+ <map code="0x4f" name="O"/><!-- LATIN CAPITAL LETTER O -->
+ <map code="0x50" name="P"/><!-- LATIN CAPITAL LETTER P -->
+ <map code="0x51" name="Q"/><!-- LATIN CAPITAL LETTER Q -->
+ <map code="0x52" name="R"/><!-- LATIN CAPITAL LETTER R -->
+ <map code="0x53" name="S"/><!-- LATIN CAPITAL LETTER S -->
+ <map code="0x54" name="T"/><!-- LATIN CAPITAL LETTER T -->
+ <map code="0x55" name="U"/><!-- LATIN CAPITAL LETTER U -->
+ <map code="0x56" name="V"/><!-- LATIN CAPITAL LETTER V -->
+ <map code="0x57" name="W"/><!-- LATIN CAPITAL LETTER W -->
+ <map code="0x58" name="X"/><!-- LATIN CAPITAL LETTER X -->
+ <map code="0x59" name="Y"/><!-- LATIN CAPITAL LETTER Y -->
+ <map code="0x5a" name="Z"/><!-- LATIN CAPITAL LETTER Z -->
+ <map code="0x5b" name="bracketleft"/><!-- LEFT SQUARE BRACKET -->
+ <map code="0x5c" name="backslash"/><!-- REVERSE SOLIDUS -->
+ <map code="0x5d" name="bracketright"/><!-- RIGHT SQUARE BRACKET -->
+ <map code="0x5e" name="circumflex"/><!-- CIRCUMFLEX ACCENT -->
+ <map code="0x5f" name="underscore"/><!-- LOW LINE -->
+ <map code="0x60" name="grave"/><!-- GRAVE ACCENT -->
+ <map code="0x61" name="a"/><!-- LATIN SMALL LETTER A -->
+ <map code="0x62" name="b"/><!-- LATIN SMALL LETTER B -->
+ <map code="0x63" name="c"/><!-- LATIN SMALL LETTER C -->
+ <map code="0x64" name="d"/><!-- LATIN SMALL LETTER D -->
+ <map code="0x65" name="e"/><!-- LATIN SMALL LETTER E -->
+ <map code="0x66" name="f"/><!-- LATIN SMALL LETTER F -->
+ <map code="0x67" name="g"/><!-- LATIN SMALL LETTER G -->
+ <map code="0x68" name="h"/><!-- LATIN SMALL LETTER H -->
+ <map code="0x69" name="i"/><!-- LATIN SMALL LETTER I -->
+ <map code="0x6a" name="j"/><!-- LATIN SMALL LETTER J -->
+ <map code="0x6b" name="k"/><!-- LATIN SMALL LETTER K -->
+ <map code="0x6c" name="l"/><!-- LATIN SMALL LETTER L -->
+ <map code="0x6d" name="m"/><!-- LATIN SMALL LETTER M -->
+ <map code="0x6e" name="n"/><!-- LATIN SMALL LETTER N -->
+ <map code="0x6f" name="o"/><!-- LATIN SMALL LETTER O -->
+ <map code="0x70" name="p"/><!-- LATIN SMALL LETTER P -->
+ <map code="0x71" name="q"/><!-- LATIN SMALL LETTER Q -->
+ <map code="0x72" name="r"/><!-- LATIN SMALL LETTER R -->
+ <map code="0x73" name="s"/><!-- LATIN SMALL LETTER S -->
+ <map code="0x74" name="t"/><!-- LATIN SMALL LETTER T -->
+ <map code="0x75" name="u"/><!-- LATIN SMALL LETTER U -->
+ <map code="0x76" name="v"/><!-- LATIN SMALL LETTER V -->
+ <map code="0x77" name="w"/><!-- LATIN SMALL LETTER W -->
+ <map code="0x78" name="x"/><!-- LATIN SMALL LETTER X -->
+ <map code="0x79" name="y"/><!-- LATIN SMALL LETTER Y -->
+ <map code="0x7a" name="z"/><!-- LATIN SMALL LETTER Z -->
+ <map code="0x7b" name="braceleft"/><!-- LEFT CURLY BRACKET -->
+ <map code="0x7c" name="bar"/><!-- VERTICAL LINE -->
+ <map code="0x7d" name="braceright"/><!-- RIGHT CURLY BRACKET -->
+ <map code="0x7e" name="asciitilde"/><!-- TILDE -->
+ <map code="0xa0" name="space"/><!-- NO-BREAK SPACE -->
+ <map code="0xa1" name="exclamdown"/><!-- INVERTED EXCLAMATION MARK -->
+ <map code="0xa2" name="cent"/><!-- CENT SIGN -->
+ <map code="0xa3" name="sterling"/><!-- POUND SIGN -->
+ <map code="0xa4" name="currency"/><!-- CURRENCY SIGN -->
+ <map code="0xa5" name="yen"/><!-- YEN SIGN -->
+ <map code="0xa6" name="brokenbar"/><!-- BROKEN BAR -->
+ <map code="0xa7" name="section"/><!-- SECTION SIGN -->
+ <map code="0xa8" name="dieresis"/><!-- DIAERESIS -->
+ <map code="0xa9" name="copyright"/><!-- COPYRIGHT SIGN -->
+ <map code="0xaa" name="ordfeminine"/><!-- FEMININE ORDINAL INDICATOR -->
+ <map code="0xab" name="guillemotleft"/><!-- LEFT-POINTING DOUBLE ANGLE QUOTATION MARK -->
+ <map code="0xac" name="logicalnot"/><!-- NOT SIGN -->
+ <map code="0xad" name="softhyphen"/><!-- SOFT HYPHEN -->
+ <map code="0xae" name="registered"/><!-- REGISTERED SIGN -->
+ <map code="0xaf" name="macron"/><!-- MACRON -->
+ <map code="0xb0" name="degree"/><!-- DEGREE SIGN -->
+ <map code="0xb1" name="plusminus"/><!-- PLUS-MINUS SIGN -->
+ <map code="0xb2" name="twosuperior"/><!-- SUPERSCRIPT TWO -->
+ <map code="0xb3" name="threesuperior"/><!-- SUPERSCRIPT THREE -->
+ <map code="0xb4" name="acute"/><!-- ACUTE ACCENT -->
+ <map code="0xb5" name="mu"/><!-- MICRO SIGN -->
+ <map code="0xb6" name="paragraph"/><!-- PILCROW SIGN -->
+ <map code="0xb7" name="periodcentered"/><!-- MIDDLE DOT -->
+ <map code="0xb8" name="cedilla"/><!-- CEDILLA -->
+ <map code="0xb9" name="onesuperior"/><!-- SUPERSCRIPT ONE -->
+ <map code="0xba" name="ordmasculine"/><!-- MASCULINE ORDINAL INDICATOR -->
+ <map code="0xbb" name="guillemotright"/><!-- RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -->
+ <map code="0xbc" name="onequarter"/><!-- VULGAR FRACTION ONE QUARTER -->
+ <map code="0xbd" name="onehalf"/><!-- VULGAR FRACTION ONE HALF -->
+ <map code="0xbe" name="threequarters"/><!-- VULGAR FRACTION THREE QUARTERS -->
+ <map code="0xbf" name="questiondown"/><!-- INVERTED QUESTION MARK -->
+ <map code="0xc0" name="Agrave"/><!-- LATIN CAPITAL LETTER A WITH GRAVE -->
+ <map code="0xc1" name="Aacute"/><!-- LATIN CAPITAL LETTER A WITH ACUTE -->
+ <map code="0xc2" name="Acircumflex"/><!-- LATIN CAPITAL LETTER A WITH CIRCUMFLEX -->
+ <map code="0xc3" name="Atilde"/><!-- LATIN CAPITAL LETTER A WITH TILDE -->
+ <map code="0xc4" name="Adieresis"/><!-- LATIN CAPITAL LETTER A WITH DIAERESIS -->
+ <map code="0xc5" name="Aring"/><!-- LATIN CAPITAL LETTER A WITH RING ABOVE -->
+ <map code="0xc6" name="AE"/><!-- LATIN CAPITAL LETTER AE -->
+ <map code="0xc7" name="Ccedilla"/><!-- LATIN CAPITAL LETTER C WITH CEDILLA -->
+ <map code="0xc8" name="Egrave"/><!-- LATIN CAPITAL LETTER E WITH GRAVE -->
+ <map code="0xc9" name="Eacute"/><!-- LATIN CAPITAL LETTER E WITH ACUTE -->
+ <map code="0xca" name="Ecircumflex"/><!-- LATIN CAPITAL LETTER E WITH CIRCUMFLEX -->
+ <map code="0xcb" name="Edieresis"/><!-- LATIN CAPITAL LETTER E WITH DIAERESIS -->
+ <map code="0xcc" name="Igrave"/><!-- LATIN CAPITAL LETTER I WITH GRAVE -->
+ <map code="0xcd" name="Iacute"/><!-- LATIN CAPITAL LETTER I WITH ACUTE -->
+ <map code="0xce" name="Icircumflex"/><!-- LATIN CAPITAL LETTER I WITH CIRCUMFLEX -->
+ <map code="0xcf" name="Idieresis"/><!-- LATIN CAPITAL LETTER I WITH DIAERESIS -->
+ <map code="0xd0" name="Eth"/><!-- LATIN CAPITAL LETTER ETH -->
+ <map code="0xd1" name="Ntilde"/><!-- LATIN CAPITAL LETTER N WITH TILDE -->
+ <map code="0xd2" name="Ograve"/><!-- LATIN CAPITAL LETTER O WITH GRAVE -->
+ <map code="0xd3" name="Oacute"/><!-- LATIN CAPITAL LETTER O WITH ACUTE -->
+ <map code="0xd4" name="Ocircumflex"/><!-- LATIN CAPITAL LETTER O WITH CIRCUMFLEX -->
+ <map code="0xd5" name="Otilde"/><!-- LATIN CAPITAL LETTER O WITH TILDE -->
+ <map code="0xd6" name="Odieresis"/><!-- LATIN CAPITAL LETTER O WITH DIAERESIS -->
+ <map code="0xd7" name="multiply"/><!-- MULTIPLICATION SIGN -->
+ <map code="0xd8" name="Oslash"/><!-- LATIN CAPITAL LETTER O WITH STROKE -->
+ <map code="0xd9" name="Ugrave"/><!-- LATIN CAPITAL LETTER U WITH GRAVE -->
+ <map code="0xda" name="Uacute"/><!-- LATIN CAPITAL LETTER U WITH ACUTE -->
+ <map code="0xdb" name="Ucircumflex"/><!-- LATIN CAPITAL LETTER U WITH CIRCUMFLEX -->
+ <map code="0xdc" name="Udieresis"/><!-- LATIN CAPITAL LETTER U WITH DIAERESIS -->
+ <map code="0xdd" name="Yacute"/><!-- LATIN CAPITAL LETTER Y WITH ACUTE -->
+ <map code="0xde" name="Thorn"/><!-- LATIN CAPITAL LETTER THORN -->
+ <map code="0xdf" name="germandbls"/><!-- LATIN SMALL LETTER SHARP S -->
+ <map code="0xe0" name="agrave"/><!-- LATIN SMALL LETTER A WITH GRAVE -->
+ <map code="0xe1" name="aacute"/><!-- LATIN SMALL LETTER A WITH ACUTE -->
+ <map code="0xe2" name="acircumflex"/><!-- LATIN SMALL LETTER A WITH CIRCUMFLEX -->
+ <map code="0xe3" name="atilde"/><!-- LATIN SMALL LETTER A WITH TILDE -->
+ <map code="0xe4" name="adieresis"/><!-- LATIN SMALL LETTER A WITH DIAERESIS -->
+ <map code="0xe5" name="aring"/><!-- LATIN SMALL LETTER A WITH RING ABOVE -->
+ <map code="0xe6" name="ae"/><!-- LATIN SMALL LETTER AE -->
+ <map code="0xe7" name="ccedilla"/><!-- LATIN SMALL LETTER C WITH CEDILLA -->
+ <map code="0xe8" name="egrave"/><!-- LATIN SMALL LETTER E WITH GRAVE -->
+ <map code="0xe9" name="eacute"/><!-- LATIN SMALL LETTER E WITH ACUTE -->
+ <map code="0xea" name="ecircumflex"/><!-- LATIN SMALL LETTER E WITH CIRCUMFLEX -->
+ <map code="0xeb" name="edieresis"/><!-- LATIN SMALL LETTER E WITH DIAERESIS -->
+ <map code="0xec" name="igrave"/><!-- LATIN SMALL LETTER I WITH GRAVE -->
+ <map code="0xed" name="iacute"/><!-- LATIN SMALL LETTER I WITH ACUTE -->
+ <map code="0xee" name="icircumflex"/><!-- LATIN SMALL LETTER I WITH CIRCUMFLEX -->
+ <map code="0xef" name="idieresis"/><!-- LATIN SMALL LETTER I WITH DIAERESIS -->
+ <map code="0xf0" name="eth"/><!-- LATIN SMALL LETTER ETH -->
+ <map code="0xf1" name="ntilde"/><!-- LATIN SMALL LETTER N WITH TILDE -->
+ <map code="0xf2" name="ograve"/><!-- LATIN SMALL LETTER O WITH GRAVE -->
+ <map code="0xf3" name="oacute"/><!-- LATIN SMALL LETTER O WITH ACUTE -->
+ <map code="0xf4" name="ocircumflex"/><!-- LATIN SMALL LETTER O WITH CIRCUMFLEX -->
+ <map code="0xf5" name="otilde"/><!-- LATIN SMALL LETTER O WITH TILDE -->
+ <map code="0xf6" name="odieresis"/><!-- LATIN SMALL LETTER O WITH DIAERESIS -->
+ <map code="0xf7" name="divide"/><!-- DIVISION SIGN -->
+ <map code="0xf8" name="oslash"/><!-- LATIN SMALL LETTER O WITH STROKE -->
+ <map code="0xf9" name="ugrave"/><!-- LATIN SMALL LETTER U WITH GRAVE -->
+ <map code="0xfa" name="uacute"/><!-- LATIN SMALL LETTER U WITH ACUTE -->
+ <map code="0xfb" name="ucircumflex"/><!-- LATIN SMALL LETTER U WITH CIRCUMFLEX -->
+ <map code="0xfc" name="udieresis"/><!-- LATIN SMALL LETTER U WITH DIAERESIS -->
+ <map code="0xfd" name="yacute"/><!-- LATIN SMALL LETTER Y WITH ACUTE -->
+ <map code="0xfe" name="thorn"/><!-- LATIN SMALL LETTER THORN -->
+ <map code="0xff" name="ydieresis"/><!-- LATIN SMALL LETTER Y WITH DIAERESIS -->
+ <map code="0x131" name="dotlessi"/><!-- LATIN SMALL LETTER DOTLESS I -->
+ <map code="0x152" name="OE"/><!-- LATIN CAPITAL LIGATURE OE -->
+ <map code="0x153" name="oe"/><!-- LATIN SMALL LIGATURE OE -->
+ <map code="0x237" name="dotlessj"/><!-- LATIN SMALL LETTER DOTLESS J -->
+ <map code="0x2c6" name="circumflex"/><!-- MODIFIER LETTER CIRCUMFLEX ACCENT -->
+ <map code="0x2da" name="ring"/><!-- RING ABOVE -->
+ <map code="0x2dc" name="tilde"/><!-- SMALL TILDE -->
+ <map code="0x300" name="gravecomb"/><!-- COMBINING GRAVE ACCENT -->
+ <map code="0x301" name="acutecomb"/><!-- COMBINING ACUTE ACCENT -->
+ <map code="0x302" name="circumflexcomb"/><!-- COMBINING CIRCUMFLEX ACCENT -->
+ <map code="0x303" name="tildecomb"/><!-- COMBINING TILDE -->
+ <map code="0x304" name="macroncomb"/><!-- COMBINING MACRON -->
+ <map code="0x308" name="dieresiscomb"/><!-- COMBINING DIAERESIS -->
+ <map code="0x30a" name="ringcomb"/><!-- COMBINING RING ABOVE -->
+ <map code="0x327" name="cedillacomb"/><!-- COMBINING CEDILLA -->
+ <map code="0x393" name="Gamma"/><!-- GREEK CAPITAL LETTER GAMMA -->
+ <map code="0x398" name="Theta"/><!-- GREEK CAPITAL LETTER THETA -->
+ <map code="0x39b" name="Lambda"/><!-- GREEK CAPITAL LETTER LAMDA -->
+ <map code="0x39e" name="Xi"/><!-- GREEK CAPITAL LETTER XI -->
+ <map code="0x3a0" name="Pi"/><!-- GREEK CAPITAL LETTER PI -->
+ <map code="0x3a3" name="Sigma"/><!-- GREEK CAPITAL LETTER SIGMA -->
+ <map code="0x3a5" name="Upsilon"/><!-- GREEK CAPITAL LETTER UPSILON -->
+ <map code="0x3a6" name="Phi"/><!-- GREEK CAPITAL LETTER PHI -->
+ <map code="0x3a8" name="Psi"/><!-- GREEK CAPITAL LETTER PSI -->
+ <map code="0x3b1" name="alpha"/><!-- GREEK SMALL LETTER ALPHA -->
+ <map code="0x3b2" name="beta"/><!-- GREEK SMALL LETTER BETA -->
+ <map code="0x3b3" name="gamma"/><!-- GREEK SMALL LETTER GAMMA -->
+ <map code="0x3b4" name="delta"/><!-- GREEK SMALL LETTER DELTA -->
+ <map code="0x3b5" name="epsilon"/><!-- GREEK SMALL LETTER EPSILON -->
+ <map code="0x3b6" name="zeta"/><!-- GREEK SMALL LETTER ZETA -->
+ <map code="0x3b7" name="eta"/><!-- GREEK SMALL LETTER ETA -->
+ <map code="0x3b8" name="theta"/><!-- GREEK SMALL LETTER THETA -->
+ <map code="0x3b9" name="iota"/><!-- GREEK SMALL LETTER IOTA -->
+ <map code="0x3ba" name="kappa"/><!-- GREEK SMALL LETTER KAPPA -->
+ <map code="0x3bb" name="lambda"/><!-- GREEK SMALL LETTER LAMDA -->
+ <map code="0x3bd" name="nu"/><!-- GREEK SMALL LETTER NU -->
+ <map code="0x3be" name="xi"/><!-- GREEK SMALL LETTER XI -->
+ <map code="0x3c0" name="pi"/><!-- GREEK SMALL LETTER PI -->
+ <map code="0x3c1" name="rho"/><!-- GREEK SMALL LETTER RHO -->
+ <map code="0x3c3" name="sigma"/><!-- GREEK SMALL LETTER SIGMA -->
+ <map code="0x3c4" name="tau"/><!-- GREEK SMALL LETTER TAU -->
+ <map code="0x3c5" name="upsilon"/><!-- GREEK SMALL LETTER UPSILON -->
+ <map code="0x3c6" name="phi"/><!-- GREEK SMALL LETTER PHI -->
+ <map code="0x3c7" name="chi"/><!-- GREEK SMALL LETTER CHI -->
+ <map code="0x3c8" name="psi"/><!-- GREEK SMALL LETTER PSI -->
+ <map code="0x3c9" name="omega"/><!-- GREEK SMALL LETTER OMEGA -->
+ <map code="0x3d1" name="theta1"/><!-- GREEK THETA SYMBOL -->
+ <map code="0x3d5" name="phi1"/><!-- GREEK PHI SYMBOL -->
+ <map code="0x3d6" name="pi1"/><!-- GREEK PI SYMBOL -->
+ <map code="0x60c" name="comma-ar"/><!-- ARABIC COMMA -->
+ <map code="0x61b" name="semicolon-ar"/><!-- ARABIC SEMICOLON -->
+ <map code="0x61f" name="question-ar"/><!-- ARABIC QUESTION MARK -->
+ <map code="0x621" name="hamza-ar"/><!-- ARABIC LETTER HAMZA -->
+ <map code="0x622" name="alefMadda-ar"/><!-- ARABIC LETTER ALEF WITH MADDA ABOVE -->
+ <map code="0x623" name="alefHamzaabove-ar"/><!-- ARABIC LETTER ALEF WITH HAMZA ABOVE -->
+ <map code="0x624" name="wawHamzaabove-ar"/><!-- ARABIC LETTER WAW WITH HAMZA ABOVE -->
+ <map code="0x625" name="alefHamzabelow-ar"/><!-- ARABIC LETTER ALEF WITH HAMZA BELOW -->
+ <map code="0x626" name="yehHamzaabove-ar"/><!-- ARABIC LETTER YEH WITH HAMZA ABOVE -->
+ <map code="0x627" name="alef-ar"/><!-- ARABIC LETTER ALEF -->
+ <map code="0x628" name="beh-ar"/><!-- ARABIC LETTER BEH -->
+ <map code="0x629" name="tehMarbuta-ar"/><!-- ARABIC LETTER TEH MARBUTA -->
+ <map code="0x62a" name="teh-ar"/><!-- ARABIC LETTER TEH -->
+ <map code="0x62b" name="theh-ar"/><!-- ARABIC LETTER THEH -->
+ <map code="0x62c" name="jeem-ar"/><!-- ARABIC LETTER JEEM -->
+ <map code="0x62d" name="hah-ar"/><!-- ARABIC LETTER HAH -->
+ <map code="0x62e" name="khah-ar"/><!-- ARABIC LETTER KHAH -->
+ <map code="0x62f" name="dal-ar"/><!-- ARABIC LETTER DAL -->
+ <map code="0x630" name="thal-ar"/><!-- ARABIC LETTER THAL -->
+ <map code="0x631" name="reh-ar"/><!-- ARABIC LETTER REH -->
+ <map code="0x632" name="zain-ar"/><!-- ARABIC LETTER ZAIN -->
+ <map code="0x633" name="seen-ar"/><!-- ARABIC LETTER SEEN -->
+ <map code="0x634" name="sheen-ar"/><!-- ARABIC LETTER SHEEN -->
+ <map code="0x635" name="sad-ar"/><!-- ARABIC LETTER SAD -->
+ <map code="0x636" name="dad-ar"/><!-- ARABIC LETTER DAD -->
+ <map code="0x637" name="tah-ar"/><!-- ARABIC LETTER TAH -->
+ <map code="0x638" name="zah-ar"/><!-- ARABIC LETTER ZAH -->
+ <map code="0x639" name="ain-ar"/><!-- ARABIC LETTER AIN -->
+ <map code="0x63a" name="ghain-ar"/><!-- ARABIC LETTER GHAIN -->
+ <map code="0x640" name="kashida-ar"/><!-- ARABIC TATWEEL -->
+ <map code="0x641" name="feh-ar"/><!-- ARABIC LETTER FEH -->
+ <map code="0x642" name="qaf-ar"/><!-- ARABIC LETTER QAF -->
+ <map code="0x643" name="kaf-ar"/><!-- ARABIC LETTER KAF -->
+ <map code="0x644" name="lam-ar"/><!-- ARABIC LETTER LAM -->
+ <map code="0x645" name="meem-ar"/><!-- ARABIC LETTER MEEM -->
+ <map code="0x646" name="noon-ar"/><!-- ARABIC LETTER NOON -->
+ <map code="0x647" name="heh-ar"/><!-- ARABIC LETTER HEH -->
+ <map code="0x648" name="waw-ar"/><!-- ARABIC LETTER WAW -->
+ <map code="0x649" name="alefMaksura-ar"/><!-- ARABIC LETTER ALEF MAKSURA -->
+ <map code="0x64a" name="yeh-ar"/><!-- ARABIC LETTER YEH -->
+ <map code="0x64b" name="fathatan-ar"/><!-- ARABIC FATHATAN -->
+ <map code="0x64c" name="dammatan-ar"/><!-- ARABIC DAMMATAN -->
+ <map code="0x64d" name="kasratan-ar"/><!-- ARABIC KASRATAN -->
+ <map code="0x64e" name="fatha-ar"/><!-- ARABIC FATHA -->
+ <map code="0x64f" name="damma-ar"/><!-- ARABIC DAMMA -->
+ <map code="0x650" name="kasra-ar"/><!-- ARABIC KASRA -->
+ <map code="0x651" name="shadda-ar"/><!-- ARABIC SHADDA -->
+ <map code="0x652" name="sukun-ar"/><!-- ARABIC SUKUN -->
+ <map code="0x653" name="madda-ar"/><!-- ARABIC MADDAH ABOVE -->
+ <map code="0x654" name="hamzaabove-ar"/><!-- ARABIC HAMZA ABOVE -->
+ <map code="0x655" name="hamzabelow-ar"/><!-- ARABIC HAMZA BELOW -->
+ <map code="0x656" name="alefbelow-ar"/><!-- ARABIC SUBSCRIPT ALEF -->
+ <map code="0x657" name="dammainverted-ar"/><!-- ARABIC INVERTED DAMMA -->
+ <map code="0x658" name="noonghunnaabove-ar"/><!-- ARABIC MARK NOON GHUNNA -->
+ <map code="0x65a" name="vabove-ar"/><!-- ARABIC VOWEL SIGN SMALL V ABOVE -->
+ <map code="0x660" name="zero-ar"/><!-- ARABIC-INDIC DIGIT ZERO -->
+ <map code="0x661" name="one-ar"/><!-- ARABIC-INDIC DIGIT ONE -->
+ <map code="0x662" name="two-ar"/><!-- ARABIC-INDIC DIGIT TWO -->
+ <map code="0x663" name="three-ar"/><!-- ARABIC-INDIC DIGIT THREE -->
+ <map code="0x664" name="four-ar"/><!-- ARABIC-INDIC DIGIT FOUR -->
+ <map code="0x665" name="five-ar"/><!-- ARABIC-INDIC DIGIT FIVE -->
+ <map code="0x666" name="six-ar"/><!-- ARABIC-INDIC DIGIT SIX -->
+ <map code="0x667" name="seven-ar"/><!-- ARABIC-INDIC DIGIT SEVEN -->
+ <map code="0x668" name="eight-ar"/><!-- ARABIC-INDIC DIGIT EIGHT -->
+ <map code="0x669" name="nine-ar"/><!-- ARABIC-INDIC DIGIT NINE -->
+ <map code="0x66a" name="percent-ar"/><!-- ARABIC PERCENT SIGN -->
+ <map code="0x66e" name="behDotless-ar"/><!-- ARABIC LETTER DOTLESS BEH -->
+ <map code="0x66f" name="qafDotless-ar"/><!-- ARABIC LETTER DOTLESS QAF -->
+ <map code="0x670" name="alefabove-ar"/><!-- ARABIC LETTER SUPERSCRIPT ALEF -->
+ <map code="0x671" name="alefWasla-ar"/><!-- ARABIC LETTER ALEF WASLA -->
+ <map code="0x674" name="highhamza-ar"/><!-- ARABIC LETTER HIGH HAMZA -->
+ <map code="0x679" name="tteh-ar"/><!-- ARABIC LETTER TTEH -->
+ <map code="0x67e" name="peh-ar"/><!-- ARABIC LETTER PEH -->
+ <map code="0x686" name="tcheh-ar"/><!-- ARABIC LETTER TCHEH -->
+ <map code="0x688" name="ddal-ar"/><!-- ARABIC LETTER DDAL -->
+ <map code="0x68e" name="dul-ar"/><!-- ARABIC LETTER DUL -->
+ <map code="0x691" name="rreh-ar"/><!-- ARABIC LETTER RREH -->
+ <map code="0x695" name="rehVbelow-ar"/><!-- ARABIC LETTER REH WITH SMALL V BELOW -->
+ <map code="0x698" name="jeh-ar"/><!-- ARABIC LETTER JEH -->
+ <map code="0x6a0" name="ainThreedots-ar"/><!-- ARABIC LETTER AIN WITH THREE DOTS ABOVE -->
+ <map code="0x6a1" name="fehDotless-ar"/><!-- ARABIC LETTER DOTLESS FEH -->
+ <map code="0x6a4" name="veh-ar"/><!-- ARABIC LETTER VEH -->
+ <map code="0x6a9" name="keheh-ar"/><!-- ARABIC LETTER KEHEH -->
+ <map code="0x6ac" name="kafDotabove-ar"/><!-- ARABIC LETTER KAF WITH DOT ABOVE -->
+ <map code="0x6af" name="gaf-ar"/><!-- ARABIC LETTER GAF -->
+ <map code="0x6b5" name="lamVabove-ar"/><!-- ARABIC LETTER LAM WITH SMALL V -->
+ <map code="0x6ba" name="noonghunna-ar"/><!-- ARABIC LETTER NOON GHUNNA -->
+ <map code="0x6bb" name="rnoon-ar"/><!-- ARABIC LETTER RNOON -->
+ <map code="0x6bd" name="noonThreedotsabove-ar"/><!-- ARABIC LETTER NOON WITH THREE DOTS ABOVE -->
+ <map code="0x6be" name="hehDoachashmee-ar"/><!-- ARABIC LETTER HEH DOACHASHMEE -->
+ <map code="0x6c0" name="hehHamzaabove-ar"/><!-- ARABIC LETTER HEH WITH YEH ABOVE -->
+ <map code="0x6c1" name="hehgoal-ar"/><!-- ARABIC LETTER HEH GOAL -->
+ <map code="0x6c6" name="oe-ar"/><!-- ARABIC LETTER OE -->
+ <map code="0x6cc" name="yeh-farsi"/><!-- ARABIC LETTER FARSI YEH -->
+ <map code="0x6ce" name="yehVabove-ar"/><!-- ARABIC LETTER YEH WITH SMALL V -->
+ <map code="0x6cf" name="wawDotabove-ar"/><!-- ARABIC LETTER WAW WITH DOT ABOVE -->
+ <map code="0x6d2" name="yehbarree-ar"/><!-- ARABIC LETTER YEH BARREE -->
+ <map code="0x6d3" name="yehbarreeHamzaabove-ar"/><!-- ARABIC LETTER YEH BARREE WITH HAMZA ABOVE -->
+ <map code="0x6d4" name="fullstop-ar"/><!-- ARABIC FULL STOP -->
+ <map code="0x6d5" name="ae-ar"/><!-- ARABIC LETTER AE -->
+ <map code="0x6e1" name="sukun-ar"/><!-- ARABIC SMALL HIGH DOTLESS HEAD OF KHAH -->
+ <map code="0x6f0" name="zero-ar"/><!-- EXTENDED ARABIC-INDIC DIGIT ZERO -->
+ <map code="0x6f1" name="one-ar"/><!-- EXTENDED ARABIC-INDIC DIGIT ONE -->
+ <map code="0x6f2" name="two-persian"/><!-- EXTENDED ARABIC-INDIC DIGIT TWO -->
+ <map code="0x6f3" name="three-ar"/><!-- EXTENDED ARABIC-INDIC DIGIT THREE -->
+ <map code="0x6f4" name="four-persian"/><!-- EXTENDED ARABIC-INDIC DIGIT FOUR -->
+ <map code="0x6f5" name="five-persian"/><!-- EXTENDED ARABIC-INDIC DIGIT FIVE -->
+ <map code="0x6f6" name="six-persian"/><!-- EXTENDED ARABIC-INDIC DIGIT SIX -->
+ <map code="0x6f7" name="seven-persian"/><!-- EXTENDED ARABIC-INDIC DIGIT SEVEN -->
+ <map code="0x6f8" name="eight-ar"/><!-- EXTENDED ARABIC-INDIC DIGIT EIGHT -->
+ <map code="0x6f9" name="nine-ar"/><!-- EXTENDED ARABIC-INDIC DIGIT NINE -->
+ <map code="0x762" name="kehehDotabove-ar"/><!-- ARABIC LETTER KEHEH WITH DOT ABOVE -->
+ <map code="0x8f1" name="opendammatan-ar"/><!-- ARABIC OPEN DAMMATAN -->
+ <map code="0x2013" name="endash"/><!-- EN DASH -->
+ <map code="0x2014" name="emdash"/><!-- EM DASH -->
+ <map code="0x2018" name="quoteleft"/><!-- LEFT SINGLE QUOTATION MARK -->
+ <map code="0x2019" name="quoteright"/><!-- RIGHT SINGLE QUOTATION MARK -->
+ <map code="0x201a" name="quotesinglbase"/><!-- SINGLE LOW-9 QUOTATION MARK -->
+ <map code="0x201c" name="quotedblleft"/><!-- LEFT DOUBLE QUOTATION MARK -->
+ <map code="0x201d" name="quotedblright"/><!-- RIGHT DOUBLE QUOTATION MARK -->
+ <map code="0x201e" name="quotedblbase"/><!-- DOUBLE LOW-9 QUOTATION MARK -->
+ <map code="0x2022" name="bullet"/><!-- BULLET -->
+ <map code="0x2026" name="ellipsis"/><!-- HORIZONTAL ELLIPSIS -->
+ <map code="0x2039" name="guilsinglleft"/><!-- SINGLE LEFT-POINTING ANGLE QUOTATION MARK -->
+ <map code="0x203a" name="guilsinglright"/><!-- SINGLE RIGHT-POINTING ANGLE QUOTATION MARK -->
+ <map code="0x2044" name="fraction"/><!-- FRACTION SLASH -->
+ <map code="0x2074" name="foursuperior"/><!-- SUPERSCRIPT FOUR -->
+ <map code="0x20ac" name="euro"/><!-- EURO SIGN -->
+ <map code="0x2113" name="lscript"/><!-- SCRIPT SMALL L -->
+ <map code="0x2118" name="weierstrass"/><!-- SCRIPT CAPITAL P -->
+ <map code="0x2126" name="Omega"/><!-- OHM SIGN -->
+ <map code="0x2202" name="partialdiff"/><!-- PARTIAL DIFFERENTIAL -->
+ <map code="0x2206" name="Delta"/><!-- INCREMENT -->
+ <map code="0x2212" name="minus"/><!-- MINUS SIGN -->
+ <map code="0x2215" name="fraction"/><!-- DIVISION SLASH -->
+ <map code="0xfd3e" name="parenleft-ar"/><!-- ORNATE LEFT PARENTHESIS -->
+ <map code="0xfd3f" name="parenright-ar"/><!-- ORNATE RIGHT PARENTHESIS -->
+ </cmap_format_4>
+ </cmap>
+
+ <post>
+ <formatType value="3.0"/>
+ <italicAngle value="0.0"/>
+ <underlinePosition value="-32"/>
+ <underlineThickness value="73"/>
+ <isFixedPitch value="0"/>
+ <minMemType42 value="0"/>
+ <maxMemType42 value="0"/>
+ <minMemType1 value="0"/>
+ <maxMemType1 value="0"/>
+ </post>
+
+ <CFF>
+ <major value="1"/>
+ <minor value="0"/>
+ <CFFFont name="ArefRuqaa-Regular">
+ <version value="1.3"/>
+ <Copyright value="Copyright 2015-2021 The Aref Ruqaa Project Authors https:github.comaliftypearef-ruqaa, with Reserved Font Name EURM10."/>
+ <FullName value="Aref Ruqaa Regular"/>
+ <FamilyName value="Aref Ruqaa"/>
+ <isFixedPitch value="0"/>
+ <ItalicAngle value="0"/>
+ <UnderlinePosition value="-32"/>
+ <UnderlineThickness value="73"/>
+ <PaintType value="0"/>
+ <CharstringType value="2"/>
+ <FontMatrix value="0.001 0 0 0.001 0 0"/>
+ <FontBBox value="-199 -364 1459 1028"/>
+ <StrokeWidth value="0"/>
+ <!-- charset is dumped separately as the 'GlyphOrder' element -->
+ <Encoding>
+ </Encoding>
+ <Private>
+ <BlueScale value="0.039625"/>
+ <BlueShift value="7"/>
+ <BlueFuzz value="1"/>
+ <ForceBold value="0"/>
+ <LanguageGroup value="0"/>
+ <ExpansionFactor value="0.06"/>
+ <initialRandomSeed value="0"/>
+ <defaultWidthX value="0"/>
+ <nominalWidthX value="364"/>
+ </Private>
+ <CharStrings>
+ <CharString name=".notdef">
+ 136 50 -200 rmoveto
+ 400 1000 -400 -1000 hlineto
+ 50 50 rmoveto
+ 900 300 -900 -300 vlineto
+ endchar
+ </CharString>
+ <CharString name=".notdef#1">
+ -45 50 -200 rmoveto
+ 400 1000 -400 -1000 hlineto
+ 50 50 rmoveto
+ 900 300 -900 -300 vlineto
+ endchar
+ </CharString>
+ <CharString name="A">
+ 177 572 -10 rmoveto
+ 15 15 2 4 15 hvcurveto
+ 104 30 -1 26 rlineto
+ -1 -14 -15 -2 -14 hhcurveto
+ -27 -24 8 22 -13 hvcurveto
+ -36 60 -27 97 -22 81 -33 120 -45 160 -15 83 rrcurveto
+ -194 -27 hlineto
+ 90 -15 rlineto
+ 9 -2 3 -6 -3 vvcurveto
+ -3 0 -1 -1 -3 vhcurveto
+ -105 -208 -115 -204 -119 -200 3 -10 rcurveline
+ 91 19 117 248 rlineto
+ 4 2 4 4 4 hhcurveto
+ 225 hlineto
+ 3 6 -5 -4 2 hvcurveto
+ 54 -188 rlineto
+ -44 12 13 -42 33 hhcurveto
+ -206 586 rmoveto
+ 3 3 -2 -2 1 hvcurveto
+ 70 -244 rlineto
+ -1 2 -8 0 vhcurveto
+ -3 -2 -4 -5 vhcurveto
+ -188 hlineto
+ -3 -4 4 3 1 0 6 1 2 hvcurveto
+ 116 244 rlineto
+ 1 3 3 3 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="AE">
+ 252 366 66 rmoveto
+ -27 6 -28 20 -11 vhcurveto
+ 388 hlineto
+ 13 53 -5 5 rlineto
+ -14 -164 -23 0 -47 hhcurveto
+ -61 -21 6 26 -14 hvcurveto
+ -14 25 -1 49 38 vvcurveto
+ 139 vlineto
+ 18 71 -3 58 39 40 -3 -3 39 vhcurveto
+ 6 48 -6 7 rlineto
+ -4 -53 -74 -3 -53 hhcurveto
+ -37 -29 -3 17 hvcurveto
+ 166 vlineto
+ 35 4 37 20 4 vhcurveto
+ 40 hlineto
+ 7 133 -6 -4 69 hvcurveto
+ 4 7 2 50 rlineto
+ 1 -13 -15 0 -18 hhcurveto
+ -1 -71 -101 -5 -70 hhcurveto
+ -194 -27 hlineto
+ 91 -15 rlineto
+ 9 -2 3 -6 -3 vvcurveto
+ -3 0 -1 -1 -3 vhcurveto
+ -105 -208 -116 -206 -119 -200 3 -10 rcurveline
+ 91 19 117 248 rlineto
+ 4 2 4 4 4 hhcurveto
+ 142 hlineto
+ 39 vmoveto
+ -116 hlineto
+ -3 -4 4 3 1 0 6 1 2 hvcurveto
+ 116 244 rlineto
+ 2 5 4 0 -9 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="Aacute">
+ 177 517 882 rmoveto
+ -47 36 -13 -2 -120 -157 18 -31 rlineto
+ 217 -738 rmoveto
+ 15 15 2 4 15 hvcurveto
+ 104 30 -1 26 rlineto
+ -1 -14 -15 -2 -14 hhcurveto
+ -27 -24 8 22 -13 hvcurveto
+ -36 60 -27 97 -22 81 -33 120 -45 160 -15 83 rrcurveto
+ -194 -27 hlineto
+ 90 -15 rlineto
+ 9 -2 3 -6 -3 vvcurveto
+ -3 0 -1 -1 -3 vhcurveto
+ -105 -208 -115 -204 -119 -200 3 -10 rcurveline
+ 91 19 117 248 rlineto
+ 4 2 4 4 4 hhcurveto
+ 225 hlineto
+ 3 6 -5 -4 2 hvcurveto
+ 54 -188 rlineto
+ -44 12 13 -42 33 hhcurveto
+ -206 586 rmoveto
+ 3 3 -2 -2 1 hvcurveto
+ 70 -244 rlineto
+ -1 2 -8 0 vhcurveto
+ -3 -2 -4 -5 vhcurveto
+ -188 hlineto
+ -3 -4 4 3 1 0 6 1 2 hvcurveto
+ 116 244 rlineto
+ 1 3 3 3 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="Acircumflex">
+ 177 189 729 rmoveto
+ 23 -12 143 131 121 -124 39 26 -157 160 rlineto
+ 214 -920 rmoveto
+ 15 15 2 4 15 hvcurveto
+ 104 30 -1 26 rlineto
+ -1 -14 -15 -2 -14 hhcurveto
+ -27 -24 8 22 -13 hvcurveto
+ -36 60 -27 97 -22 81 -33 120 -45 160 -15 83 rrcurveto
+ -194 -27 hlineto
+ 90 -15 rlineto
+ 9 -2 3 -6 -3 vvcurveto
+ -3 0 -1 -1 -3 vhcurveto
+ -105 -208 -115 -204 -119 -200 3 -10 rcurveline
+ 91 19 117 248 rlineto
+ 4 2 4 4 4 hhcurveto
+ 225 hlineto
+ 3 6 -5 -4 2 hvcurveto
+ 54 -188 rlineto
+ -44 12 13 -42 33 hhcurveto
+ -206 586 rmoveto
+ 3 3 -2 -2 1 hvcurveto
+ 70 -244 rlineto
+ -1 2 -8 0 vhcurveto
+ -3 -2 -4 -5 vhcurveto
+ -188 hlineto
+ -3 -4 4 3 1 0 6 1 2 hvcurveto
+ 116 244 rlineto
+ 1 3 3 3 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="Adieresis">
+ 177 512 813 rmoveto
+ 30 -20 28 -34 -29 -35 -22 -34 -32 26 -26 32 32 26 23 33 2 vhcurveto
+ -202 hmoveto
+ 30 -20 28 -34 -29 -35 -22 -34 -32 26 -26 32 32 26 23 33 2 vhcurveto
+ 262 -823 rmoveto
+ 15 15 2 4 15 hvcurveto
+ 104 30 -1 26 rlineto
+ -1 -14 -15 -2 -14 hhcurveto
+ -27 -24 8 22 -13 hvcurveto
+ -36 60 -27 97 -22 81 -33 120 -45 160 -15 83 rrcurveto
+ -194 -27 hlineto
+ 90 -15 rlineto
+ 9 -2 3 -6 -3 vvcurveto
+ -3 0 -1 -1 -3 vhcurveto
+ -105 -208 -115 -204 -119 -200 3 -10 rcurveline
+ 91 19 117 248 rlineto
+ 4 2 4 4 4 hhcurveto
+ 225 hlineto
+ 3 6 -5 -4 2 hvcurveto
+ 54 -188 rlineto
+ -44 12 13 -42 33 hhcurveto
+ -206 586 rmoveto
+ 3 3 -2 -2 1 hvcurveto
+ 70 -244 rlineto
+ -1 2 -8 0 vhcurveto
+ -3 -2 -4 -5 vhcurveto
+ -188 hlineto
+ -3 -4 4 3 1 0 6 1 2 hvcurveto
+ 116 244 rlineto
+ 1 3 3 3 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="Agrave">
+ 177 222 883 rmoveto
+ 162 -154 18 31 -120 157 -13 2 rlineto
+ 303 -929 rmoveto
+ 15 15 2 4 15 hvcurveto
+ 104 30 -1 26 rlineto
+ -1 -14 -15 -2 -14 hhcurveto
+ -27 -24 8 22 -13 hvcurveto
+ -36 60 -27 97 -22 81 -33 120 -45 160 -15 83 rrcurveto
+ -194 -27 hlineto
+ 90 -15 rlineto
+ 9 -2 3 -6 -3 vvcurveto
+ -3 0 -1 -1 -3 vhcurveto
+ -105 -208 -115 -204 -119 -200 3 -10 rcurveline
+ 91 19 117 248 rlineto
+ 4 2 4 4 4 hhcurveto
+ 225 hlineto
+ 3 6 -5 -4 2 hvcurveto
+ 54 -188 rlineto
+ -44 12 13 -42 33 hhcurveto
+ -206 586 rmoveto
+ 3 3 -2 -2 1 hvcurveto
+ 70 -244 rlineto
+ -1 2 -8 0 vhcurveto
+ -3 -2 -4 -5 vhcurveto
+ -188 hlineto
+ -3 -4 4 3 1 0 6 1 2 hvcurveto
+ 116 244 rlineto
+ 1 3 3 3 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="Aring">
+ 177 572 -10 rmoveto
+ 15 15 2 4 15 hvcurveto
+ 104 30 -1 26 rlineto
+ -1 -14 -15 -2 -14 hhcurveto
+ -27 -24 8 22 -13 hvcurveto
+ -36 60 -27 97 -22 81 -33 120 -45 159 -15 83 rrcurveto
+ 21 18 13 26 30 vvcurveto
+ 54 -43 43 -54 -54 -43 -43 -54 -29 13 -26 20 -18 vhcurveto
+ -67 -27 hlineto
+ 90 -15 rlineto
+ 9 -2 3 -6 -3 vvcurveto
+ -3 0 -1 -1 -3 vhcurveto
+ -105 -208 -115 -204 -119 -200 3 -10 rcurveline
+ 91 19 117 248 rlineto
+ 4 2 4 4 4 hhcurveto
+ 225 hlineto
+ 3 6 -5 -4 2 hvcurveto
+ 54 -188 rlineto
+ -44 12 13 -42 33 hhcurveto
+ -267 763 rmoveto
+ 37 30 30 37 37 30 -30 -37 -37 -30 -30 -37 -37 -30 30 37 vhcurveto
+ 61 -177 rmoveto
+ 3 3 -2 -2 1 hvcurveto
+ 70 -244 rlineto
+ -1 2 -8 0 vhcurveto
+ -3 -2 -4 -5 vhcurveto
+ -188 hlineto
+ -3 -4 4 3 1 0 6 1 2 hvcurveto
+ 116 244 rlineto
+ 1 3 3 3 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="Atilde">
+ 177 350 838 rmoveto
+ -26 12 -31 13 -26 -4 -35 -5 -19 -58 -8 -35 14 -5 rcurveline
+ 12 33 10 12 24 3 17 2 18 -4 15 -7 63 -30 rcurveline
+ 20 -9 22 -6 22 3 32 4 20 56 3 29 -13 5 rcurveline
+ -9 -23 -8 -13 -24 -3 -16 -2 -16 5 -14 6 rrcurveto
+ 175 -827 rmoveto
+ 15 15 2 4 15 hvcurveto
+ 104 30 -1 26 rlineto
+ -1 -14 -15 -2 -14 hhcurveto
+ -27 -24 8 22 -13 hvcurveto
+ -36 60 -27 97 -22 81 -33 120 -45 160 -15 83 rrcurveto
+ -194 -27 hlineto
+ 90 -15 rlineto
+ 9 -2 3 -6 -3 vvcurveto
+ -3 0 -1 -1 -3 vhcurveto
+ -105 -208 -115 -204 -119 -200 3 -10 rcurveline
+ 91 19 117 248 rlineto
+ 4 2 4 4 4 hhcurveto
+ 225 hlineto
+ 3 6 -5 -4 2 hvcurveto
+ 54 -188 rlineto
+ -44 12 13 -42 33 hhcurveto
+ -206 586 rmoveto
+ 3 3 -2 -2 1 hvcurveto
+ 70 -244 rlineto
+ -1 2 -8 0 vhcurveto
+ -3 -2 -4 -5 vhcurveto
+ -188 hlineto
+ -3 -4 4 3 1 0 6 1 2 hvcurveto
+ 116 244 rlineto
+ 1 3 3 3 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="B">
+ 14 335 378 rmoveto
+ 81 34 72 44 97 vvcurveto
+ 109 -116 24 -113 vhcurveto
+ -247 hlineto
+ -7 -7 -1 -17 rlineto
+ 37 -10 46 -7 -34 vvcurveto
+ -530 vlineto
+ -56 -3 16 -20 -30 vhcurveto
+ 1 -10 rlineto
+ 1 131 -2 66 hhcurveto
+ 121 144 48 154 98 -48 52 -146 19 hvcurveto
+ -165 259 rmoveto
+ 21 6 44 -2 23 hhcurveto
+ 85 76 -19 -84 -118 -94 -46 -106 -20 -12 0 10 -2 hvcurveto
+ -53 vmoveto
+ 10 5 21 -2 36 hhcurveto
+ 100 106 -19 -119 -117 -91 -52 -102 -67 -8 4 23 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="C">
+ 88 624 586 rmoveto
+ 85 -52 -76 28 -88 hhcurveto
+ -104 -101 -36 -73 -73 hvcurveto
+ -70 -70 -21 -98 -96 vvcurveto
+ -98 26 -99 70 -70 vhcurveto
+ -57 57 82 -17 79 hhcurveto
+ 87 80 42 49 72 hvcurveto
+ -17 29 rlineto
+ -38 -56 -63 -29 -68 hhcurveto
+ -82 -42 28 55 -55 hvcurveto
+ -33 33 -48 98 92 vvcurveto
+ 152 64 162 182 82 63 -39 -90 34 vhcurveto
+ 14 -1 rlineto
+ endchar
+ </CharString>
+ <CharString name="Ccedilla">
+ 88 285 -112 rmoveto
+ 37 -11 50 -31 -28 -38 -14 -18 -32 -14 -26 -10 -5 -10 rcurveline
+ 6 -15 55 10 70 18 33 44 rlinecurve
+ 26 36 -9 36 -23 28 -19 23 -40 18 -13 5 11 26 rcurveline
+ 83 4 76 40 69 47 -17 29 rcurveline
+ -38 -56 -63 -29 -68 hhcurveto
+ -82 -42 28 55 -55 hvcurveto
+ -33 33 -48 98 92 vvcurveto
+ 152 64 162 182 82 63 -39 -90 34 vhcurveto
+ 14 -1 57 58 rlineto
+ 85 -52 -76 28 -88 hhcurveto
+ -104 -101 -36 -73 -73 hvcurveto
+ -70 -70 -21 -98 -96 vvcurveto
+ -98 26 -99 70 -70 vhcurveto
+ 51 -51 71 -19 71 -3 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="D">
+ 192 295 2 rmoveto
+ 104 131 16 73 67 hvcurveto
+ 77 83 22 84 127 vvcurveto
+ 177 -57 124 -310 vhcurveto
+ -313 hlineto
+ -7 -8 rlineto
+ -19 vlineto
+ 26 -8 47 -6 2 -25 rrcurveto
+ 1 -15 1 -16 -16 vvcurveto
+ -494 vlineto
+ -1 -38 -1 -14 -20 -15 rrcurveto
+ -10 vlineto
+ 106 573 rmoveto
+ 71 4 -10 10 5 vhcurveto
+ 3 6 17 1 43 hhcurveto
+ 131 100 -7 -47 48 hvcurveto
+ 56 -56 17 -97 -61 vvcurveto
+ -168 -65 -169 -270 -27 -39 0 13 -13 vhcurveto
+ -15 15 -2 62 -1 40 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="Delta">
+ 206 46 45 rmoveto
+ 2 -42 rlineto
+ 5 73 74 2 74 hhcurveto
+ 125 124 -6 -8 125 hvcurveto
+ 61 32 1 16 -108 209 -86 219 -74 224 rlinecurve
+ -58 -25 rlineto
+ 199 -621 rmoveto
+ -117 -118 3 -118 hhcurveto
+ -35 -35 0 -1 -35 hvcurveto
+ -3 12 80 169 80 157 95 164 rlinecurve
+ 11 hlineto
+ -1 160 -400 41 -94 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="E">
+ -27 417 384 rmoveto
+ -6 7 rlineto
+ -4 -53 -74 -3 -53 hhcurveto
+ -37 -29 -3 17 hvcurveto
+ 166 vlineto
+ 35 4 37 20 4 vhcurveto
+ 40 hlineto
+ 7 133 -6 -4 69 hvcurveto
+ 4 7 2 50 rlineto
+ 1 -13 -15 0 -18 hhcurveto
+ -1 -71 -101 -5 -70 hhcurveto
+ -148 -1 -7 -7 1 -20 47 -7 23 -12 6 -13 rlinecurve
+ 9 -20 0 -30 -14 vvcurveto
+ -492 vlineto
+ -27 6 -28 20 -11 vhcurveto
+ 388 hlineto
+ 13 53 -5 5 rlineto
+ -14 -164 -23 0 -47 hhcurveto
+ -61 -21 6 26 -14 hvcurveto
+ -14 25 -1 49 38 vvcurveto
+ 139 vlineto
+ 18 71 -3 58 39 40 -3 -3 39 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="Eacute">
+ -27 385 885 rmoveto
+ -47 36 -13 -2 -120 -157 18 -31 rlineto
+ 194 -347 rmoveto
+ -6 7 rlineto
+ -4 -53 -74 -3 -53 hhcurveto
+ -37 -29 -3 17 hvcurveto
+ 166 vlineto
+ 35 4 37 20 4 vhcurveto
+ 40 hlineto
+ 7 133 -6 -4 69 hvcurveto
+ 4 7 2 50 rlineto
+ 1 -13 -15 0 -18 hhcurveto
+ -1 -71 -101 -5 -70 hhcurveto
+ -148 -1 -7 -7 1 -20 47 -7 23 -12 6 -13 rlinecurve
+ 9 -20 0 -30 -14 vvcurveto
+ -492 vlineto
+ -27 6 -28 20 -11 vhcurveto
+ 388 hlineto
+ 13 53 -5 5 rlineto
+ -14 -164 -23 0 -47 hhcurveto
+ -61 -21 6 26 -14 hvcurveto
+ -14 25 -1 49 38 vvcurveto
+ 139 vlineto
+ 18 71 -3 58 39 40 -3 -3 39 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="Ecircumflex">
+ -27 107 732 rmoveto
+ 23 -12 143 131 121 -124 39 26 -157 160 rlineto
+ 141 -529 rmoveto
+ -6 7 rlineto
+ -4 -53 -74 -3 -53 hhcurveto
+ -37 -29 -3 17 hvcurveto
+ 166 vlineto
+ 35 4 37 20 4 vhcurveto
+ 40 hlineto
+ 7 133 -6 -4 69 hvcurveto
+ 4 7 2 50 rlineto
+ 1 -13 -15 0 -18 hhcurveto
+ -1 -71 -101 -5 -70 hhcurveto
+ -148 -1 -7 -7 1 -20 47 -7 23 -12 6 -13 rlinecurve
+ 9 -20 0 -30 -14 vvcurveto
+ -492 vlineto
+ -27 6 -28 20 -11 vhcurveto
+ 388 hlineto
+ 13 53 -5 5 rlineto
+ -14 -164 -23 0 -47 hhcurveto
+ -61 -21 6 26 -14 hvcurveto
+ -14 25 -1 49 38 vvcurveto
+ 139 vlineto
+ 18 71 -3 58 39 40 -3 -3 39 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="Edieresis">
+ -27 430 816 rmoveto
+ 30 -20 28 -34 -29 -35 -22 -34 -32 26 -26 32 32 26 23 33 2 vhcurveto
+ -202 hmoveto
+ 30 -20 28 -34 -29 -35 -22 -34 -32 26 -26 32 32 26 23 33 2 vhcurveto
+ 189 -432 rmoveto
+ -6 7 rlineto
+ -4 -53 -74 -3 -53 hhcurveto
+ -37 -29 -3 17 hvcurveto
+ 166 vlineto
+ 35 4 37 20 4 vhcurveto
+ 40 hlineto
+ 7 133 -6 -4 69 hvcurveto
+ 4 7 2 50 rlineto
+ 1 -13 -15 0 -18 hhcurveto
+ -1 -71 -101 -5 -70 hhcurveto
+ -148 -1 -7 -7 1 -20 47 -7 23 -12 6 -13 rlinecurve
+ 9 -20 0 -30 -14 vvcurveto
+ -492 vlineto
+ -27 6 -28 20 -11 vhcurveto
+ 388 hlineto
+ 13 53 -5 5 rlineto
+ -14 -164 -23 0 -47 hhcurveto
+ -61 -21 6 26 -14 hvcurveto
+ -14 25 -1 49 38 vvcurveto
+ 139 vlineto
+ 18 71 -3 58 39 40 -3 -3 39 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="Egrave">
+ -27 140 886 rmoveto
+ 162 -154 18 31 -120 157 -13 2 rlineto
+ 230 -538 rmoveto
+ -6 7 rlineto
+ -4 -53 -74 -3 -53 hhcurveto
+ -37 -29 -3 17 hvcurveto
+ 166 vlineto
+ 35 4 37 20 4 vhcurveto
+ 40 hlineto
+ 7 133 -6 -4 69 hvcurveto
+ 4 7 2 50 rlineto
+ 1 -13 -15 0 -18 hhcurveto
+ -1 -71 -101 -5 -70 hhcurveto
+ -148 -1 -7 -7 1 -20 47 -7 23 -12 6 -13 rlinecurve
+ 9 -20 0 -30 -14 vvcurveto
+ -492 vlineto
+ -27 6 -28 20 -11 vhcurveto
+ 388 hlineto
+ 13 53 -5 5 rlineto
+ -14 -164 -23 0 -47 hhcurveto
+ -61 -21 6 26 -14 hvcurveto
+ -14 25 -1 49 38 vvcurveto
+ 139 vlineto
+ 18 71 -3 58 39 40 -3 -3 39 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="Eth">
+ 201 304 2 rmoveto
+ 104 131 16 73 67 hvcurveto
+ 77 83 22 84 127 vvcurveto
+ 177 -57 124 -310 vhcurveto
+ -313 hlineto
+ -7 -8 rlineto
+ -19 vlineto
+ 26 -8 47 -6 2 -25 rrcurveto
+ 1 -15 1 -16 -16 vvcurveto
+ -193 -69 vlineto
+ -7 -40 rlineto
+ 76 -261 hlineto
+ -1 -38 -1 -14 -20 -15 rrcurveto
+ -10 vlineto
+ 247 378 rmoveto
+ -141 195 hlineto
+ 71 4 -10 10 5 vhcurveto
+ 3 6 17 1 43 hhcurveto
+ 131 100 -7 -47 48 hvcurveto
+ 56 -56 17 -97 -61 vvcurveto
+ -168 -65 -169 -270 -27 -39 0 13 -13 vhcurveto
+ -15 15 -2 62 -1 40 rrcurveto
+ 170 135 vlineto
+ endchar
+ </CharString>
+ <CharString name="F">
+ -104 87 360 rmoveto
+ -121 -3 -120 -4 -121 vhcurveto
+ 92 15 rlineto
+ -4 101 -1 115 101 vvcurveto
+ 7 7 4 5 71 88 -1 -4 70 vhcurveto
+ 5 5 1 49 rlineto
+ -3 -72 -90 -9 -73 hhcurveto
+ -9 -4 8 5 211 3 10 4 14 hvcurveto
+ 17 5 14 6 13 hhcurveto
+ 72 72 -15 -5 72 hvcurveto
+ 8 8 rlineto
+ 53 vlineto
+ -2 -73 -206 0 -142 hhcurveto
+ -7 -7 rlineto
+ -21 vlineto
+ 55 -13 rlineto
+ 40 -10 -7 -73 -43 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="G">
+ 116 325 270 rmoveto
+ 6 -5 54 -2 64 -3 44 -4 rlinecurve
+ 38 -4 -10 -98 -20 vvcurveto
+ -30 6 -54 -26 -5 vhcurveto
+ -7 -31 -31 -3 -32 hhcurveto
+ -196 -82 159 146 152 55 158 187 81 59 -32 -88 44 hvcurveto
+ 12 -1 58 57 rlineto
+ 81 -53 -69 32 -87 hhcurveto
+ -105 -105 -31 -75 -75 hvcurveto
+ -70 -70 -22 -101 -98 vvcurveto
+ -95 25 -98 68 -68 vhcurveto
+ -54 54 75 -26 76 hhcurveto
+ 73 108 27 23 88 hvcurveto
+ 1 -3 182 -2 91 vhcurveto
+ -276 -11 rlineto
+ endchar
+ </CharString>
+ <CharString name="Gamma">
+ -53 464 697 rmoveto
+ -3 -60 -61 -1 -61 hhcurveto
+ -237 hlineto
+ -3 -20 26 -22 rlineto
+ 21 -18 -5 -50 -30 vvcurveto
+ -92 -4 -274 -3 -183 vhcurveto
+ 10 -11 77 23 rlineto
+ -3 178 0 178 177 vvcurveto
+ 37 -2 61 38 3 vhcurveto
+ 1 20 21 1 20 hhcurveto
+ 59 95 1 -49 15 hvcurveto
+ 25 -82 rlineto
+ 25 hlineto
+ endchar
+ </CharString>
+ <CharString name="H">
+ 161 699 32 rmoveto
+ -7 -70 11 36 hvcurveto
+ -3 81 -1 81 81 vvcurveto
+ 121 2 120 9 121 vhcurveto
+ -5 6 -88 -17 rlineto
+ -86 3 -104 -86 vvcurveto
+ -6 -1 -6 -11 vhcurveto
+ -346 hlineto
+ -10 -2 7 5 92 1 123 12 68 hvcurveto
+ -5 5 rlineto
+ -162 hlineto
+ -7 -7 1 -19 57 -20 14 4 2 -27 rlinecurve
+ 6 -83 0 -83 -83 vvcurveto
+ -122 0 -129 -10 -113 vhcurveto
+ 6 -5 92 28 rlineto
+ -6 50 0 44 58 54 1 57 45 vvcurveto
+ 7 6 5 7 vhcurveto
+ 343 hlineto
+ 9 3 -7 -5 -97 -3 -119 -2 -97 hvcurveto
+ 11 -21 rlineto
+ 149 hlineto
+ 6 14 rlineto
+ endchar
+ </CharString>
+ <CharString name="I">
+ -265 275 23 rmoveto
+ -1 -43 11 6 -21 hvcurveto
+ -42 11 11 75 -1 43 rrcurveto
+ -1 61 -1 62 67 vvcurveto
+ 78 -6 119 9 59 vhcurveto
+ 1 12 8 11 13 3 67 15 rcurveline
+ 21 vlineto
+ -6 6 rlineto
+ -250 hlineto
+ -7 -6 rlineto
+ -22 vlineto
+ 80 -18 7 5 2 -30 rrcurveto
+ 3 -38 0 -38 -39 vvcurveto
+ -363 vlineto
+ -4 -83 13 -7 -98 -19 rrcurveto
+ -26 265 vlineto
+ endchar
+ </CharString>
+ <CharString name="Iacute">
+ -265 252 885 rmoveto
+ -47 36 -13 -2 -120 -157 18 -31 rlineto
+ 185 -708 rmoveto
+ -1 -43 11 6 -21 hvcurveto
+ -42 11 11 75 -1 43 rrcurveto
+ -1 61 -1 62 67 vvcurveto
+ 78 -6 119 9 59 vhcurveto
+ 1 12 8 11 13 3 67 15 rcurveline
+ 21 vlineto
+ -6 6 rlineto
+ -250 hlineto
+ -7 -6 rlineto
+ -22 vlineto
+ 80 -18 7 5 2 -30 rrcurveto
+ 3 -38 0 -38 -39 vvcurveto
+ -363 vlineto
+ -4 -83 13 -7 -98 -19 rrcurveto
+ -26 265 vlineto
+ endchar
+ </CharString>
+ <CharString name="Icircumflex">
+ -265 -26 732 rmoveto
+ 23 -12 143 131 121 -124 39 26 -157 160 rlineto
+ 132 -890 rmoveto
+ -1 -43 11 6 -21 hvcurveto
+ -42 11 11 75 -1 43 rrcurveto
+ -1 61 -1 62 67 vvcurveto
+ 78 -6 119 9 59 vhcurveto
+ 1 12 8 11 13 3 67 15 rcurveline
+ 21 vlineto
+ -6 6 rlineto
+ -250 hlineto
+ -7 -6 rlineto
+ -22 vlineto
+ 80 -18 7 5 2 -30 rrcurveto
+ 3 -38 0 -38 -39 vvcurveto
+ -363 vlineto
+ -4 -83 13 -7 -98 -19 rrcurveto
+ -26 265 vlineto
+ endchar
+ </CharString>
+ <CharString name="Idieresis">
+ -265 297 816 rmoveto
+ 30 -20 28 -34 -29 -35 -22 -34 -32 26 -26 32 32 26 23 33 2 vhcurveto
+ -202 hmoveto
+ 30 -20 28 -34 -29 -35 -22 -34 -32 26 -26 32 32 26 23 33 2 vhcurveto
+ 180 -793 rmoveto
+ -1 -43 11 6 -21 hvcurveto
+ -42 11 11 75 -1 43 rrcurveto
+ -1 61 -1 62 67 vvcurveto
+ 78 -6 119 9 59 vhcurveto
+ 1 12 8 11 13 3 67 15 rcurveline
+ 21 vlineto
+ -6 6 rlineto
+ -250 hlineto
+ -7 -6 rlineto
+ -22 vlineto
+ 80 -18 7 5 2 -30 rrcurveto
+ 3 -38 0 -38 -39 vvcurveto
+ -363 vlineto
+ -4 -83 13 -7 -98 -19 rrcurveto
+ -26 265 vlineto
+ endchar
+ </CharString>
+ <CharString name="Igrave">
+ -265 7 886 rmoveto
+ 162 -154 18 31 -120 157 -13 2 rlineto
+ 221 -899 rmoveto
+ -1 -43 11 6 -21 hvcurveto
+ -42 11 11 75 -1 43 rrcurveto
+ -1 61 -1 62 67 vvcurveto
+ 78 -6 119 9 59 vhcurveto
+ 1 12 8 11 13 3 67 15 rcurveline
+ 21 vlineto
+ -6 6 rlineto
+ -250 hlineto
+ -7 -6 rlineto
+ -22 vlineto
+ 80 -18 7 5 2 -30 rrcurveto
+ 3 -38 0 -38 -39 vvcurveto
+ -363 vlineto
+ -4 -83 13 -7 -98 -19 rrcurveto
+ -26 265 vlineto
+ endchar
+ </CharString>
+ <CharString name="J">
+ -280 175 608 rmoveto
+ 18 9 17 12 3 vhcurveto
+ 68 14 2 24 -7 6 rlineto
+ -250 hlineto
+ -7 -6 rlineto
+ -21 vlineto
+ 72 -18 rlineto
+ 12 -3 4 -23 -11 vvcurveto
+ -512 vlineto
+ -202 -47 -61 -78 -49 vhcurveto
+ 14 -18 rlineto
+ 134 69 62 101 155 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="K">
+ 48 178 319 rmoveto
+ 108 -109 112 -105 105 -112 85 31 rcurveline
+ 1 11 -61 54 -165 164 -107 107 rlinecurve
+ -4 4 -1 2 3 vvcurveto
+ 3 5 5 3 3 vhcurveto
+ 291 294 1 9 rlineto
+ -90 hlineto
+ -287 -326 -8 1 rlineto
+ 202 4 83 11 33 vhcurveto
+ -7 7 rlineto
+ -158 hlineto
+ -8 -7 -2 -17 rlineto
+ 6 60 -16 -17 9 hvcurveto
+ 4 -10 1 -11 -10 vvcurveto
+ -594 vlineto
+ 8 -5 81 29 rlineto
+ -6 97 0 98 98 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="L">
+ -51 482 58 rmoveto
+ -1 -6 -182 -14 -104 hhcurveto
+ -5 -7 7 6 -1 hvcurveto
+ -4 108 -3 116 113 vvcurveto
+ 80 2 78 4 73 vhcurveto
+ 1 11 5 12 12 2 rrcurveto
+ 5 21 43 9 1 hhcurveto
+ 21 vlineto
+ -6 6 rlineto
+ -237 hlineto
+ -7 -7 -1 -17 rlineto
+ 1 37 -8 -4 20 hvcurveto
+ 15 -3 6 -16 -14 vvcurveto
+ -478 vlineto
+ -52 -6 -53 -16 -22 vhcurveto
+ -14 vlineto
+ 138 201 0 -7 74 hvcurveto
+ 14 53 rlineto
+ endchar
+ </CharString>
+ <CharString name="Lambda">
+ 203 368 673 rmoveto
+ -115 -227 -123 -222 -127 -220 13 -10 rcurveline
+ 27 4 26 9 25 10 28 66 146 294 95 188 rrcurveto
+ 12 hlineto
+ 63 -188 59 -190 68 -186 23 -8 rcurveline
+ 53 10 52 14 52 16 1 22 rcurveline
+ -67 -3 -13 -1 -14 8 -5 12 rlinecurve
+ -96 200 -63 212 -54 215 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="M">
+ 417 475 147 rmoveto
+ -4 -2 -6 -5 -4 hhcurveto
+ -4 -5 10 4 -2 hvcurveto
+ -83 177 -94 200 -55 161 rrcurveto
+ -176 hlineto
+ -7 -7 -2 -22 68 -19 rlineto
+ 18 -5 10 -16 -18 vvcurveto
+ -4 0 -4 -1 -4 vhcurveto
+ -27 -198 -35 -197 -38 -196 7 -3 rcurveline
+ 75 26 rlineto
+ 90 7 34 435 21 hhcurveto
+ 4 4 -5 -5 3 hvcurveto
+ 63 -128 94 -229 75 -180 rrcurveto
+ 30 hlineto
+ 286 554 rlineto
+ 5 3 5 3 3 hhcurveto
+ 5 3 -7 -8 hvcurveto
+ 2 -66 8 -246 -25 vvcurveto
+ -182 vlineto
+ -26 33 -9 30 40 52 18 16 44 vhcurveto
+ 24 vlineto
+ -2 -18 -25 -4 -13 hhcurveto
+ -33 -22 27 29 -3 hvcurveto
+ -17 164 -1 153 164 vvcurveto
+ 44 -2 37 27 14 vhcurveto
+ 12 -103 vlineto
+ endchar
+ </CharString>
+ <CharString name="N">
+ 187 577 678 rmoveto
+ 21 -304 3 -99 -102 vvcurveto
+ -2 -1 -6 -5 -4 -4 5 3 -3 vhcurveto
+ -117 126 -162 215 -133 176 rrcurveto
+ -162 hlineto
+ -8 -7 4 -27 rlineto
+ 95 -23 -10 -4 -21 -43 1 -43 -43 vvcurveto
+ -158 -5 -159 -8 -158 vhcurveto
+ 9 -9 70 30 rlineto
+ -11 174 -13 219 129 vvcurveto
+ 5 0 12 7 4 4 -5 -4 3 vhcurveto
+ 49 -56 83 -95 102 -126 159 -198 rcurveline
+ 30 -38 14 -16 23 -26 rrcurveto
+ 36 hlineto
+ 227 2 232 13 227 vhcurveto
+ -6 8 rlineto
+ endchar
+ </CharString>
+ <CharString name="Ntilde">
+ 187 393 841 rmoveto
+ -26 12 -31 13 -26 -4 -35 -5 -19 -58 -8 -35 14 -5 rcurveline
+ 12 33 10 12 24 3 17 2 18 -4 15 -7 63 -30 rcurveline
+ 20 -9 22 -6 22 3 32 4 20 56 3 29 -13 5 rcurveline
+ -9 -23 -8 -13 -24 -3 -16 -2 -16 5 -14 6 rrcurveto
+ 137 -142 rmoveto
+ 21 -304 3 -99 -102 vvcurveto
+ -2 -1 -6 -5 -4 -4 5 3 -3 vhcurveto
+ -117 126 -162 215 -133 176 rrcurveto
+ -162 hlineto
+ -8 -7 4 -27 rlineto
+ 95 -23 -10 -4 -21 -43 1 -43 -43 vvcurveto
+ -158 -5 -159 -8 -158 vhcurveto
+ 9 -9 70 30 rlineto
+ -11 174 -13 219 129 vvcurveto
+ 5 0 12 7 4 4 -5 -4 3 vhcurveto
+ 49 -56 83 -95 102 -126 159 -198 rcurveline
+ 30 -38 14 -16 23 -26 rrcurveto
+ 36 hlineto
+ 227 2 232 13 227 vhcurveto
+ -6 8 rlineto
+ endchar
+ </CharString>
+ <CharString name="O">
+ 192 320 -18 rmoveto
+ 157 129 72 98 48 hvcurveto
+ 40 81 1 65 66 vvcurveto
+ 93 -22 104 -62 63 vhcurveto
+ 54 -54 -79 22 -75 hhcurveto
+ -93 -105 -20 -68 -63 hvcurveto
+ -74 -80 -27 -85 -129 vvcurveto
+ -165 74 -171 205 vhcurveto
+ 51 678 rmoveto
+ 169 61 -182 -142 -150 -62 -163 -166 -39 -61 10 67 -60 hvcurveto
+ -62 68 -17 86 94 vvcurveto
+ 152 64 160 173 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="OE">
+ 452 896 384 rmoveto
+ -6 7 rlineto
+ -4 -53 -74 -3 -53 hhcurveto
+ -37 -29 -3 17 hvcurveto
+ 166 vlineto
+ 35 4 37 20 4 vhcurveto
+ 40 hlineto
+ 7 133 -6 -4 69 hvcurveto
+ 4 7 2 50 rlineto
+ 1 -13 -15 0 -18 hhcurveto
+ -1 -71 -101 -5 -70 hhcurveto
+ -117 -1 rlineto
+ 13 -37 -39 6 -39 hhcurveto
+ -93 -105 -20 -68 -63 hvcurveto
+ -74 -80 -27 -85 -129 vvcurveto
+ -165 74 -171 205 47 45 6 12 40 vhcurveto
+ 528 hlineto
+ 13 53 -5 5 rlineto
+ -14 -164 -23 0 -47 hhcurveto
+ -61 -21 6 26 -14 hvcurveto
+ -14 25 -1 49 38 vvcurveto
+ 139 vlineto
+ 18 71 -3 58 39 40 -3 -3 39 vhcurveto
+ -756 12 rmoveto
+ 152 64 160 173 99 62 -62 -80 34 vhcurveto
+ -363 vlineto
+ -76 -34 -62 -56 -97 hhcurveto
+ -39 -61 10 67 -60 hvcurveto
+ -62 68 -17 86 94 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="Oacute">
+ 209 557 918 rmoveto
+ -47 36 -13 -2 -120 -157 18 -31 rlineto
+ -75 -782 rmoveto
+ 157 129 72 98 48 hvcurveto
+ 40 81 1 65 66 vvcurveto
+ 93 -22 104 -62 63 vhcurveto
+ 54 -54 -79 22 -75 hhcurveto
+ -93 -105 -20 -68 -63 hvcurveto
+ -74 -80 -27 -85 -129 vvcurveto
+ -165 74 -171 205 vhcurveto
+ 51 678 rmoveto
+ 169 61 -182 -142 -150 -62 -163 -166 -39 -61 10 67 -60 hvcurveto
+ -62 68 -17 86 94 vvcurveto
+ 152 64 160 173 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="Ocircumflex">
+ 192 218 742 rmoveto
+ 23 -12 143 131 121 -124 39 26 -157 160 rlineto
+ -67 -941 rmoveto
+ 157 129 72 98 48 hvcurveto
+ 40 81 1 65 66 vvcurveto
+ 93 -22 104 -62 63 vhcurveto
+ 54 -54 -79 22 -75 hhcurveto
+ -93 -105 -20 -68 -63 hvcurveto
+ -74 -80 -27 -85 -129 vvcurveto
+ -165 74 -171 205 vhcurveto
+ 51 678 rmoveto
+ 169 61 -182 -142 -150 -62 -163 -166 -39 -61 10 67 -60 hvcurveto
+ -62 68 -17 86 94 vvcurveto
+ 152 64 160 173 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="Odieresis">
+ 192 541 826 rmoveto
+ 30 -20 28 -34 -29 -35 -22 -34 -32 26 -26 32 32 26 23 33 2 vhcurveto
+ -202 hmoveto
+ 30 -20 28 -34 -29 -35 -22 -34 -32 26 -26 32 32 26 23 33 2 vhcurveto
+ -19 -844 rmoveto
+ 157 129 72 98 48 hvcurveto
+ 40 81 1 65 66 vvcurveto
+ 93 -22 104 -62 63 vhcurveto
+ 54 -54 -79 22 -75 hhcurveto
+ -93 -105 -20 -68 -63 hvcurveto
+ -74 -80 -27 -85 -129 vvcurveto
+ -165 74 -171 205 vhcurveto
+ 51 678 rmoveto
+ 169 61 -182 -142 -150 -62 -163 -166 -39 -61 10 67 -60 hvcurveto
+ -62 68 -17 86 94 vvcurveto
+ 152 64 160 173 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="Ograve">
+ 192 251 896 rmoveto
+ 162 -154 18 31 -120 157 -13 2 rlineto
+ 22 -950 rmoveto
+ 157 129 72 98 48 hvcurveto
+ 40 81 1 65 66 vvcurveto
+ 93 -22 104 -62 63 vhcurveto
+ 54 -54 -79 22 -75 hhcurveto
+ -93 -105 -20 -68 -63 hvcurveto
+ -74 -80 -27 -85 -129 vvcurveto
+ -165 74 -171 205 vhcurveto
+ 51 678 rmoveto
+ 169 61 -182 -142 -150 -62 -163 -166 -39 -61 10 67 -60 hvcurveto
+ -62 68 -17 86 94 vvcurveto
+ 152 64 160 173 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="Omega">
+ 360 853 60 rmoveto
+ -70 -96 -5 -4 -85 hvcurveto
+ 12 vlineto
+ 135 55 50 138 129 vvcurveto
+ 153 -69 151 -237 -99 -99 -23 -71 -71 vhcurveto
+ -68 -68 -28 -93 -96 vvcurveto
+ -113 30 -97 110 -59 vhcurveto
+ -6 -15 -53 5 -76 3 -61 3 rlinecurve
+ -17 -61 rlineto
+ 3 40 40 1 41 hhcurveto
+ 69 69 -4 -6 70 hvcurveto
+ 21 55 rlineto
+ -144 28 -45 130 118 vvcurveto
+ 160 68 165 190 167 68 -149 -137 -138 -43 -137 -154 -36 vhcurveto
+ -9 -58 rlineto
+ 4 56 56 2 56 hhcurveto
+ 59 60 -2 -5 59 hvcurveto
+ 25 53 rlineto
+ endchar
+ </CharString>
+ <CharString name="Oslash">
+ 192 320 -18 rmoveto
+ 157 129 72 98 48 hvcurveto
+ 40 81 1 65 66 vvcurveto
+ 93 -22 104 -62 63 vhcurveto
+ -21 21 -25 16 -26 12 43 100 rcurveline
+ -5 11 -22 5 -11 -2 -44 -100 rlineto
+ 9 -31 -33 4 -33 hhcurveto
+ -93 -105 -20 -68 -63 hvcurveto
+ -74 -80 -27 -85 -129 vvcurveto
+ -129 45 -133 118 -51 vhcurveto
+ -46 -106 3 -14 32 -8 50 114 rlineto
+ -6 23 26 -3 28 hhcurveto
+ 51 678 rmoveto
+ 41 35 -11 -18 29 hvcurveto
+ -240 -554 -8 7 -7 8 -8 8 rlinecurve
+ -62 68 -17 86 94 vvcurveto
+ 152 64 160 173 vhcurveto
+ 230 -324 rmoveto
+ -150 -62 -163 -166 -27 -37 5 24 -40 vhcurveto
+ 240 553 rlineto
+ 66 -65 26 -111 -93 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="Otilde">
+ 192 379 851 rmoveto
+ -26 12 -31 13 -26 -4 -35 -5 -19 -58 -8 -35 14 -5 rcurveline
+ 12 33 10 12 24 3 17 2 18 -4 15 -7 63 -30 rcurveline
+ 20 -9 22 -6 22 3 32 4 20 56 3 29 -13 5 rcurveline
+ -9 -23 -8 -13 -24 -3 -16 -2 -16 5 -14 6 rrcurveto
+ -106 -848 rmoveto
+ 157 129 72 98 48 hvcurveto
+ 40 81 1 65 66 vvcurveto
+ 93 -22 104 -62 63 vhcurveto
+ 54 -54 -79 22 -75 hhcurveto
+ -93 -105 -20 -68 -63 hvcurveto
+ -74 -80 -27 -85 -129 vvcurveto
+ -165 74 -171 205 vhcurveto
+ 51 678 rmoveto
+ 169 61 -182 -142 -150 -62 -163 -166 -39 -61 10 67 -60 hvcurveto
+ -62 68 -17 86 94 vvcurveto
+ 152 64 160 173 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="P">
+ -18 172 22 rmoveto
+ -1 101 -6 126 25 vvcurveto
+ 19 65 -2 29 2 vhcurveto
+ 65 5 73 15 44 45 rrcurveto
+ 42 42 22 55 59 vvcurveto
+ 106 -67 59 -164 vhcurveto
+ -257 hlineto
+ -7 -7 rlineto
+ -18 vlineto
+ 38 -5 33 -9 3 -40 rrcurveto
+ 3 -59 2 -59 -59 vvcurveto
+ -141 -5 -141 -2 -140 vhcurveto
+ 7 -7 rlineto
+ 147 646 rmoveto
+ 92 81 -30 -104 -111 -94 -66 -139 -4 -7 3 9 87 2 113 4 88 hvcurveto
+ 5 2 6 7 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="Phi">
+ 187 234 657 rmoveto
+ 63 -9 rlineto
+ 13 -2 10 -12 -14 vvcurveto
+ -12 vlineto
+ -8 -7 -82 -2 -81 -29 -57 -58 rlinecurve
+ -47 -48 -17 -67 -65 vvcurveto
+ -173 141 -71 144 -2 vhcurveto
+ 7 -6 -2 -16 -6 -22 -16 -4 rlinecurve
+ -62 -15 rlineto
+ -21 268 24 vlineto
+ -59 12 -21 4 -13 18 -3 20 rlinecurve
+ 8 6 72 3 92 27 52 52 rlinecurve
+ 53 53 20 77 75 vvcurveto
+ 130 -77 98 -213 vhcurveto
+ -7 7 rlineto
+ 13 vlineto
+ 14 9 14 15 2 vhcurveto
+ 63 10 rlineto
+ 25 vlineto
+ -259 -2 rlineto
+ 179 -111 rmoveto
+ 109 -2 89 -48 -171 vvcurveto
+ -119 -60 -116 -139 -3 vhcurveto
+ -6 8 rlineto
+ 443 vlineto
+ -93 -451 rmoveto
+ -126 3 -67 121 109 vvcurveto
+ 116 71 105 122 5 vhcurveto
+ 7 -8 rlineto
+ -444 vlineto
+ endchar
+ </CharString>
+ <CharString name="Pi">
+ 123 668 686 rmoveto
+ -2 -81 -119 -3 -44 hhcurveto
+ -198 hlineto
+ -75 -75 4 5 -75 hvcurveto
+ -30 vlineto
+ 57 -17 9 -3 9 -8 rrcurveto
+ 12 -12 1 -56 -30 vvcurveto
+ -73 vlineto
+ -154 -1 -152 -7 -153 vhcurveto
+ 7 -6 85 19 rlineto
+ -2 103 -3 122 82 vvcurveto
+ 102 0 101 7 101 vhcurveto
+ 8 8 6 6 vhcurveto
+ 289 hlineto
+ 2 11 -3 -10 hvcurveto
+ 1 -108 1 -121 -108 vvcurveto
+ -98 0 -97 -3 -98 vhcurveto
+ 14 -11 80 22 rlineto
+ -10 135 -2 134 135 vvcurveto
+ 101 2 115 5 7 vhcurveto
+ 4 3 4 2 5 1 76 17 rcurveline
+ endchar
+ </CharString>
+ <CharString name="Psi">
+ 191 443 251 rmoveto
+ 117 2 74 32 31 203 16 90 1 55 44 28 -3 18 rcurveline
+ -35 -4 -35 -8 -34 -12 -12 -43 -1 -45 -6 -44 -18 -127 -29 -114 -112 -6 -7 6 rcurveline
+ -2 58 -1 59 59 vvcurveto
+ 75 6 74 7 75 vhcurveto
+ -4 8 -86 -23 rlineto
+ 6 -82 0 -120 -100 vvcurveto
+ -83 vlineto
+ -6 -7 rlineto
+ -150 8 -18 180 132 vvcurveto
+ 58 -7 41 -36 -12 -20 0 -2 -3 vhcurveto
+ -108 -36 7 -22 63 10 rlineto
+ 2 hlineto
+ 67 -47 -105 -167 49 hvcurveto
+ -90 23 71 -34 119 hhcurveto
+ 6 -6 rlineto
+ -155 vlineto
+ -9 -7 -36 -22 -4 vhcurveto
+ -68 -12 rlineto
+ -27 266 27 vlineto
+ -57 12 rlineto
+ -22 5 -11 21 22 vvcurveto
+ -2 158 rlineto
+ endchar
+ </CharString>
+ <CharString name="Q">
+ 195 722 -174 rmoveto
+ -6 -23 -48 -9 -16 hhcurveto
+ -89 -42 46 21 -15 hvcurveto
+ -20 26 -26 49 -16 30 4 10 rcurveline
+ 63 15 70 30 45 49 42 46 11 33 15 44 rrcurveto
+ 13 41 6 18 97 vvcurveto
+ 83 -20 110 -63 63 vhcurveto
+ 58 -58 -78 18 -77 hhcurveto
+ -95 -95 -19 -70 -68 hvcurveto
+ -74 -76 -27 -95 -138 vvcurveto
+ -90 29 -90 56 -63 vhcurveto
+ -55 49 77 -18 69 hhcurveto
+ -101 62 75 -118 116 hhcurveto
+ 51 65 25 16 39 hvcurveto
+ -364 216 rmoveto
+ -53 -55 30 40 -38 hvcurveto
+ -62 64 -23 89 89 vvcurveto
+ 147 50 179 192 151 74 -165 -157 -140 -50 -176 -186 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="R">
+ 3 275 331 rmoveto
+ 119 13 96 56 139 vvcurveto
+ 93 -81 47 -122 vhcurveto
+ -272 hlineto
+ -6 -6 -1 -17 rlineto
+ 9 68 -13 -32 hvcurveto
+ -57 3 -100 -15 vvcurveto
+ -145 -1 -146 -8 -145 vhcurveto
+ 11 -9 83 29 rlineto
+ -5 96 0 97 96 vvcurveto
+ 6 9 -4 -5 5 hvcurveto
+ 29 -29 127 -163 93 -119 99 26 rcurveline
+ 9 vlineto
+ -263 296 rlineto
+ -106 47 rmoveto
+ 5 4 175 2 64 vhcurveto
+ 19 1 3 7 8 hhcurveto
+ 40 hlineto
+ 78 89 -21 -96 -119 -106 -49 -110 -7 -2 9 6 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="S">
+ -61 451 606 rmoveto
+ 83 -44 -60 13 -73 hhcurveto
+ -109 -103 -65 -125 -98 62 -48 121 -52 hvcurveto
+ 60 -26 61 -54 -56 vvcurveto
+ -84 -65 -63 -78 -71 -41 51 70 -21 vhcurveto
+ -17 1 -57 -66 rlineto
+ -73 28 68 -29 69 hhcurveto
+ 127 146 92 132 80 -54 54 -105 46 hvcurveto
+ -78 34 -75 46 78 vvcurveto
+ 65 47 53 64 68 37 -46 -66 17 vhcurveto
+ 13 -3 rlineto
+ endchar
+ </CharString>
+ <CharString name="Sigma">
+ 26 299 362 rmoveto
+ 4 7 7 9 6 vvcurveto
+ 6 -2 5 -3 5 vhcurveto
+ -137 222 11 13 rlineto
+ 331 hlineto
+ 22 49 -4 11 rlineto
+ -5 -102 -102 -3 -102 hhcurveto
+ -36 -36 0 1 -36 hvcurveto
+ -68 -47 152 -225 14 -20 14 -24 8 -22 rlinecurve
+ -10 -25 -25 -34 -19 -26 -163 -216 rcurveline
+ -4 -19 -5 -27 -1 vvcurveto
+ 90 90 7 90 hhcurveto
+ 89 88 -1 -3 89 hvcurveto
+ 15 89 -3 10 rlineto
+ -8 -53 -54 -2 -54 hhcurveto
+ -89 -88 0 2 -89 hvcurveto
+ -5 10 rlineto
+ endchar
+ </CharString>
+ <CharString name="T">
+ 6 543 696 rmoveto
+ -4 -88 -99 -6 -75 hhcurveto
+ -177 0 8 3 -95 hvcurveto
+ -7 -7 rlineto
+ -48 vlineto
+ 8 -7 rlineto
+ 4 111 79 3 24 hhcurveto
+ 5 4 -2 -4 hvcurveto
+ 1 -30 1 -144 -82 vvcurveto
+ -127 -5 -127 -8 -127 vhcurveto
+ 9 -9 100 27 rlineto
+ -7 121 -6 179 121 vvcurveto
+ 121 -1 85 14 21 21 -2 -8 168 vhcurveto
+ 8 7 rlineto
+ 48 vlineto
+ endchar
+ </CharString>
+ <CharString name="Theta">
+ 233 348 -12 rmoveto
+ 196 194 83 310 87 -20 93 -63 63 hvcurveto
+ 57 -57 -84 20 -79 hhcurveto
+ -152 -139 -58 -100 -58 hvcurveto
+ -43 -74 -2 -42 -96 vvcurveto
+ -99 26 -102 71 -71 vhcurveto
+ -55 54 80 -16 76 hhcurveto
+ 43 43 rmoveto
+ -183 -74 166 148 159 53 159 194 68 69 -18 -49 49 hvcurveto
+ 57 -57 20 -82 -80 vvcurveto
+ -91 -6 -119 -59 -59 vhcurveto
+ -50 -50 -53 -27 -85 hhcurveto
+ -171 210 rmoveto
+ 27 65 hlineto
+ 14 15 2 10 vhcurveto
+ 2 46 51 2 40 35 34 -4 35 hhcurveto
+ 22 -3 -42 -22 hvcurveto
+ -5 -1 -4 -5 vvcurveto
+ 30 -1 rlineto
+ 214 -28 vlineto
+ 2 -51 rlineto
+ -31 1 -83 9 -40 hhcurveto
+ -53 -114 -5 21 hvcurveto
+ 19 -4 19 19 vvcurveto
+ -25 hlineto
+ 3 -108 rlineto
+ endchar
+ </CharString>
+ <CharString name="Thorn">
+ -18 168 679 rmoveto
+ -151 hlineto
+ -7 -7 rlineto
+ -18 vlineto
+ 38 -5 33 -9 3 -40 rrcurveto
+ 3 -59 2 -59 -59 vvcurveto
+ -141 -5 -141 -2 -140 vhcurveto
+ 7 -7 83 28 rlineto
+ -1 101 -6 22 24 vvcurveto
+ 19 65 -2 29 2 vhcurveto
+ 65 5 73 15 44 45 rrcurveto
+ 42 42 22 55 59 vvcurveto
+ 106 -67 59 -164 vhcurveto
+ -105 hlineto
+ 1 27 1 53 4 19 rrcurveto
+ 61 -138 rmoveto
+ 92 81 -30 -104 -111 -96 -66 -139 -4 -7 3 9 87 2 113 4 88 hvcurveto
+ 5 2 6 7 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="U">
+ 167 183 674 rmoveto
+ -7 6 rlineto
+ -169 hlineto
+ -8 -7 2 -20 rlineto
+ 14 74 -12 -40 hvcurveto
+ -59 vlineto
+ -78 -2 -79 -77 vvcurveto
+ -61 1 -74 7 -46 vhcurveto
+ -59 12 33 -77 139 hhcurveto
+ 83 80 34 45 70 hvcurveto
+ 8 -6 rlineto
+ -30 -6 -39 39 31 71 21 16 51 vhcurveto
+ 5 7 -4 17 rlineto
+ -2 -20 -18 -6 -20 hhcurveto
+ -48 0 72 82 162 1 209 15 114 hvcurveto
+ -6 7 -88 -35 rlineto
+ -2 -182 -2 -183 -183 vvcurveto
+ -32 -54 -60 -27 -62 hhcurveto
+ -97 -79 49 168 hvcurveto
+ 8 273 rlineto
+ 17 5 101 3 14 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="Uacute">
+ 167 482 885 rmoveto
+ -47 36 -13 -2 -120 -157 18 -31 rlineto
+ -137 -57 rmoveto
+ -7 6 rlineto
+ -169 hlineto
+ -8 -7 2 -20 rlineto
+ 14 74 -12 -40 hvcurveto
+ -59 vlineto
+ -78 -2 -79 -77 vvcurveto
+ -61 1 -74 7 -46 vhcurveto
+ -59 12 33 -77 139 hhcurveto
+ 83 80 34 45 70 hvcurveto
+ 8 -6 rlineto
+ -30 -6 -39 39 31 71 21 16 51 vhcurveto
+ 5 7 -4 17 rlineto
+ -2 -20 -18 -6 -20 hhcurveto
+ -48 0 72 82 162 1 209 15 114 hvcurveto
+ -6 7 -88 -35 rlineto
+ -2 -182 -2 -183 -183 vvcurveto
+ -32 -54 -60 -27 -62 hhcurveto
+ -97 -79 49 168 hvcurveto
+ 8 273 rlineto
+ 17 5 101 3 14 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="Ucircumflex">
+ 167 204 732 rmoveto
+ 23 -12 143 131 121 -124 39 26 -157 160 rlineto
+ -190 -239 rmoveto
+ -7 6 rlineto
+ -169 hlineto
+ -8 -7 2 -20 rlineto
+ 14 74 -12 -40 hvcurveto
+ -59 vlineto
+ -78 -2 -79 -77 vvcurveto
+ -61 1 -74 7 -46 vhcurveto
+ -59 12 33 -77 139 hhcurveto
+ 83 80 34 45 70 hvcurveto
+ 8 -6 rlineto
+ -30 -6 -39 39 31 71 21 16 51 vhcurveto
+ 5 7 -4 17 rlineto
+ -2 -20 -18 -6 -20 hhcurveto
+ -48 0 72 82 162 1 209 15 114 hvcurveto
+ -6 7 -88 -35 rlineto
+ -2 -182 -2 -183 -183 vvcurveto
+ -32 -54 -60 -27 -62 hhcurveto
+ -97 -79 49 168 hvcurveto
+ 8 273 rlineto
+ 17 5 101 3 14 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="Udieresis">
+ 167 527 816 rmoveto
+ 30 -20 28 -34 -29 -35 -22 -34 -32 26 -26 32 32 26 23 33 2 vhcurveto
+ -202 hmoveto
+ 30 -20 28 -34 -29 -35 -22 -34 -32 26 -26 32 32 26 23 33 2 vhcurveto
+ -142 -142 rmoveto
+ -7 6 rlineto
+ -169 hlineto
+ -8 -7 2 -20 rlineto
+ 14 74 -12 -40 hvcurveto
+ -59 vlineto
+ -78 -2 -79 -77 vvcurveto
+ -61 1 -74 7 -46 vhcurveto
+ -59 12 33 -77 139 hhcurveto
+ 83 80 34 45 70 hvcurveto
+ 8 -6 rlineto
+ -30 -6 -39 39 31 71 21 16 51 vhcurveto
+ 5 7 -4 17 rlineto
+ -2 -20 -18 -6 -20 hhcurveto
+ -48 0 72 82 162 1 209 15 114 hvcurveto
+ -6 7 -88 -35 rlineto
+ -2 -182 -2 -183 -183 vvcurveto
+ -32 -54 -60 -27 -62 hhcurveto
+ -97 -79 49 168 hvcurveto
+ 8 273 rlineto
+ 17 5 101 3 14 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="Ugrave">
+ 167 237 886 rmoveto
+ 162 -154 18 31 -120 157 -13 2 rlineto
+ -101 -248 rmoveto
+ -7 6 rlineto
+ -169 hlineto
+ -8 -7 2 -20 rlineto
+ 14 74 -12 -40 hvcurveto
+ -59 vlineto
+ -78 -2 -79 -77 vvcurveto
+ -61 1 -74 7 -46 vhcurveto
+ -59 12 33 -77 139 hhcurveto
+ 83 80 34 45 70 hvcurveto
+ 8 -6 rlineto
+ -30 -6 -39 39 31 71 21 16 51 vhcurveto
+ 5 7 -4 17 rlineto
+ -2 -20 -18 -6 -20 hhcurveto
+ -48 0 72 82 162 1 209 15 114 hvcurveto
+ -6 7 -88 -35 rlineto
+ -2 -182 -2 -183 -183 vvcurveto
+ -32 -54 -60 -27 -62 hhcurveto
+ -97 -79 49 168 hvcurveto
+ 8 273 rlineto
+ 17 5 101 3 14 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="Upsilon">
+ 137 672 546 rmoveto
+ 75 -21 76 -85 -155 -48 -199 -123 -21 vhcurveto
+ -9 hlineto
+ 130 -13 -32 192 -146 hhcurveto
+ -94 -29 -73 -69 -12 hvcurveto
+ 19 -7 rlineto
+ 40 12 27 37 47 hhcurveto
+ 84 48 -102 -77 21 hvcurveto
+ 20 -73 7 -76 -76 vvcurveto
+ -75 0 -75 -4 -75 vhcurveto
+ 17 -7 67 36 rlineto
+ 322 2 113 127 127 vhcurveto
+ 20 20 25 11 28 hhcurveto
+ 52 18 -38 -37 6 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="V">
+ 162 614 680 rmoveto
+ -25 -43 -25 -44 -19 -45 -119 -274 rcurveline
+ -41 -89 -23 -52 -7 -2 -2 1 -4 2 -2 4 -71 182 -55 187 -39 191 -175 -10 rcurveline
+ -7 -6 1 -27 56 -8 23 -5 16 -33 rlinecurve
+ 20 -44 13 -46 15 -46 143 -482 rcurveline
+ 10 -7 68 26 57 165 73 160 72 133 rlinecurve
+ 12 21 62 110 65 79 -6 19 rcurveline
+ endchar
+ </CharString>
+ <CharString name="W">
+ 505 965 675 rmoveto
+ -17 -32 -22 -39 -21 -46 -109 -242 rcurveline
+ -80 -170 rlineto
+ -3 -2 -2 -4 -9 hhcurveto
+ -18 -19 131 55 -12 hvcurveto
+ -31 146 -31 151 62 vvcurveto
+ -7 6 -76 -29 -45 -126 -132 -291 -42 -83 rlinecurve
+ -2 -1 -3 -2 -3 hhcurveto
+ -2 -4 1 5 -1 hvcurveto
+ -39 175 -59 270 -15 81 -156 -3 rcurveline
+ -8 -7 2 -24 31 -6 30 -7 11 -28 rlinecurve
+ 30 -77 20 -81 20 -81 30 -126 25 -127 23 -128 11 -5 rcurveline
+ 64 29 47 155 81 179 54 121 rlinecurve
+ 28 63 rlineto
+ 5 2 4 7 3 hhcurveto
+ 5 1 -7 -5 1 hvcurveto
+ 40 -179 37 -179 32 -181 12 -8 rcurveline
+ 60 27 65 157 116 230 47 77 rlinecurve
+ 115 188 rlineto
+ 21 vlineto
+ endchar
+ </CharString>
+ <CharString name="X">
+ 79 612 687 rmoveto
+ -95 -13 -9 -21 -138 -198 -33 -33 rlinecurve
+ -9 hlineto
+ -147 266 -45 -3 -76 -4 -25 -1 rlinecurve
+ -7 -6 rlineto
+ -25 vlineto
+ 41 -11 42 -10 22 -38 rrcurveto
+ -82 47 93 -163 5 hhcurveto
+ -271 -329 rlineto
+ -16 vlineto
+ 94 11 36 76 111 157 43 52 rlinecurve
+ 12 hlineto
+ 143 -239 13 -22 15 -22 18 -18 rlinecurve
+ 14 -6 110 27 rlineto
+ 16 vlineto
+ -5 4 -8 2 -22 14 -7 7 rlinecurve
+ -60 72 -40 48 -115 189 -1 12 rlinecurve
+ 4 7 33 44 30 35 187 206 rcurveline
+ endchar
+ </CharString>
+ <CharString name="Xi">
+ 68 49 695 rmoveto
+ -5 -57 -1 -58 -7 -57 27 2 rcurveline
+ 23 64 rlineto
+ 20 7 24 9 20 hhcurveto
+ 346 hlineto
+ 18 23 -12 -21 4 hvcurveto
+ 16 -61 rlineto
+ 34 hlineto
+ -22 164 rlineto
+ -425 -359 rmoveto
+ 2 47 47 1 47 hhcurveto
+ 55 54 -1 -1 54 hvcurveto
+ 15 72 rlineto
+ -3 -64 -63 -2 -64 hhcurveto
+ -37 -37 0 2 -37 hvcurveto
+ 405 -252 rmoveto
+ -63 -18 1 -12 -22 hhcurveto
+ -401 hlineto
+ -17 -15 11 19 -5 hvcurveto
+ -14 51 -26 -1 rlineto
+ 4 -51 7 -100 -1 vvcurveto
+ -2 172 343 -4 1 hhcurveto
+ 15 153 rlineto
+ endchar
+ </CharString>
+ <CharString name="Y">
+ 47 231 -2 rmoveto
+ 11 -9 90 29 -9 288 83 128 74 96 111 145 rlinecurve
+ -4 18 -85 -17 -36 -57 -84 -145 -8 -14 rlinecurve
+ -54 -30 -35 -53 -5 hhcurveto
+ -6 -5 6 2 -1 hvcurveto
+ -141 325 rlineto
+ -145 hlineto
+ -7 -7 rlineto
+ -28 vlineto
+ 40 -6 23 -6 23 -45 149 -295 rcurveline
+ -100 0 -101 -3 -100 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="Yacute">
+ 47 451 885 rmoveto
+ -47 36 -13 -2 -120 -157 18 -31 rlineto
+ -58 -733 rmoveto
+ 11 -9 90 29 -9 288 83 128 74 96 111 145 rlinecurve
+ -4 18 -85 -17 -36 -57 -84 -145 -8 -14 rlinecurve
+ -54 -30 -35 -53 -5 hhcurveto
+ -6 -5 6 2 -1 hvcurveto
+ -141 325 rlineto
+ -145 hlineto
+ -7 -7 rlineto
+ -28 vlineto
+ 40 -6 23 -6 23 -45 149 -295 rcurveline
+ -100 0 -101 -3 -100 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="Z">
+ 58 552 683 rmoveto
+ -149 -148 3 9 -148 hvcurveto
+ -9 -8 rlineto
+ -54 vlineto
+ 6 -5 rlineto
+ 3 27 102 6 187 hhcurveto
+ 7 -10 -424 -606 1 -21 rlineto
+ 192 254 0 -12 129 hvcurveto
+ 18 71 -9 9 rlineto
+ -429 hlineto
+ -6 -7 90 139 174 271 135 193 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="a">
+ 3 278 466 rmoveto
+ -170 -68 -140 -141 -90 36 -107 111 58 56 31 32 49 hvcurveto
+ 15 -4 rlineto
+ -34 6 14 -25 37 hhcurveto
+ 32 54 34 24 40 hvcurveto
+ -7 24 rlineto
+ -8 -21 -30 -10 -14 hhcurveto
+ -54 15 125 62 73 2 72 4 73 hvcurveto
+ -5 5 -53 -31 rlineto
+ 23 -32 -43 12 -32 hhcurveto
+ -21 -412 rmoveto
+ -37 -41 8 33 -21 hvcurveto
+ -23 35 -6 43 1 42 2 101 29 55 23 22 rrcurveto
+ 25 26 33 13 36 hhcurveto
+ 25 25 -14 -19 18 hvcurveto
+ 16 -17 0 -26 -26 vvcurveto
+ -230 vlineto
+ -23 -30 -37 -22 -39 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="aacute">
+ 3 389 702 rmoveto
+ -47 36 -13 -2 -120 -157 18 -31 rlineto
+ 51 -82 rmoveto
+ -170 -68 -140 -141 -90 36 -107 111 58 56 31 32 49 hvcurveto
+ 15 -4 rlineto
+ -34 6 14 -25 37 hhcurveto
+ 32 54 34 24 40 hvcurveto
+ -7 24 rlineto
+ -8 -21 -30 -10 -14 hhcurveto
+ -54 15 125 62 73 2 72 4 73 hvcurveto
+ -5 5 -53 -31 rlineto
+ 23 -32 -43 12 -32 hhcurveto
+ -21 -412 rmoveto
+ -37 -41 8 33 -21 hvcurveto
+ -23 35 -6 43 1 42 2 101 29 55 23 22 rrcurveto
+ 25 26 33 13 36 hhcurveto
+ 25 25 -14 -19 18 hvcurveto
+ 16 -17 0 -26 -26 vvcurveto
+ -230 vlineto
+ -23 -30 -37 -22 -39 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="acircumflex">
+ 3 111 549 rmoveto
+ 23 -12 143 131 121 -124 39 26 -157 160 rlineto
+ -2 -264 rmoveto
+ -170 -68 -140 -141 -90 36 -107 111 58 56 31 32 49 hvcurveto
+ 15 -4 rlineto
+ -34 6 14 -25 37 hhcurveto
+ 32 54 34 24 40 hvcurveto
+ -7 24 rlineto
+ -8 -21 -30 -10 -14 hhcurveto
+ -54 15 125 62 73 2 72 4 73 hvcurveto
+ -5 5 -53 -31 rlineto
+ 23 -32 -43 12 -32 hhcurveto
+ -21 -412 rmoveto
+ -37 -41 8 33 -21 hvcurveto
+ -23 35 -6 43 1 42 2 101 29 55 23 22 rrcurveto
+ 25 26 33 13 36 hhcurveto
+ 25 25 -14 -19 18 hvcurveto
+ 16 -17 0 -26 -26 vvcurveto
+ -230 vlineto
+ -23 -30 -37 -22 -39 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="acute">
+ -25 405 664 rmoveto
+ -47 36 -13 -2 -120 -157 18 -31 rlineto
+ endchar
+ </CharString>
+ <CharString name="acutecomb">
+ -545 115 664 rmoveto
+ -47 36 -13 -2 -120 -157 18 -31 rlineto
+ endchar
+ </CharString>
+ <CharString name="adieresis">
+ 3 434 633 rmoveto
+ 30 -20 28 -34 -29 -35 -22 -34 -32 26 -26 32 32 26 23 33 2 vhcurveto
+ -202 hmoveto
+ 30 -20 28 -34 -29 -35 -22 -34 -32 26 -26 32 32 26 23 33 2 vhcurveto
+ 46 -167 rmoveto
+ -170 -68 -140 -141 -90 36 -107 111 58 56 31 32 49 hvcurveto
+ 15 -4 rlineto
+ -34 6 14 -25 37 hhcurveto
+ 32 54 34 24 40 hvcurveto
+ -7 24 rlineto
+ -8 -21 -30 -10 -14 hhcurveto
+ -54 15 125 62 73 2 72 4 73 hvcurveto
+ -5 5 -53 -31 rlineto
+ 23 -32 -43 12 -32 hhcurveto
+ -21 -412 rmoveto
+ -37 -41 8 33 -21 hvcurveto
+ -23 35 -6 43 1 42 2 101 29 55 23 22 rrcurveto
+ 25 26 33 13 36 hhcurveto
+ 25 25 -14 -19 18 hvcurveto
+ 16 -17 0 -26 -26 vvcurveto
+ -230 vlineto
+ -23 -30 -37 -22 -39 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="ae">
+ 207 707 319 rmoveto
+ 11 5 10 4 12 vvcurveto
+ 77 -56 61 -86 -67 -64 -25 -46 -48 vhcurveto
+ 39 -22 -65 20 -42 hhcurveto
+ -170 -68 -140 -141 -90 36 -107 111 67 65 41 37 51 hvcurveto
+ -46 25 41 -32 68 hhcurveto
+ 86 80 58 58 62 hvcurveto
+ -13 18 -11 2 rlineto
+ -35 -45 -54 -33 -55 hhcurveto
+ -89 -34 78 63 -6 hvcurveto
+ 42 199 rmoveto
+ 26 21 30 16 33 hhcurveto
+ 56 35 -52 -42 -16 -7 -8 -6 -2 hvcurveto
+ -202 -80 -4 4 rlineto
+ -1 6 -1 6 6 vvcurveto
+ 49 7 45 39 42 vhcurveto
+ -104 -48 rmoveto
+ -18 -37 -7 -43 -42 vvcurveto
+ -45 5 -46 14 -40 vhcurveto
+ -21 -29 -34 -20 -37 hhcurveto
+ -37 -41 8 33 -21 hvcurveto
+ -23 35 -6 43 1 42 2 101 29 55 23 22 rrcurveto
+ 25 26 33 13 36 hhcurveto
+ 25 25 -14 -19 18 hvcurveto
+ 12 -13 3 -18 1 -19 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ae-ar">
+ -117 217 167 rmoveto
+ 50 226 -122 160 -114 -333 -40 -116 -21 -132 120 31 84 22 27 68 16 74 rrcurveto
+ -79 98 rmoveto
+ 13 -9 37 -78 -17 -11 -29 -18 -46 -17 -39 17 -6 3 -9 8 2 4 4 15 42 119 48 -33 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="agrave">
+ 3 144 703 rmoveto
+ 162 -154 18 31 -120 157 -13 2 rlineto
+ 87 -273 rmoveto
+ -170 -68 -140 -141 -90 36 -107 111 58 56 31 32 49 hvcurveto
+ 15 -4 rlineto
+ -34 6 14 -25 37 hhcurveto
+ 32 54 34 24 40 hvcurveto
+ -7 24 rlineto
+ -8 -21 -30 -10 -14 hhcurveto
+ -54 15 125 62 73 2 72 4 73 hvcurveto
+ -5 5 -53 -31 rlineto
+ 23 -32 -43 12 -32 hhcurveto
+ -21 -412 rmoveto
+ -37 -41 8 33 -21 hvcurveto
+ -23 35 -6 43 1 42 2 101 29 55 23 22 rrcurveto
+ 25 26 33 13 36 hhcurveto
+ 25 25 -14 -19 18 hvcurveto
+ 16 -17 0 -26 -26 vvcurveto
+ -230 vlineto
+ -23 -30 -37 -22 -39 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar">
+ 319 206 262 rmoveto
+ -117 -92 -114 -220 30 -142 55 -261 425 67 163 198 4 4 -12 -3 -5 -1 -175 -46 -260 -38 -136 153 -78 88 247 210 55 48 40 35 65 42 14 36 45 116 rcurveline
+ -60 -58 -97 -59 -47 46 -32 27 -16 25 -8 49 40 -4 34 -7 31 -10 42 130 rcurveline
+ -33 8 -29 8 -35 1 -99 2 -58 -206 91 -113 9 -12 10 -11 11 -10 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.fina">
+ -23 389 548 rmoveto
+ -10 hlineto
+ -24 -18 -2 -4 -15 hvcurveto
+ -6 -5 -17 -18 -27 -33 rrcurveto
+ -25 -30 -13 -20 -11 -1 1 -1 -1 vvcurveto
+ 14 -90 -116 -114 -49 -53 -36 -66 -24 -78 rlinecurve
+ -16 -51 -8 -49 -44 vvcurveto
+ -102 38 -67 68 -34 vhcurveto
+ -22 45 51 -11 55 hhcurveto
+ 85 67 19 35 76 hvcurveto
+ 67 31 53 40 41 49 rrcurveto
+ 2 vlineto
+ 1 0 0 -1 -2 -5 -1 -2 -6 vhcurveto
+ -19 -77 -100 -21 -96 hhcurveto
+ -132 -99 35 74 -66 hvcurveto
+ -12 14 -6 16 19 vvcurveto
+ 11 2 11 5 13 vhcurveto
+ 11 34 18 34 24 35 37 52 64 69 41 37 19 16 22 17 27 19 27 19 18 17 10 17 5 6 5 8 7 10 51 79 rcurveline
+ 8 12 6 15 7 19 rrcurveto
+ 2 6 1 6 6 vvcurveto
+ 35 -31 11 -41 1 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.init">
+ 156 274 317 rmoveto
+ 36 -3 35 -8 34 -10 42 130 rcurveline
+ -32 8 -27 8 -37 1 rrcurveto
+ -1 hlineto
+ -21 -20 -10 -21 -17 hvcurveto
+ -33 -40 -26 -67 -70 vvcurveto
+ -29 6 -24 12 -18 vhcurveto
+ -62 -17 -60 -6 -80 -11 -23 -130 rcurveline
+ 70 15 73 16 78 18 78 18 74 28 71 38 1 2 3 7 7 14 12 24 15 34 8 25 rrcurveto
+ 2 5 1 4 3 vvcurveto
+ 2 0 1 -2 vhcurveto
+ -2 hlineto
+ -24 -9 -23 -11 -22 -11 -22 -11 -26 -6 -31 -1 -31 27 -28 35 -8 50 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.init.ain">
+ 352 461 323 rmoveto
+ 35 -3 35 -7 35 -11 42 130 rcurveline
+ -32 8 -28 8 -37 1 -52 1 -33 -66 -15 -44 -17 -52 -10 -75 28 -43 -47 -14 -90 -18 -63 -6 -70 -7 -89 0 -14 51 -13 -34 -13 -43 -13 -51 1 -29 27 -14 28 -3 rrcurveto
+ 38 -4 46 2 54 8 54 8 54 11 55 14 92 24 111 38 70 37 1 2 3 8 7 13 12 24 16 33 8 25 4 12 0 5 -5 -2 -24 -9 -23 -11 -22 -11 rrcurveto
+ -22 -11 -26 -6 -31 -1 -32 26 -28 36 -7 50 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.init.dal">
+ 188 475 121 rmoveto
+ 3 8 62 119 -19 -7 -48 -18 -39 -29 -62 -2 -32 27 -26 36 -8 49 40 -4 34 -6 31 -10 42 130 rcurveline
+ -33 8 -29 8 -35 1 -86 2 -64 -204 50 -78 -38 -11 -93 -16 -40 10 -25 6 -14 32 4 30 rrcurveto
+ 3 -3 1 -3 -4 vhcurveto
+ -41 -57 -31 -106 66 -32 77 -38 309 125 51 27 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.init.feh">
+ 392 499 330 rmoveto
+ 37 -4 35 -7 33 -10 42 129 rcurveline
+ -32 8 -28 9 -37 1 -52 1 -34 -67 -15 -44 -18 -52 -8 -74 28 -43 -59 -17 -103 -21 -74 -6 -69 -6 -93 -1 -13 49 -13 -35 -13 -42 -13 -50 1 -29 27 -14 28 -3 rrcurveto
+ 37 -4 48 2 57 8 57 8 58 12 59 15 99 25 123 38 74 40 1 2 3 8 7 13 12 23 16 35 8 25 4 12 0 5 -5 -2 -24 -9 -23 -11 -22 -11 rrcurveto
+ -22 -11 -27 -7 -31 -1 -31 27 -27 36 -8 50 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.init.hah">
+ 122 242 421 rmoveto
+ 36 -3 35 -8 34 -10 42 130 rcurveline
+ -32 8 -28 8 -37 1 -52 1 -34 -66 -15 -44 -17 -52 -9 -75 28 -43 -40 -11 -31 -14 -21 -15 -21 -15 -22 -31 -20 -47 -20 -47 -8 -32 -10 -51 rrcurveto
+ -6 9 0 3 3 vhcurveto
+ 55 88 55 44 106 31 66 19 60 22 58 31 1 2 3 7 7 14 12 24 14 34 9 25 4 12 0 5 -5 -2 -24 -9 -23 -11 -22 -11 -22 -11 -26 -6 -31 -1 rrcurveto
+ -32 27 -27 35 -8 50 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.init.heh">
+ 279 392 405 rmoveto
+ 37 -4 34 -7 33 -10 43 130 rcurveline
+ -32 8 -29 8 -37 1 -52 1 -33 -66 -15 -44 -17 -52 -10 -75 28 -43 -41 -11 -34 -21 -30 -29 -56 -55 -44 -74 -33 -75 -16 -37 -12 -31 -14 -24 -8 -16 rcurveline
+ 4 30 rlineto
+ 1 vlineto
+ -53 -65 rlineto
+ -1 vlineto
+ -3 -38 -3 -41 1 -30 6 -17 rlinecurve
+ 6 -17 13 11 19 40 29 58 23 56 15 36 15 36 27 41 40 47 33 39 30 28 26 17 52 33 50 13 65 18 31 8 37 17 44 23 1 2 3 8 7 13 rrcurveto
+ 11 23 16 34 8 25 4 12 0 5 -5 -2 -24 -9 -23 -11 -22 -11 -22 -11 -26 -6 -31 -1 -32 27 -26 35 -8 50 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.init.meem">
+ 151 270 406 rmoveto
+ 35 -3 35 -7 35 -11 42 130 rcurveline
+ -32 7 -28 9 -37 1 -52 1 -34 -66 -15 -44 -18 -52 -9 -75 28 -43 -78 -22 -45 -40 -40 -68 -22 -38 -16 -41 -19 -42 21 -2 rcurveline
+ 14 33 18 26 24 18 60 45 76 19 84 30 32 11 31 11 28 10 28 10 17 7 6 3 1 2 3 8 7 13 12 24 15 33 8 25 4 12 0 5 -5 -2 rrcurveto
+ -24 -9 -23 -11 -22 -11 -22 -11 -26 -7 -31 -1 -31 27 -27 36 -8 50 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.init.ragaa">
+ 314 280 387 rmoveto
+ 37 -4 35 -7 33 -10 42 130 rcurveline
+ -32 8 -28 8 -37 1 -52 1 -34 -66 -15 -44 -18 -52 -9 -75 28 -43 -15 -4 -18 -7 -21 -11 -30 -15 -26 -15 -23 -15 -46 -31 -34 -47 -17 -60 40 -30 rcurveline
+ 22 25 23 20 28 18 42 26 59 27 52 15 66 19 59 24 58 31 1 2 3 8 7 13 12 23 16 34 8 25 4 12 0 5 -5 -2 -24 -9 -23 -11 -22 -11 rrcurveto
+ -22 -11 -27 -6 -31 -1 -31 27 -27 35 -8 50 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.init.reh">
+ 172 290 358 rmoveto
+ 34 -3 35 -7 36 -11 42 130 rcurveline
+ -32 7 -28 9 -37 1 rrcurveto
+ -1 hlineto
+ -21 -20 -11 -21 -17 hvcurveto
+ -33 -40 -26 -66 -70 vvcurveto
+ -29 6 -24 12 -18 vhcurveto
+ -15 -5 -21 -4 -26 -4 -1 -1 rcurveline
+ -3 -1 hlineto
+ -42 -10 -38 -15 -25 -26 -21 -22 -20 -30 -14 -32 rrcurveto
+ -1 vlineto
+ -10 -12 -5 -11 -9 vvcurveto
+ -10 8 -13 9 6 5 5 9 7 vhcurveto
+ 34 34 36 9 48 14 114 26 97 27 96 51 1 2 3 8 7 13 12 24 15 34 8 25 rrcurveto
+ 2 5 1 4 3 vvcurveto
+ 2 0 1 -2 vhcurveto
+ -2 hlineto
+ -24 -9 -23 -11 -22 -11 -22 -11 -26 -6 -31 -1 -31 27 -27 35 -8 50 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.init.sad">
+ 417 523 330 rmoveto
+ 36 -3 35 -7 34 -10 42 129 rcurveline
+ -32 8 -28 9 -37 1 rrcurveto
+ -1 hlineto
+ -21 -19 -11 -21 -17 hvcurveto
+ -33 -40 -26 -67 -70 vvcurveto
+ -29 6 -24 12 -18 vhcurveto
+ -50 -14 -54 -12 -56 -11 rrcurveto
+ -7 -38 -37 -4 -36 hhcurveto
+ -62 -45 7 42 -20 hvcurveto
+ -4 7 -2 10 10 vvcurveto
+ 29 14 40 26 52 vhcurveto
+ 1 2 0 1 1 vvcurveto
+ 2 -1 1 -1 vhcurveto
+ -2 hlineto
+ -2 -2 0 -2 -1 hvcurveto
+ -10 -14 -15 -24 -20 -34 -20 -34 -14 -34 -11 -36 rrcurveto
+ -7 -22 -4 -22 -20 vvcurveto
+ -12 2 -11 2 -11 vhcurveto
+ -43 10 50 -14 62 hhcurveto
+ 26 29 2 5 34 hvcurveto
+ 56 7 58 12 60 15 101 25 124 39 77 41 1 2 3 8 7 14 12 24 16 33 8 25 rrcurveto
+ 2 5 1 5 2 vvcurveto
+ 3 -1 1 -2 vhcurveto
+ 0 0 -1 -1 vhcurveto
+ -24 -9 -23 -11 -22 -11 -22 -11 -27 -6 -31 -1 -31 27 -27 35 -8 50 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.init.yeh">
+ 123 243 362 rmoveto
+ 34 -3 35 -7 36 -11 42 130 rcurveline
+ -32 7 -28 9 -37 1 -52 1 -34 -67 -15 -44 -18 -52 -9 -74 28 -43 -55 -15 -40 -25 -27 -34 -27 -35 -22 -38 -22 -44 19 -18 rcurveline
+ 14 19 17 15 19 12 40 25 12 5 56 19 55 19 73 24 55 20 29 10 17 7 6 3 1 2 3 8 7 13 12 23 15 35 8 25 4 12 1 5 -5 -2 rrcurveto
+ -24 -9 -24 -11 -22 -11 -22 -11 -26 -6 -31 -1 -31 27 -27 35 -8 50 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.medi">
+ -78 372 351 rmoveto
+ -10 hlineto
+ -23 -19 -3 -4 -15 hvcurveto
+ -6 -5 -16 -17 -28 -33 rrcurveto
+ -25 -30 -13 -20 -11 -1 1 -1 -1 vvcurveto
+ 19 -66 -72 -12 -71 -12 -72 -12 rlinecurve
+ -1 -1 -21 -122 69 11 120 27 53 21 rlinecurve
+ 15 5 20 10 26 17 26 17 21 23 19 29 51 79 rcurveline
+ 8 12 6 16 7 19 rrcurveto
+ 2 6 1 5 6 vvcurveto
+ 35 -31 12 -41 1 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.medi.ain">
+ 42 361 59 rmoveto
+ 15 4 21 10 25 17 25 17 22 24 19 29 52 79 rcurveline
+ 7 12 7 15 7 19 15 45 -38 19 -47 1 -28 1 -22 -2 -17 -5 -6 -5 -16 -18 -28 -33 -28 -33 -12 -21 3 -9 20 -67 rcurveline
+ -58 -16 -91 -17 -73 4 -44 2 -42 10 -10 34 -13 -34 -13 -42 -13 -51 1 -29 27 -15 28 -3 91 -9 151 41 63 26 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.medi.dal">
+ -78 38 7 rmoveto
+ 73 -36 208 98 50 79 51 79 rcurveline
+ 15 24 22 46 -27 26 -21 20 -71 -1 -33 -10 -11 -9 -83 -91 6 -19 20 -66 rcurveline
+ -38 -6 -75 -18 -40 10 -26 7 -14 35 6 31 rrcurveto
+ 2 -1 0 -2 -2 vhcurveto
+ -42 -56 -35 -110 68 -33 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.medi.feh">
+ 103 422 64 rmoveto
+ 15 4 20 11 26 17 26 17 22 23 19 29 51 79 rcurveline
+ 8 12 7 16 6 19 6 19 -3 17 -14 13 -20 19 -75 -1 -31 -9 -6 -4 -16 -18 -28 -33 -28 -33 -12 -21 3 -10 20 -66 rcurveline
+ -46 -15 -95 -16 -64 -4 -68 -5 -92 2 -14 49 -13 -35 -13 -42 -13 -50 1 -30 27 -14 28 -3 49 -5 63 5 76 15 76 15 60 16 42 17 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.medi.hah">
+ -30 291 174 rmoveto
+ 15 4 19 11 26 17 26 17 21 23 19 29 51 79 rcurveline
+ 8 12 8 16 6 19 6 19 -4 17 -13 13 rrcurveto
+ 10 -11 -19 6 -28 hhcurveto
+ -28 -22 -2 -5 -17 hvcurveto
+ -6 -4 -17 -18 -28 -33 -28 -33 -12 -21 3 -10 20 -66 rcurveline
+ -61 -12 -42 -11 -26 -10 -26 -10 -31 -33 -37 -57 -35 -53 -21 -46 -7 -37 rrcurveto
+ -6 9 0 3 3 vhcurveto
+ 31 49 43 40 55 28 63 32 22 -3 65 26 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.medi.heh">
+ 145 465 168 rmoveto
+ 15 4 20 11 26 17 26 17 21 23 19 29 51 79 rcurveline
+ 8 12 7 16 6 19 15 45 -37 18 -47 1 -28 1 -22 -2 -17 -5 -6 -5 -16 -18 -28 -33 -28 -33 -12 -20 3 -10 19 -66 rcurveline
+ -71 -12 -52 -16 -34 -18 -34 -18 -35 -33 -38 -49 -70 -90 -16 -39 -47 -96 -9 -18 rcurveline
+ 4 30 rlineto
+ 1 vlineto
+ -53 -65 rlineto
+ -1 vlineto
+ -3 -38 -3 -41 1 -30 6 -17 rlinecurve
+ 6 -17 13 11 19 40 29 58 23 56 15 36 15 36 27 41 40 47 56 67 37 28 93 19 23 5 29 9 34 14 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.medi.meem">
+ 10 330 167 rmoveto
+ 15 4 19 11 26 17 26 17 22 24 19 29 51 79 rcurveline
+ 7 12 7 15 7 19 15 45 -37 19 -47 1 -28 1 -22 -2 -17 -5 -6 -4 -16 -19 -28 -33 -28 -33 -12 -21 3 -10 19 -66 rcurveline
+ -27 -5 -55 -13 -31 -9 -49 -13 -23 -5 -33 -31 -52 -47 -24 -73 -31 -69 21 -2 rcurveline
+ 16 36 27 29 37 22 65 38 91 12 73 30 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.medi.ragaa">
+ -70 252 118 rmoveto
+ 15 4 20 11 25 17 25 17 22 23 19 29 51 79 rcurveline
+ 7 12 7 16 6 19 6 19 -3 17 -13 13 -20 19 -73 -1 -32 -9 -6 -4 -16 -18 -27 -33 -27 -33 -12 -21 3 -10 19 -66 rcurveline
+ -32 -6 -30 -7 -26 -8 -86 -25 -45 -53 -29 -88 rrcurveto
+ -1 vlineto
+ 40 -30 21 25 26 22 26 16 rlinecurve
+ 60 36 14 -8 65 27 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.medi.reh">
+ -77 373 378 rmoveto
+ -10 hlineto
+ -24 -19 -2 -4 -15 hvcurveto
+ -6 -5 -17 -18 -27 -33 rrcurveto
+ -25 -30 -12 -20 -11 vvcurveto
+ -3 vlineto
+ 20 -65 -31 -6 1 1 -33 -6 -31 -5 -27 -3 rlinecurve
+ -27 -3 -27 -25 -30 -49 -7 -11 -6 -12 -6 -13 rrcurveto
+ -1 vlineto
+ -10 -12 -5 -11 -9 vvcurveto
+ -10 8 -13 9 6 5 5 9 7 vhcurveto
+ 11 11 23 10 33 9 51 14 43 10 47 19 15 5 20 11 26 17 26 17 22 23 19 29 50 79 rcurveline
+ 8 12 7 15 7 19 rrcurveto
+ 2 6 1 6 6 vvcurveto
+ 35 -31 11 -41 1 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.medi.sad">
+ 160 617 361 rmoveto
+ -10 hlineto
+ -24 -19 -3 -4 -15 hvcurveto
+ -6 -5 -16 -17 -27 -33 rrcurveto
+ -25 -30 -13 -20 -11 vvcurveto
+ -3 vlineto
+ 20 -66 -46 -8 -55 -9 -63 -11 rlinecurve
+ -8 -45 -41 -4 -37 hhcurveto
+ -59 -41 9 40 -19 hvcurveto
+ -4 7 -2 10 10 vvcurveto
+ 29 14 40 26 52 vhcurveto
+ 1 2 0 1 1 vvcurveto
+ 3 -3 0 -2 -2 -1 0 -2 -1 vhcurveto
+ -10 -15 -15 -24 -20 -34 -20 -34 -14 -34 -11 -36 rrcurveto
+ -7 -22 -4 -21 -20 vvcurveto
+ -12 2 -11 2 -11 vhcurveto
+ -42 9 49 -15 61 hhcurveto
+ 58 51 8 10 55 hvcurveto
+ 66 12 81 18 51 21 15 4 21 11 26 17 26 17 21 23 19 29 51 80 rcurveline
+ 8 12 6 15 7 19 rrcurveto
+ 2 6 1 5 6 vvcurveto
+ 35 -31 12 -41 1 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.medi.yeh">
+ 2 321 155 rmoveto
+ 15 4 21 11 26 17 26 17 21 23 19 29 51 79 rcurveline
+ 8 12 7 16 6 19 15 45 -38 19 -47 1 rrcurveto
+ -28 -22 -2 -5 -17 hvcurveto
+ -6 -5 -16 -17 -28 -33 -28 -33 -12 -21 3 -10 20 -67 rcurveline
+ -49 -8 -77 -19 -44 -16 -43 -15 -38 -47 -20 -41 -13 -27 -15 -34 -18 -39 19 -8 rcurveline
+ 30 54 44 35 60 14 60 14 56 17 52 21 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ainThreedots-ar">
+ 319 340 830 rmoveto
+ -10 19 -11 16 -14 13 -49 46 -46 -45 -41 -55 -41 -56 -38 -66 -17 -33 -1 -1 rcurveline
+ 1 -44 25 34 94 211 60 -147 rlinecurve
+ 6 -15 5 5 4 5 27 35 26 37 20 41 rrcurveto
+ -134 -568 rmoveto
+ -117 -92 -114 -220 30 -142 55 -261 425 67 163 198 4 4 -12 -3 -5 -1 -175 -46 -260 -38 -136 153 -78 88 247 210 55 48 40 35 65 42 14 36 45 116 rcurveline
+ -60 -58 -97 -59 -47 46 -32 27 -16 25 -8 49 40 -4 34 -7 31 -10 42 130 rcurveline
+ -33 8 -29 8 -35 1 -99 2 -58 -206 91 -113 9 -12 10 -11 11 -10 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="alef-ar">
+ -116 73 569 rmoveto
+ 28 -425 74 118 -28 425 rlineto
+ endchar
+ </CharString>
+ <CharString name="alef-ar.fina">
+ -252 73 570 rmoveto
+ 39 -570 62 118 -38 569 rlineto
+ endchar
+ </CharString>
+ <CharString name="alef-ar.fina.lam">
+ 30 354 564 rmoveto
+ -65 -120 34 -299 67 112 -8 108 -16 95 -12 104 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="alefHamzaabove-ar">
+ -116 131 744 rmoveto
+ 37 26 20 43 -28 18 -15 10 -24 1 -12 14 15 21 26 3 8 18 21 45 rcurveline
+ -9 -4 -9 -4 -8 -6 -26 -20 -88 -94 50 -28 11 -6 16 -6 11 -7 6 -4 -8 -5 -3 -2 -29 -16 -33 -13 -31 -14 36 6 35 2 31 22 rrcurveto
+ -58 -175 rmoveto
+ 28 -425 74 118 -28 425 rlineto
+ endchar
+ </CharString>
+ <CharString name="alefHamzabelow-ar">
+ -116 73 569 rmoveto
+ 28 -425 74 118 -28 425 rlineto
+ -9 -756 rmoveto
+ 37 26 20 43 -28 18 -15 10 -24 1 -12 14 15 21 26 3 8 18 21 45 rcurveline
+ -9 -4 -9 -4 -8 -6 -26 -20 -88 -94 50 -28 11 -6 16 -6 11 -7 6 -4 -8 -5 -3 -2 -29 -16 -33 -13 -31 -14 36 6 35 2 31 22 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="alefMadda-ar">
+ -116 293 845 rmoveto
+ 1 -2 3 -2 -2 vhcurveto
+ -46 -40 -101 -27 -76 39 -10 5 2 3 -10 -5 -36 -18 -22 -20 -20 -35 -40 -70 55 68 19 11 9 5 11 11 12 -6 72 -37 92 25 49 32 rrcurveto
+ -176 -219 rmoveto
+ 28 -425 74 118 -28 425 rlineto
+ endchar
+ </CharString>
+ <CharString name="alefMaksura-ar">
+ 251 78 24 rmoveto
+ 157 -86 273 169 84 130 26 39 7 38 -25 27 -18 19 -33 -1 -28 8 -160 45 117 73 49 -15 20 32 11 39 17 36 rrcurveto
+ 9 4 -14 1 -4 hhcurveto
+ -35 -1 -28 -29 -19 -18 -42 -40 -83 -134 16 -56 15 -54 64 -20 67 -7 -60 -39 -69 -30 -83 -15 -69 -13 -90 2 -45 35 -103 81 104 151 39 81 4 8 -9 1 -3 -5 rrcurveto
+ -67 -94 -160 -272 173 -95 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="alefMaksura-ar.fina">
+ 50 136 487 rmoveto
+ -2 -1 0 -2 -1 hvcurveto
+ -17 -23 -20 -34 -24 -42 -24 -42 -19 -44 -13 -46 rrcurveto
+ -9 -32 -5 -29 -30 vvcurveto
+ -70 21 -40 56 -30 vhcurveto
+ -16 29 33 -7 35 hhcurveto
+ 12 12 0 2 13 hvcurveto
+ 50 7 50 16 49 24 86 42 97 73 47 73 rrcurveto
+ 16 24 8 21 18 vvcurveto
+ 31 -23 23 -29 4 vhcurveto
+ -67 9 -63 27 -19 58 -15 -26 -12 -26 -10 -27 rrcurveto
+ -7 -18 -3 -16 -13 vvcurveto
+ -7 1 -5 2 -6 vhcurveto
+ 8 -27 17 -19 28 -12 28 -12 31 -8 34 -3 -64 -41 -71 -28 -78 -14 rrcurveto
+ -5 -25 -26 -2 -27 hhcurveto
+ -95 -74 33 88 21 3 23 7 22 hvcurveto
+ 16 52 37 60 21 44 rrcurveto
+ 1 2 0 1 1 vvcurveto
+ 3 -3 0 -2 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="alefMaksura-ar.fina.jalt">
+ 432 287 8 rmoveto
+ 135 -17 138 11 114 34 133 40 114 72 69 107 38 59 -10 54 -56 8 -70 10 -51 27 -33 48 -14 -25 -11 -24 -9 -25 -21 -61 24 -39 45 -19 28 -12 30 -7 34 -3 rrcurveto
+ -67 -44 -72 -29 -78 -14 -78 -14 -79 -10 -77 -6 -158 -2 -120 36 -84 73 -32 27 -15 24 2 20 2 20 11 18 18 18 61 58 75 42 90 28 90 28 86 15 82 3 53 112 rcurveline
+ -79 -3 -72 -10 -64 -17 -143 -37 -114 -57 -80 -102 -79 -101 -26 -123 92 -100 43 -47 76 -30 109 -14 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="alefMaksura-ar.fina.yeh">
+ 276 193 1 rmoveto
+ 102 8 93 43 70 48 61 42 24 35 35 57 6 9 9 16 10 20 5 10 4 9 5 10 7 14 3 28 -13 11 -24 18 -36 10 -33 8 -104 25 rcurveline
+ -1 vlineto
+ -18 -38 -20 -33 -16 -40 -5 -11 0 -7 6 -1 57 -12 53 -10 51 -19 8 -4 5 -3 1 -6 -2 -3 -3 -3 -6 -3 -36 -20 -36 -17 -36 -15 -63 -27 -75 -20 -90 6 rrcurveto
+ -39 3 -31 10 -22 18 -46 36 -9 52 21 67 16 52 37 61 21 44 4 8 -9 0 -3 -4 -17 -23 -20 -33 -24 -42 -24 -42 -19 -44 -13 -46 -13 -46 -4 -44 6 -42 rrcurveto
+ 11 -77 79 -50 99 8 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="alefMaksura-ar.fina.yeh.jalt">
+ 429 287 7 rmoveto
+ 43 -6 52 -2 61 2 135 4 124 29 97 49 54 27 42 35 29 45 11 18 16 25 20 33 20 33 10 28 -1 21 -1 7 -3 6 -5 4 -18 14 -32 13 -45 10 rrcurveto
+ -45 10 -35 8 -23 6 rrcurveto
+ -1 vlineto
+ -19 -39 -18 -33 -17 -40 -5 -11 0 -7 6 -1 57 -12 53 -9 51 -19 7 -3 5 -4 2 -6 -2 -3 -3 -3 -6 -3 -72 -38 -70 -26 -67 -12 -67 -12 -78 -9 -87 -7 rrcurveto
+ -158 -2 -120 35 -84 73 -32 27 -15 24 2 20 2 20 11 18 18 18 61 58 75 43 90 28 90 28 86 14 82 3 53 112 rcurveline
+ -79 -3 -72 -9 -64 -17 -143 -37 -114 -58 -80 -102 -79 -101 -26 -122 92 -100 43 -47 76 -30 109 -14 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="alefMaksura-ar.jalt">
+ 719 287 9 rmoveto
+ 135 -17 138 12 114 34 133 40 114 72 69 107 28 44 3 34 -23 25 -18 19 -33 0 -28 8 -40 11 -25 12 -9 13 -9 13 0 13 7 11 11 17 41 21 30 -9 rrcurveto
+ 20 32 11 40 17 35 rrcurveto
+ 9 4 -12 1 -6 hhcurveto
+ -35 -2 -29 -28 -19 -17 -21 -21 -24 -36 -30 -53 -30 -53 -11 -40 8 -28 8 -27 18 -19 28 -12 28 -12 30 -8 34 -3 -67 -44 -72 -28 -78 -14 -78 -14 -79 -10 -77 -6 rrcurveto
+ -158 -2 -120 35 -84 73 -32 27 -15 24 2 20 2 20 11 18 18 18 61 58 75 42 90 28 90 28 86 15 82 3 53 112 rcurveline
+ -79 -3 -72 -9 -64 -17 -143 -37 -114 -58 -80 -102 -79 -101 -26 -122 92 -100 43 -47 76 -31 109 -14 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="alefWasla-ar">
+ -116 29 757 rmoveto
+ 75 74 -46 -89 101 42 28 11 26 15 16 22 12 16 16 21 -15 18 -12 14 -27 -8 -11 -10 -23 -21 -22 -22 -20 -24 rrcurveto
+ -1 -3 -2 0 -2 hhcurveto
+ -35 42 -55 -64 -10 -40 -1 -4 8 6 2 2 rrcurveto
+ 182 90 rmoveto
+ 2 -3 1 -4 -4 -2 -20 -10 -24 -5 -25 -5 13 13 12 14 17 9 10 5 14 -4 4 -8 rrcurveto
+ -138 -278 rmoveto
+ 28 -425 74 118 -28 425 rlineto
+ endchar
+ </CharString>
+ <CharString name="alefabove-ar">
+ -24 150 rmoveto
+ -5 -11 -6 -12 -5 -11 1 -6 2 -7 2 -5 14 -38 20 -33 2 -50 rrcurveto
+ -8 vlineto
+ -11 -1 -12 -2 -13 vhcurveto
+ -1 -1 0 0 vhcurveto
+ -1 1 -2 1 vhcurveto
+ 1 hlineto
+ 2 0 1 2 2 hvcurveto
+ 17 19 10 22 31 vvcurveto
+ 2 vlineto
+ 13 -2 12 -3 13 vhcurveto
+ -10 38 -18 35 -13 35 rrcurveto
+ 2 -1 -1 1 -2 hhcurveto
+ -1 hlineto
+ -3 -1 -1 -1 -3 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="alefabove-ar.isol">
+ -243 66 630 rmoveto
+ -5 -11 -6 -12 -5 -11 1 -6 2 -7 2 -5 14 -38 20 -33 2 -50 rrcurveto
+ -8 vlineto
+ -11 -1 -12 -2 -13 vhcurveto
+ -1 -1 0 0 vhcurveto
+ -1 1 -2 1 vhcurveto
+ 1 hlineto
+ 2 0 1 2 2 hvcurveto
+ 17 19 10 22 31 vvcurveto
+ 2 vlineto
+ 13 -2 12 -3 13 vhcurveto
+ -10 38 -18 35 -13 35 rrcurveto
+ 2 -1 -1 1 -2 hhcurveto
+ -1 hlineto
+ -3 -1 -1 -1 -3 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="alefabove-ar.medi">
+ 66 630 rmoveto
+ -5 -11 -6 -12 -5 -11 1 -6 2 -7 2 -5 14 -38 20 -33 2 -50 rrcurveto
+ -8 vlineto
+ -11 -1 -12 -2 -13 vhcurveto
+ -1 -1 0 0 vhcurveto
+ -1 1 -2 1 vhcurveto
+ 1 hlineto
+ 2 0 1 2 2 hvcurveto
+ 17 19 10 22 31 vvcurveto
+ 2 vlineto
+ 13 -2 12 -3 13 vhcurveto
+ -10 38 -18 35 -13 35 rrcurveto
+ 2 -1 -1 1 -2 hhcurveto
+ -1 hlineto
+ -3 -1 -1 -1 -3 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="alefbelow-ar">
+ -24 150 rmoveto
+ -5 -11 -6 -12 -5 -11 1 -6 2 -7 2 -5 14 -38 20 -33 2 -50 rrcurveto
+ -8 vlineto
+ -11 -1 -12 -2 -13 vhcurveto
+ -1 -1 0 0 vhcurveto
+ -1 1 -2 1 vhcurveto
+ 1 hlineto
+ 2 0 1 2 2 hvcurveto
+ 17 19 10 22 31 vvcurveto
+ 2 vlineto
+ 13 -2 12 -3 13 vhcurveto
+ -10 38 -18 35 -13 35 rrcurveto
+ 2 -1 -1 1 -2 hhcurveto
+ -1 hlineto
+ -3 -1 -1 -1 -3 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="alpha">
+ 64 410 307 rmoveto
+ -10 1 rlineto
+ 55 -15 -34 105 -89 hhcurveto
+ -151 -81 -161 -138 -68 25 -113 81 60 60 50 44 36 hvcurveto
+ 65 78 11 -2 46 -134 rlineto
+ -25 6 25 -19 23 hhcurveto
+ 34 49 42 54 68 hvcurveto
+ -7 19 -10 1 rlineto
+ -21 -27 -35 -25 -25 hhcurveto
+ -48 -34 127 60 -16 hvcurveto
+ 1 92 138 46 69 vhcurveto
+ -51 23 rlineto
+ -155 -256 rmoveto
+ -72 -51 -58 -78 -58 hhcurveto
+ -69 -17 97 57 74 24 121 92 76 27 -87 -112 34 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="ampersand">
+ 193 326 356 rmoveto
+ 3 23 23 2 23 hhcurveto
+ 22 23 0 -16 16 hvcurveto
+ 21 -21 15 -28 -30 vvcurveto
+ -48 -12 -49 -26 -38 vhcurveto
+ -84 86 -64 93 -48 106 17 8 74 43 30 28 rrcurveto
+ 33 30 14 37 44 vvcurveto
+ 55 -52 37 -50 -102 -61 -87 -91 -42 10 -42 16 -39 vhcurveto
+ -111 -68 -47 -43 -91 vvcurveto
+ -55 23 -54 39 -39 vhcurveto
+ -43 43 64 -12 60 hhcurveto
+ 58 55 28 32 40 hvcurveto
+ 5 -4 rlineto
+ -34 35 45 -25 50 hhcurveto
+ 109 43 106 89 16 hvcurveto
+ -21 5 rlineto
+ -64 -15 -30 -72 -71 hhcurveto
+ -40 -39 31 28 -26 hvcurveto
+ -3 3 rlineto
+ 41 53 33 60 67 vvcurveto
+ 21 -4 21 -5 21 vhcurveto
+ 49 57 0 -7 41 hvcurveto
+ 3 48 rlineto
+ -3 -30 -74 0 -52 hhcurveto
+ -67 -77 0 3 -56 hvcurveto
+ -78 36 rmoveto
+ -17 40 -11 41 43 vvcurveto
+ 46 5 58 60 32 35 -46 -35 -65 -21 -30 -83 -52 vhcurveto
+ 146 -367 rmoveto
+ -26 -32 -38 -11 -53 hhcurveto
+ -99 -67 94 93 63 21 50 68 45 hvcurveto
+ 46 -110 74 -109 80 -89 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="aring">
+ 3 177 613 rmoveto
+ -54 43 -43 54 54 43 43 54 54 -43 43 -54 -54 -43 -43 -54 vhcurveto
+ 30 hmoveto
+ 37 30 30 37 37 30 -30 -37 -37 -30 -30 -37 -37 -30 30 37 vhcurveto
+ 71 -147 rmoveto
+ -170 -68 -140 -141 -90 36 -107 111 58 56 31 32 49 hvcurveto
+ 15 -4 rlineto
+ -34 6 14 -25 37 hhcurveto
+ 32 54 34 24 40 hvcurveto
+ -7 24 rlineto
+ -8 -21 -30 -10 -14 hhcurveto
+ -54 15 125 62 73 2 72 4 73 hvcurveto
+ -5 5 -53 -31 rlineto
+ 23 -32 -43 12 -32 hhcurveto
+ -21 -412 rmoveto
+ -37 -41 8 33 -21 hvcurveto
+ -23 35 -6 43 1 42 2 101 29 55 23 22 rrcurveto
+ 25 26 33 13 36 hhcurveto
+ 25 25 -14 -19 18 hvcurveto
+ 16 -17 0 -26 -26 vvcurveto
+ -230 vlineto
+ -23 -30 -37 -22 -39 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="asciitilde">
+ 127 342 291 rmoveto
+ 25 -41 -50 31 -44 hhcurveto
+ -59 -36 -49 -58 -29 hvcurveto
+ 22 -12 rlineto
+ 53 29 21 24 40 hhcurveto
+ 29 27 -13 -15 24 hvcurveto
+ 99 -63 rlineto
+ -20 31 36 -16 38 hhcurveto
+ 55 37 49 48 20 hvcurveto
+ -21 11 rlineto
+ -37 -20 -20 -30 -40 hhcurveto
+ -27 -25 12 14 -22 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="asterisk">
+ -244 175 448 rmoveto
+ -8 36 -2 33 -1 35 26 -20 24 -22 17 -19 26 29 rcurveline
+ -28 13 -29 20 -31 23 28 20 28 17 32 15 -25 31 rcurveline
+ -20 -21 -23 -21 -25 -20 2 33 2 29 7 33 rrcurveto
+ -40 hlineto
+ 8 -33 0 -31 -32 vvcurveto
+ -25 19 -21 19 -22 21 -27 -28 rcurveline
+ 29 -15 27 -16 29 -21 -26 -18 -27 -18 -34 -17 21 -35 rcurveline
+ 24 28 26 23 27 21 -1 -43 -2 -30 -6 -38 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="at">
+ 183 472 371 rmoveto
+ 16 -25 -35 8 -25 hhcurveto
+ -132 -56 -97 -99 -64 29 -74 88 46 44 22 22 39 hvcurveto
+ 12 -3 rlineto
+ -24 4 11 -17 29 hhcurveto
+ 34 61 34 27 24 hvcurveto
+ 39 39 27 53 5 63 14 185 -185 137 -175 -34 -109 -21 -98 -87 -52 -86 -56 -92 -9 -122 57 -98 44 -76 83 -68 105 -8 43 42 rcurveline
+ -14 15 -67 5 -58 28 -42 39 rlinecurve
+ -98 105 6 189 91 109 42 35 50 25 53 10 168 32 163 -114 -13 -178 rrcurveto
+ -54 -4 -23 -90 -63 hhcurveto
+ -27 -2 29 17 hvcurveto
+ 27 -1 28 27 vvcurveto
+ 52 0 52 4 52 vhcurveto
+ -4 4 rlineto
+ -59 -255 rmoveto
+ -15 -23 -29 -16 -32 hhcurveto
+ -29 -32 6 23 -17 hvcurveto
+ -18 24 -6 31 1 29 1 71 24 38 18 15 rrcurveto
+ 18 21 26 9 29 hhcurveto
+ 20 19 -10 -13 14 hvcurveto
+ 13 -12 0 -19 -18 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="atilde">
+ 3 272 658 rmoveto
+ -26 12 -31 13 -26 -4 -35 -5 -19 -58 -8 -35 14 -5 rcurveline
+ 12 33 10 12 24 3 17 2 18 -4 15 -7 63 -30 rcurveline
+ 20 -9 22 -6 22 3 32 4 20 56 3 29 -13 5 rcurveline
+ -9 -23 -8 -13 -24 -3 -16 -2 -16 5 -14 6 rrcurveto
+ -41 -171 rmoveto
+ -170 -68 -140 -141 -90 36 -107 111 58 56 31 32 49 hvcurveto
+ 15 -4 rlineto
+ -34 6 14 -25 37 hhcurveto
+ 32 54 34 24 40 hvcurveto
+ -7 24 rlineto
+ -8 -21 -30 -10 -14 hhcurveto
+ -54 15 125 62 73 2 72 4 73 hvcurveto
+ -5 5 -53 -31 rlineto
+ 23 -32 -43 12 -32 hhcurveto
+ -21 -412 rmoveto
+ -37 -41 8 33 -21 hvcurveto
+ -23 35 -6 43 1 42 2 101 29 55 23 22 rrcurveto
+ 25 26 33 13 36 hhcurveto
+ 25 25 -14 -19 18 hvcurveto
+ 16 -17 0 -26 -26 vvcurveto
+ -230 vlineto
+ -23 -30 -37 -22 -39 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="b">
+ -23 -14 640 rmoveto
+ 86 -13 8 7 -35 vvcurveto
+ -476 vlineto
+ -111 66 -22 51 114 117 80 107 35 vhcurveto
+ 14 43 5 44 44 vvcurveto
+ 84 -48 76 -93 -68 -58 -34 -40 -53 vhcurveto
+ -9 5 rlineto
+ 33 vlineto
+ 82 6 81 8 82 vhcurveto
+ -6 7 -169 -18 -6 -5 rlineto
+ 171 -314 rmoveto
+ 34 39 45 25 53 hhcurveto
+ 38 24 -23 -20 13 hvcurveto
+ 14 -21 16 -42 -73 vvcurveto
+ -92 -41 -97 -106 -88 -11 78 113 39 2 45 2 34 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="backslash">
+ -155 404 -184 rmoveto
+ 3 13 -388 893 -31 -7 -5 -11 389 -896 rlineto
+ endchar
+ </CharString>
+ <CharString name="bar">
+ -329 128 738 rmoveto
+ -40 -8 rlineto
+ -897 vlineto
+ 40 8 rlineto
+ endchar
+ </CharString>
+ <CharString name="beh-ar">
+ 437 619 342 rmoveto
+ 13 -34 19 -64 -1 -23 rrcurveto
+ 0 -194 -97 -150 -87 -79 31 85 4 vhcurveto
+ 3 60 37 57 8 15 4 8 -8 5 -11 -16 rrcurveto
+ -54 -81 -37 -81 -55 vvcurveto
+ -165 178 14 11 166 205 106 108 53 vhcurveto
+ 60 120 -63 121 0 vvcurveto
+ -309 -579 rmoveto
+ -71 66 -27 -34 -28 -35 -27 -34 rlinecurve
+ 71 -66 28 34 27 34 27 35 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar">
+ 437 619 342 rmoveto
+ 13 -34 19 -64 -1 -23 rrcurveto
+ 0 -194 -97 -150 -87 -79 31 85 4 vhcurveto
+ 3 60 37 57 8 15 4 8 -8 5 -11 -16 rrcurveto
+ -54 -81 -37 -81 -55 vvcurveto
+ -165 178 14 11 166 205 106 108 53 vhcurveto
+ 60 120 -63 121 0 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.fina">
+ 126 489 43 rmoveto
+ -1 -5 -1 -4 -3 vvcurveto
+ -4 1 -1 2 vhcurveto
+ 1 hlineto
+ 25 26 20 31 15 35 15 35 13 31 6 22 rrcurveto
+ 1 2 27 -6 -14 vhcurveto
+ -9 -20 -16 -20 -19 -10 rrcurveto
+ -36 -69 -144 -7 -36 hhcurveto
+ -174 -46 45 71 3 hvcurveto
+ 2 41 13 38 24 45 9 22 -18 7 -11 -17 -24 -39 -24 -44 -23 -51 rrcurveto
+ -13 -30 -6 -29 -27 vvcurveto
+ -161 204 2 41 84 103 20 23 57 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.fina.jalt">
+ 485 287 7 rmoveto
+ 96 -12 95 3 95 19 95 19 91 27 89 36 -5 -12 1 -6 6 1 25 27 19 30 15 35 15 35 11 30 7 23 rrcurveto
+ 1 2 1 3 6 vvcurveto
+ 6 -2 1 -4 -5 vhcurveto
+ -9 -22 -13 -15 -20 -11 -56 -31 -71 -23 -84 -15 -84 -15 -75 -10 -63 -5 -158 -2 -120 36 -84 73 -32 27 -15 24 2 20 2 20 11 19 18 17 61 58 75 42 90 28 rrcurveto
+ 90 28 86 15 82 3 53 112 rcurveline
+ -79 -3 -72 -9 -64 -17 -143 -38 -114 -57 -80 -102 -79 -101 -26 -123 92 -100 43 -47 76 -30 109 -14 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.init">
+ -70 252 393 rmoveto
+ -77 -113 rlineto
+ 17 -58 9 -36 -14 vvcurveto
+ -19 -13 -21 -9 -24 -6 -24 -6 -38 -7 -52 -6 rrcurveto
+ -1 hlineto
+ -22 -125 40 4 35 6 28 8 rlinecurve
+ 66 19 41 46 34 57 42 69 -4 101 -30 83 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.init.ain">
+ 128 369 266 rmoveto
+ 14 -40 7 -31 -1 -21 -47 -20 -85 -20 -66 -5 -64 -5 -75 5 -13 47 -13 -35 -13 -42 -13 -50 1 -29 27 -15 28 -3 39 -4 45 2 51 6 51 6 44 14 37 20 rrcurveto
+ 78 40 54 86 12 100 2 16 -3 22 -7 30 -7 30 -3 13 -3 -4 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.init.ascend">
+ -51 301 245 rmoveto
+ -3 2 -17 -46 -26 -29 -34 -12 rlinecurve
+ -34 -12 -67 -9 -102 -5 -18 -134 rcurveline
+ 94 6 67 14 40 23 32 18 24 32 17 43 rrcurveto
+ 17 43 10 36 30 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.init.dal">
+ 9 355 253 rmoveto
+ 3 -2 1 -1 -2 vhcurveto
+ -31 -85 -144 -53 -93 24 -27 7 -12 36 6 31 rrcurveto
+ 1 -1 2 -2 -3 vhcurveto
+ -43 -56 -35 -111 68 -33 126 -61 188 136 3 163 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.init.feh">
+ 195 433 279 rmoveto
+ 14 -39 6 -31 -1 -22 -52 -23 -104 -24 -73 -8 -74 -8 -95 -1 -15 52 -13 -35 -13 -42 -13 -50 1 -29 27 -14 28 -3 39 -4 55 2 69 10 114 16 71 27 57 66 rrcurveto
+ 39 46 23 56 7 64 2 16 -2 22 -7 30 -7 30 -4 13 -3 -4 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.init.hah">
+ 59 1 hmoveto
+ 73 hlineto
+ 14 15 15 15 16 14 32 28 38 22 45 15 19 5 20 1 23 -2 11 -2 12 -1 5 9 18 34 14 39 15 37 -5 6 rcurveline
+ -30 12 -34 -3 -39 -18 rrcurveto
+ -1 hlineto
+ -1 -3 -2 -1 -2 hhcurveto
+ -54 -22 -46 -30 -39 -37 -39 -37 -28 -30 -18 -24 -18 -24 -10 -15 -2 -5 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.init.heh">
+ 195 377 176 rmoveto
+ 24 10 28 3 29 -3 11 -2 12 -1 5 9 19 34 13 39 15 37 -5 6 rcurveline
+ -24 10 -29 0 -32 -11 -32 -11 -31 -15 -32 -21 -53 -35 -63 -57 -36 -46 -52 -67 -42 -80 -39 -78 -9 -18 rcurveline
+ 4 30 rlineto
+ 1 vlineto
+ -53 -65 rlineto
+ -1 vlineto
+ -3 -38 -3 -41 1 -30 6 -17 rlinecurve
+ 6 -17 13 11 19 40 29 58 23 56 15 36 15 36 27 41 40 47 50 59 57 61 77 30 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.init.meem">
+ 3 288 149 rmoveto
+ 8 21 12 30 17 38 17 38 -1 25 -21 12 -33 19 -33 1 -31 -17 -66 -36 -54 -73 -37 -69 -20 -37 -15 -30 -10 -21 -8 -18 -6 -12 -2 -7 -2 -7 -2 -5 -1 -1 rrcurveto
+ 18 hlineto
+ 14 22 18 28 23 33 23 33 25 27 26 23 26 23 26 12 25 2 25 2 21 -18 18 -38 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.init.ragaa">
+ 314 235 214 rmoveto
+ -5 vlineto
+ -25 -20 -28 -14 -31 -10 -60 -19 -69 -59 -22 -56 46 -32 rcurveline
+ 1 2 2 1 2 1 40 29 43 26 45 25 25 14 20 19 17 25 19 29 13 27 8 24 rrcurveto
+ 12 30 5 31 34 vvcurveto
+ 1 61 -19 49 -38 37 -63 -111 rcurveline
+ 19 -29 14 -26 8 -23 rrcurveto
+ -1 vlineto
+ 5 -15 8 -30 2 -14 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.init.reh">
+ -41 308 229 rmoveto
+ -17 -16 -29 -9 -27 -4 -28 -6 -28 -4 -25 -4 -61 -9 -39 -33 -21 -53 -7 -11 -6 -12 -6 -13 rrcurveto
+ -1 vlineto
+ -15 -18 -4 -16 9 -13 9 -13 10 2 11 17 20 20 25 12 23 4 24 4 30 7 35 9 76 19 34 54 7 87 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.init.sad">
+ 279 520 234 rmoveto
+ -2 vlineto
+ -63 -30 -74 -36 -83 -19 -91 -17 rlinecurve
+ -4 -19 -17 -2 -16 hhcurveto
+ -53 -37 20 53 30 14 42 29 57 hvcurveto
+ 1 2 0 1 1 vvcurveto
+ 3 -3 0 -2 -2 -1 0 -2 -1 vhcurveto
+ -10 -15 -15 -23 -20 -34 -20 -34 -14 -34 -11 -36 rrcurveto
+ -7 -22 -4 -22 -20 vvcurveto
+ -12 2 -11 2 -11 vhcurveto
+ -43 9 51 -14 61 hhcurveto
+ 27 30 3 6 31 hvcurveto
+ 50 9 48 16 47 21 82 37 91 59 36 75 rrcurveto
+ 20 41 10 37 35 vvcurveto
+ 19 -3 18 -6 17 vhcurveto
+ -24 74 -76 -113 rlineto
+ 10 -29 21 -57 -34 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.init.yeh">
+ -187 105 87 rmoveto
+ -22 -18 -47 -17 -29 -10 -7 -17 rcurveline
+ 98 -25 19 25 24 41 10 33 rlinecurve
+ 12 30 6 31 34 vvcurveto
+ 60 -19 50 -37 37 vhcurveto
+ -64 -112 20 -30 15 -26 7 -22 rlinecurve
+ 5 -14 8 -31 2 -14 rrcurveto
+ -1 -2 0 -1 -2 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.jalt">
+ 674 287 7 rmoveto
+ 49 -6 57 -2 65 3 143 6 130 36 97 58 53 32 39 42 25 51 30 62 7 56 -16 49 rrcurveto
+ -24 74 0 0 0 vvcurveto
+ -77 -114 10 -28 23 -60 -2 -33 rlinecurve
+ 0 -1 0 -73 -32 vhcurveto
+ -49 -21 -42 -15 -36 -7 -72 -16 -80 -8 -80 -6 -157 -2 -120 36 -85 73 -32 27 -15 24 2 20 2 20 11 18 18 18 61 58 75 42 90 28 90 28 86 14 82 3 53 113 rcurveline
+ -79 -3 -72 -10 -64 -17 -143 -37 -114 -57 -80 -102 -79 -101 -26 -123 92 -100 43 -47 76 -30 109 -14 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.medi">
+ -158 205 24 rmoveto
+ 1 hlineto
+ 50 53 28 81 15 47 2 3 -1 21 -5 -11 -7 -17 -17 -24 -25 -11 -53 -23 -147 -14 -25 -2 -21 -127 rcurveline
+ 58 6 99 16 46 19 -2 -7 -1 -11 5 1 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.medi.ain">
+ -17 348 25 rmoveto
+ 25 26 19 31 15 35 15 35 11 30 7 23 rrcurveto
+ 1 2 0 4 6 vvcurveto
+ 6 -1 1 -3 -5 vhcurveto
+ -10 -22 -14 -17 -19 -10 -24 -13 -41 -11 -58 -7 -58 -7 -42 -5 -25 1 -48 1 -48 10 -11 36 -13 -35 -13 -42 -13 -50 1 -29 27 -15 28 -3 36 -3 48 3 62 8 rrcurveto
+ 62 8 48 11 34 14 -5 -12 1 -6 6 1 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.medi.dal">
+ -136 226 35 rmoveto
+ -7 -23 16 2 7 12 32 60 34 68 13 43 2 3 1 21 -7 -10 -8 -21 -15 -17 -19 -11 -29 -16 -111 -26 -49 12 rrcurveto
+ -26 7 -8 33 30 vvcurveto
+ 7 1 1 -6 -7 vhcurveto
+ -46 -53 -28 -111 67 -33 42 -20 114 37 30 12 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.medi.feh">
+ 31 56 1 rmoveto
+ 40 -4 58 3 76 11 76 11 54 12 34 14 -4 -12 1 -6 5 1 25 26 20 31 15 35 15 35 11 29 7 23 rrcurveto
+ 1 2 0 4 6 vvcurveto
+ 6 -1 1 -4 -5 vhcurveto
+ -9 -22 -14 -16 -20 -11 -21 -12 -41 -10 -64 -9 -64 -9 -45 -5 -28 -1 -60 -3 -67 6 -13 43 -13 -35 -13 -42 -13 -50 1 -29 27 -15 28 -3 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.medi.hah">
+ 88 12 2 rmoveto
+ 23 36 18 30 14 21 14 21 25 27 37 30 35 29 38 22 41 15 30 12 21 -21 9 -18 5 -16 11 -8 17 1 rrcurveto
+ 4 7 3 2 8 hvcurveto
+ 62 134 -33 -5 rlineto
+ -2 -1 0 1 -2 hvcurveto
+ 15 -12 -9 28 -27 hhcurveto
+ -26 -28 -7 -14 -31 hvcurveto
+ -59 -28 -58 -49 -43 -45 -26 -26 -23 -28 -21 -26 -13 -32 -14 -63 -3 -38 rrcurveto
+ -6 9 0 3 3 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.medi.heh">
+ 208 237 76 rmoveto
+ 36 39 52 50 54 15 23 6 18 -9 12 -24 4 -16 10 -8 18 1 6 1 7 2 6 2 62 134 rcurveline
+ -33 -5 -5 2 -25 31 -27 14 -30 -4 rlinecurve
+ -30 -4 -30 -12 -29 -21 -29 -21 -26 -26 -25 -29 -25 -29 -20 -24 -15 -19 -52 -67 -42 -80 -39 -78 -9 -18 rcurveline
+ 4 30 rlineto
+ 1 vlineto
+ -53 -65 rlineto
+ -1 vlineto
+ -3 -38 -3 -41 1 -30 6 -17 rlinecurve
+ 6 -17 13 11 19 40 29 58 23 56 15 36 23 54 52 64 51 56 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.medi.high">
+ -38 223 179 rmoveto
+ -50 -21 -55 -14 -60 -11 -58 -133 rcurveline
+ 28 7 27 7 27 7 106 28 73 67 25 102 17 62 2 57 -11 53 -11 53 -7 25 -2 -3 -76 -113 rcurveline
+ 18 -69 7 -29 -75 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.medi.high2">
+ -128 215 293 rmoveto
+ 9 -114 -47 -20 -56 -12 -56 -10 rlinecurve
+ -65 -137 156 50 29 16 24 19 20 22 rlinecurve
+ 8 -107 74 117 -22 294 rlineto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.medi.meem">
+ -77 185 141 rmoveto
+ 27 10 21 -10 14 -29 4 -16 10 -7 18 1 6 1 7 1 6 2 63 135 rcurveline
+ -33 -5 -6 1 -18 23 -21 15 -21 5 rlinecurve
+ -20 4 -19 -3 -20 -9 -20 -9 -19 -13 -19 -18 -55 -53 -56 -87 -34 -72 30 -8 rcurveline
+ 39 55 49 60 67 26 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.medi.noon">
+ -123 304 354 rmoveto
+ 3 -2 1 -3 -1 vhcurveto
+ -4 -2 -3 -3 -3 -7 -14 -34 -39 -32 -64 -28 -62 -27 -51 -10 -41 6 -18 -133 rcurveline
+ 28 7 27 7 27 7 62 16 48 28 37 43 13 -195 rcurveline
+ 73 128 -6 74 -7 74 2 78 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.medi.ragaa">
+ -105 240 114 rmoveto
+ 4 -16 10 -8 18 1 2 1 8 1 10 3 62 134 rcurveline
+ -33 -5 rlineto
+ 1 -3 -2 1 -1 hhcurveto
+ 15 -12 -9 27 -27 hhcurveto
+ -37 -33 -10 -18 -28 hvcurveto
+ -28 -18 -25 -22 -22 -25 -11 -13 -18 -24 -23 -34 -23 -34 -14 -25 -5 -14 47 -32 rcurveline
+ 1 vlineto
+ 17 24 20 27 23 30 23 30 23 19 26 10 30 12 22 -21 9 -18 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.medi.reh">
+ -40 307 31 rmoveto
+ 2 123 -30 -4 -24 9 4 31 rlinecurve
+ 1 28 -83 -24 -43 -13 -52 -16 -31 -18 -11 -21 -12 -23 -7 -27 -10 -24 -1 -1 -10 -17 1 -2 -7 -28 22 -17 18 26 11 11 13 10 12 7 21 8 27 7 30 7 rrcurveto
+ 30 7 14 -1 -1 -11 -5 -31 12 -13 27 4 27 4 28 4 27 5 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.medi.sad">
+ 124 106 333 rmoveto
+ -2 -1 -1 -2 -1 hvcurveto
+ -10 -15 -15 -23 -20 -34 -20 -34 -14 -34 -11 -36 rrcurveto
+ -7 -22 -4 -22 -20 vvcurveto
+ -12 2 -11 2 -11 vhcurveto
+ -41 9 44 -15 60 hhcurveto
+ 60 52 8 9 57 hvcurveto
+ 66 11 85 16 49 21 rrcurveto
+ -1 -5 -1 -3 -3 vvcurveto
+ -4 1 -2 3 vhcurveto
+ 25 27 20 30 15 35 15 35 11 30 7 23 rrcurveto
+ 1 2 0 3 6 vvcurveto
+ 4 0 2 -1 -1 -1 -2 -2 -2 vhcurveto
+ -9 -21 -14 -17 -20 -11 rrcurveto
+ -32 -92 -129 -31 -120 hhcurveto
+ -57 -38 8 35 -21 hvcurveto
+ -5 8 -3 11 12 vvcurveto
+ 29 13 41 27 52 vhcurveto
+ 1 2 0 1 1 vvcurveto
+ 3 -3 1 -2 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.medi.yeh">
+ -106 281 264 rmoveto
+ 1 1 -8 4 -11 1 -14 -2 rlinecurve
+ -45 -5 -40 -18 -33 -32 -58 -55 -45 -67 -28 -84 21 -7 rcurveline
+ 39 55 50 60 67 26 11 4 10 1 10 -4 rrcurveto
+ -1 vlineto
+ 13 -4 11 -10 7 -15 4 -16 11 -7 17 1 5 1 7 1 8 2 62 135 rcurveline
+ -34 -5 rlineto
+ 0 -1 0 -4 1 vhcurveto
+ -10 12 -7 19 -15 8 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="beta">
+ -15 325 392 rmoveto
+ 65 25 58 71 75 vvcurveto
+ 75 -61 60 -75 -106 -71 -57 -81 -38 vhcurveto
+ -22 -47 -8 -78 -2 -51 -8 -190 4 -191 -5 -190 12 -15 rcurveline
+ 76 33 rlineto
+ -7 125 -2 126 126 vvcurveto
+ 186 -6 64 22 87 vhcurveto
+ 61 15 35 45 68 hhcurveto
+ 60 41 -55 -56 -106 -80 -48 -89 hvcurveto
+ -2 -36 rlineto
+ 2 21 21 0 21 hhcurveto
+ 98 67 -57 -101 -74 -36 -99 -84 -38 -34 31 38 hvcurveto
+ 7 vlineto
+ -13 6 -49 -69 rlineto
+ -35 20 36 -14 38 hhcurveto
+ 129 116 79 138 48 -20 50 -34 35 hvcurveto
+ -30 31 -55 12 -49 2 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="braceleft">
+ -232 303 -154 rmoveto
+ -97 -36 2 182 91 7 120 -92 32 hvcurveto
+ 1 vlineto
+ 64 23 21 88 133 vvcurveto
+ 66 -4 101 50 13 vhcurveto
+ 7 27 31 1 29 hhcurveto
+ 24 vlineto
+ -160 -24 -1 -215 -93 6 -88 -32 -28 hvcurveto
+ -19 -22 -24 -1 -39 hhcurveto
+ -26 vlineto
+ 31 37 -2 -21 19 hvcurveto
+ 25 -28 0 -105 -69 vvcurveto
+ -101 -8 -85 75 -20 vhcurveto
+ -6 24 53 0 39 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="braceright">
+ -232 10 -175 rmoveto
+ 149 34 -1 213 104 -3 101 61 15 hvcurveto
+ 17 4 19 2 18 -1 rrcurveto
+ 26 vlineto
+ -107 -4 36 193 114 6 30 -32 40 hvcurveto
+ -27 34 -53 -3 -78 1 rrcurveto
+ -24 vlineto
+ 62 50 4 -74 15 hvcurveto
+ 12 -79 -10 -81 11 -81 9 -68 32 -40 37 -13 rrcurveto
+ -1 vlineto
+ -92 -33 7 -123 -87 vvcurveto
+ -67 3 -98 -56 -13 vhcurveto
+ -6 -23 -30 0 -27 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="bracketleft">
+ -287 247 736 rmoveto
+ -54 -66 0 5 -39 hvcurveto
+ -866 vlineto
+ 5 52 53 0 54 hhcurveto
+ 24 vlineto
+ -119 13 rlineto
+ 782 vlineto
+ 119 13 rlineto
+ endchar
+ </CharString>
+ <CharString name="bracketright">
+ -287 130 -83 rmoveto
+ -119 -13 rlineto
+ -24 vlineto
+ 54 53 0 -5 52 hvcurveto
+ 866 vlineto
+ -5 -39 -66 0 -54 hhcurveto
+ -24 vlineto
+ 119 -13 rlineto
+ endchar
+ </CharString>
+ <CharString name="brokenbar">
+ -337 124 738 rmoveto
+ -40 -8 rlineto
+ -403 vlineto
+ 40 8 rlineto
+ -91 vmoveto
+ -40 -8 rlineto
+ -403 vlineto
+ 40 8 rlineto
+ endchar
+ </CharString>
+ <CharString name="bullet">
+ -213 69 265 rmoveto
+ -54 43 -43 54 54 43 43 54 54 -43 43 -54 -54 -43 -43 -54 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="c">
+ -90 425 116 rmoveto
+ -38 -44 -50 -31 -59 hhcurveto
+ -117 -24 115 86 88 45 100 85 43 33 -39 -67 9 hvcurveto
+ 17 -6 54 53 rlineto
+ 57 -6 -45 41 -65 hhcurveto
+ -148 -105 -108 -150 -99 10 -137 163 89 73 54 61 62 hvcurveto
+ -11 18 rlineto
+ endchar
+ </CharString>
+ <CharString name="ccedilla">
+ -90 180 -122 rmoveto
+ 37 -11 50 -31 -28 -38 -14 -18 -32 -14 -26 -10 -5 -10 rcurveline
+ 6 -15 55 10 70 18 33 44 rlinecurve
+ 26 36 -9 36 -23 28 -19 23 -40 18 -13 5 15 36 rcurveline
+ 71 14 59 46 52 51 -11 18 rcurveline
+ -9 2 rlineto
+ -38 -44 -50 -31 -59 hhcurveto
+ -117 -24 115 86 88 45 100 85 43 33 -39 -67 9 hvcurveto
+ 17 -6 54 53 rlineto
+ 57 -6 -45 41 -65 hhcurveto
+ -148 -105 -108 -150 -99 10 -137 163 hvcurveto
+ 1 2 0 1 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="cedilla">
+ -25 188 -112 rmoveto
+ 37 -11 50 -31 -28 -38 -14 -18 -32 -14 -26 -10 -5 -10 rcurveline
+ 6 -15 55 10 70 18 33 44 rlinecurve
+ 26 36 -9 36 -23 28 -19 23 -40 18 -13 5 20 47 rcurveline
+ -36 hlineto
+ endchar
+ </CharString>
+ <CharString name="cedillacomb">
+ -545 -72 -112 rmoveto
+ 37 -11 50 -31 -28 -38 -14 -18 -32 -14 -26 -10 -5 -10 rcurveline
+ 6 -15 55 10 70 18 33 44 rlinecurve
+ 26 36 -9 36 -23 28 -19 23 -40 18 -13 5 20 47 rcurveline
+ -36 hlineto
+ endchar
+ </CharString>
+ <CharString name="cent">
+ -84 418 116 rmoveto
+ -38 -44 -50 -31 -59 hhcurveto
+ -2 388 hlineto
+ 39 -5 29 -38 8 -62 17 -6 rcurveline
+ 54 53 rlineto
+ 57 -6 -45 41 -65 hhcurveto
+ -11 -10 -1 -1 -10 hvcurveto
+ 169 vlineto
+ -40 -8 rlineto
+ -168 vlineto
+ -109 -29 -73 -95 -125 vvcurveto
+ -99 10 -137 163 vhcurveto
+ 3 3 0 3 hhcurveto
+ -148 vlineto
+ 40 8 rlineto
+ 146 vlineto
+ 67 15 58 45 50 49 -11 18 rcurveline
+ -303 134 rmoveto
+ 77 34 85 65 21 vhcurveto
+ -378 vlineto
+ -81 24 -18 96 75 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="chi">
+ -20 284 206 rmoveto
+ -90 192 rlineto
+ 30 -14 -23 38 -37 hhcurveto
+ -25 -25 -8 -15 -19 hvcurveto
+ -63 -48 15 -21 rlineto
+ 15 19 28 22 18 hhcurveto
+ 29 22 -34 -28 14 hvcurveto
+ 35 -72 74 -142 -1 vvcurveto
+ -74 -96 -69 -99 -68 -100 50 -30 rcurveline
+ 17 6 36 91 60 89 58 88 rlinecurve
+ 10 hlineto
+ -147 62 42 -133 66 hhcurveto
+ 41 54 32 25 43 hvcurveto
+ -8 23 rlineto
+ -11 -21 -24 -4 -24 hhcurveto
+ -62 -70 170 118 -53 hvcurveto
+ 15 21 17 19 16 19 179 206 rcurveline
+ -1 7 -33 32 -20 -4 -187 -250 rlineto
+ endchar
+ </CharString>
+ <CharString name="circumflex">
+ -45 103 511 rmoveto
+ 23 -12 143 131 121 -124 39 26 -157 160 rlineto
+ endchar
+ </CharString>
+ <CharString name="circumflexcomb">
+ -545 -163 511 rmoveto
+ 23 -12 143 131 121 -124 39 26 -157 160 rlineto
+ endchar
+ </CharString>
+ <CharString name="colon">
+ -361 35 398 rmoveto
+ -31 26 -26 32 31 25 26 31 31 -25 26 -31 -32 -26 -26 -31 vhcurveto
+ -353 vmoveto
+ -31 26 -26 32 31 25 26 31 31 -25 26 -31 -32 -26 -26 -31 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="comma">
+ -312 77 -210 rmoveto
+ 71 82 33 51 50 vvcurveto
+ 35 -35 130 -53 -25 -34 -22 -26 -10 3 -11 4 -5 vhcurveto
+ 70 -83 rlineto
+ 9 -11 4 -17 -14 vvcurveto
+ -40 -31 -49 -35 -46 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="comma-ar">
+ -86 127 hmoveto
+ 60 29 52 91 4 hvcurveto
+ 8 -8 6 -7 -7 vhcurveto
+ -103 -99 8 172 23 85 17 64 9 37 2 10 -31 -30 rcurveline
+ -33 -94 -28 -95 -7 -72 rrcurveto
+ -77 -8 32 -51 41 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="comma-ar.alt">
+ -86 127 219 rmoveto
+ -41 -32 -51 -77 8 hvcurveto
+ 7 -72 28 -95 33 -94 31 -30 rcurveline
+ -2 10 -9 37 -17 64 -23 85 -8 172 103 -99 rrcurveto
+ 7 -7 8 6 8 vvcurveto
+ 91 -4 -29 52 -60 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="copyright">
+ 87 45 437 rmoveto
+ -150 121 -121 150 150 121 121 150 150 -121 121 -150 -150 -121 -121 -150 vhcurveto
+ 25 hmoveto
+ 136 110 110 136 136 110 -110 -136 -136 -110 -110 -136 -136 -110 110 136 vhcurveto
+ 413 126 rmoveto
+ 42 -31 -46 14 -52 hhcurveto
+ -63 -60 -18 -36 -44 hvcurveto
+ -42 -35 -13 -49 -48 vvcurveto
+ -49 16 -49 42 -35 vhcurveto
+ -28 34 49 -10 48 hhcurveto
+ 52 48 22 24 43 hvcurveto
+ -10 14 rlineto
+ -19 -34 -37 -15 -41 hhcurveto
+ -49 -26 14 28 -33 hvcurveto
+ -20 16 -28 50 46 vvcurveto
+ 44 11 49 36 31 vhcurveto
+ 22 26 38 11 36 hhcurveto
+ 49 39 -20 -45 20 hvcurveto
+ 8 hlineto
+ endchar
+ </CharString>
+ <CharString name="currency">
+ 45 75 484 rmoveto
+ 49 -49 rlineto
+ -30 -34 -12 -36 -52 vvcurveto
+ -50 12 -35 30 -38 vhcurveto
+ -49 -49 45 -45 48 48 rlineto
+ -30 37 37 -12 53 hhcurveto
+ 53 37 12 30 37 hvcurveto
+ 48 -48 45 45 -49 49 rlineto
+ 30 38 12 35 50 vvcurveto
+ 52 -12 36 -30 34 vhcurveto
+ 49 49 -47 47 -48 -48 rlineto
+ 28 -38 -39 13 -48 hhcurveto
+ -48 -40 -13 -28 -37 hvcurveto
+ -48 48 rlineto
+ 176 -66 rmoveto
+ 81 70 -70 -82 -84 -69 -68 -85 -85 -69 68 85 83 70 68 87 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="d">
+ 6 269 638 rmoveto
+ 33 47 -1 -35 11 hvcurveto
+ 7 -26 -1 -72 1 -53 -7 -4 rcurveline
+ 9 -27 -27 6 -29 hhcurveto
+ -162 -75 -142 -140 -89 35 -109 114 59 64 37 35 51 hvcurveto
+ -35 2 18 -38 39 hhcurveto
+ 39 51 36 27 39 hvcurveto
+ -8 23 rlineto
+ -8 -20 -31 -11 -10 hhcurveto
+ -30 -6 33 29 -2 hvcurveto
+ 565 vlineto
+ -8 9 -163 -20 -5 -4 rlineto
+ 95 -565 rmoveto
+ -27 -27 -56 -20 -35 hhcurveto
+ -90 -28 85 70 94 34 131 112 83 11 -64 -54 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="dad-ar">
+ 517 689 794 rmoveto
+ -71 66 -27 -34 -28 -35 -27 -34 rlinecurve
+ 71 -66 28 34 27 34 27 35 rlinecurve
+ -340 -668 rmoveto
+ 34 49 25 56 12 58 33 5 49 10 40 10 87 22 90 51 53 71 34 45 45 59 -42 50 -34 40 -77 -20 -31 -29 rrcurveto
+ -110 -105 -71 -86 0 vvcurveto
+ -59 -13 3 32 -33 73 -54 -125 rcurveline
+ 14 -44 13 -45 -2 -56 -64 -59 -124 -59 -93 33 -105 37 86 143 31 69 9 24 -13 4 -8 -16 -256 -466 372 -29 146 211 rrcurveto
+ 372 373 rmoveto
+ 4 -8 6 -13 -11 -5 -57 -27 -68 -14 -70 -14 36 37 34 39 47 25 28 15 39 -13 12 -22 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="dal-ar">
+ 3 242 311 rmoveto
+ 14 -40 18 -55 -1 -26 -50 -22 -89 -24 -60 -11 -74 -133 rcurveline
+ 56 15 105 22 46 24 29 15 25 22 21 24 rrcurveto
+ 122 145 -85 158 0 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="dal-ar.fina">
+ 26 374 164 rmoveto
+ -5 -5 -2 -4 -4 hvcurveto
+ -14 -13 -17 -8 -18 -3 -99 -16 -109 -1 -93 -23 rrcurveto
+ -7 -2 -3 -3 -3 vvcurveto
+ -2 1 -1 2 -2 vhcurveto
+ 8 -7 25 -13 42 -18 42 -18 26 -10 11 -3 rrcurveto
+ -8 25 24 -4 21 hhcurveto
+ 45 24 18 38 25 hvcurveto
+ 15 24 18 26 22 16 rrcurveto
+ 8 3 6 10 12 vvcurveto
+ 9 -5 8 -11 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="damma-ar">
+ 79 80 rmoveto
+ 7 22 4 18 14 vvcurveto
+ 23 -8 18 -20 -5 -5 -2 -2 -5 vhcurveto
+ -22 -9 -32 -33 -29 vvcurveto
+ -28 28 -15 19 -11 vhcurveto
+ -6 -6 -8 -7 -10 -7 -41 -29 -51 -32 -42 -27 rrcurveto
+ -7 -4 -2 -2 -1 vvcurveto
+ 6 1 81 20 55 27 43 58 rlinecurve
+ 7 -5 6 -1 5 -7 rrcurveto
+ 8 12 7 11 14 vvcurveto
+ 1 vlineto
+ -1 9 -5 5 -6 4 rrcurveto
+ -37 54 rmoveto
+ 3 hlineto
+ 12 5 -11 -14 -6 0 -6 -2 -8 hvcurveto
+ -10 5 -27 10 14 vvcurveto
+ 9 11 6 8 1 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="dammainverted-ar">
+ -36 26 rmoveto
+ -7 -22 -4 -18 -14 vvcurveto
+ -23 8 -18 20 5 5 2 2 5 vhcurveto
+ 22 9 32 33 29 vvcurveto
+ 28 -28 15 -19 11 vhcurveto
+ 6 6 8 7 10 7 41 29 51 32 42 27 rrcurveto
+ 7 4 2 2 1 vvcurveto
+ -6 -1 -81 -20 -55 -27 -43 -58 rlinecurve
+ -7 5 -6 1 -5 7 rrcurveto
+ -8 -12 -7 -11 -14 vvcurveto
+ -1 vlineto
+ 1 -9 5 -5 6 -4 rrcurveto
+ 37 -54 rmoveto
+ -3 hlineto
+ -12 -5 11 14 6 0 6 2 8 hvcurveto
+ 10 -5 27 -10 -14 vvcurveto
+ -9 -11 -6 -8 -1 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="dammainverted-ar.urd">
+ 53 -9 rmoveto
+ 7 22 2 16 -1 9 -2 12 -6 1 -7 -8 -3 -2 -2 -3 -3 -4 rrcurveto
+ -18 -12 -12 -8 -11 hhcurveto
+ -9 3 -7 5 -4 7 rrcurveto
+ 1 hlineto
+ -4 11 -1 19 2 15 8 42 18 58 18 33 3 7 3 5 1 2 1 4 0 2 -2 -2 -3 -1 -2 -2 -2 -2 -22 -25 -15 -25 -15 -39 -21 -54 -9 -32 8 -69 rrcurveto
+ -27 3 15 -13 28 hhcurveto
+ 24 20 20 41 13 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="dammatan-ar">
+ 47 280 rmoveto
+ -79 -25 -65 -52 -33 -72 -19 -32 -5 -53 29 -24 24 -20 32 9 22 15 23 49 rcurveline
+ -22 -12 -60 -24 -7 42 -2 8 1 9 4 10 11 24 19 22 20 18 29 26 39 30 44 9 52 11 23 -15 -12 -52 rrcurveto
+ -2 -6 0 -4 -2 vvcurveto
+ 1 -5 6 5 2 3 11 12 9 16 3 20 10 63 -57 12 -51 -15 rrcurveto
+ 32 -200 rmoveto
+ 7 22 4 18 14 vvcurveto
+ 23 -8 18 -20 -5 -5 -2 -2 -5 vhcurveto
+ -22 -9 -32 -33 -29 vvcurveto
+ -28 28 -15 19 -11 vhcurveto
+ -6 -6 -8 -7 -10 -7 -41 -29 -51 -32 -42 -27 rrcurveto
+ -7 -4 -2 -2 -1 vvcurveto
+ 6 1 81 20 55 27 43 58 rlinecurve
+ 7 -5 6 -1 5 -7 rrcurveto
+ 8 12 7 11 14 vvcurveto
+ 1 vlineto
+ -1 9 -5 5 -6 4 rrcurveto
+ -37 54 rmoveto
+ 3 hlineto
+ 12 5 -11 -14 -6 0 -6 -2 -8 hvcurveto
+ -10 5 -27 10 14 vvcurveto
+ 9 11 6 8 1 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="ddal-ar">
+ 3 207 705 rmoveto
+ 8 -125 29 46 -8 125 rlineto
+ 82 -159 rmoveto
+ 13 18 18 15 -16 20 -13 16 -30 -9 -12 -11 -25 -24 -23 -25 -23 -26 -34 -6 -38 -3 -40 1 rrcurveto
+ -2 -2 -4 -1 2 hvcurveto
+ 29 -17 15 -15 25 -2 11 -1 13 1 17 4 51 13 38 21 26 35 rrcurveto
+ -19 9 rmoveto
+ 2 -3 2 -6 -4 -2 -22 -11 -27 -5 -27 -5 14 14 13 15 18 10 11 6 15 -4 5 -9 rrcurveto
+ -57 -290 rmoveto
+ 14 -40 18 -55 -1 -26 -50 -22 -89 -24 -60 -11 -74 -133 rcurveline
+ 56 15 105 22 46 24 29 15 25 22 21 24 rrcurveto
+ 122 145 -85 158 0 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="degree">
+ -213 69 575 rmoveto
+ -54 43 -43 54 54 43 43 54 54 -43 43 -54 -54 -43 -43 -54 vhcurveto
+ 30 hmoveto
+ 37 30 30 37 37 30 -30 -37 -37 -30 -30 -37 -37 -30 30 37 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="delta">
+ -122 349 687 rmoveto
+ 4 -29 -24 3 -27 hhcurveto
+ -73 -63 -21 -71 -35 hvcurveto
+ -6 -12 -5 -12 -13 vvcurveto
+ -38 54 -50 38 -35 vhcurveto
+ -77 -77 -81 -102 -103 vvcurveto
+ -82 44 -87 104 131 103 131 129 55 -30 50 -38 39 vhcurveto
+ -95 91 rlineto
+ -80 76 -25 16 27 vvcurveto
+ 32 32 9 33 66 38 -7 -2 35 vhcurveto
+ 15 42 rlineto
+ -151 -257 rmoveto
+ 60 -60 76 -81 -72 vvcurveto
+ -83 -45 -82 -75 -85 -36 96 72 76 35 62 70 72 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="dieresis">
+ -25 420 595 rmoveto
+ 30 -20 28 -34 -29 -35 -22 -34 -32 26 -26 32 32 26 23 33 2 vhcurveto
+ -202 hmoveto
+ 30 -20 28 -34 -29 -35 -22 -34 -32 26 -26 32 32 26 23 33 2 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="dieresiscomb">
+ -545 160 595 rmoveto
+ 30 -20 28 -34 -29 -35 -22 -34 -32 26 -26 32 32 26 23 33 2 vhcurveto
+ -202 hmoveto
+ 30 -20 28 -34 -29 -35 -22 -34 -32 26 -26 32 32 26 23 33 2 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="divide">
+ 279 471 514 rmoveto
+ 30 -20 28 -34 -29 -35 -22 -34 -32 26 -26 32 32 26 23 33 2 vhcurveto
+ 273 -238 rmoveto
+ -657 hlineto
+ -7 -40 rlineto
+ 658 hlineto
+ -267 -238 rmoveto
+ 30 -20 28 -34 -29 -35 -22 -34 -32 26 -26 32 32 26 23 33 2 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="dollar">
+ -69 439 593 rmoveto
+ 79 -42 -57 12 -69 -1 -1 0 -1 hhcurveto
+ 114 vlineto
+ -40 -8 rlineto
+ -110 vlineto
+ -86 -14 -73 -60 -102 vvcurveto
+ -89 54 -47 105 -46 vhcurveto
+ -275 vlineto
+ -2 -2 0 -2 hhcurveto
+ -67 -39 49 66 -20 hvcurveto
+ -16 1 -55 -63 rlineto
+ -69 27 64 -28 66 hhcurveto
+ 15 16 1 3 15 hvcurveto
+ -114 vlineto
+ 40 8 rlineto
+ 116 vlineto
+ 93 29 81 74 96 vvcurveto
+ 76 -52 51 -100 44 vhcurveto
+ -7 3 -8 4 -7 3 rrcurveto
+ 251 vlineto
+ 54 -7 29 -41 15 -57 13 -3 rcurveline
+ -234 -3 rmoveto
+ 54 34 45 49 11 vhcurveto
+ -229 vlineto
+ -47 29 -36 37 53 vvcurveto
+ 213 -351 rmoveto
+ -63 -38 -49 -52 -19 vhcurveto
+ 247 vlineto
+ 48 -27 42 -44 -45 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="dotabove-ar">
+ 79 13 rmoveto
+ -71 66 -27 -34 -28 -35 -27 -34 rlinecurve
+ 71 -66 28 34 27 34 27 35 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="dotbelow-ar">
+ 79 13 rmoveto
+ -71 66 -27 -34 -28 -35 -27 -34 rlinecurve
+ 71 -66 28 34 27 34 27 35 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="dotlessi">
+ -222 192 392 rmoveto
+ 44 -17 35 -45 -39 -56 -39 -36 -45 vhcurveto
+ 13 -18 rlineto
+ 15 24 34 17 22 hhcurveto
+ 26 9 -33 -52 hvcurveto
+ -6 -221 rlineto
+ -99 37 -13 43 55 52 52 45 34 vhcurveto
+ 11 vlineto
+ -13 10 rlineto
+ -24 -27 -27 -21 -38 hhcurveto
+ -35 -9 43 74 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="dotlessj">
+ -257 18 375 rmoveto
+ 13 25 35 20 16 hhcurveto
+ 36 8 -12 -242 -44 -3 -124 -17 -62 hvcurveto
+ -14 -50 -40 -45 -74 -44 16 -16 rcurveline
+ 90 43 76 60 30 87 rrcurveto
+ 12 35 0 140 20 vvcurveto
+ 37 0 167 -7 43 vhcurveto
+ 33 -3 -10 34 -48 hhcurveto
+ -43 -57 -43 -32 -41 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="dul-ar">
+ 3 380 636 rmoveto
+ -10 19 -11 16 -14 13 -49 46 -46 -45 -41 -55 -41 -56 -38 -66 -17 -33 -1 -1 rcurveline
+ 1 -44 25 34 94 211 60 -147 rlinecurve
+ 6 -15 5 5 4 5 27 35 26 37 20 41 rrcurveto
+ -138 -325 rmoveto
+ 14 -40 18 -55 -1 -26 -50 -22 -89 -24 -60 -11 -74 -133 rcurveline
+ 56 15 105 22 46 24 29 15 25 22 21 24 rrcurveto
+ 122 145 -85 158 0 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="e">
+ -83 438 340 rmoveto
+ 77 -56 61 -86 -76 -72 -33 -57 -49 vhcurveto
+ -39 -45 -12 -59 -58 vvcurveto
+ -113 32 -125 134 86 80 58 58 62 vhcurveto
+ -13 18 -11 2 rlineto
+ -35 -45 -54 -33 -55 hhcurveto
+ -89 -34 78 63 -6 hvcurveto
+ 282 122 rlineto
+ 11 5 10 4 12 vvcurveto
+ -177 98 rmoveto
+ 56 35 -52 -42 -16 -7 -8 -6 -2 hvcurveto
+ -202 -80 -4 4 rlineto
+ -1 6 -1 6 6 vvcurveto
+ 49 7 45 39 42 vhcurveto
+ 26 21 30 16 33 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="eacute">
+ -107 354 714 rmoveto
+ -47 36 -13 -2 -120 -157 18 -31 rlineto
+ 246 -220 rmoveto
+ 77 -56 61 -86 -76 -72 -33 -57 -49 vhcurveto
+ -39 -45 -12 -59 -58 vvcurveto
+ -113 32 -125 134 86 80 58 58 62 vhcurveto
+ -13 18 -11 2 rlineto
+ -35 -45 -54 -33 -55 hhcurveto
+ -89 -34 78 63 -6 hvcurveto
+ 282 122 rlineto
+ 11 5 10 4 12 vvcurveto
+ -177 98 rmoveto
+ 56 35 -52 -42 -16 -7 -8 -6 -2 hvcurveto
+ -202 -80 -4 4 rlineto
+ -1 6 -1 6 6 vvcurveto
+ 49 7 45 39 42 vhcurveto
+ 26 21 30 16 33 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="ecircumflex">
+ -107 76 561 rmoveto
+ 23 -12 143 131 121 -124 39 26 -157 160 rlineto
+ 193 -402 rmoveto
+ 77 -56 61 -86 -76 -72 -33 -57 -49 vhcurveto
+ -39 -45 -12 -59 -58 vvcurveto
+ -113 32 -125 134 86 80 58 58 62 vhcurveto
+ -13 18 -11 2 rlineto
+ -35 -45 -54 -33 -55 hhcurveto
+ -89 -34 78 63 -6 hvcurveto
+ 282 122 rlineto
+ 11 5 10 4 12 vvcurveto
+ -177 98 rmoveto
+ 56 35 -52 -42 -16 -7 -8 -6 -2 hvcurveto
+ -202 -80 -4 4 rlineto
+ -1 6 -1 6 6 vvcurveto
+ 49 7 45 39 42 vhcurveto
+ 26 21 30 16 33 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="edieresis">
+ -107 399 615 rmoveto
+ 30 -20 28 -34 -29 -35 -22 -34 -32 26 -26 32 32 26 23 33 2 vhcurveto
+ -202 hmoveto
+ 30 -20 28 -34 -29 -35 -22 -34 -32 26 -26 32 32 26 23 33 2 vhcurveto
+ 241 -275 rmoveto
+ 77 -56 61 -86 -76 -72 -33 -57 -49 vhcurveto
+ -39 -45 -12 -59 -58 vvcurveto
+ -113 32 -125 134 86 80 58 58 62 vhcurveto
+ -13 18 -11 2 rlineto
+ -35 -45 -54 -33 -55 hhcurveto
+ -89 -34 78 63 -6 hvcurveto
+ 282 122 rlineto
+ 11 5 10 4 12 vvcurveto
+ -177 98 rmoveto
+ 56 35 -52 -42 -16 -7 -8 -6 -2 hvcurveto
+ -202 -80 -4 4 rlineto
+ -1 6 -1 6 6 vvcurveto
+ 49 7 45 39 42 vhcurveto
+ 26 21 30 16 33 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="egrave">
+ -107 109 716 rmoveto
+ 162 -154 18 31 -120 157 -13 2 rlineto
+ 282 -412 rmoveto
+ 77 -56 61 -86 -76 -72 -33 -57 -49 vhcurveto
+ -39 -45 -12 -59 -58 vvcurveto
+ -113 32 -125 134 86 80 58 58 62 vhcurveto
+ -13 18 -11 2 rlineto
+ -35 -45 -54 -33 -55 hhcurveto
+ -89 -34 78 63 -6 hvcurveto
+ 282 122 rlineto
+ 11 5 10 4 12 vvcurveto
+ -177 98 rmoveto
+ 56 35 -52 -42 -16 -7 -8 -6 -2 hvcurveto
+ -202 -80 -4 4 rlineto
+ -1 6 -1 6 6 vvcurveto
+ 49 7 45 39 42 vhcurveto
+ 26 21 30 16 33 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="eight">
+ -45 312 396 rmoveto
+ 60 37 63 63 72 vvcurveto
+ 82 -70 56 -102 vhcurveto
+ -9 hlineto
+ -81 -32 -84 -46 -98 vvcurveto
+ -71 57 -58 55 -38 vhcurveto
+ -11 vlineto
+ -108 -63 -53 -39 -93 vvcurveto
+ -45 10 -45 32 -32 vhcurveto
+ -35 35 54 -10 48 hhcurveto
+ 119 123 78 129 80 -43 36 -106 72 hvcurveto
+ -33 27 rmoveto
+ -53 37 -60 54 59 vvcurveto
+ 39 11 28 46 30 vhcurveto
+ 85 43 -66 -50 -53 -30 -49 -42 -29 hvcurveto
+ -41 -78 rmoveto
+ 82 -52 54 -39 -75 vvcurveto
+ -79 -46 -57 -83 -79 -43 75 70 77 46 44 69 36 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="eight-ar">
+ 12 351 139 rmoveto
+ -65 138 -63 135 -30 169 -2 8 -11 -9 -3 -5 -15 -27 -2 -38 -8 -32 -32 -123 -34 -117 -50 -103 rrcurveto
+ -48 -5 -45 -7 -41 vhcurveto
+ 3 -1 2 0 1 3 50 114 47 120 36 134 36 -117 52 -133 58 -121 15 47 15 48 12 44 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="eight-ar.dnom">
+ -99 247 97 rmoveto
+ -46 97 -44 94 -21 119 -1 5 -8 -6 -2 -3 -11 -19 -1 -27 -6 -22 -22 -87 -24 -81 -35 -72 rrcurveto
+ -34 -3 -32 -5 -28 vhcurveto
+ 2 -1 1 0 1 2 35 80 33 84 25 94 25 -82 37 -93 40 -85 11 33 10 34 9 30 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="eight-ar.numr">
+ -99 247 366 rmoveto
+ -46 97 -44 94 -21 119 -1 5 -8 -6 -2 -3 -11 -19 -1 -27 -6 -22 -22 -86 -24 -82 -35 -72 rrcurveto
+ -34 -3 -32 -5 -28 vhcurveto
+ 2 -1 1 0 1 2 35 80 33 84 25 94 25 -82 37 -93 40 -85 11 33 10 34 9 30 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="eight.dnom">
+ 230 231 rmoveto
+ 7 vlineto
+ 40 22 44 38 43 vvcurveto
+ 50 -49 33 -68 vhcurveto
+ -6 hlineto
+ -54 -19 -58 -27 -60 vvcurveto
+ -43 38 -34 38 -23 vhcurveto
+ -7 vlineto
+ -72 -37 -37 -24 -56 vvcurveto
+ -27 6 -27 22 -19 vhcurveto
+ -21 23 38 -6 32 hhcurveto
+ 81 83 47 77 49 -30 20 -71 44 hvcurveto
+ -22 16 rmoveto
+ -36 22 -41 33 35 vvcurveto
+ 23 8 17 31 18 vhcurveto
+ 58 29 -39 -30 -32 -20 -30 -29 -17 hvcurveto
+ -28 -47 rmoveto
+ 55 -31 37 -24 -44 vvcurveto
+ -49 -33 -33 -54 -53 -30 44 43 47 32 25 46 22 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="eight.numr">
+ 230 506 rmoveto
+ 7 vlineto
+ 40 22 44 38 43 vvcurveto
+ 50 -49 33 -68 vhcurveto
+ -6 hlineto
+ -54 -19 -58 -27 -60 vvcurveto
+ -43 38 -34 38 -23 vhcurveto
+ -7 vlineto
+ -72 -37 -37 -24 -56 vvcurveto
+ -27 6 -27 22 -19 vhcurveto
+ -21 23 38 -6 32 hhcurveto
+ 81 83 47 77 49 -30 20 -71 44 hvcurveto
+ -22 16 rmoveto
+ -36 22 -41 33 35 vvcurveto
+ 23 8 17 31 18 vhcurveto
+ 58 29 -39 -30 -32 -20 -30 -29 -17 hvcurveto
+ -28 -47 rmoveto
+ 55 -31 37 -24 -44 vvcurveto
+ -49 -33 -33 -54 -53 -30 44 43 47 32 25 46 22 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="ellipsis">
+ 636 71 82 rmoveto
+ -5 -5 -3 -6 -5 vvcurveto
+ -4 2 -4 3 -4 vhcurveto
+ 43 -50 rlineto
+ -5 4 5 -1 5 hhcurveto
+ 3 4 2 7 7 hvcurveto
+ 39 43 rlineto
+ 5 5 2 5 5 vvcurveto
+ 4 -2 6 -4 5 vhcurveto
+ -39 42 rlineto
+ 5 -6 -5 2 -4 hhcurveto
+ -5 -4 -1 -5 -5 hvcurveto
+ 293 -41 rmoveto
+ -5 -5 -3 -6 -5 vvcurveto
+ -4 2 -4 3 -4 vhcurveto
+ 43 -50 rlineto
+ -5 4 5 -1 5 hhcurveto
+ 3 5 2 7 7 hvcurveto
+ 39 43 rlineto
+ 5 5 2 5 5 vvcurveto
+ 4 -2 6 -4 5 vhcurveto
+ -39 42 rlineto
+ 5 -6 -6 2 -4 hhcurveto
+ -5 -4 -1 -5 -5 hvcurveto
+ 294 -41 rmoveto
+ -5 -5 -3 -6 -5 vvcurveto
+ -4 2 -4 3 -4 vhcurveto
+ 43 -50 rlineto
+ -5 4 5 -1 5 hhcurveto
+ 3 4 2 7 7 hvcurveto
+ 39 43 rlineto
+ 5 5 2 5 5 vvcurveto
+ 4 -2 6 -4 5 vhcurveto
+ -39 42 rlineto
+ 5 -6 -5 2 -4 hhcurveto
+ -5 -4 -1 -5 -5 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="emdash">
+ 636 205 vmoveto
+ 1000 58 -1000 hlineto
+ endchar
+ </CharString>
+ <CharString name="endash">
+ 177 27 205 rmoveto
+ 487 58 -487 hlineto
+ endchar
+ </CharString>
+ <CharString name="epsilon">
+ -175 335 430 rmoveto
+ 22 -31 -35 19 -39 hhcurveto
+ -85 -82 -55 -96 -30 20 -34 23 -14 hvcurveto
+ -7 vlineto
+ -54 -25 -31 -44 -57 vvcurveto
+ -79 74 -45 74 79 72 40 57 53 vhcurveto
+ -8 14 -9 2 rlineto
+ -32 -39 -48 -28 -46 hhcurveto
+ -64 -68 40 73 54 48 27 45 16 15 -1 -4 15 hvcurveto
+ 21 47 rlineto
+ -81 5 -58 -13 87 vvcurveto
+ 49 46 28 40 40 41 -21 -43 15 vhcurveto
+ 11 -1 rlineto
+ endchar
+ </CharString>
+ <CharString name="epsilon1">
+ -125 213 258 rmoveto
+ -2 -1 -64 1 -37 hhcurveto
+ -6 6 rlineto
+ 78 2 35 87 96 hhcurveto
+ 53 26 -12 -59 42 hvcurveto
+ 13 2 37 53 rlineto
+ 37 -37 -49 22 -52 hhcurveto
+ -144 -105 -128 -140 -60 16 -62 43 -43 hvcurveto
+ -37 37 56 -12 51 hhcurveto
+ 72 71 42 44 56 hvcurveto
+ -12 20 -8 1 rlineto
+ -33 -39 -51 -16 -51 hhcurveto
+ -36 -45 5 24 -24 hvcurveto
+ -35 35 -18 48 -2 49 5 6 rcurveline
+ 1 26 42 2 1 hhcurveto
+ 47 64 0 -1 30 hvcurveto
+ 14 42 rlineto
+ endchar
+ </CharString>
+ <CharString name="equal">
+ 278 745 369 rmoveto
+ -661 hlineto
+ -7 -40 rlineto
+ 662 hlineto
+ 6 -157 rmoveto
+ -661 hlineto
+ -7 -40 rlineto
+ 662 hlineto
+ endchar
+ </CharString>
+ <CharString name="eta">
+ -5 498 -164 rmoveto
+ -15 122 -2 123 123 vvcurveto
+ 177 11 85 -104 -64 -71 -38 -37 -56 vhcurveto
+ -11 2 rlineto
+ 49 -3 -25 21 -41 hhcurveto
+ -45 -49 -41 -29 -36 hvcurveto
+ 16 -18 rlineto
+ 14 22 28 19 19 hhcurveto
+ 37 2 -42 -32 hvcurveto
+ -335 vlineto
+ 9 -10 72 25 rlineto
+ -3 57 -4 67 46 vvcurveto
+ 53 0 83 2 24 vhcurveto
+ 29 41 48 29 47 hhcurveto
+ 105 -20 -107 -170 -105 0 -181 -1 -27 hvcurveto
+ 9 -11 rlineto
+ endchar
+ </CharString>
+ <CharString name="eth">
+ -84 144 662 rmoveto
+ 27 -16 23 -17 20 -22 -108 -57 rcurveline
+ 13 -39 122 65 22 -31 20 -36 18 -43 rlinecurve
+ -3 -5 -37 4 -23 -1 -21 -3 rlinecurve
+ -151 -24 -54 -135 20 -127 7 -46 25 -69 40 -35 41 -36 54 0 57 9 41 7 38 23 28 33 70 81 -2 114 -16 100 -15 96 -51 86 -62 62 92 49 rcurveline
+ -13 39 -112 -59 -31 25 -32 19 -33 11 rlinecurve
+ 187 -539 rmoveto
+ -8 -47 -23 -51 -52 -8 -98 -15 -41 119 -8 47 -14 90 16 133 116 18 27 4 28 -4 26 -7 14 -37 10 -39 6 -40 8 -53 3 -57 -10 -53 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="euro">
+ 93 425 270 rmoveto
+ 10 40 rlineto
+ -225 hlineto
+ -1 11 -1 12 11 vvcurveto
+ 9 0 9 1 8 vhcurveto
+ 242 hlineto
+ 10 40 rlineto
+ -249 hlineto
+ 34 246 224 39 63 -166 14 -1 rcurveline
+ 57 58 -125 142 -168 -22 -101 -116 rlinecurve
+ -46 -53 -26 -61 -12 -66 rrcurveto
+ -65 hlineto
+ -10 -40 rlineto
+ 70 hlineto
+ -1 -15 -1 -14 -15 -5 0 -6 -5 vvcurveto
+ -84 hlineto
+ -10 -40 rlineto
+ 97 hlineto
+ 9 -79 27 -75 57 -57 rrcurveto
+ -45 45 53 -18 52 hhcurveto
+ 85 -1 81 43 41 38 -17 29 rcurveline
+ -71 -37 -104 -23 -77 64 -42 35 -31 60 -14 66 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="exclam">
+ -111 132 194 rmoveto
+ 13 10 6 18 8 16 29 58 22 70 -7 98 -11 153 -56 100 -50 107 -20 -48 -22 -45 -18 -47 -3 -7 21 -30 4 -8 56 -108 50 -149 -30 -180 rrcurveto
+ -2 -1 -13 9 7 vhcurveto
+ -83 -109 rmoveto
+ -3 -4 0 -5 4 -3 72 -70 rcurveline
+ 4 -3 6 -1 3 4 88 92 rcurveline
+ 3 4 1 5 -4 3 -73 70 rcurveline
+ -4 3 -5 1 -3 -4 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="exclam#1">
+ -329 112 186 rmoveto
+ 36 371 rlineto
+ 3 29 2 29 29 vvcurveto
+ 20 -7 26 -30 -32 -18 -14 -51 vhcurveto
+ -1 -17 3 -22 1 -19 27 -383 rcurveline
+ -42 -138 rmoveto
+ -31 26 -26 32 31 25 26 31 31 -25 26 -31 -32 -26 -26 -31 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="exclamdown">
+ -329 54 442 rmoveto
+ -31 26 -26 32 31 25 26 31 31 -25 26 -31 -32 -26 -26 -31 vhcurveto
+ 58 -140 rmoveto
+ -16 2 -27 -383 -1 -19 -3 -22 1 -17 rlinecurve
+ -51 18 -14 32 30 7 26 20 29 -2 29 -3 29 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="f">
+ -216 3 428 rmoveto
+ -4 -22 5 -7 rlineto
+ 112 hlineto
+ 6 -8 rlineto
+ -108 vlineto
+ -91 -6 -94 -7 -99 vhcurveto
+ 17 -11 79 24 rlineto
+ -7 81 -3 95 94 vvcurveto
+ 111 vlineto
+ 6 6 rlineto
+ 115 hlineto
+ 7 6 7 22 -5 7 rlineto
+ -124 hlineto
+ -4 6 rlineto
+ 102 17 87 43 47 7 -43 -21 4 vhcurveto
+ 12 -4 58 54 rlineto
+ 27 -13 -26 27 -54 hhcurveto
+ -63 -60 -37 -70 -30 hvcurveto
+ -16 -36 -2 -51 -35 vvcurveto
+ -6 -6 rlineto
+ -105 hlineto
+ endchar
+ </CharString>
+ <CharString name="f.alt">
+ -228 314 641 rmoveto
+ 28 -22 vlineto
+ -63 -60 -37 -70 -30 hvcurveto
+ -16 -36 -2 -51 -35 vvcurveto
+ -6 -6 rlineto
+ -105 hlineto
+ -7 -6 -4 -22 5 -7 rlineto
+ 112 hlineto
+ 6 -8 rlineto
+ -108 vlineto
+ -91 -6 -94 -7 -99 vhcurveto
+ 17 -11 79 24 rlineto
+ -7 81 -3 95 94 vvcurveto
+ 111 vlineto
+ 6 6 rlineto
+ 115 hlineto
+ 7 6 7 22 -5 7 rlineto
+ -124 hlineto
+ -4 6 rlineto
+ 66 6 64 22 37 vhcurveto
+ 12 20 16 9 22 2 43 4 -10 -2 6 1 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="fatha-ar">
+ 79 7 rmoveto
+ 29 46 -67 -24 -76 -26 -64 -26 rlinecurve
+ -33 -52 61 30 81 28 69 24 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="fathatan-ar">
+ 79 75 rmoveto
+ 29 46 -67 -24 -76 -26 -64 -26 rlinecurve
+ -33 -52 61 30 81 28 69 24 rlinecurve
+ -65 vmoveto
+ 29 46 -67 -24 -76 -26 -64 -26 rlinecurve
+ -33 -52 61 30 81 28 69 24 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="feh-ar">
+ 315 562 663 rmoveto
+ -71 66 -27 -34 -28 -35 -27 -34 rlinecurve
+ 71 -66 28 34 27 34 27 35 rlinecurve
+ -474 -629 rmoveto
+ 111 -74 277 53 103 122 67 79 40 106 -45 89 -25 49 -46 42 -33 -45 -27 -37 -19 -45 -22 -41 -10 -19 -1 -34 19 -9 32 -16 38 15 21 18 rrcurveto
+ 11 12 21 -75 0 vvcurveto
+ -72 -72 -455 -111 17 200 4 53 24 42 20 36 -11 -3 -4 -9 -5 -8 -114 -174 15 -98 69 -46 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar">
+ 315 88 34 rmoveto
+ 111 -74 277 53 103 122 67 79 40 106 -45 89 -25 49 -46 42 -33 -45 -27 -37 -19 -45 -22 -41 -10 -19 -1 -34 19 -9 32 -16 38 15 21 18 rrcurveto
+ 11 12 21 -75 0 vvcurveto
+ -72 -72 -455 -111 17 200 4 53 24 42 20 36 -11 -3 -4 -9 -5 -8 -114 -174 15 -98 69 -46 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.fina">
+ 203 103 386 rmoveto
+ -5 -4 -3 -6 -4 hvcurveto
+ -24 -38 -24 -44 -23 -51 rrcurveto
+ -13 -30 -7 -29 -27 vvcurveto
+ -19 3 -18 7 -18 vhcurveto
+ 11 -33 21 -24 31 -17 rrcurveto
+ -20 35 41 -9 52 hhcurveto
+ 114 112 33 38 77 hvcurveto
+ 16 4 57 16 46 30 35 44 rlinecurve
+ 35 44 28 49 20 54 rrcurveto
+ 5 20 3 17 15 vvcurveto
+ 39 -21 32 -39 -24 -26 -16 -32 -27 vhcurveto
+ -47 -55 -42 -68 -37 -82 -37 -13 -48 -13 -60 -12 rrcurveto
+ -8 -38 -36 -5 -34 hhcurveto
+ -19 -17 1 3 -17 hvcurveto
+ -49 7 -34 20 -20 34 rrcurveto
+ -6 11 -3 13 15 vvcurveto
+ 33 14 44 29 54 vhcurveto
+ 2 5 1 3 3 vvcurveto
+ 6 -3 3 -7 vhcurveto
+ 444 -152 rmoveto
+ 6 2 5 4 5 vhcurveto
+ 18 24 15 27 31 11 rrcurveto
+ 14 -6 24 -31 -29 vvcurveto
+ -11 -5 -8 -10 -5 vhcurveto
+ -26 -12 -24 -7 -21 -1 rrcurveto
+ -9 4 -13 14 14 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.fina.jalt">
+ 439 287 3 rmoveto
+ 87 -11 111 10 86 13 94 14 108 27 62 40 69 45 49 76 30 83 16 61 -8 38 -32 17 -32 17 -35 -14 -37 -44 -47 -55 -42 -70 -38 -83 -76 -27 -96 -8 -93 -7 rrcurveto
+ -158 -2 -120 35 -84 73 -32 27 -15 24 2 20 2 20 10 18 18 18 61 58 76 42 90 28 90 28 86 15 82 3 53 112 rcurveline
+ -78 -3 -72 -9 -65 -17 -143 -37 -115 -57 -79 -103 -78 -101 -27 -123 92 -100 43 -47 76 -30 109 -14 rrcurveto
+ 574 297 rmoveto
+ 13 -5 11 -14 9 -24 9 -24 -3 -16 -16 -7 -26 -12 -24 -7 -21 -1 -13 7 -18 21 15 20 18 24 14 28 32 10 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.init">
+ 26 208 255 rmoveto
+ 25 22 13 11 13 hvcurveto
+ 1 1 1 1 1 hhcurveto
+ 5 6 -9 -20 7 hvcurveto
+ 12 -36 -32 -25 -93 -29 -154 -33 rlinecurve
+ -22 -129 100 21 65 19 33 17 rlinecurve
+ 33 17 30 25 27 31 29 33 22 43 13 54 rrcurveto
+ 5 21 3 20 19 vvcurveto
+ 62 -31 50 -37 27 vhcurveto
+ 6 -8 -7 3 -7 hhcurveto
+ -11 -11 -7 -14 -10 hvcurveto
+ -27 -36 -19 -46 -22 -41 rrcurveto
+ -5 -9 -2 -11 -12 vvcurveto
+ -27 20 -10 25 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.init.ain">
+ 189 456 215 rmoveto
+ -12 -11 -27 -14 -42 -16 -70 -27 -102 -28 -92 8 -40 4 -24 16 -8 29 -13 -35 -13 -42 -13 -50 1 -29 27 -15 28 -3 65 -7 70 8 74 21 74 21 60 35 44 49 rrcurveto
+ 47 53 53 125 -47 93 -13 24 -16 20 -20 14 -20 14 -17 -4 -17 -22 -27 -37 -19 -45 -22 -41 -10 -18 -1 -35 19 -9 33 -17 38 18 19 16 5 6 8 -9 8 -24 rrcurveto
+ 12 -36 0 0 0 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.init.dal">
+ 65 328 118 rmoveto
+ 58 64 34 124 -41 81 -25 49 -45 41 -33 -45 -27 -37 -19 -45 -22 -41 -10 -19 -1 -34 19 -9 32 -16 37 15 21 18 10 12 21 -68 2 -7 -30 -15 -157 -69 -67 17 rrcurveto
+ -24 6 -13 30 2 29 rrcurveto
+ 4 -4 2 -4 -6 vhcurveto
+ -40 -58 -29 -101 65 -32 68 -33 175 91 47 52 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.init.feh">
+ 257 509 141 rmoveto
+ 29 32 22 43 13 55 21 90 -30 73 -51 37 -20 14 -18 -4 -17 -22 -27 -36 -18 -47 -22 -41 -11 -18 -1 -35 19 -9 33 -16 39 18 19 16 6 6 6 -9 8 -24 rrcurveto
+ 12 -36 0 0 0 vvcurveto
+ -16 -14 -31 -16 -49 -18 -82 -31 -117 -31 -106 8 -46 3 -27 17 -8 30 -13 -35 -13 -42 -13 -50 1 -29 27 -15 28 -3 68 -7 80 8 93 23 93 23 70 38 49 54 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.init.hah">
+ -152 138 87 rmoveto
+ -22 -18 -47 -17 -29 -10 -7 -17 rcurveline
+ 98 -25 18 25 24 42 11 32 rlinecurve
+ 12 30 6 31 33 vvcurveto
+ 9 vlineto
+ -1 36 -9 33 -14 29 -13 24 -16 20 -20 14 rrcurveto
+ 6 -8 -7 2 -7 hhcurveto
+ -11 -11 -6 -14 -10 hvcurveto
+ -27 -36 -19 -47 -22 -41 rrcurveto
+ -5 -9 -2 -10 -13 vvcurveto
+ -2 vlineto
+ -25 1 19 -10 24 hhcurveto
+ 25 23 14 11 13 hvcurveto
+ 1 1 1 0 1 hhcurveto
+ 6 5 -13 -24 7 hvcurveto
+ 8 -29 4 -17 1 -4 rrcurveto
+ -1 -2 0 -1 -2 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.init.heh">
+ 235 193 26 rmoveto
+ 52 62 52 41 52 19 52 19 46 29 38 39 52 54 50 117 -47 96 -13 24 -16 21 -20 14 -20 14 -17 -5 -17 -22 -27 -37 -19 -45 -22 -41 -10 -19 -1 -34 19 -9 rrcurveto
+ 33 -17 38 18 19 16 5 6 8 -9 8 -24 rrcurveto
+ 12 -36 0 -1 0 vvcurveto
+ -5 -4 -20 -10 -36 -14 rrcurveto
+ -14 -36 -19 -8 -2 hhcurveto
+ -98 -29 -68 -50 -40 -74 -40 -74 -41 -78 -41 -82 4 30 rcurveline
+ 1 vlineto
+ -53 -65 rlineto
+ -1 vlineto
+ -3 -38 -3 -41 1 -30 6 -17 rlinecurve
+ 6 -17 13 11 19 40 29 58 23 56 15 36 15 36 27 41 40 47 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.init.meem">
+ 51 316 200 rmoveto
+ 26 29 21 43 13 57 13 57 -2 48 -19 38 -13 24 -16 20 -20 14 -20 14 -18 -4 -16 -22 -27 -36 -19 -46 -22 -41 -10 -19 -1 -35 19 -9 33 -16 38 18 19 16 rrcurveto
+ 5 6 7 -10 8 -24 rrcurveto
+ 12 -36 1 0 0 vvcurveto
+ -11 -9 -60 -14 -15 -6 -62 -14 -48 -18 -34 -35 -48 -50 -18 -69 -32 -69 21 -2 rcurveline
+ 31 77 57 30 84 22 50 13 45 23 28 35 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.init.ragaa">
+ 314 249 224 rmoveto
+ -11 -9 -17 -9 -23 -9 rrcurveto
+ -1 vlineto
+ -30 -14 -35 -13 -26 -18 rrcurveto
+ 0 -2 -1 -6 -5 vhcurveto
+ -39 -29 -42 -33 -18 -50 45 -33 rcurveline
+ 1 5 5 0 vhcurveto
+ 30 21 37 22 32 20 rrcurveto
+ 1 vlineto
+ 4 3 3 1 2 1 33 17 35 31 21 23 21 30 17 30 10 30 27 71 -2 68 -31 63 -13 24 -16 20 -20 14 -20 14 -17 -5 -17 -22 -27 -37 -19 -45 -22 -41 rrcurveto
+ -10 -18 -2 -35 19 -9 33 -17 39 17 19 17 15 13 18 -94 1 -5 rrcurveto
+ -1 -2 0 -1 -2 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.init.reh">
+ 18 285 149 rmoveto
+ 26 29 20 44 13 57 13 57 -2 47 -19 38 -13 24 -16 20 -20 14 -20 14 -18 -4 -17 -22 -27 -36 -18 -46 -22 -41 -10 -18 -1 -35 18 -9 33 -17 39 18 19 16 rrcurveto
+ 11 13 20 -74 1 -2 -16 -11 -24 -5 -22 -4 -60 -15 -44 -12 -28 -10 -28 -10 -21 -17 -14 -23 -9 -16 -8 -23 -7 -31 rrcurveto
+ -1 vlineto
+ -15 -18 -4 -16 9 -13 9 -13 10 2 11 17 rrcurveto
+ 1 hlineto
+ 16 15 19 13 25 12 66 29 79 12 45 51 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.init.sad">
+ 356 522 280 rmoveto
+ 25 23 14 11 13 hvcurveto
+ 1 1 1 1 1 hhcurveto
+ 5 6 -10 -20 7 hvcurveto
+ 12 -36 -43 -38 -102 -26 -74 -16 rlinecurve
+ -15 -68 -78 -15 -73 hhcurveto
+ -50 -34 13 32 -17 hvcurveto
+ -4 8 -3 10 12 vvcurveto
+ 29 14 40 26 52 vhcurveto
+ 1 2 0 1 1 vvcurveto
+ 3 -3 0 -2 -2 -1 0 -2 -1 vhcurveto
+ -10 -15 -15 -23 -20 -34 -20 -34 -14 -34 -11 -36 rrcurveto
+ -7 -22 -4 -22 -20 vvcurveto
+ -55 21 -25 57 -8 vhcurveto
+ -3 19 20 -1 23 hhcurveto
+ 21 22 2 2 24 hvcurveto
+ 106 10 103 30 81 39 91 44 52 56 26 104 rrcurveto
+ 5 21 2 19 19 vvcurveto
+ 29 -6 27 -12 25 vhcurveto
+ -13 24 -16 20 -20 14 rrcurveto
+ 6 -8 -8 3 -7 hhcurveto
+ -11 -11 -7 -14 -10 hvcurveto
+ -27 -37 -18 -45 -22 -41 rrcurveto
+ -5 -9 -2 -11 -12 vvcurveto
+ -27 19 -11 25 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.init.yeh">
+ -152 138 87 rmoveto
+ -22 -18 -47 -17 -29 -10 -7 -17 rcurveline
+ 98 -25 18 25 24 42 11 32 rlinecurve
+ 12 30 6 31 33 vvcurveto
+ 9 vlineto
+ -1 36 -9 33 -14 29 -13 24 -16 20 -20 14 rrcurveto
+ 6 -8 -7 2 -7 hhcurveto
+ -11 -11 -6 -14 -10 hvcurveto
+ -27 -36 -19 -47 -22 -41 rrcurveto
+ -5 -9 -2 -10 -13 vvcurveto
+ -2 vlineto
+ -25 1 19 -10 24 hhcurveto
+ 25 23 14 11 13 hvcurveto
+ 1 1 1 0 1 hhcurveto
+ 6 5 -13 -24 7 hvcurveto
+ 8 -29 4 -17 1 -4 rrcurveto
+ -1 -2 0 -1 -2 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.jalt">
+ 671 416 1 rmoveto
+ 110 4 107 20 90 30 114 38 72 51 42 112 23 62 -1 56 -25 51 -13 24 -16 20 -20 14 -20 14 -17 -4 -17 -22 -27 -36 -19 -46 -22 -41 -11 -18 0 -35 19 -9 rrcurveto
+ 33 -16 38 17 19 16 6 6 7 -9 8 -24 rrcurveto
+ 12 -36 0 0 0 vvcurveto
+ -17 -15 -35 -17 -54 -19 -54 -19 -36 -10 -17 -4 -72 -16 -80 -8 -80 -6 -158 -2 -120 36 -84 73 -32 27 -15 24 2 20 2 20 11 19 18 17 61 58 75 42 90 28 rrcurveto
+ 90 28 86 15 82 3 53 112 rcurveline
+ -79 -3 -72 -9 -64 -17 -143 -38 -114 -57 -80 -102 -79 -101 -26 -123 92 -100 61 -66 140 -34 156 5 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.medi">
+ -81 404 415 rmoveto
+ -24 -26 -16 -32 -27 hvcurveto
+ -51 -60 -43 -74 -34 -77 -180 -27 rcurveline
+ -19 -129 97 21 137 34 57 16 47 31 35 44 rlinecurve
+ 35 44 27 49 20 53 rrcurveto
+ 5 20 3 18 15 vvcurveto
+ 39 -20 31 -39 vhcurveto
+ -142 -201 rmoveto
+ 6 2 5 4 5 vhcurveto
+ 18 24 15 29 32 10 rrcurveto
+ 13 -6 25 -31 -29 vvcurveto
+ -11 -6 -8 -10 -5 vhcurveto
+ -26 -12 -23 -7 -21 -2 rrcurveto
+ -9 4 -14 14 14 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.medi.ain">
+ 11 56 1 rmoveto
+ 81 -8 146 42 60 22 52 18 42 30 33 43 33 43 26 46 19 51 16 61 -9 38 -32 17 -32 17 -35 -14 -37 -44 -47 -55 -42 -69 -38 -83 -43 -16 -69 -17 -57 6 rrcurveto
+ -49 4 -28 16 -7 26 -13 -35 -13 -43 -13 -50 1 -29 27 -14 28 -3 rrcurveto
+ 370 288 rmoveto
+ 13 -5 10 -14 9 -24 9 -24 -3 -16 -16 -7 -26 -12 -23 -7 -21 -2 -13 7 -19 22 15 20 18 24 15 28 32 10 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.medi.dal">
+ -75 241 38 rmoveto
+ 113 32 68 98 39 107 31 121 -84 42 -75 -88 -51 -60 -42 -70 -35 -78 -40 -7 -40 -13 -41 10 -25 6 -14 32 4 30 rrcurveto
+ 4 -2 2 -4 -6 vhcurveto
+ -41 -57 -30 -105 66 -32 45 -22 117 44 41 10 rrcurveto
+ 98 238 rmoveto
+ 26 -10 29 -66 -32 -15 -22 -11 -25 -7 -24 -2 -15 8 -15 22 13 18 18 24 15 28 32 11 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.medi.feh">
+ 127 213 11 rmoveto
+ 36 6 52 10 67 16 67 16 49 17 31 21 69 45 49 76 30 83 16 61 -8 38 -32 17 -32 17 -35 -14 -37 -44 -48 -55 -42 -70 -37 -83 -59 -21 -65 -8 -72 -7 rrcurveto
+ -71 -7 -87 0 -15 51 -13 -34 -13 -43 -13 -51 1 -29 27 -14 28 -3 45 -4 52 3 60 10 rrcurveto
+ 328 291 rmoveto
+ 13 -5 10 -15 9 -24 9 -24 -3 -16 -16 -7 -26 -12 -23 -6 -21 -2 -13 7 -18 21 15 20 18 24 15 29 31 10 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.medi.hah">
+ -45 271 159 rmoveto
+ 57 16 46 30 35 44 35 44 27 49 20 54 16 61 -8 38 -32 17 -32 17 -35 -14 -37 -44 -49 -57 -43 -69 -36 -82 -43 -8 -31 -11 -22 -15 -22 -15 -26 -29 -28 -44 rrcurveto
+ -35 -53 -21 -46 -7 -37 rrcurveto
+ -6 9 0 3 3 vhcurveto
+ 31 49 43 40 55 28 52 27 18 -2 60 15 rrcurveto
+ 98 238 rmoveto
+ 13 -5 11 -14 9 -24 9 -24 -3 -16 -16 -7 -25 -12 -24 -8 -22 -1 -14 7 -17 21 15 20 18 24 14 28 32 11 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.medi.heh">
+ 147 463 143 rmoveto
+ 57 16 47 30 35 44 35 44 28 49 19 54 16 61 -9 38 -32 17 -32 17 -35 -14 -37 -44 -48 -55 -42 -70 -37 -83 -59 -11 -47 -15 -36 -19 -73 -39 -46 -56 -38 -76 rrcurveto
+ -19 -39 -22 -45 -25 -50 -9 -18 rcurveline
+ 4 30 rlineto
+ 1 vlineto
+ -53 -65 rlineto
+ -1 vlineto
+ -3 -38 -3 -41 1 -30 6 -17 rlinecurve
+ 8 -23 15 29 18 35 32 68 24 55 19 42 37 83 44 50 84 34 41 17 59 17 76 18 rrcurveto
+ 99 238 rmoveto
+ 13 -5 10 -15 9 -24 9 -24 -3 -15 -16 -7 -25 -12 -24 -8 -21 -1 -13 7 -19 21 15 20 18 24 15 28 32 11 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.medi.meem">
+ -19 297 145 rmoveto
+ 57 16 46 30 35 44 35 44 27 49 20 54 16 61 -8 38 -32 17 -32 17 -35 -14 -37 -44 -48 -56 -42 -68 -37 -83 -37 -7 -34 -8 -29 -10 -54 -18 -41 -56 -25 -55 rrcurveto
+ -12 -26 -14 -32 -16 -36 21 -2 rcurveline
+ 25 55 39 35 54 15 54 15 53 13 51 12 rrcurveto
+ 98 238 rmoveto
+ 13 -5 10 -15 9 -24 9 -24 -3 -16 -16 -7 -24 -12 -24 -6 -22 -2 -13 7 -18 21 15 20 18 24 15 28 31 11 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.medi.ragaa">
+ -94 248 115 rmoveto
+ 18 6 21 12 25 19 60 45 42 70 28 76 16 61 -8 38 -32 17 -32 17 -35 -14 -37 -44 -52 -61 -40 -70 -35 -77 -36 -6 -40 -12 -25 -19 -25 -19 -21 -31 -19 -44 rrcurveto
+ -4 -11 -8 -10 -4 -10 -3 -10 -1 -6 -1 -2 40 -30 rcurveline
+ 19 23 23 22 23 17 16 11 13 7 11 5 29 12 48 10 26 8 rrcurveto
+ 72 229 rmoveto
+ 13 -5 11 -14 9 -24 9 -24 -3 -16 -16 -7 -25 -12 -25 -8 -21 -1 -13 7 -16 22 13 20 18 24 15 27 31 11 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.medi.reh">
+ -50 435 444 rmoveto
+ -24 -26 -16 -32 -27 hvcurveto
+ -49 -56 -43 -69 -36 -82 -20 -4 rcurveline
+ -1 hlineto
+ -2 -4 -13 0 -4 -1 rrcurveto
+ -2 -1 hlineto
+ -86 -9 -24 -5 -45 -74 -7 -11 -6 -12 -6 -13 rrcurveto
+ -1 vlineto
+ -10 -12 -5 -11 -9 vvcurveto
+ -10 8 -13 9 6 5 5 9 7 vhcurveto
+ 14 14 24 10 33 7 33 7 31 8 29 8 rrcurveto
+ 1 1 vlineto
+ 11 3 11 3 11 2 75 17 54 28 43 54 35 44 27 49 20 53 rrcurveto
+ 5 20 3 18 15 vvcurveto
+ 39 -20 31 -39 vhcurveto
+ -141 -200 rmoveto
+ 6 2 5 4 5 vhcurveto
+ 18 24 14 27 32 11 rrcurveto
+ 13 -6 25 -31 -29 vvcurveto
+ -11 -5 -8 -10 -5 vhcurveto
+ -25 -12 -24 -7 -22 -2 rrcurveto
+ -9 4 -13 14 15 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.medi.sad">
+ 176 677 435 rmoveto
+ -24 -26 -16 -32 -27 hvcurveto
+ -48 -56 -43 -69 -37 -82 -30 -8 -42 -11 -56 -14 rrcurveto
+ -13 -52 -48 -7 -45 hhcurveto
+ -52 -39 13 30 -23 hvcurveto
+ -8 10 -4 13 16 vvcurveto
+ 29 13 38 24 49 vhcurveto
+ 1 2 0 1 1 vvcurveto
+ 3 -3 1 -2 -2 -1 -1 -2 -1 vhcurveto
+ -10 -15 -15 -23 -20 -34 -20 -34 -14 -34 -11 -36 rrcurveto
+ -7 -22 -4 -22 -20 vvcurveto
+ -12 2 -11 2 -11 vhcurveto
+ -39 9 41 -17 58 hhcurveto
+ 19 23 1 3 27 hvcurveto
+ 45 5 47 7 49 10 79 16 105 25 56 31 79 43 54 82 32 89 rrcurveto
+ 5 20 3 18 15 vvcurveto
+ 39 -20 31 -39 vhcurveto
+ -141 -201 rmoveto
+ 6 2 5 4 5 vhcurveto
+ 18 24 14 28 32 11 rrcurveto
+ 13 -6 25 -31 -29 vvcurveto
+ -11 -6 -8 -10 -5 vhcurveto
+ -24 -12 -24 -7 -22 -2 rrcurveto
+ -9 4 -13 14 14 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.medi.yeh">
+ -19 297 145 rmoveto
+ 57 16 46 30 35 44 35 44 27 49 20 54 16 61 -8 38 -32 17 -32 17 -35 -14 -37 -44 -48 -56 -42 -68 -37 -83 -37 -7 -34 -8 -29 -10 -54 -18 -41 -56 -25 -55 rrcurveto
+ -12 -26 -14 -32 -16 -36 21 -2 rcurveline
+ 25 55 39 35 54 15 54 15 53 13 51 12 rrcurveto
+ 98 238 rmoveto
+ 13 -5 10 -15 9 -24 9 -24 -3 -16 -16 -7 -24 -12 -24 -6 -22 -2 -13 7 -18 21 15 20 18 24 15 28 31 11 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="five">
+ -45 125 594 rmoveto
+ 6 6 4 6 48 126 3 2 87 vhcurveto
+ 27 78 rlineto
+ -335 hlineto
+ -7 -7 rlineto
+ -327 vlineto
+ 13 -11 rlineto
+ 31 32 41 22 44 hhcurveto
+ 103 36 -90 -82 -102 -54 -95 -112 -62 -35 57 49 -22 hvcurveto
+ -11 hlineto
+ -44 -56 1 -12 rlineto
+ -49 41 61 -26 63 hhcurveto
+ 145 125 109 153 112 -74 80 -117 -46 -45 -17 -20 -41 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="five-ar">
+ -26 223 43 rmoveto
+ 84 87 17 112 -44 109 -39 95 -68 102 -56 -121 -29 -63 -97 -292 53 -49 47 -44 96 26 36 38 rrcurveto
+ 32 134 rmoveto
+ 7 -25 -126 -34 -55 36 -40 26 65 121 28 26 12 11 18 2 14 -10 31 -23 36 -92 10 -38 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="five-ar.dnom">
+ -99 172 30 rmoveto
+ 59 61 12 78 -31 77 -27 66 -48 72 -39 -85 -20 -44 -68 -205 37 -34 33 -31 67 19 25 26 rrcurveto
+ 23 94 rmoveto
+ 4 -18 -88 -23 -38 25 -28 18 45 85 20 18 8 8 13 1 10 -7 21 -16 26 -64 7 -27 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="five-ar.numr">
+ -99 172 299 rmoveto
+ 59 61 12 78 -31 77 -27 66 -48 72 -39 -85 -20 -44 -68 -205 37 -34 33 -31 67 19 25 26 rrcurveto
+ 23 94 rmoveto
+ 4 -18 -88 -23 -38 25 -28 18 45 85 20 18 8 8 13 1 10 -7 21 -16 26 -64 7 -27 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="five-persian">
+ 80 401 310 rmoveto
+ -44 97 -111 80 -81 69 -14 -46 -7 -23 -8 -48 8 -7 2 -2 9 -7 -43 -69 -102 -206 24 -82 47 -163 115 189 67 -50 76 -56 113 175 -51 149 rrcurveto
+ -25 -133 rmoveto
+ -11 -16 -26 -21 -20 7 -98 35 13 -59 -81 -10 -149 -19 126 256 42 60 81 -70 86 -59 37 -104 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="five-persian.dnom">
+ -99 258 217 rmoveto
+ -31 68 -78 56 -57 48 -9 -32 -5 -16 -6 -34 6 -5 1 -1 7 -5 -31 -48 -71 -144 17 -58 33 -114 80 132 47 -35 53 -39 79 123 -35 104 rrcurveto
+ -18 -93 rmoveto
+ -8 -11 -18 -15 -14 5 -68 24 9 -41 -57 -7 -104 -13 88 179 29 42 57 -49 60 -41 26 -73 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="five-persian.numr">
+ -99 258 486 rmoveto
+ -31 68 -78 56 -57 48 -9 -32 -5 -16 -6 -34 6 -5 1 -1 7 -5 -31 -48 -71 -144 17 -58 33 -114 80 132 47 -35 53 -39 79 123 -35 104 rrcurveto
+ -18 -93 rmoveto
+ -8 -11 -18 -15 -14 5 -68 24 9 -41 -57 -7 -104 -13 88 179 29 42 57 -49 60 -41 26 -73 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="five.dnom">
+ 103 356 rmoveto
+ 4 5 2 4 32 86 2 1 59 vhcurveto
+ 18 47 rlineto
+ -227 hlineto
+ -5 -4 rlineto
+ -196 vlineto
+ 8 -7 rlineto
+ 19 22 28 13 30 hhcurveto
+ 69 25 -53 -50 -62 -36 -56 -76 -41 -26 34 29 -14 hvcurveto
+ -8 hlineto
+ -29 -33 1 -8 rlineto
+ -29 28 40 -16 43 hhcurveto
+ 97 86 65 93 67 -50 48 -79 -31 -31 -10 -12 -28 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="five.numr">
+ 103 631 rmoveto
+ 4 5 2 4 32 86 2 1 59 vhcurveto
+ 18 47 rlineto
+ -227 hlineto
+ -5 -4 rlineto
+ -196 vlineto
+ 8 -7 rlineto
+ 19 22 28 13 30 hhcurveto
+ 69 25 -53 -50 -62 -36 -56 -76 -41 -26 34 29 -14 hvcurveto
+ -8 hlineto
+ -29 -33 1 -8 rlineto
+ -29 28 40 -16 43 hhcurveto
+ 97 86 65 93 67 -50 48 -79 -31 -31 -10 -12 -28 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="four">
+ -45 285 669 rmoveto
+ -286 -434 rlineto
+ -44 284 vlineto
+ 7 -9 rlineto
+ -63 0 -83 -5 -35 vhcurveto
+ 5 -6 80 33 rlineto
+ -3 22 0 79 54 vvcurveto
+ 8 8 rlineto
+ 82 hlineto
+ 16 37 -5 7 rlineto
+ -94 hlineto
+ -7 9 rlineto
+ 155 0 272 1 27 vhcurveto
+ -7 6 rlineto
+ -77 -469 rmoveto
+ -215 hlineto
+ -5 7 1 22 84 138 38 59 rlinecurve
+ 29 45 30 46 34 39 rrcurveto
+ 1 1 2 1 2 hhcurveto
+ 3 2 -3 -5 hvcurveto
+ -342 vlineto
+ endchar
+ </CharString>
+ <CharString name="four-ar">
+ -6 269 38 rmoveto
+ 23 36 19 39 22 36 rrcurveto
+ -5 3 -2 -1 0 vvcurveto
+ -37 -23 -49 -16 -56 9 -38 7 -39 15 -7 36 58 93 63 62 -109 68 -8 5 -4 10 3 9 11 32 37 11 24 18 15 34 13 35 19 29 -10 -3 -6 -4 -7 -4 rrcurveto
+ -64 -40 -47 -75 -34 -65 -72 -137 90 46 27 -71 -16 -49 -25 -36 -23 -39 -14 -25 9 -36 18 -16 53 -47 120 9 48 45 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="four-ar.dnom">
+ -99 194 27 rmoveto
+ 16 25 14 27 15 25 rrcurveto
+ -3 2 -2 0 0 vvcurveto
+ -26 -16 -34 -12 -39 7 -27 5 -27 10 -5 25 41 65 44 44 -77 47 -5 4 -3 7 2 6 8 23 26 7 17 13 10 24 9 24 13 21 -7 -3 -4 -2 -5 -3 rrcurveto
+ -44 -28 -33 -53 -24 -45 -51 -96 63 32 19 -50 -11 -34 -17 -25 -16 -27 -10 -18 6 -25 13 -11 37 -33 84 6 33 32 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="four-ar.numr">
+ -99 194 296 rmoveto
+ 16 25 14 27 15 25 rrcurveto
+ -3 2 -2 0 0 vvcurveto
+ -26 -16 -34 -12 -39 7 -27 5 -27 10 -5 25 41 65 44 44 -77 47 -5 4 -3 7 2 6 8 23 26 7 17 13 10 24 9 24 13 21 -7 -3 -4 -2 -5 -3 rrcurveto
+ -44 -28 -33 -53 -24 -45 -51 -96 63 32 19 -50 -11 -34 -17 -25 -16 -27 -10 -18 6 -25 13 -11 37 -33 84 6 33 32 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="four-persian">
+ 50 219 4 rmoveto
+ 71 106 -16 135 -64 105 -2 3 10 4 14 -2 107 -18 40 85 11 129 1 8 -10 -17 -1 -4 -7 -34 -103 -76 -42 76 -8 15 28 55 64 -30 39 -18 18 79 -68 -4 rrcurveto
+ -35 -2 -92 -78 3 -62 -74 14 3 21 -32 62 -19 -38 -15 -41 -15 -39 21 -50 34 -39 27 -42 52 -80 64 -94 -14 -135 rrcurveto
+ -2 8 4 2 4 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="four-persian.dnom">
+ -99 141 3 rmoveto
+ 50 74 -11 95 -45 73 -1 2 7 3 9 -2 75 -12 28 59 8 91 1 5 -7 -12 -1 -2 -5 -24 -72 -53 -29 53 -6 10 20 39 44 -21 28 -13 12 56 -47 -3 rrcurveto
+ -25 -2 -64 -54 2 -44 -52 10 2 15 -22 43 -13 -26 -11 -29 -10 -27 14 -35 24 -28 19 -29 36 -56 45 -66 -10 -94 rrcurveto
+ -2 6 3 1 3 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="four-persian.numr">
+ -99 141 272 rmoveto
+ 50 74 -11 95 -45 73 -1 2 7 3 9 -1 75 -13 28 59 8 91 1 5 -7 -12 -1 -2 -5 -24 -72 -53 -29 53 -6 10 20 39 44 -21 28 -13 12 56 -47 -3 rrcurveto
+ -25 -2 -64 -54 2 -44 -52 10 2 15 -22 43 -13 -26 -11 -29 -10 -27 14 -35 24 -28 19 -29 36 -56 45 -66 -10 -94 rrcurveto
+ -2 6 3 1 3 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="four-persian.urd">
+ 34 263 346 rmoveto
+ 1 vlineto
+ 21 30 49 108 41 129 -103 -35 rcurveline
+ -34 -96 -37 49 -42 59 -30 -3 rlinecurve
+ -113 -13 -8 -212 52 -89 39 -66 51 -101 -12 -107 6 4 3 5 1 5 17 64 31 63 -9 78 -22 79 -54 84 -29 72 51 71 81 -172 41 -12 3 -1 3 3 3 3 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="four-persian.urd.dnom">
+ -99 176 242 rmoveto
+ 1 vlineto
+ 15 21 34 76 29 90 -72 -25 rcurveline
+ -24 -67 -26 34 -29 42 -21 -2 rlinecurve
+ -79 -9 -6 -149 36 -62 28 -46 35 -71 -8 -75 4 3 2 3 1 4 12 45 22 44 -7 54 -15 56 -38 58 -20 51 35 50 57 -121 29 -8 2 -1 2 2 2 2 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="four-persian.urd.numr">
+ -99 176 511 rmoveto
+ 1 vlineto
+ 15 21 34 76 29 90 -72 -25 rcurveline
+ -24 -67 -26 34 -29 42 -21 -2 rlinecurve
+ -79 -9 -6 -149 36 -62 28 -46 35 -71 -8 -75 4 3 2 3 1 4 12 45 22 44 -7 54 -15 56 -38 58 -20 51 35 50 57 -121 29 -8 2 -1 2 2 2 2 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="four.dnom">
+ 263 422 rmoveto
+ -51 -21 -194 -260 rlineto
+ -26 192 vlineto
+ 5 -6 rlineto
+ -38 1 -49 -4 -21 vhcurveto
+ 3 -4 54 20 rlineto
+ -2 13 1 48 32 vvcurveto
+ 4 5 rlineto
+ 56 hlineto
+ 11 22 -3 4 rlineto
+ -64 hlineto
+ -4 5 rlineto
+ 93 -1 164 1 16 vhcurveto
+ -53 -273 rmoveto
+ -4 -5 rlineto
+ -146 hlineto
+ -3 4 rlineto
+ 13 57 84 26 35 vhcurveto
+ 20 27 20 28 23 23 rrcurveto
+ 1 1 2 0 1 hhcurveto
+ 2 1 -1 -4 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="four.numr">
+ 263 697 rmoveto
+ -51 -21 -194 -260 rlineto
+ -26 192 vlineto
+ 5 -6 rlineto
+ -38 1 -49 -4 -21 vhcurveto
+ 3 -4 54 20 rlineto
+ -2 13 1 48 32 vvcurveto
+ 4 5 rlineto
+ 56 hlineto
+ 11 22 -3 4 rlineto
+ -64 hlineto
+ -4 5 rlineto
+ 93 -1 164 1 16 vhcurveto
+ -53 -273 rmoveto
+ -4 -5 rlineto
+ -146 hlineto
+ -3 4 rlineto
+ 13 57 84 26 35 vhcurveto
+ 20 27 20 28 23 23 rrcurveto
+ 1 1 2 0 1 hhcurveto
+ 2 1 -1 -4 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="foursuperior">
+ -69 263 697 rmoveto
+ -51 -21 -194 -260 rlineto
+ -26 192 vlineto
+ 5 -6 rlineto
+ -38 1 -49 -4 -21 vhcurveto
+ 3 -4 54 20 rlineto
+ -2 13 1 48 32 vvcurveto
+ 4 5 rlineto
+ 56 hlineto
+ 11 22 -3 4 rlineto
+ -64 hlineto
+ -4 5 rlineto
+ 93 -1 164 1 16 vhcurveto
+ -53 -273 rmoveto
+ -4 -5 rlineto
+ -146 hlineto
+ -3 4 rlineto
+ 13 57 84 26 35 vhcurveto
+ 20 27 20 28 23 23 rrcurveto
+ 1 1 2 0 1 hhcurveto
+ 2 1 -1 -4 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="fraction">
+ -475 245 704 rmoveto
+ -11 -1 -433 -680 rlineto
+ -14 vlineto
+ 31 -13 437 688 -3 11 rlineto
+ endchar
+ </CharString>
+ <CharString name="fullstop-ar">
+ -111 62 99 rmoveto
+ -40 -99 165 20 45 99 rlineto
+ endchar
+ </CharString>
+ <CharString name="g">
+ -34 365 45 rmoveto
+ -130 -4 -45 -107 -106 hhcurveto
+ -36 -46 41 36 -18 hvcurveto
+ -14 hlineto
+ -49 -62 rlineto
+ -46 49 45 -10 44 hhcurveto
+ 61 50 15 39 51 hvcurveto
+ 20 15 37 34 16 44 rrcurveto
+ 20 58 2 71 39 vvcurveto
+ 209 4 72 5 91 vhcurveto
+ -14 6 -51 -29 rlineto
+ 25 -33 -43 9 -41 hhcurveto
+ -128 -101 -103 -178 -116 62 -79 83 63 56 33 30 52 hvcurveto
+ 9 47 rmoveto
+ -18 -23 -56 -29 -46 hhcurveto
+ -50 -64 61 90 90 32 138 118 42 44 -21 -47 3 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="gaf-ar">
+ 580 562 856 rmoveto
+ -31 -52 300 172 31 52 rlineto
+ -375 -880 rmoveto
+ 40 48 31 79 0 vvcurveto
+ 8 28 0 14 -3 42 -16 257 rcurveline
+ 106 62 107 63 106 62 33 117 rcurveline
+ 1 6 -7 2 -5 -2 -108 -63 -108 -63 -108 -63 -32 -117 rcurveline
+ -60 -95 rlineto
+ 7 -100 12 -101 -102 vvcurveto
+ -182 -92 -155 -29 -72 84 -47 54 30 58 46 83 -11 -3 -11 -8 -5 -8 -75 -115 -15 -81 11 -52 13 -59 43 -44 81 -8 130 -13 145 75 70 84 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="gafsarkashabove-ar">
+ -132 -58 rmoveto
+ -31 -52 300 172 31 52 rlineto
+ endchar
+ </CharString>
+ <CharString name="gamma">
+ 44 525 465 rmoveto
+ -37 -95 -82 -160 -65 -120 -8 2 rcurveline
+ 146 -24 231 -149 -77 -42 -34 -77 -50 vhcurveto
+ 16 -12 23 27 rlineto
+ 23 20 40 7 27 hhcurveto
+ 26 25 -13 -18 19 hvcurveto
+ 73 -72 31 -261 -39 vvcurveto
+ -53 -165 17 -14 18 -12 21 -7 rlinecurve
+ 34 26 rlineto
+ 5 52 3 55 53 vvcurveto
+ 23 vlineto
+ 17 43 75 134 90 124 80 131 rlinecurve
+ -60 27 rlineto
+ endchar
+ </CharString>
+ <CharString name="germandbls">
+ -92 3 428 rmoveto
+ -4 -22 5 -7 rlineto
+ 68 hlineto
+ 6 -8 rlineto
+ -108 vlineto
+ -91 -6 -94 -7 -99 vhcurveto
+ 17 -11 79 24 rlineto
+ -7 81 -3 95 94 vvcurveto
+ 111 vlineto
+ 6 6 rlineto
+ 153 hlineto
+ -76 -133 rlineto
+ -24 vlineto
+ 29 -23 48 -43 28 -49 21 -38 4 -39 -15 -44 -23 -67 -77 -58 -85 -17 5 -24 rcurveline
+ 162 103 100 128 1 hvcurveto
+ 94 -70 56 -51 41 vhcurveto
+ 83 146 7 22 -5 7 rlineto
+ -242 hlineto
+ -4 6 rlineto
+ 102 17 87 43 47 7 -43 -21 4 vhcurveto
+ 12 -4 58 54 rlineto
+ 27 -13 -26 27 -54 hhcurveto
+ -63 -60 -37 -70 -30 hvcurveto
+ -16 -36 -2 -51 -35 vvcurveto
+ -6 -6 rlineto
+ -61 hlineto
+ endchar
+ </CharString>
+ <CharString name="ghain-ar">
+ 319 272 769 rmoveto
+ -71 66 -27 -34 -28 -35 -27 -34 rlinecurve
+ 71 -66 28 34 27 34 27 35 rlinecurve
+ -66 -507 rmoveto
+ -117 -92 -114 -220 30 -142 55 -261 425 67 163 198 4 4 -12 -3 -5 -1 -175 -46 -260 -38 -136 153 -78 88 247 210 55 48 40 35 65 42 14 36 45 116 rcurveline
+ -60 -58 -97 -59 -47 46 -32 27 -16 25 -8 49 40 -4 34 -7 31 -10 42 130 rcurveline
+ -33 8 -29 8 -35 1 -99 2 -58 -206 91 -113 9 -12 10 -11 11 -10 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="grave">
+ -25 70 665 rmoveto
+ 162 -154 18 31 -120 157 -13 2 rlineto
+ endchar
+ </CharString>
+ <CharString name="gravecomb">
+ -545 -130 665 rmoveto
+ 162 -154 18 31 -120 157 -13 2 rlineto
+ endchar
+ </CharString>
+ <CharString name="greater">
+ 166 574 254 rmoveto
+ -9 vlineto
+ -518 -243 -4 -9 8 -24 10 -5 600 280 rlineto
+ 12 vlineto
+ -602 275 -10 -3 -10 -24 2 -10 rlineto
+ endchar
+ </CharString>
+ <CharString name="guillemotleft">
+ -129 374 36 rmoveto
+ 14 28 -150 170 149 146 -31 46 -192 -188 rlineto
+ 58 -202 rmoveto
+ 14 28 -150 170 149 146 -31 46 -192 -188 rlineto
+ endchar
+ </CharString>
+ <CharString name="guillemotright">
+ -129 42 36 rmoveto
+ 210 202 -192 188 -31 -46 149 -146 -150 -170 rlineto
+ 166 -28 rmoveto
+ 210 202 -192 188 -31 -46 149 -146 -150 -170 rlineto
+ endchar
+ </CharString>
+ <CharString name="guilsinglleft">
+ -281 12 238 rmoveto
+ 210 -202 14 28 -150 170 149 146 -31 46 rlineto
+ endchar
+ </CharString>
+ <CharString name="guilsinglright">
+ -281 252 238 rmoveto
+ -192 188 -31 -46 149 -146 -150 -170 14 -28 rlineto
+ endchar
+ </CharString>
+ <CharString name="h">
+ 47 499 62 rmoveto
+ -53 9 83 41 hvcurveto
+ 74 vlineto
+ 80 6 70 -30 28 vhcurveto
+ 18 -19 -31 10 -15 hhcurveto
+ -73 -69 -40 -36 -59 hvcurveto
+ -8 8 rlineto
+ 92 0 99 4 85 vhcurveto
+ -6 7 -158 -17 -5 -4 rlineto
+ -18 vlineto
+ 27 -6 41 -8 9 -12 rrcurveto
+ 26 -36 -6 -79 -101 vvcurveto
+ -1 -132 -6 -132 -7 -132 6 -10 rcurveline
+ 72 22 rlineto
+ 108 2 110 110 vvcurveto
+ 28 39 48 32 55 hhcurveto
+ 74 12 -62 -76 hvcurveto
+ -36 -4 -87 -54 vvcurveto
+ -49 19 -50 47 60 53 49 47 44 vhcurveto
+ 11 vlineto
+ -13 10 rlineto
+ -18 -19 -32 -27 -39 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar">
+ 319 648 -186 rmoveto
+ 4 4 -12 -3 -5 -1 -175 -46 -260 -39 -136 153 -78 88 247 211 55 48 40 35 43 36 32 46 27 38 64 138 -66 27 -64 27 -108 -20 -44 -31 -66 -47 -39 -153 75 -83 rrcurveto
+ -90 -82 -118 -209 30 -141 55 -261 426 67 163 198 rrcurveto
+ -446 594 rmoveto
+ 29 25 136 24 20 -59 -34 -32 -52 -32 -41 -30 -16 36 -27 30 -15 38 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.fina">
+ -176 387 395 rmoveto
+ -34 -32 -53 -34 -39 -28 -79 -61 rcurveline
+ -45 -41 -44 -65 -44 -88 -44 -88 -15 -79 15 -71 14 -65 34 -46 53 -26 121 -59 144 26 116 54 67 31 53 40 41 49 2 2 -1 1 -4 -1 -4 -1 -3 0 -3 -1 rrcurveto
+ -18 -7 -48 -10 -78 -13 -52 -9 -52 -3 -52 2 -117 4 -92 35 -61 69 -20 22 -2 29 16 34 34 73 67 73 59 53 32 29 24 22 14 12 40 35 43 37 32 44 rrcurveto
+ 13 19 16 35 18 51 18 51 -7 33 -33 14 rrcurveto
+ 10 -25 -39 4 -53 hhcurveto
+ -53 -36 -2 -4 -16 hvcurveto
+ -16 -24 -34 -56 -9 -42 -3 -15 4 -7 12 3 rrcurveto
+ 4 23 34 2 46 hhcurveto
+ 46 38 -3 -7 31 hvcurveto
+ 2 -1 3 -4 3 -9 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.init">
+ 194 21 124 rmoveto
+ -21 -124 8 1 6 2 8 2 rlinecurve
+ 2 1 1 2 hhcurveto
+ 22 6 25 4 23 4 rrcurveto
+ 1 vlineto
+ 21 4 19 4 16 3 rrcurveto
+ -2 -10 -6 -18 -10 vvcurveto
+ -4 2 -2 4 20 3 39 13 6 vhcurveto
+ 105 27 84 14 99 31 64 138 rcurveline
+ -5 -9 -9 -2 -8 hhcurveto
+ -12 -11 5 10 -9 hvcurveto
+ -7 25 -10 23 -11 21 rrcurveto
+ 26 -14 -27 27 -37 hhcurveto
+ -13 -11 -4 -8 -12 hvcurveto
+ -61 -42 -42 -95 -27 -75 -60 -11 -60 -10 -60 -11 rrcurveto
+ 352 74 rmoveto
+ 1 -2 0 -2 -2 vvcurveto
+ -3 -2 -2 -4 -1 vhcurveto
+ -142 -28 14 35 12 32 27 24 rlinecurve
+ 8 9 9 4 10 hhcurveto
+ 9 10 -3 -8 10 hvcurveto
+ 14 -11 13 -18 10 -23 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.init.ain">
+ 261 267 145 rmoveto
+ -67 -10 -141 -34 -20 74 -14 -37 -13 -42 -12 -48 1 -30 28 -14 27 -3 72 -7 28 11 61 13 -2 -12 -15 -36 19 7 16 6 3 29 7 14 105 27 83 16 99 32 64 137 rcurveline
+ -24 -10 -18 2 -15 16 -14 48 -21 46 -40 20 -24 12 -23 -2 -21 -14 -61 -42 -41 -94 -27 -75 rrcurveto
+ 171 41 rmoveto
+ 3 -7 -2 -4 -6 -1 -141 -28 rcurveline
+ 14 35 11 32 27 24 44 39 37 -60 13 -30 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.init.dal">
+ 272 277 144 rmoveto
+ -120 -20 -37 3 -20 6 -33 10 -22 34 5 37 rrcurveto
+ 2 -3 1 -1 -3 vhcurveto
+ -84 -159 8 -102 257 67 -2 -11 -4 -15 -2 -8 -1 -5 6 -6 4 1 20 5 -1 32 7 13 107 23 104 28 78 25 63 136 rcurveline
+ -21 -9 -23 2 -13 15 -12 51 -22 43 -38 21 -96 52 -78 -197 -26 -72 rrcurveto
+ 170 42 rmoveto
+ 3 -7 2 -3 -11 -2 -140 -28 rcurveline
+ 16 34 13 38 28 23 17 14 23 -4 15 -13 16 -14 10 -17 8 -21 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.init.feh">
+ 427 425 168 rmoveto
+ -71 -17 -102 -19 -82 -4 -59 -4 -59 8 -13 44 -13 -34 -13 -43 -13 -51 1 -29 27 -14 28 -3 100 -10 135 32 84 18 -2 -12 -15 -32 19 2 16 6 3 30 7 14 rrcurveto
+ 105 27 83 17 99 31 64 137 rcurveline
+ -23 -11 -19 3 -15 17 -14 48 -21 46 -40 20 -24 12 -23 -2 -21 -14 -61 -42 -42 -96 -26 -75 rrcurveto
+ 171 42 rmoveto
+ 3 -7 -2 -3 -6 -1 -141 -29 rcurveline
+ 14 35 11 32 27 24 44 39 37 -59 13 -31 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.init.hah">
+ 150 5 vmoveto
+ -6 9 0 3 3 vhcurveto
+ 8 13 16 22 25 28 25 28 53 35 83 42 83 42 58 44 35 44 35 44 24 48 13 51 13 51 -9 31 -33 14 -32 13 -39 4 -45 -7 -45 -7 -33 -12 -22 -15 rrcurveto
+ -33 -23 -23 -42 -14 -61 -14 -61 5 -39 21 -19 -29 -17 -25 -19 -22 -21 -50 -48 -25 -80 -16 -80 rrcurveto
+ 399 383 rmoveto
+ -3 -3 0 0 0 vvcurveto
+ -43 -31 -42 -20 -49 -20 rrcurveto
+ -1 1 -1 1 1 vvcurveto
+ -14 28 -20 22 -11 31 14 11 29 9 45 6 49 6 35 -10 12 -32 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.init.heh">
+ 268 47 -242 rmoveto
+ 45 97 42 72 39 49 74 92 69 52 87 71 39 32 41 48 45 62 13 19 17 35 18 51 18 51 -7 32 -33 14 -32 13 -39 4 -45 -7 -45 -7 -33 -12 -22 -15 rrcurveto
+ -33 -24 -23 -42 -12 -62 -12 -62 12 -51 37 -41 -3 -3 rcurveline
+ -45 -36 -36 -35 -27 -35 -52 -67 -42 -79 -39 -78 -9 -18 rcurveline
+ 4 29 1 2 -54 -66 -3 -39 -3 -41 1 -30 6 -17 rlinecurve
+ 8 -23 15 29 18 36 rrcurveto
+ 339 533 rmoveto
+ -16 35 -28 31 -14 38 15 12 32 9 49 5 49 5 29 -12 10 -30 -34 -32 -54 -33 -38 -28 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.init.heh.ragaa">
+ 187 48 -240 rmoveto
+ 32 70 39 55 49 50 44 46 47 41 48 38 48 38 47 51 45 63 13 19 16 35 18 51 18 51 -7 32 -33 14 -32 13 -39 4 -45 -7 -45 -7 -34 -11 -21 -16 rrcurveto
+ -33 -23 -23 -42 -12 -62 -12 -62 13 -51 37 -42 -1 -1 -2 -1 -1 -1 -58 -46 -44 -50 -29 -56 -10 -19 -8 -21 -11 -18 -7 -15 rcurveline
+ 4 29 rlineto
+ 1 vlineto
+ -51 -65 -6 -39 -4 -42 2 -29 6 -17 rlinecurve
+ 8 -23 16 30 18 35 rrcurveto
+ 256 409 rmoveto
+ -16 36 -27 31 -15 37 15 12 32 10 49 5 49 5 29 -12 10 -29 -34 -32 -53 -35 -39 -28 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.init.meem">
+ 203 243 250 rmoveto
+ -95 -30 -57 -30 -20 -29 -36 -53 -14 -45 -21 -61 21 -2 rcurveline
+ 19 46 51 34 55 17 51 16 68 32 42 18 102 44 82 83 37 109 rrcurveto
+ 8 24 5 25 23 vvcurveto
+ 23 -9 16 -19 8 vhcurveto
+ -32 13 -39 3 -45 -7 -45 -7 -33 -11 -22 -15 -28 -20 -21 -34 -14 -48 -14 -48 3 -47 20 -47 rrcurveto
+ 94 37 rmoveto
+ -21 27 -16 30 -13 33 15 12 32 9 49 5 49 5 29 -11 10 -30 -34 -32 -54 -28 -46 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.init.ragaa">
+ 314 173 206 rmoveto
+ -3 -3 -9 -4 -15 -7 -27 -12 -22 -14 -20 -15 -24 -19 -18 -22 -11 -24 -6 -13 -15 -32 -3 -13 42 -29 rcurveline
+ 17 14 29 13 16 14 18 13 20 14 25 15 44 26 42 25 42 25 42 25 41 39 39 55 13 19 16 35 18 51 18 51 -8 33 -33 14 -32 13 -38 4 -45 -7 rrcurveto
+ -45 -7 -33 -12 -22 -15 -35 -25 -26 -57 -11 -50 -9 -44 -2 -58 30 -16 rrcurveto
+ 100 29 rmoveto
+ -16 36 -27 31 -14 37 15 12 31 9 49 5 49 5 30 -11 10 -30 -34 -32 -54 -34 -39 -28 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.init.reh">
+ 180 18 hmoveto
+ 6 5 5 9 7 hvcurveto
+ 19 19 37 19 54 21 51 16 68 31 42 18 102 44 82 84 37 109 rrcurveto
+ 8 24 5 24 23 vvcurveto
+ 23 -9 16 -19 8 vhcurveto
+ -32 13 -39 4 -45 -7 -45 -7 -33 -12 -22 -15 -50 -36 -44 -112 35 -89 -45 -20 -43 -21 -44 -21 -44 -21 -30 -39 -17 -55 rrcurveto
+ -1 vlineto
+ -10 -12 -5 -10 -9 vvcurveto
+ -10 9 -13 9 vhcurveto
+ 319 262 rmoveto
+ -21 27 -16 31 -13 33 15 12 32 9 49 5 49 5 29 -12 10 -30 -34 -32 -54 -28 -46 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.init.sad">
+ 433 106 333 rmoveto
+ -2 -1 0 -2 -1 hvcurveto
+ -10 -15 -15 -23 -20 -34 -20 -34 -14 -34 -11 -36 rrcurveto
+ -7 -22 -4 -22 -20 vvcurveto
+ -12 2 -11 2 -11 vhcurveto
+ -42 9 49 -15 60 hhcurveto
+ 31 35 4 8 40 hvcurveto
+ 60 11 50 10 42 9 rrcurveto
+ -2 -10 -6 -16 -10 vvcurveto
+ -4 3 -2 5 vhcurveto
+ 2 hlineto
+ 16 6 3 30 6 14 105 27 84 17 99 31 64 137 rcurveline
+ -5 -9 -9 -2 -8 hhcurveto
+ -12 -11 6 10 -9 hvcurveto
+ -7 25 -9 22 -12 21 rrcurveto
+ 26 -15 -26 28 -37 hhcurveto
+ -13 -11 -4 -8 -12 hvcurveto
+ -61 -42 -43 -96 -26 -75 -41 -6 -47 -8 -52 -11 rrcurveto
+ -8 -40 -35 -5 -32 hhcurveto
+ -53 -37 13 35 -17 hvcurveto
+ -4 7 -2 9 11 vvcurveto
+ 29 14 40 26 52 vhcurveto
+ 1 2 0 1 1 vvcurveto
+ 3 -3 0 -2 vhcurveto
+ 494 -121 rmoveto
+ 1 -2 0 -2 -1 vvcurveto
+ -4 -2 -2 -4 -1 vhcurveto
+ -141 -28 14 35 11 32 27 24 rlinecurve
+ 8 9 9 4 10 hhcurveto
+ 9 10 -3 -8 10 hvcurveto
+ 14 -11 12 -18 11 -23 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.init.yeh">
+ 150 5 vmoveto
+ -6 9 0 3 3 vhcurveto
+ 8 13 25 25 42 36 42 36 54 37 69 39 69 39 55 49 40 60 13 19 16 36 18 51 18 51 -7 32 -33 14 -32 13 -39 4 -45 -7 -45 -7 -33 -12 -22 -15 rrcurveto
+ -33 -23 -23 -42 -14 -61 -14 -61 5 -39 21 -19 -29 -17 -25 -19 -22 -21 -50 -48 -25 -80 -16 -80 rrcurveto
+ 399 383 rmoveto
+ -3 -3 0 0 0 vvcurveto
+ -43 -31 -42 -20 -49 -20 rrcurveto
+ -1 1 -1 1 1 vvcurveto
+ -14 28 -20 22 -11 31 14 11 29 9 45 6 49 6 35 -10 12 -32 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.medi">
+ -83 393 238 rmoveto
+ -90 -52 -122 -36 -154 -20 rrcurveto
+ -1 -3 vlineto
+ -24 -129 4 1 8 2 11 2 rlinecurve
+ 211 54 130 64 49 74 29 45 21 35 23 54 8 18 -3 14 -12 9 -18 14 -32 10 -46 7 -46 7 -34 3 -21 -1 -18 -38 -19 -35 -17 -39 -5 -12 0 -6 6 -1 rrcurveto
+ 13 -3 21 -2 30 -1 36 -1 68 -3 7 -24 -2 -3 -3 -3 -6 -3 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.medi.ain">
+ 31 507 231 rmoveto
+ -94 -50 -94 -37 -117 -15 -52 -7 -39 2 -27 10 -24 8 -15 14 -6 21 -13 -35 -13 -43 -13 -50 1 -29 27 -14 28 -3 55 -5 55 2 55 9 132 23 111 62 63 95 rrcurveto
+ 29 45 21 35 23 54 7 18 -2 14 -12 9 -18 14 -31 9 -45 4 -45 4 -35 3 -23 6 -18 -38 -19 -35 -17 -39 -5 -12 0 -6 6 -1 13 -3 22 -1 30 -1 rrcurveto
+ 30 -1 26 -3 21 -5 20 -5 11 -6 2 -8 -2 -3 -3 -3 -6 -3 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.medi.dal">
+ -73 47 9 rmoveto
+ 65 -36 203 73 94 110 38 44 35 57 16 49 7 21 -3 15 -10 8 -18 14 -33 8 -45 4 -45 4 -34 4 -22 6 rrcurveto
+ -1 hlineto
+ -18 -38 -20 -35 -16 -39 -5 -12 0 -6 6 -1 13 -3 22 -2 30 -1 30 -1 27 -3 21 -5 36 -9 3 -10 -21 -13 -187 -99 -163 -24 15 111 rrcurveto
+ 8 -2 0 -5 -8 vhcurveto
+ -32 -43 -52 -109 71 -39 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.medi.feh">
+ 74 246 16 rmoveto
+ 44 8 39 9 35 11 107 33 66 55 57 86 21 31 25 42 9 40 4 16 -3 11 -8 7 -19 15 -40 6 -32 5 -33 5 -45 2 -28 7 rrcurveto
+ -1 hlineto
+ -18 -38 -19 -35 -16 -39 -6 -12 1 -6 6 -1 13 -3 21 -1 30 -1 36 -1 67 -3 7 -24 -2 -3 -2 -3 -6 -3 -90 -48 -97 -31 -121 -17 -71 -10 -121 -10 -17 60 rrcurveto
+ -13 -34 -13 -43 -13 -51 1 -29 27 -14 28 -3 49 -5 64 5 77 14 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.medi.hah">
+ -96 174 261 rmoveto
+ -32 -8 -29 -15 -25 -23 -17 -16 -15 -21 -12 -26 -16 -33 -14 -49 -14 -65 rrcurveto
+ -6 9 0 3 3 vhcurveto
+ 26 49 39 33 47 25 52 28 62 17 48 32 43 27 37 39 33 50 29 46 22 34 22 54 7 18 -1 14 -12 9 -18 14 -32 8 -45 4 -45 4 -34 4 -23 6 rrcurveto
+ -1 hlineto
+ -18 -38 -20 -34 -16 -40 -5 -11 0 -7 6 -1 13 -3 22 -2 30 -1 30 -1 27 -2 21 -5 19 -5 11 -6 3 -8 -1 -2 -4 -4 -6 -4 -74 -38 -52 -24 -80 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.medi.heh">
+ 89 146 -51 rmoveto
+ 38 68 100 71 160 74 59 28 45 40 36 56 29 45 22 35 22 54 7 18 -1 14 -12 9 -18 14 -32 8 -45 4 -45 4 -35 4 -22 6 rrcurveto
+ -1 hlineto
+ -18 -38 -20 -35 -16 -39 -5 -12 0 -6 6 -1 13 -3 22 -2 30 -1 30 -1 27 -3 21 -5 20 -5 10 -6 2 -8 -1 -3 -3 -2 -6 -3 -49 -26 3 -1 -53 -15 rrcurveto
+ -55 -16 -46 -13 -45 -25 -118 -65 -77 -145 -62 -125 -9 -18 rcurveline
+ 4 30 rlineto
+ 1 vlineto
+ -53 -65 rlineto
+ -1 vlineto
+ -3 -38 -3 -41 1 -30 6 -17 rlinecurve
+ 6 -17 13 11 19 40 31 62 31 64 40 71 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.medi.heh.ragaa">
+ 27 520 184 rmoveto
+ 32 37 1 4 30 52 16 28 0 19 -15 9 -45 28 -118 35 -63 11 -21 -41 -3 -8 -22 -54 -5 -10 0 -5 5 -1 56 -10 86 -28 42 -24 -2 -1 -2 -2 -2 -1 rrcurveto
+ -1 hlineto
+ -29 -15 -35 -11 -41 -7 -35 -6 -34 -9 -32 -13 -70 -28 -57 -56 -34 -65 -18 -35 -20 -39 -21 -41 -1 -2 rcurveline
+ -7 -15 4 29 rlineto
+ 1 vlineto
+ -51 -65 -6 -39 -5 -37 1 -29 8 -22 rlinecurve
+ 6 -17 13 11 19 40 8 20 10 20 11 26 12 27 10 25 11 25 32 72 42 47 70 28 44 18 60 10 48 20 40 17 49 42 29 35 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.medi.meem">
+ -58 18 hmoveto
+ 3 hlineto
+ 2 5 2 5 4 6 16 25 20 23 25 18 37 24 63 28 49 19 85 33 65 44 48 73 29 45 21 34 23 54 8 18 -2 15 -12 9 -18 14 -32 8 -45 4 rrcurveto
+ -45 4 -34 4 -23 6 -1 -1 rcurveline
+ -19 -39 -18 -33 -17 -40 -5 -11 0 -6 6 -1 38 -9 126 11 11 -36 -2 -3 -3 -3 -6 -3 -50 -27 8 2 -56 -16 -50 -15 -43 -11 -44 -16 -48 -17 -35 -23 -22 -29 rrcurveto
+ -21 -28 -19 -44 -16 -60 -6 -25 -5 -11 -10 -22 11 -1 rcurveline
+ 1 -1 3 -1 3 1 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.medi.ragaa">
+ -166 318 274 rmoveto
+ -91 -48 8 9 -89 -41 -61 -29 -41 -35 -20 -42 -3 -6 -14 -34 -3 -6 -1 -3 -1 -4 -2 -5 42 -30 rcurveline
+ 17 13 29 15 16 14 28 21 23 14 20 7 42 15 32 23 31 33 16 18 19 26 22 34 20 31 20 28 16 34 9 19 13 16 -1 29 -1 7 -3 7 -6 4 rrcurveto
+ -18 14 -32 12 -45 10 -45 10 -33 8 -23 6 rrcurveto
+ -1 hlineto
+ -18 -38 -19 -35 -17 -39 -5 -12 0 -6 6 -1 56 -13 54 -9 51 -18 8 -4 5 -4 1 -6 -1 -3 -4 -3 -6 -3 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.medi.reh">
+ -85 392 288 rmoveto
+ -36 -19 -33 -15 -27 -11 -53 -23 -57 -14 -55 -21 -28 -11 -42 -18 -14 -21 -16 -23 -4 -30 -13 -27 rrcurveto
+ -1 vlineto
+ -15 -18 -4 -16 9 -13 9 -13 10 2 11 17 38 38 70 22 57 22 98 37 62 35 52 80 29 45 22 35 22 54 7 18 -1 14 -12 9 -18 14 -33 8 -45 4 rrcurveto
+ -45 4 -34 4 -23 6 -18 -38 -19 -35 -17 -39 -5 -12 0 -6 6 -1 13 -3 22 -2 30 -1 36 -1 68 -3 6 -24 -1 -3 -3 -2 -6 -4 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.medi.sad">
+ 177 83 7 rmoveto
+ 119 -18 124 16 127 50 127 50 92 83 56 115 5 9 6 14 7 18 7 18 -2 14 -12 9 -18 14 -32 8 -45 4 -45 4 -35 4 -22 6 -19 -38 -19 -34 -16 -40 rrcurveto
+ -6 -11 0 -7 7 -1 13 -3 21 -1 30 -1 30 -1 27 -3 21 -5 20 -5 11 -6 2 -8 -1 -1 -4 -4 -6 -5 -22 -12 -19 -9 -18 -6 -73 -26 -78 -24 -86 -20 rrcurveto
+ -101 -23 -119 -12 -45 67 -19 28 8 48 34 68 2 4 0 2 -3 1 -3 1 -2 -2 -2 -2 -10 -14 -15 -23 -20 -34 -20 -34 -15 -34 -11 -36 -11 -36 -2 -32 7 -30 rrcurveto
+ 7 -30 23 -18 43 -6 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.medi.yeh">
+ -77 12 2 rmoveto
+ 30 56 52 39 63 27 76 32 77 24 60 50 16 13 19 23 21 33 35 54 9 15 22 53 7 18 -2 14 -12 9 -18 14 -32 9 -45 4 -45 4 -34 3 -22 6 rrcurveto
+ -1 hlineto
+ -18 -38 -20 -34 -16 -39 -5 -12 0 -6 6 -1 13 -3 22 -2 30 -1 30 -1 26 -3 21 -5 20 -5 11 -6 2 -8 -1 -2 -5 -2 -9 -3 -72 -23 -75 -21 -71 -24 rrcurveto
+ -68 -23 -37 -27 -30 -65 -15 -32 -14 -48 -13 -63 rrcurveto
+ -6 9 0 3 3 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="hamza-ar">
+ 67 84 hmoveto
+ 39 46 6 12 25 hvcurveto
+ 34 16 29 38 30 41 28 39 26 32 -2 19 -5 51 -72 -16 -26 46 28 24 23 8 38 10 8 15 25 30 10 17 rrcurveto
+ 17 10 12 23 -14 hhcurveto
+ -14 -35 -20 -11 -15 hvcurveto
+ -91 -63 -91 -118 26 -45 11 -19 27 -19 35 -8 17 -4 11 -10 -24 -12 -48 -24 -80 -28 -44 -28 rrcurveto
+ -16 -25 18 -3 30 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="hamzaabove-ar">
+ 10 -47 rmoveto
+ 37 26 20 43 -28 18 -15 10 -24 1 -12 14 15 21 26 3 8 18 21 45 rcurveline
+ -9 -4 -9 -4 -8 -6 -26 -20 -88 -94 50 -28 11 -6 16 -6 11 -7 6 -4 -8 -5 -3 -2 -29 -16 -33 -13 -31 -14 36 6 35 2 31 22 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hamzabelow-ar">
+ 10 -47 rmoveto
+ 37 26 20 43 -28 18 -15 10 -24 1 -12 14 15 21 26 3 8 18 21 45 rcurveline
+ -9 -4 -9 -4 -8 -6 -26 -20 -88 -94 50 -28 11 -6 16 -6 11 -7 6 -4 -8 -5 -3 -2 -29 -16 -33 -13 -31 -14 36 6 35 2 31 22 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar">
+ -117 217 167 rmoveto
+ 50 226 -122 160 -114 -333 -40 -116 -21 -132 120 31 84 22 27 68 16 74 rrcurveto
+ -79 98 rmoveto
+ 13 -9 37 -78 -17 -11 -29 -18 -46 -17 -39 17 -6 3 -9 8 2 4 4 15 42 119 48 -33 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.fina">
+ -168 78 135 rmoveto
+ 8 9 1 3 9 hvcurveto
+ 32 9 27 17 21 24 13 -189 rcurveline
+ 74 138 -18 263 rlineto
+ 44 -12 26 -25 10 vhcurveto
+ 2 -6 -6 2 -7 hhcurveto
+ -20 -22 -12 -23 -25 hvcurveto
+ -9 -8 -14 -18 -18 -26 -33 -47 -37 -65 -15 -61 rrcurveto
+ -2 -9 -2 -9 -8 vvcurveto
+ -41 46 -23 32 vhcurveto
+ 93 153 rmoveto
+ -7 -1 -7 -1 -6 vhcurveto
+ -3 -11 -10 -2 -10 hhcurveto
+ -32 -27 14 20 -10 hvcurveto
+ -3 5 -2 5 4 vvcurveto
+ 5 2 4 4 5 vhcurveto
+ 8 10 10 9 12 10 rrcurveto
+ 7 8 8 3 10 hhcurveto
+ 38 7 -36 -40 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.init">
+ 221 343 391 rmoveto
+ -15 -17 -12 -23 -20 hvcurveto
+ -47 -54 -40 -67 -33 -81 -148 -24 rcurveline
+ -23 -130 60 16 61 11 60 16 rlinecurve
+ -1 vlineto
+ 2 2 7 0 2 hhcurveto
+ 11 hlineto
+ 151 81 67 101 66 hvcurveto
+ 30 46 17 41 4 38 rrcurveto
+ 1 11 1 11 11 vvcurveto
+ 17 -2 16 -3 17 vhcurveto
+ -5 28 -4 30 -5 31 -7 45 -13 29 -18 12 rrcurveto
+ 8 -12 -13 3 -13 hhcurveto
+ -8 -8 -1 -3 -8 hvcurveto
+ -48 -16 -49 -53 -29 -38 -25 -34 -30 -32 -15 -43 rrcurveto
+ -1 -1 0 0 vhcurveto
+ -3 3 -2 6 vhcurveto
+ 1 1 rlineto
+ 7 5 2 3 3 hvcurveto
+ 15 17 14 17 14 20 14 20 17 15 22 11 rrcurveto
+ 3 7 6 2 6 hhcurveto
+ 20 17 -18 -12 6 hvcurveto
+ 28 -58 13 -70 -80 vvcurveto
+ -11 0 -11 -1 -11 vhcurveto
+ -33 -21 -41 -15 -50 -9 18 35 16 31 14 29 rrcurveto
+ 6 12 3 11 13 vvcurveto
+ 28 -20 57 -31 vhcurveto
+ -117 -201 rmoveto
+ 3 1 3 1 3 vhcurveto
+ 11 24 14 16 17 6 rrcurveto
+ 1 3 2 0 2 hhcurveto
+ 13 12 -14 -26 9 hvcurveto
+ 2 -3 -17 -15 -23 -12 -28 -8 rlinecurve
+ -1 hlineto
+ -6 -12 13 9 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.init.ain">
+ 338 445 389 rmoveto
+ -15 -16 -12 -23 -20 hvcurveto
+ -47 -54 -40 -67 -33 -81 rrcurveto
+ -2 vlineto
+ -66 -14 -147 -38 -22 77 -13 -35 -13 -42 -13 -50 1 -29 27 -15 28 -3 41 -4 40 3 38 10 38 10 39 10 40 10 rrcurveto
+ 1 1 1 1 hhcurveto
+ 1 11 vlineto
+ 151 81 67 101 66 hvcurveto
+ 30 46 16 41 4 38 rrcurveto
+ 1 11 1 11 11 vvcurveto
+ 17 -1 16 -3 17 vhcurveto
+ -5 28 -4 30 -5 31 -7 45 -14 29 -18 12 rrcurveto
+ 8 -12 -12 3 -13 hhcurveto
+ -8 -8 -1 -3 -8 hvcurveto
+ -48 -16 -50 -53 -29 -38 -25 -34 -30 -32 -15 -43 rrcurveto
+ -1 vlineto
+ -3 2 -2 6 vhcurveto
+ 1 1 rlineto
+ 7 5 2 3 3 hvcurveto
+ 15 17 14 17 14 20 14 20 17 15 22 11 rrcurveto
+ 3 7 7 2 6 hhcurveto
+ 20 16 -18 -12 6 hvcurveto
+ 28 -58 14 -70 -80 vvcurveto
+ -11 0 -11 -1 -11 vhcurveto
+ -33 -21 -41 -15 -50 -9 18 35 16 31 14 29 rrcurveto
+ 6 12 3 11 13 vvcurveto
+ 28 -21 57 -31 vhcurveto
+ -116 -201 rmoveto
+ 3 1 3 1 3 vhcurveto
+ 11 24 13 16 17 6 rrcurveto
+ 1 3 2 0 2 hhcurveto
+ 13 13 -14 -26 9 hvcurveto
+ 2 -3 -17 -15 -23 -11 -28 -8 rlinecurve
+ -2 hlineto
+ -6 -11 12 9 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.init.dal">
+ 237 195 29 rmoveto
+ 1 7 7 1 7 hhcurveto
+ 90 -1 70 24 53 41 60 46 72 107 8 76 6 54 -13 55 -10 62 -29 181 -133 -106 -65 -88 -25 -34 -30 -32 -14 -43 -3 -8 20 1 6 6 31 34 22 45 44 22 rrcurveto
+ 29 14 24 -21 9 -19 31 -64 14 -82 -4 -94 -34 -21 -42 -16 -49 -9 16 31 17 32 15 32 28 58 -50 113 -72 -84 -50 -58 -39 -70 -31 -75 rrcurveto
+ 1 vlineto
+ -33 -7 -38 -11 -33 9 -24 6 -13 30 2 29 1 4 -5 2 -4 -6 -40 -58 -28 -101 65 -32 39 -19 81 33 37 9 rrcurveto
+ 52 170 rmoveto
+ 23 49 38 21 22 -63 rrcurveto
+ 0 1 -1 1 -2 vhcurveto
+ -18 -15 -25 -12 -25 -8 -6 -2 -18 18 7 15 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.init.feh">
+ 453 422 51 rmoveto
+ 154 -1 82 66 67 102 30 46 16 42 4 38 6 61 -14 55 -9 55 -7 45 -14 28 -18 13 -18 13 -21 1 -22 -7 -48 -16 -50 -53 -28 -38 -25 -34 -31 -31 -14 -44 rrcurveto
+ -4 -10 25 7 3 3 16 17 14 18 14 20 14 20 17 14 22 11 30 15 22 -24 9 -16 32 -65 13 -80 -4 -96 -34 -21 -41 -15 -49 -9 16 31 15 32 16 31 rrcurveto
+ 14 29 -3 32 -20 36 -20 36 -29 -3 -36 -42 -50 -58 -38 -69 -31 -75 -52 -11 -88 -16 -64 -3 -62 -3 -78 3 -12 45 -13 -34 -13 -43 -13 -51 1 -29 27 -14 28 -3 rrcurveto
+ 105 -11 155 36 86 22 rrcurveto
+ -1 3 13 3 4 hhcurveto
+ 117 172 rmoveto
+ -16 -14 -23 -12 -29 -9 -3 -1 -5 3 -6 7 -6 7 -1 7 4 8 11 24 13 15 17 6 17 6 14 -13 11 -31 rrcurveto
+ -1 1 -1 1 -1 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.init.hah">
+ 263 454 217 rmoveto
+ 30 23 30 34 30 46 30 46 16 42 4 38 6 61 -14 54 -9 56 -7 45 -14 29 -18 12 -18 12 -21 2 -22 -7 -48 -16 -50 -53 -28 -38 -25 -34 -31 -32 -14 -43 rrcurveto
+ -3 -10 24 7 3 3 15 17 14 17 14 20 14 20 17 15 22 11 30 14 24 -22 8 -17 32 -65 13 -81 -4 -95 -33 -21 -41 -15 -50 -9 18 35 16 30 14 29 rrcurveto
+ 14 29 -4 32 -20 36 -20 36 -29 -4 -36 -42 -47 -54 -39 -67 -33 -81 -45 -8 -46 -22 -26 -17 -26 -18 -20 -24 -13 -31 -13 -31 -13 -46 -12 -60 rrcurveto
+ -6 9 0 3 3 vhcurveto
+ 24 39 22 29 31 25 32 24 47 20 45 10 rrcurveto
+ 3 12 10 1 7 hhcurveto
+ 85 -1 70 21 57 44 rrcurveto
+ -97 108 rmoveto
+ -17 -15 -22 -12 -28 -8 -3 -1 -5 3 -6 7 -6 7 -1 7 4 8 11 24 13 15 17 6 17 6 14 -13 11 -31 rrcurveto
+ 0 0 0 1 -3 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.init.heh">
+ 416 387 148 rmoveto
+ 85 -1 71 22 57 44 30 23 29 34 30 46 30 46 16 41 4 38 7 61 -14 55 -9 55 -7 45 -14 28 -18 13 -18 13 -21 2 -22 -7 -48 -16 -50 -53 -29 -38 rrcurveto
+ -25 -33 -30 -33 -15 -43 rrcurveto
+ -4 -1 3 -2 7 hhcurveto
+ 7 5 2 3 3 hvcurveto
+ 15 17 14 18 14 20 14 20 18 15 22 11 30 15 22 -25 9 -16 32 -66 13 -80 -4 -94 -34 -21 -41 -15 -49 -9 16 31 16 32 16 32 14 29 -4 32 -20 35 rrcurveto
+ -20 35 -28 -3 -36 -42 -50 -58 -39 -68 -31 -76 rrcurveto
+ 1 vlineto
+ -3 -1 rlineto
+ -1 hlineto
+ -36 -12 -27 -17 -20 -19 -20 -19 -25 -29 -31 -40 -52 -67 -42 -80 -39 -78 -9 -18 rcurveline
+ 4 30 rlineto
+ 1 vlineto
+ -53 -65 rlineto
+ -1 vlineto
+ -3 -38 -3 -41 1 -30 6 -17 rlinecurve
+ 6 -17 13 11 19 40 29 58 23 56 15 36 15 36 27 41 40 47 41 49 44 34 54 30 rrcurveto
+ -1 vlineto
+ 4 18 15 6 22 hhcurveto
+ 116 172 rmoveto
+ -18 -14 -22 -12 -28 -8 -3 -1 -4 3 -6 7 -6 7 -2 7 4 8 11 24 13 15 17 6 17 6 14 -13 11 -31 rrcurveto
+ 0 0 -1 2 -3 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.init.meem">
+ 277 466 211 rmoveto
+ 30 23 30 33 30 46 30 46 16 42 4 38 7 62 -14 53 -9 56 -7 45 -14 29 -18 12 -18 12 -21 3 -22 -7 -48 -16 -50 -54 -29 -38 -25 -33 -30 -32 -15 -43 rrcurveto
+ -3 -10 24 6 3 3 15 17 15 18 14 20 14 20 17 15 22 11 30 14 23 -24 9 -16 31 -66 13 -79 -4 -95 -33 -21 -41 -16 -50 -9 18 35 16 31 14 29 rrcurveto
+ 14 29 -4 32 -20 36 -20 36 -28 -4 -36 -42 -47 -54 -40 -68 -33 -81 -15 -4 -33 -12 -13 -6 -62 -26 -36 -46 -27 -63 -14 -31 -12 -33 -14 -32 21 -2 rcurveline
+ 13 31 16 25 21 19 19 17 25 13 31 12 21 8 22 7 21 7 rrcurveto
+ 2 1 0 1 2 hvcurveto
+ 74 23 14 -5 19 -5 20 3 rlinecurve
+ 52 8 32 16 40 31 rrcurveto
+ -96 107 rmoveto
+ -18 -14 -22 -12 -28 -8 -3 -1 -4 2 -6 7 -6 7 -2 7 4 8 11 24 14 16 17 6 17 6 13 -14 11 -31 rrcurveto
+ 0 1 0 1 -3 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.init.ragaa">
+ 314 256 103 rmoveto
+ 86 -1 70 21 56 44 52 40 80 108 8 81 7 62 -15 53 -9 56 -7 45 -13 29 -18 12 -18 12 -21 2 -22 -7 -48 -16 -51 -53 -28 -38 -25 -34 -30 -32 -15 -43 rrcurveto
+ -3 -10 24 6 3 3 16 17 14 19 14 20 14 20 18 14 21 11 30 14 23 -22 8 -17 32 -65 14 -81 -5 -95 -33 -21 -41 -15 -50 -9 16 31 16 32 16 32 rrcurveto
+ 14 29 -4 31 -20 36 -20 36 -28 -3 -36 -42 -50 -58 -39 -69 -31 -76 -20 -5 -20 -6 -21 -8 -56 -25 -31 -33 -38 -41 -21 -24 -14 -20 -7 -18 46 -33 rcurveline
+ 1 2 1 1 2 2 62 39 54 51 90 9 rrcurveto
+ 116 171 rmoveto
+ -16 -14 -23 -11 -29 -9 -3 -1 -4 3 -6 7 -6 7 -2 7 4 8 11 24 14 15 17 6 18 6 15 -17 10 -31 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.init.reh">
+ 224 348 425 rmoveto
+ -15 -17 -11 -23 -19 hvcurveto
+ -46 -53 -39 -66 -33 -78 rrcurveto
+ 1 vlineto
+ -1 -2 0 -2 -1 -2 rrcurveto
+ -1 1 hlineto
+ -4 -1 -5 0 -4 -1 rrcurveto
+ -1 hlineto
+ -40 -12 -30 -12 -23 -25 -21 -22 -20 -30 -14 -32 rrcurveto
+ -1 vlineto
+ -10 -12 -5 -11 -9 vvcurveto
+ -10 8 -13 9 6 5 5 9 7 vhcurveto
+ 35 35 37 8 49 15 4 1 10 2 15 4 rrcurveto
+ 3 2 1 3 hhcurveto
+ 1 5 4 0 4 hhcurveto
+ 5 hlineto
+ 83 69 21 43 55 hvcurveto
+ 30 23 30 34 30 46 30 46 17 42 4 38 rrcurveto
+ 1 10 0 9 10 vvcurveto
+ 17 -1 18 -3 18 vhcurveto
+ -5 28 -4 29 -5 31 -7 45 -14 29 -18 12 rrcurveto
+ 8 -12 -12 4 -13 hhcurveto
+ -8 -8 -1 -3 -8 hvcurveto
+ -48 -16 -50 -53 -29 -38 -25 -34 -30 -32 -14 -43 rrcurveto
+ -1 -1 -1 0 vhcurveto
+ -3 2 -1 6 vhcurveto
+ 1 1 rlineto
+ 7 6 1 3 3 hvcurveto
+ 15 17 14 18 14 20 14 20 17 15 22 11 rrcurveto
+ 3 7 6 2 6 hhcurveto
+ 20 16 -18 -12 6 hvcurveto
+ 28 -58 14 -69 -81 vvcurveto
+ -11 0 -11 -1 -11 vhcurveto
+ -33 -21 -41 -16 -50 -9 18 35 16 31 14 29 rrcurveto
+ 6 11 2 12 13 vvcurveto
+ 28 -20 57 -31 vhcurveto
+ -112 -195 rmoveto
+ 3 1 3 1 3 vhcurveto
+ 11 24 14 15 17 6 rrcurveto
+ 1 3 2 0 2 hhcurveto
+ 13 12 -13 -26 9 hvcurveto
+ 2 -4 -18 -14 -22 -12 -28 -8 rlinecurve
+ -1 hlineto
+ -6 -12 13 9 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.init.sad">
+ 543 651 413 rmoveto
+ -15 -17 -11 -23 -19 hvcurveto
+ -50 -58 -38 -68 -32 -76 -41 -8 -48 -11 -57 -12 rrcurveto
+ -10 -46 -42 -5 -38 hhcurveto
+ -58 -43 13 34 -23 hvcurveto
+ -7 9 -2 12 15 vvcurveto
+ 28 12 37 23 47 vhcurveto
+ 1 2 0 1 1 vvcurveto
+ 2 -1 0 -1 1 vhcurveto
+ -3 hlineto
+ -2 -1 0 -2 -1 hvcurveto
+ -10 -15 -15 -23 -20 -34 -20 -34 -14 -34 -11 -36 rrcurveto
+ -7 -22 -4 -22 -20 vvcurveto
+ -55 21 -25 57 -8 vhcurveto
+ -3 18 19 0 20 hhcurveto
+ 43 49 6 12 54 hvcurveto
+ 79 17 68 15 58 15 rrcurveto
+ 1 hlineto
+ 2 7 7 0 6 hhcurveto
+ 6 hlineto
+ 150 81 68 100 65 hvcurveto
+ 30 46 17 41 4 38 rrcurveto
+ 1 10 0 11 10 vvcurveto
+ 51 -10 40 -8 49 vhcurveto
+ -7 45 -13 29 -18 12 rrcurveto
+ 8 -12 -12 4 -13 hhcurveto
+ -8 -9 -1 -3 -8 hvcurveto
+ -48 -16 -49 -53 -29 -38 -25 -34 -31 -32 -14 -43 rrcurveto
+ -1 -1 -1 0 vhcurveto
+ -3 3 -1 6 vhcurveto
+ 1 hlineto
+ 7 4 2 3 3 hvcurveto
+ 16 17 14 18 14 20 14 20 17 15 22 11 rrcurveto
+ 3 7 7 2 6 hhcurveto
+ 20 15 -19 -12 6 hvcurveto
+ 28 -58 14 -68 -81 vvcurveto
+ -11 1 -11 -1 -11 vhcurveto
+ -33 -21 -42 -16 -50 -9 19 37 16 32 13 26 rrcurveto
+ 6 11 3 12 13 vvcurveto
+ 28 -21 57 -31 vhcurveto
+ -114 -186 rmoveto
+ 3 1 2 2 3 vhcurveto
+ 11 24 13 16 17 6 rrcurveto
+ 1 3 2 0 2 hhcurveto
+ 13 13 -13 -26 9 hvcurveto
+ 0 0 -2 1 -2 vhcurveto
+ -16 -13 -22 -11 -29 -10 rrcurveto
+ -2 hlineto
+ -6 -12 14 8 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.init.yeh">
+ 266 457 191 rmoveto
+ 30 23 29 34 30 46 30 46 17 41 4 38 6 61 -14 54 -9 56 -7 45 -14 29 -18 12 -18 12 -21 3 -22 -7 -48 -16 -50 -53 -28 -38 -25 -34 -31 -32 -14 -43 rrcurveto
+ -3 -10 24 6 3 3 15 17 14 18 14 20 14 20 17 15 22 11 30 14 23 -23 8 -17 32 -65 13 -80 -4 -95 -33 -21 -41 -16 -50 -9 18 35 16 31 14 29 rrcurveto
+ 14 29 -3 32 -20 36 -20 36 -29 -4 -36 -42 -46 -54 -40 -67 -34 -81 -15 -4 -32 -13 -14 -6 -47 -20 -32 -27 -17 -33 -17 -33 -19 -43 -23 -52 rrcurveto
+ -1 vlineto
+ 20 -4 21 41 27 27 33 14 rlinecurve
+ 33 14 32 12 34 11 49 12 43 5 36 -1 36 -1 44 19 49 38 rrcurveto
+ -97 107 rmoveto
+ -17 -15 -23 -11 -28 -8 -3 -1 -4 2 -6 7 -6 7 -2 7 4 8 11 24 14 16 17 6 17 6 13 -14 11 -31 rrcurveto
+ 0 1 0 1 -3 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.medi">
+ -152 217 -273 rmoveto
+ 7 11 15 28 13 hvcurveto
+ 1 3 1 1 1 vvcurveto
+ 16 137 -8 -16 41 291 rlineto
+ 2 vlineto
+ 4 -1 2 -3 -2 -1 -1 -1 -3 vhcurveto
+ -90 -36 -67 -11 -113 -15 -19 -131 rcurveline
+ 59 15 108 25 58 15 -19 -232 rcurveline
+ -1 -15 -1 -14 -12 vvcurveto
+ -19 1 -36 12 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.medi.ain">
+ 22 39 176 rmoveto
+ -13 -35 -13 -43 -13 -50 1 -29 27 -14 28 -3 52 -5 51 4 51 11 51 11 50 12 49 13 -19 -232 rcurveline
+ -4 -41 2 -29 6 -17 6 -17 13 11 19 40 1 2 1 2 1 2 15 136 rcurveline
+ -8 -15 42 290 2 10 -4 2 -9 -6 rlinecurve
+ -69 -28 -110 -30 -94 1 rrcurveto
+ -50 -51 10 37 -11 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.medi.dal">
+ -107 258 -244 rmoveto
+ 14 137 -7 -16 41 291 1 7 -6 2 -6 -3 rlinecurve
+ -48 -19 -45 -14 -51 -10 -26 -3 -24 0 -16 4 -26 7 -14 34 5 30 rrcurveto
+ 3 -2 0 -2 -3 vhcurveto
+ -42 -57 -33 -107 67 -33 45 -22 110 42 39 10 -19 -232 rcurveline
+ -7 -83 11 -52 38 81 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.medi.feh">
+ 105 470 -217 rmoveto
+ 15 136 -8 -15 42 290 1 9 -4 2 -8 -5 rlinecurve
+ -19 -7 -34 -11 -48 -13 -82 -23 -111 -23 -99 8 -43 3 -26 15 -7 27 -13 -35 -13 -43 -13 -50 1 -29 27 -14 28 -3 57 -6 66 5 72 16 72 16 65 14 56 15 -19 -232 rcurveline
+ -4 -41 2 -30 6 -17 6 -17 13 12 19 40 1 2 1 2 1 2 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.medi.hah">
+ 35 375 -20 rmoveto
+ -1 -1 rlineto
+ -1 vlineto
+ -4 -51 -4 -41 2 -30 6 -17 rlinecurve
+ 6 -17 13 12 19 40 rrcurveto
+ 1 3 1 2 1 vvcurveto
+ 15 136 -8 -16 8 57 9 56 8 57 rlinecurve
+ 1 4 3 30 2 20 -6 31 rlinecurve
+ -8 41 -23 20 -37 -4 -37 -4 -40 -13 -43 -23 -61 -32 -97 -69 -41 -40 -21 -38 -20 -43 -18 -41 rrcurveto
+ -2 7 -10 3 3 vhcurveto
+ 11 18 14 16 15 14 38 34 19 19 49 32 40 27 60 33 61 -6 25 -3 18 -15 10 -29 15 -46 -4 -60 -6 -54 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.medi.heh">
+ 219 583 -63 rmoveto
+ 15 136 -8 -15 41 290 2 10 -3 2 -9 -6 rlinecurve
+ -49 -19 -42 -13 -35 -7 -80 -16 -54 -19 -58 -44 -31 -24 -35 -38 -41 -52 -52 -67 -42 -80 -39 -78 -9 -18 rcurveline
+ 4 30 rlineto
+ 1 vlineto
+ -53 -65 rlineto
+ -1 vlineto
+ -3 -38 -3 -41 1 -30 6 -17 rlinecurve
+ 6 -17 13 11 19 40 29 58 23 56 15 36 15 36 27 41 40 47 34 41 35 38 43 31 41 29 39 17 39 6 39 6 44 9 50 13 -19 -232 rcurveline
+ -4 -41 2 -30 6 -17 6 -17 13 12 19 40 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.medi.meem">
+ -1 335 134 rmoveto
+ 6 -35 -2 -63 -1 -46 -1 -32 -7 -194 -2 -28 -4 -42 2 -29 6 -17 6 -17 13 11 19 41 1 2 1 2 1 2 7 121 rcurveline
+ 5 115 6 92 9 69 9 69 3 52 -2 34 -2 33 -19 22 -37 10 -37 10 -34 -2 -32 -14 -83 -38 -82 -79 -40 -80 -13 -27 -17 -28 -9 -30 rrcurveto
+ -11 -4 1 -6 5 hhcurveto
+ 5 4 2 5 3 hvcurveto
+ 14 22 12 23 13 23 28 50 62 42 61 15 30 7 28 1 24 -7 24 -7 14 -16 6 -27 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.medi.ragaa">
+ -29 287 210 rmoveto
+ -54 -3 -48 -31 -43 -59 -43 -59 -33 -52 -23 -45 -17 -29 -15 -34 -11 -33 45 -33 rcurveline
+ 6 14 6 10 8 18 18 39 28 46 36 56 36 56 44 27 53 -1 32 -1 10 -36 -12 -72 -2 -13 -2 -11 -1 -10 -4 -42 2 -30 6 -17 8 -22 15 27 18 36 14 136 rcurveline
+ -8 -15 3 18 4 22 4 25 rlinecurve
+ 8 47 10 64 -45 5 -23 3 -16 0 -9 -1 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.medi.reh">
+ -51 16 -1 rmoveto
+ 6 5 4 10 7 hvcurveto
+ 1 hlineto
+ 9 10 64 28 20 hhcurveto
+ 41 11 80 15 38 10 -18 -232 rcurveline
+ -1 -15 -1 -13 -12 vvcurveto
+ -19 1 -36 12 7 11 14 28 13 vhcurveto
+ 1 2 0 2 1 2 15 137 rcurveline
+ -8 -16 42 290 rlineto
+ 3 vlineto
+ 4 -1 3 -3 -2 -2 -1 -2 -3 vhcurveto
+ -101 -40 4 5 -110 -16 -19 -3 -19 -7 -18 -10 -25 -14 -33 -46 -17 -39 rrcurveto
+ -1 vlineto
+ -10 -12 -5 -11 -9 vvcurveto
+ -10 8 -13 9 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.medi.sad">
+ 216 549 -245 rmoveto
+ 7 11 14 28 13 hvcurveto
+ 1 2 1 2 1 2 14 136 rcurveline
+ -7 -15 41 290 rlineto
+ 4 vlineto
+ 3 -1 2 -3 -2 -2 0 -2 -3 vhcurveto
+ -49 -20 -65 -18 -80 -16 -80 -16 -67 -11 -56 -6 rrcurveto
+ -1 -13 -12 -1 -11 hhcurveto
+ -42 -33 8 18 -24 hvcurveto
+ -12 9 -7 15 20 vvcurveto
+ 30 14 42 27 53 vhcurveto
+ 1 2 0 1 1 vvcurveto
+ 2 -1 0 -2 1 vhcurveto
+ -2 hlineto
+ -2 -1 0 -2 -1 hvcurveto
+ -10 -15 -15 -24 -20 -34 -20 -34 -15 -34 -11 -36 rrcurveto
+ -7 -22 -3 -21 -20 vvcurveto
+ -12 1 -11 3 -11 vhcurveto
+ -45 10 55 -13 63 hhcurveto
+ 51 60 8 16 71 hvcurveto
+ 98 22 81 21 63 16 -19 -232 rcurveline
+ -1 -15 -1 -14 -12 vvcurveto
+ -19 1 -36 12 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.medi.yeh">
+ -35 304 86 rmoveto
+ -4 -36 -3 -86 -3 -38 -4 -41 1 -30 6 -17 6 -17 13 12 19 40 1 2 1 1 1 2 16 136 rcurveline
+ -8 -14 14 100 7 41 14 47 -3 48 rlinecurve
+ -3 33 -19 22 -37 10 -37 10 -34 -2 -32 -14 -43 -20 -34 -27 -27 -34 -36 -47 -28 -51 -28 -55 -2 -4 -26 -56 12 -1 rrcurveto
+ 5 4 2 5 3 hvcurveto
+ 14 21 12 24 12 23 16 28 22 25 30 20 44 30 66 28 49 -37 20 -15 7 -28 -4 -40 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hehDoachashmee-ar">
+ 377 493 350 rmoveto
+ -15 -17 -11 -23 -20 hvcurveto
+ -47 -54 -40 -68 -33 -81 -317 -11 rcurveline
+ -4 -1 -1 -2 -2 vvcurveto
+ -2 3 -4 6 -3 vhcurveto
+ 138 -62 rlineto
+ -18 40 32 -8 23 hhcurveto
+ 3 3 -1 1 3 hvcurveto
+ 2 21 29 2 36 hhcurveto
+ 17 hlineto
+ 151 81 66 101 66 hvcurveto
+ 30 46 17 42 4 38 rrcurveto
+ 1 11 1 10 11 vvcurveto
+ 17 -2 17 -3 17 vhcurveto
+ -5 28 -4 29 -5 31 -7 45 -14 29 -18 12 rrcurveto
+ 8 -12 -12 4 -13 hhcurveto
+ -8 -8 -1 -3 -8 hvcurveto
+ -48 -16 -50 -53 -29 -38 -25 -34 -29 -32 -15 -43 rrcurveto
+ -1 -1 -1 0 vhcurveto
+ -3 2 -1 6 vhcurveto
+ 1 hlineto
+ 7 6 2 3 3 hvcurveto
+ 15 17 14 18 14 20 14 20 17 15 22 11 rrcurveto
+ 3 7 6 2 6 hhcurveto
+ 20 17 -19 -12 6 hvcurveto
+ 28 -58 13 -69 -80 vvcurveto
+ -11 0 -11 -1 -11 vhcurveto
+ -33 -21 -41 -16 -50 -9 18 35 16 31 14 29 rrcurveto
+ 6 12 3 12 13 vvcurveto
+ 28 -20 56 -31 vhcurveto
+ -115 -186 rmoveto
+ 3 1 2 1 3 vhcurveto
+ 11 24 14 16 17 6 rrcurveto
+ 1 3 2 0 2 hhcurveto
+ 13 12 -14 -26 9 hvcurveto
+ 2 -3 -18 -14 -22 -12 -28 -8 rlinecurve
+ -1 0 -1 0 hvcurveto
+ -6 -12 14 9 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="hehDoachashmee-ar.fina">
+ 137 352 22 rmoveto
+ -10 41 37 -5 34 hhcurveto
+ 48 40 10 20 34 hvcurveto
+ 58 34 48 45 38 59 23 35 14 36 2 34 rrcurveto
+ 5 vlineto
+ 32 -18 23 -37 18 vhcurveto
+ -27 10 -35 17 -40 22 rrcurveto
+ 14 -26 -23 7 -20 hhcurveto
+ -11 -11 -2 -5 -9 hvcurveto
+ -18 -9 -17 -16 -16 -23 rrcurveto
+ -15 -21 -7 -13 -3 vvcurveto
+ -49 -58 -44 -76 -33 -74 -132 -22 -28 2 -149 -6 rrcurveto
+ -4 -1 -1 -2 -2 vvcurveto
+ -2 3 -4 6 -3 vhcurveto
+ 138 -62 rlineto
+ -18 41 31 -8 22 hhcurveto
+ 4 4 -1 1 3 hvcurveto
+ 22 4 34 7 45 11 rrcurveto
+ 27 166 rmoveto
+ 5 2 6 4 6 vhcurveto
+ 18 24 16 27 31 11 rrcurveto
+ 13 -6 24 -31 -29 vvcurveto
+ -11 -5 -8 -10 -5 vhcurveto
+ -25 -12 -24 -8 -21 -1 rrcurveto
+ -9 5 -14 12 15 vvcurveto
+ 305 13 rmoveto
+ -4 -2 -5 -4 -4 vhcurveto
+ -11 -11 -18 -9 -23 -8 rrcurveto
+ -11 -31 -55 -16 -37 hhcurveto
+ -4 hlineto
+ 29 40 26 43 18 50 24 -10 17 -6 10 -4 rrcurveto
+ 6 -2 55 -25 -18 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="hehDoachashmee-ar.medi">
+ -50 178 42 rmoveto
+ -10 41 38 -5 34 hhcurveto
+ 47 40 10 20 34 hvcurveto
+ 58 34 48 45 39 59 23 35 13 36 2 34 rrcurveto
+ 5 vlineto
+ 32 -18 23 -36 18 vhcurveto
+ -27 10 -35 17 -40 22 rrcurveto
+ 14 -26 -23 7 -20 hhcurveto
+ -11 -11 -2 -5 -10 hvcurveto
+ -18 -9 -16 -16 -16 -23 rrcurveto
+ -15 -21 -7 -13 -3 vvcurveto
+ -48 -58 -45 -76 -33 -74 -119 -21 rcurveline
+ -21 -127 4 1 6 1 4 1 rlinecurve
+ 192 205 rmoveto
+ 5 2 6 4 6 vhcurveto
+ 18 24 15 27 31 11 rrcurveto
+ 14 -6 24 -31 -29 vvcurveto
+ -11 -5 -8 -10 -5 vhcurveto
+ -26 -12 -23 -8 -21 -1 rrcurveto
+ -9 5 -14 12 15 vvcurveto
+ 305 13 rmoveto
+ -4 -3 -5 -4 -4 vhcurveto
+ -11 -11 -17 -9 -23 -8 rrcurveto
+ -11 -31 -55 -16 -37 hhcurveto
+ -4 hlineto
+ 29 40 26 43 18 50 24 -10 16 -6 10 -4 rrcurveto
+ 6 -2 56 -25 -18 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="hehDoachashmee-ar.medi.ain">
+ 128 355 42 rmoveto
+ 98 -24 79 4 58 34 58 34 48 46 38 59 23 35 14 36 2 34 2 34 -18 25 -39 19 -27 10 -35 17 -40 22 -40 22 -33 5 -27 -13 -18 -9 -17 -15 -16 -24 rrcurveto
+ -16 -24 -8 -12 2 -1 -49 -58 -44 -76 -33 -74 -28 -4 rcurveline
+ -1 hlineto
+ -1 -2 -52 -9 -52 -5 -52 1 rlinecurve
+ -52 1 -31 16 -9 30 -13 -34 -13 -43 -13 -51 1 -29 27 -14 28 -3 51 -5 64 6 77 14 rrcurveto
+ 1 hlineto
+ 205 270 rmoveto
+ 13 -5 10 -14 9 -24 9 -24 -3 -16 -16 -7 -25 -12 -24 -8 -21 -1 -13 7 -19 22 15 20 18 24 16 27 31 11 rrcurveto
+ 218 -46 rmoveto
+ 43 -27 -58 -24 -27 -10 -31 -11 -61 -18 -35 2 29 40 26 43 18 50 52 -21 -1 4 45 -28 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hehDoachashmee-ar.medi.dal">
+ 21 248 36 rmoveto
+ 197 -50 106 86 77 117 47 71 14 76 -78 37 -54 20 -95 69 -53 -26 -35 -17 -41 -67 3 -2 -49 -59 -43 -74 -34 -75 -34 -5 -56 -14 -36 9 -27 7 -14 38 8 32 rrcurveto
+ 1 0 0 -1 -1 vhcurveto
+ -44 -55 -37 -114 69 -34 47 -23 124 44 39 9 rrcurveto
+ 99 245 rmoveto
+ 26 -10 28 -65 -32 -15 -22 -11 -25 -8 -24 -2 -15 8 -14 23 13 18 18 24 15 27 32 11 rrcurveto
+ 218 -46 rmoveto
+ 71 -44 -197 -45 -43 1 29 40 26 43 18 50 49 -19 6 -1 41 -25 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hehDoachashmee-ar.medi.feh">
+ 197 424 57 rmoveto
+ 98 -25 78 4 58 34 58 34 48 46 39 59 23 36 13 35 2 34 2 34 -18 26 -39 19 -27 10 -34 16 -40 22 -75 42 -41 -25 -36 -51 -16 -23 -7 -12 2 -1 rrcurveto
+ -49 -59 -44 -75 -33 -74 -45 -9 -83 -19 -58 -5 -68 -6 -78 3 -15 49 -13 -35 -13 -43 -13 -50 1 -29 27 -14 28 -3 55 -5 61 4 67 14 67 14 61 14 57 14 rrcurveto
+ 98 244 rmoveto
+ 13 -5 11 -14 9 -24 9 -24 -3 -16 -16 -7 -25 -12 -24 -7 -22 -2 -13 7 -18 22 15 20 18 24 14 27 32 11 rrcurveto
+ 219 -45 rmoveto
+ 43 -28 -57 -23 -28 -10 -31 -11 -61 -18 -35 1 29 40 26 42 18 51 52 -21 -1 4 45 -27 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hehDoachashmee-ar.medi.hah">
+ 3 230 159 rmoveto
+ 98 -25 79 5 58 34 58 34 48 46 39 59 23 35 13 35 2 34 2 34 -18 26 -39 19 -27 10 -35 16 -40 22 -75 42 -40 -25 -36 -51 -16 -23 -8 -12 2 -1 rrcurveto
+ -49 -59 -43 -75 -33 -74 -3 -1 rcurveline
+ -1 -1 hlineto
+ -34 -7 -29 -12 -23 -16 -23 -16 -22 -31 -20 -46 -21 -47 -7 -31 -10 -52 rrcurveto
+ -6 9 0 3 3 vhcurveto
+ 42 67 52 48 62 27 rrcurveto
+ 379 214 rmoveto
+ 43 -28 -58 -23 -27 -10 -31 -11 -61 -17 -35 1 29 40 26 42 18 51 52 -21 -1 3 45 -27 rrcurveto
+ -218 45 rmoveto
+ 13 -5 11 -14 9 -24 9 -24 -3 -16 -16 -7 -26 -12 -24 -7 -21 -2 -13 7 -18 22 15 20 18 25 14 26 32 11 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hehDoachashmee-ar.medi.heh">
+ 234 461 194 rmoveto
+ 98 -25 79 5 58 34 58 34 48 46 39 59 23 36 13 34 2 34 2 34 -18 26 -39 19 -27 10 -35 16 -40 22 -75 41 -40 -24 -36 -51 -16 -23 -8 -12 2 -1 rrcurveto
+ -49 -59 -43 -75 -34 -74 -36 -6 -36 -18 -36 -31 -100 -87 -91 -139 -61 -122 -9 -18 rcurveline
+ 4 30 rlineto
+ 1 vlineto
+ -53 -65 rlineto
+ -1 vlineto
+ -3 -38 -3 -41 1 -30 6 -17 rlinecurve
+ 8 -23 15 29 18 35 40 85 37 75 35 63 60 107 103 72 139 33 rrcurveto
+ 99 244 rmoveto
+ 13 -5 10 -14 9 -24 9 -24 -2 -16 -16 -7 -26 -12 -24 -6 -21 -2 -13 7 -19 21 15 20 18 24 16 27 31 11 rrcurveto
+ 218 -45 rmoveto
+ 43 -27 -58 -24 -27 -10 -31 -11 -61 -17 -35 1 29 40 26 42 18 51 52 -21 -1 3 45 -27 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hehDoachashmee-ar.medi.meem">
+ 64 291 157 rmoveto
+ 98 -25 78 4 58 34 58 34 48 47 39 59 23 35 13 35 2 34 2 34 -18 27 -39 18 -27 10 -34 16 -40 22 -75 42 -41 -24 -36 -52 -16 -24 -7 -12 2 -1 rrcurveto
+ -49 -58 -44 -75 -33 -75 -64 -10 -45 -19 -29 -29 -29 -29 -25 -36 -20 -43 -7 -13 -6 -12 -7 -13 -2 -4 -24 -53 12 -1 rrcurveto
+ 5 4 2 5 3 hvcurveto
+ 30 49 38 34 48 19 48 19 52 16 56 13 rrcurveto
+ 99 244 rmoveto
+ 13 -5 10 -14 9 -24 9 -24 -3 -16 -16 -7 -25 -12 -24 -6 -22 -2 -13 7 -18 21 15 20 18 24 15 27 32 11 rrcurveto
+ 218 -46 rmoveto
+ 43 -27 -58 -24 -27 -10 -31 -11 -62 -17 -35 2 29 40 27 41 18 51 52 -21 -1 4 45 -28 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hehDoachashmee-ar.medi.ragaa">
+ 33 69 19 rmoveto
+ 8 6 1 0 8 6 37 25 37 20 37 16 29 13 21 8 13 3 99 -25 78 5 58 34 58 34 49 47 38 59 23 35 13 35 2 34 2 34 -18 26 -39 19 rrcurveto
+ -27 10 -35 16 -40 22 -40 22 -33 5 -27 -13 -18 -9 -17 -16 -16 -23 -16 -23 -8 -13 2 -1 -49 -59 -42 -75 -34 -74 -65 -30 -71 -18 -40 -51 -16 -22 -17 -35 -14 -36 42 -30 rcurveline
+ 2 1 3 1 1 1 7 6 7 5 7 5 rrcurveto
+ 290 342 rmoveto
+ 13 -6 11 -14 9 -24 9 -24 -4 -15 -16 -7 -25 -12 -23 -8 -22 -1 -12 7 -20 22 15 19 18 24 16 28 31 11 rrcurveto
+ 218 -46 rmoveto
+ 44 -27 -57 -24 -28 -10 -31 -11 -62 -17 -35 1 29 40 26 42 18 51 53 -21 -2 4 45 -28 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hehDoachashmee-ar.medi.reh">
+ 40 16 -1 rmoveto
+ 6 5 5 9 7 hvcurveto
+ 10 10 19 8 27 9 59 12 61 16 58 13 rrcurveto
+ -10 41 37 -6 34 hhcurveto
+ 47 41 10 20 34 hvcurveto
+ 58 34 48 46 38 59 23 35 14 36 2 34 rrcurveto
+ 5 vlineto
+ 32 -18 23 -37 18 vhcurveto
+ -27 10 -35 17 -40 22 rrcurveto
+ 14 -26 -23 7 -20 hhcurveto
+ -11 -11 -2 -5 -9 hvcurveto
+ -18 -9 -17 -16 -16 -23 rrcurveto
+ -15 -21 -7 -12 -3 vvcurveto
+ -1 vlineto
+ -48 -58 -45 -76 -33 -74 -67 -10 rcurveline
+ -1 -7 -6 -2 -3 hhcurveto
+ 1 vlineto
+ -20 -3 -19 -7 -18 -10 -25 -14 -33 -47 -17 -39 rrcurveto
+ -1 vlineto
+ -10 -12 -5 -11 -9 vvcurveto
+ -10 8 -13 9 vhcurveto
+ 279 249 rmoveto
+ 5 2 5 4 6 vhcurveto
+ 18 24 16 27 31 11 rrcurveto
+ 14 -6 23 -31 -29 vvcurveto
+ -11 -4 -8 -10 -5 vhcurveto
+ -26 -12 -24 -8 -21 -1 rrcurveto
+ -9 5 -14 13 15 vvcurveto
+ 305 12 rmoveto
+ -4 -2 -4 -4 -4 vhcurveto
+ -11 -11 -18 -10 -23 -8 rrcurveto
+ -11 -31 -55 -16 -37 hhcurveto
+ -4 hlineto
+ 29 39 26 43 18 51 24 -10 17 -6 10 -4 rrcurveto
+ 6 -2 55 -25 -18 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="hehDoachashmee-ar.medi.sad">
+ 207 106 334 rmoveto
+ -2 -1 0 -2 -1 hvcurveto
+ -10 -15 -15 -23 -20 -34 -20 -34 -14 -34 -11 -36 rrcurveto
+ -7 -22 -4 -22 -20 vvcurveto
+ -56 21 -24 57 -8 vhcurveto
+ -3 21 21 -1 21 hhcurveto
+ 38 39 4 9 40 hvcurveto
+ 63 14 59 14 56 13 rrcurveto
+ -10 41 38 -5 34 hhcurveto
+ 47 40 9 20 34 hvcurveto
+ 58 34 48 47 39 59 23 35 13 35 2 34 rrcurveto
+ 4 vlineto
+ 32 -18 25 -37 18 vhcurveto
+ -27 10 -34 16 -40 22 rrcurveto
+ 14 -26 -23 7 -20 hhcurveto
+ -11 -11 -1 -5 -9 hvcurveto
+ -18 -9 -17 -17 -16 -23 rrcurveto
+ -15 -21 -8 -12 -3 vvcurveto
+ 1 -1 -49 -58 -44 -76 -33 -74 rlinecurve
+ -38 -6 -42 -7 -48 -8 rrcurveto
+ -6 -29 -27 -3 -24 hhcurveto
+ -57 -40 14 40 -17 hvcurveto
+ -3 7 -2 8 10 vvcurveto
+ 28 13 40 25 50 vhcurveto
+ 1 2 0 1 1 vvcurveto
+ 3 -3 0 -2 vhcurveto
+ 359 -114 rmoveto
+ 6 2 5 4 6 vhcurveto
+ 18 24 15 27 32 11 rrcurveto
+ 13 -6 24 -31 -29 vvcurveto
+ -11 -5 -8 -10 -5 vhcurveto
+ -25 -12 -24 -7 -22 -2 rrcurveto
+ -9 5 -13 12 15 vvcurveto
+ 305 13 rmoveto
+ -4 -2 -4 -4 -4 vhcurveto
+ -11 -11 -18 -10 -23 -8 rrcurveto
+ -11 -31 -56 -15 -37 hhcurveto
+ -4 hlineto
+ 29 40 27 42 18 50 24 -10 17 -6 10 -4 rrcurveto
+ 6 -2 55 -25 -18 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="hehDoachashmee-ar.medi.yeh">
+ 30 257 105 rmoveto
+ 98 -25 78 6 58 34 58 34 48 46 39 59 23 35 13 35 2 34 2 34 -18 26 -39 19 -27 10 -34 16 -40 22 -75 42 -41 -24 -36 -52 -16 -24 -7 -12 2 -1 rrcurveto
+ -49 -58 -44 -76 -33 -74 -63 -10 -46 -19 -29 -29 -29 -29 -25 -36 -20 -43 rrcurveto
+ -6 -13 -1 1 0 vvcurveto
+ -1 vlineto
+ 18 -32 31 31 35 23 42 14 rlinecurve
+ 41 14 44 12 46 11 rrcurveto
+ 98 246 rmoveto
+ 13 -5 11 -15 9 -24 9 -24 -3 -16 -16 -7 -25 -12 -24 -7 -22 -1 -13 7 -18 21 15 20 18 24 14 28 32 11 rrcurveto
+ 219 -46 rmoveto
+ 43 -27 -58 -25 -27 -10 -31 -11 -61 -17 -35 2 29 40 26 42 18 51 53 -21 -2 4 45 -28 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hehHamzaabove-ar">
+ -117 155 511 rmoveto
+ 37 26 20 43 -28 18 -15 10 -24 1 -12 14 15 21 26 3 8 18 21 45 rcurveline
+ -9 -4 -9 -4 -8 -6 -26 -20 -88 -94 50 -28 11 -6 16 -6 11 -7 6 -4 -8 -5 -3 -2 -29 -16 -33 -13 -31 -14 36 6 35 2 31 22 rrcurveto
+ 62 -344 rmoveto
+ 50 226 -122 160 -114 -333 -40 -116 -21 -132 120 31 84 22 27 68 16 74 rrcurveto
+ -79 98 rmoveto
+ 13 -9 37 -78 -17 -11 -29 -18 -46 -17 -39 17 -6 3 -9 8 2 4 4 15 42 119 48 -33 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hehgoal-ar">
+ -117 217 167 rmoveto
+ 50 226 -122 160 -114 -333 -40 -116 -21 -132 120 31 84 22 27 68 16 74 rrcurveto
+ -79 98 rmoveto
+ 13 -9 37 -78 -17 -11 -29 -18 -46 -17 -39 17 -6 3 -9 8 2 4 4 15 42 119 48 -33 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hehgoal-ar.fina">
+ -188 114 142 rmoveto
+ -2 hlineto
+ -9 -7 -6 -12 -5 hvcurveto
+ -91 -237 32 21 46 109 rlineto
+ -8 22 33 -9 34 hhcurveto
+ 22 27 2 6 34 hvcurveto
+ 36 129 rlineto
+ -4 -29 -26 -2 -21 hhcurveto
+ -41 -25 7 4 -30 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="hehgoal-ar.init">
+ 32 298 208 rmoveto
+ -2 vlineto
+ -87 -37 -85 -14 -104 -22 -22 -133 rcurveline
+ 100 28 17 5 23 8 29 11 rlinecurve
+ 47 17 16 7 30 21 -1 -2 -2 -4 -2 -5 -15 -29 -15 -33 -14 -40 rrcurveto
+ -7 -20 -4 -20 -20 vvcurveto
+ -21 4 -20 7 -21 vhcurveto
+ -19 7 14 -23 26 hhcurveto
+ 45 24 39 29 17 hvcurveto
+ 18 32 6 45 8 40 rrcurveto
+ -24 -20 -16 -28 -45 hhcurveto
+ -27 -16 26 24 5 1 4 1 5 hvcurveto
+ 4 21 5 19 6 17 4 14 8 14 4 15 rrcurveto
+ 53 53 32 59 90 vvcurveto
+ 36 -8 37 -9 22 vhcurveto
+ -11 26 -77 -113 rlineto
+ 10 -29 21 -56 -34 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="hehgoal-ar.init.ain">
+ 131 307 149 rmoveto
+ -13 -53 -56 -7 -58 hhcurveto
+ -58 -34 15 33 -9 hvcurveto
+ -13 -35 -13 -42 -13 -50 1 -29 27 -15 28 -3 39 -4 45 2 51 6 51 6 44 14 37 20 11 6 11 6 11 8 -1 -2 0 -1 -1 -1 -14 -32 -17 -33 -15 -42 rrcurveto
+ -14 -40 -1 -41 15 -41 8 -22 15 -24 31 4 40 6 21 33 17 29 17 32 7 45 8 41 -10 -13 -9 -14 -12 -10 -17 -13 -40 -12 -19 20 -27 29 15 48 12 33 rrcurveto
+ 4 14 8 15 4 15 5 2 4 6 3 4 41 45 25 59 8 67 2 16 -3 22 -7 30 -7 30 -3 13 -3 -4 -77 -113 rcurveline
+ 14 -40 7 -31 -1 -21 -20 -9 -26 -8 -32 -8 rrcurveto
+ -1 -2 -1 -1 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="hehgoal-ar.init.dal">
+ 104 367 194 rmoveto
+ -3 vlineto
+ -49 -21 -46 -17 -45 -13 rrcurveto
+ -7 -23 -24 -4 -24 hhcurveto
+ -23 -25 4 6 -24 hvcurveto
+ -21 5 -14 26 27 vvcurveto
+ 5 1 5 1 5 vhcurveto
+ 2 -1 0 0 -1 0 0 -2 -1 vhcurveto
+ -21 -28 -16 -36 -9 -44 rrcurveto
+ -2 -9 -1 -10 -8 vvcurveto
+ -52 46 -26 55 22 24 4 8 26 vhcurveto
+ 70 22 45 17 45 32 -17 -34 -16 -34 -16 -45 rrcurveto
+ -7 -20 -5 -20 -20 vvcurveto
+ -21 5 -20 7 -21 vhcurveto
+ -19 7 13 -23 26 hhcurveto
+ 45 24 39 29 17 hvcurveto
+ 17 32 8 45 7 41 rrcurveto
+ -24 -20 -15 -29 -45 hhcurveto
+ -27 -16 26 24 5 0 4 1 5 hvcurveto
+ 4 21 5 19 6 17 4 14 8 15 4 15 36 31 32 57 9 41 rrcurveto
+ 5 26 3 24 22 vvcurveto
+ 37 -8 35 -9 22 vhcurveto
+ -11 27 -77 -113 rlineto
+ 10 -29 21 -55 -34 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="hehgoal-ar.init.feh">
+ 118 349 305 rmoveto
+ 10 -28 22 -60 -1 -33 -58 -25 -70 -25 -77 -3 -59 -2 -65 6 -12 43 -13 -35 -13 -43 -13 -50 1 -29 27 -14 28 -3 101 -10 110 26 77 54 -17 -34 -16 -34 -16 -45 rrcurveto
+ -14 -40 -1 -40 15 -41 8 -22 16 -24 31 4 40 6 21 33 17 29 18 32 6 44 7 41 -7 -10 0 1 -7 -10 -5 -7 -5 -5 -6 -5 -17 -13 -41 -13 -19 20 rrcurveto
+ -27 29 16 48 12 33 4 14 8 15 4 15 36 34 32 53 9 42 13 61 -3 62 -19 44 -12 27 rcurveline
+ endchar
+ </CharString>
+ <CharString name="hehgoal-ar.init.hah">
+ 184 443 299 rmoveto
+ -72 -31 -88 -16 -77 -26 -65 -19 -46 -33 -25 -45 -25 -45 -22 -43 -20 -42 14 1 rcurveline
+ 64 56 48 33 33 11 33 11 50 15 67 21 42 13 21 5 33 24 -2 -4 -2 -3 -2 -3 -11 -18 -15 -34 -18 -51 -14 -40 0 -41 15 -40 8 -22 15 -23 31 4 rrcurveto
+ 40 6 21 32 17 29 18 31 6 45 8 41 -10 -13 -9 -13 -12 -10 -17 -14 -40 -13 -19 21 -27 29 15 49 12 33 4 14 8 14 4 15 36 33 32 55 9 42 rrcurveto
+ 13 61 -3 61 -19 45 -11 27 rcurveline
+ -76 -114 10 -29 22 -59 -2 -33 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="hehgoal-ar.init.heh">
+ 257 481 448 rmoveto
+ 10 -28 23 -60 -2 -33 -43 -18 -32 -11 -20 -3 -20 -3 -30 -15 -39 -26 -46 -31 -43 -43 -43 -55 -52 -67 -42 -80 -39 -78 -9 -18 rcurveline
+ 4 30 rlineto
+ 1 vlineto
+ -53 -65 rlineto
+ -1 vlineto
+ -3 -38 -3 -41 1 -30 6 -17 rlinecurve
+ 6 -17 13 11 19 40 29 58 23 56 15 36 15 36 27 41 40 47 34 41 35 38 43 31 21 15 24 11 25 7 37 11 36 16 28 22 -17 -34 -16 -35 -16 -45 rrcurveto
+ -14 -40 0 -41 15 -40 8 -22 15 -24 31 4 40 6 21 34 17 28 18 32 6 44 8 41 -10 -13 -9 -13 -12 -10 -17 -14 -41 -13 -19 21 -27 29 17 49 11 33 rrcurveto
+ 4 14 8 14 4 15 3 2 6 7 11 12 30 36 19 36 8 36 13 61 -3 63 -19 44 -11 27 rcurveline
+ endchar
+ </CharString>
+ <CharString name="hehgoal-ar.init.meem">
+ 80 314 -97 rmoveto
+ 40 6 21 33 17 29 18 31 6 45 8 41 -10 -13 -9 -14 -12 -10 -17 -14 -41 -12 -19 21 -27 29 17 48 11 33 4 14 8 15 4 15 36 34 32 52 9 43 rrcurveto
+ 13 61 -3 63 -19 44 -11 26 rcurveline
+ -77 -113 10 -29 23 -58 -2 -34 rlinecurve
+ -31 -14 -32 -9 -31 -7 -31 -7 -30 -9 -27 -12 -49 -21 -33 -30 -16 -36 -16 -36 -21 -48 -27 -59 21 -1 rcurveline
+ 22 52 34 30 48 23 62 18 76 21 45 35 -2 -5 -2 -3 -1 -2 -15 -29 -14 -34 -14 -40 -14 -40 -1 -40 15 -41 8 -21 15 -25 31 4 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="hehgoal-ar.init.ragaa">
+ 325 496 304 rmoveto
+ -38 -16 -60 -18 -46 -11 -71 -15 -87 -23 -60 -31 -72 -36 -31 -42 -31 -82 42 -30 rcurveline
+ 2 2 3 2 5 3 46 33 33 23 20 11 20 11 19 9 20 6 41 13 62 16 54 20 53 19 23 10 33 29 rrcurveto
+ -20 4 -18 6 -17 vhcurveto
+ 8 -22 14 -25 32 5 40 5 21 34 17 29 18 31 6 46 8 41 -19 -25 -12 -21 -38 -7 -27 -5 -16 15 -7 20 41 67 12 61 -17 55 rrcurveto
+ -26 83 1 0 0 vvcurveto
+ -77 -114 10 -28 23 -60 -2 -33 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="hehgoal-ar.init.reh">
+ 70 333 231 rmoveto
+ -3 1 vlineto
+ -38 -16 -61 -18 -46 -11 -40 -8 -32 -7 -24 -6 -24 -6 -20 -23 -16 -42 -7 -11 -6 -12 -6 -13 rrcurveto
+ -1 vlineto
+ -10 -12 -5 -11 -9 vvcurveto
+ -10 8 -13 9 6 5 5 9 7 vhcurveto
+ 20 20 25 12 23 4 24 4 30 7 35 9 20 5 40 17 17 9 9 4 10 6 11 8 -5 -10 rcurveline
+ -15 -29 -14 -34 -14 -40 rrcurveto
+ -7 -20 -5 -20 -20 vvcurveto
+ -40 14 -63 44 45 24 39 29 17 vhcurveto
+ 18 31 7 45 7 41 rrcurveto
+ -25 -18 -19 -28 -44 hhcurveto
+ -27 -15 26 25 4 0 5 1 5 hvcurveto
+ 4 21 5 18 6 17 4 14 8 15 4 15 35 35 33 52 9 43 rrcurveto
+ 5 26 3 24 22 vvcurveto
+ 37 -8 36 -9 22 vhcurveto
+ -12 26 -76 -113 rlineto
+ 10 -29 20 -54 -35 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="hehgoal-ar.init.sad">
+ 342 550 21 rmoveto
+ 4 0 4 1 5 vhcurveto
+ 4 21 5 19 6 17 4 14 9 15 4 15 35 35 32 51 9 43 rrcurveto
+ 5 26 3 24 22 vvcurveto
+ 37 -8 36 -9 22 vhcurveto
+ -11 27 -77 -113 rlineto
+ 10 -29 21 -56 -34 vvcurveto
+ -2 vlineto
+ -28 -88 -176 -62 -120 hhcurveto
+ -48 -37 10 21 -27 hvcurveto
+ -15 11 -7 17 22 vvcurveto
+ 28 12 38 23 46 vhcurveto
+ 1 2 0 1 1 vvcurveto
+ 3 -3 0 -2 -2 -1 0 -2 -1 vhcurveto
+ -10 -15 -15 -24 -20 -34 -20 -34 -14 -34 -11 -36 rrcurveto
+ -7 -22 -4 -21 -20 vvcurveto
+ -56 21 -25 57 -8 vhcurveto
+ -3 18 20 0 21 hhcurveto
+ 130 180 53 42 79 hvcurveto
+ 9 4 11 7 11 8 -1 -2 -2 -3 -2 -5 -15 -29 -15 -34 -14 -40 rrcurveto
+ -7 -20 -4 -20 -20 vvcurveto
+ -21 4 -19 7 -21 vhcurveto
+ -19 7 13 -24 26 hhcurveto
+ 45 24 40 29 17 hvcurveto
+ 18 31 6 45 8 40 rrcurveto
+ -24 -19 -16 -28 -45 hhcurveto
+ -27 -16 26 25 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="hehgoal-ar.init.yeh">
+ 102 365 270 rmoveto
+ 1 vlineto
+ -52 -23 -69 -15 -57 -17 -49 -15 -37 -23 -24 -29 -24 -29 -26 -43 -27 -59 rrcurveto
+ -1 vlineto
+ 17 -16 24 37 32 26 39 14 rlinecurve
+ 39 14 40 13 42 13 42 13 22 6 32 24 -17 -34 -16 -35 -16 -45 -15 -40 0 -40 15 -41 8 -22 16 -24 31 4 40 6 21 34 17 28 18 32 6 44 8 41 rrcurveto
+ -10 -13 -9 -13 -12 -10 -16 -14 -43 -13 -18 21 -14 15 -4 18 4 21 4 21 4 19 6 17 5 14 8 15 4 15 36 33 32 54 9 42 13 61 -3 62 -19 44 -11 26 rcurveline
+ -77 -112 10 -29 22 -60 -1 -33 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="highhamza-ar">
+ 67 84 254 rmoveto
+ 39 46 6 12 25 hvcurveto
+ 34 16 29 38 30 41 28 39 26 32 -2 19 -5 51 -72 -16 -26 46 28 24 23 8 38 10 8 15 25 30 10 17 rrcurveto
+ 17 10 12 23 -14 hhcurveto
+ -14 -35 -20 -11 -15 hvcurveto
+ -91 -63 -91 -118 26 -45 11 -19 27 -19 35 -8 17 -4 11 -10 -24 -12 -48 -24 -80 -28 -44 -28 rrcurveto
+ -16 -25 18 -3 30 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="hyphen">
+ -192 297 276 rmoveto
+ -235 hlineto
+ -7 -40 rlineto
+ 236 hlineto
+ endchar
+ </CharString>
+ <CharString name="i">
+ -222 206 625 rmoveto
+ 30 -20 28 -34 -29 -35 -22 -34 -32 26 -26 32 32 26 23 33 2 vhcurveto
+ -14 -233 rmoveto
+ 44 -17 35 -45 -39 -56 -39 -36 -45 vhcurveto
+ 13 -18 rlineto
+ 15 24 34 17 22 hhcurveto
+ 26 9 -33 -52 hvcurveto
+ -6 -221 rlineto
+ -99 37 -13 43 55 52 52 45 34 vhcurveto
+ 11 vlineto
+ -13 10 rlineto
+ -24 -27 -27 -21 -38 hhcurveto
+ -35 -9 43 74 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="iacute">
+ -287 279 707 rmoveto
+ -47 36 -13 -2 -120 -157 18 -31 rlineto
+ 75 -161 rmoveto
+ 44 -17 35 -45 -39 -56 -39 -36 -45 vhcurveto
+ 13 -18 rlineto
+ 15 24 34 17 22 hhcurveto
+ 26 9 -33 -52 hvcurveto
+ -6 -221 rlineto
+ -99 37 -13 43 55 52 52 45 34 vhcurveto
+ 11 vlineto
+ -13 10 rlineto
+ -24 -27 -27 -21 -38 hhcurveto
+ -35 -9 43 74 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="icircumflex">
+ -287 -51 562 rmoveto
+ 23 -12 143 131 121 -124 39 26 -157 160 rlineto
+ 74 -351 rmoveto
+ 44 -17 35 -45 -39 -56 -39 -36 -45 vhcurveto
+ 13 -18 rlineto
+ 15 24 34 17 22 hhcurveto
+ 26 9 -33 -52 hvcurveto
+ -6 -221 rlineto
+ -99 37 -13 43 55 52 52 45 34 vhcurveto
+ 11 vlineto
+ -13 10 rlineto
+ -24 -27 -27 -21 -38 hhcurveto
+ -35 -9 43 74 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="idieresis">
+ -287 272 607 rmoveto
+ 30 -20 28 -34 -29 -35 -22 -34 -32 26 -26 32 32 26 23 33 2 vhcurveto
+ -202 hmoveto
+ 30 -20 28 -34 -29 -35 -22 -34 -32 26 -26 32 32 26 23 33 2 vhcurveto
+ 122 -215 rmoveto
+ 44 -17 35 -45 -39 -56 -39 -36 -45 vhcurveto
+ 13 -18 rlineto
+ 15 24 34 17 22 hhcurveto
+ 26 9 -33 -52 hvcurveto
+ -6 -221 rlineto
+ -99 37 -13 43 55 52 52 45 34 vhcurveto
+ 11 vlineto
+ -13 10 rlineto
+ -24 -27 -27 -21 -38 hhcurveto
+ -35 -9 43 74 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="igrave">
+ -287 -70 708 rmoveto
+ 162 -154 18 31 -120 157 -13 2 rlineto
+ 215 -352 rmoveto
+ 44 -17 35 -45 -39 -56 -39 -36 -45 vhcurveto
+ 13 -18 rlineto
+ 15 24 34 17 22 hhcurveto
+ 26 9 -33 -52 hvcurveto
+ -6 -221 rlineto
+ -99 37 -13 43 55 52 52 45 34 vhcurveto
+ 11 vlineto
+ -13 10 rlineto
+ -24 -27 -27 -21 -38 hhcurveto
+ -35 -9 43 74 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="iota">
+ -267 266 108 rmoveto
+ -20 -20 -27 -24 -28 hhcurveto
+ -61 2 86 45 90 2 90 15 89 hvcurveto
+ -11 10 -81 -25 rlineto
+ -347 vlineto
+ -50 29 -61 52 57 55 56 48 38 vhcurveto
+ -13 14 rlineto
+ endchar
+ </CharString>
+ <CharString name="j">
+ -254 159 683 rmoveto
+ -32 -27 -26 -32 -32 23 -28 33 35 26 30 34 32 -28 22 -30 hvcurveto
+ -141 -308 rmoveto
+ 13 25 35 20 16 hhcurveto
+ 36 8 -12 -242 -44 -3 -124 -17 -62 hvcurveto
+ -14 -50 -40 -45 -74 -44 16 -16 rcurveline
+ 90 43 76 60 30 87 rrcurveto
+ 12 35 0 140 20 vvcurveto
+ 37 0 167 -7 43 vhcurveto
+ 33 -3 -10 34 -48 hhcurveto
+ -43 -57 -43 -32 -41 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="jeem-ar">
+ 319 648 -186 rmoveto
+ 4 4 -12 -3 -5 -1 -175 -46 -260 -39 -136 153 -78 88 247 211 55 48 40 35 43 36 32 46 27 38 64 138 -66 27 -64 27 -108 -20 -44 -31 -66 -47 -39 -153 75 -83 rrcurveto
+ -90 -82 -118 -209 30 -141 55 -261 426 67 163 198 rrcurveto
+ -446 594 rmoveto
+ 29 25 136 24 20 -59 -34 -32 -52 -32 -41 -30 -16 36 -27 30 -15 38 rrcurveto
+ 259 -371 rmoveto
+ -71 66 -27 -34 -28 -35 -27 -34 rlinecurve
+ 71 -66 28 34 27 34 27 35 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="jeh-ar">
+ 105 507 531 rmoveto
+ -10 19 -11 16 -14 13 -49 46 -46 -45 -41 -55 -41 -56 -38 -66 -17 -33 -1 -1 rcurveline
+ 1 -44 25 34 94 211 60 -147 rlinecurve
+ 6 -15 5 5 4 5 27 35 26 37 20 41 rrcurveto
+ -59 -259 rmoveto
+ -1 7 -9 1 -3 -8 -16 -35 -23 -28 -30 -20 -64 -43 -79 -27 -81 -25 -236 -73 96 -17 156 -4 101 -3 67 33 45 54 31 37 33 84 13 67 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="k">
+ -29 154 266 rmoveto
+ 413 vlineto
+ 3 7 -160 -23 -5 -4 rlineto
+ -21 vlineto
+ 53 -6 24 -7 9 -31 rrcurveto
+ 7 -27 2 -48 -51 vvcurveto
+ -158 -8 -153 -4 -157 vhcurveto
+ 6 -7 71 20 rlineto
+ 221 vlineto
+ 12 7 rlineto
+ 71 -79 89 -120 0 vvcurveto
+ -38 33 16 -11 30 hhcurveto
+ 53 50 67 32 24 hvcurveto
+ -19 20 rlineto
+ -23 -22 -23 -16 -33 hhcurveto
+ -40 -97 110 75 -59 hvcurveto
+ -3 5 -5 5 6 vvcurveto
+ 5 11 9 7 6 vhcurveto
+ 67 56 71 51 75 44 rrcurveto
+ 11 vlineto
+ -46 29 -24 -14 -11 -11 -78 -71 rlinecurve
+ -134 -123 rlineto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar">
+ 204 488 217 rmoveto
+ -89 -47 -202 -79 -94 74 -89 69 68 72 46 67 48 70 111 66 21 -129 -34 -16 -8 -6 -38 -8 -43 -131 rcurveline
+ 322 115 -101 533 -312 -487 -49 -77 -70 -115 33 -89 72 -192 329 119 98 150 33 50 31 56 -4 61 -30 387 rcurveline
+ -73 -122 28 -369 1 -13 1 -5 -6 -4 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.fina">
+ 147 309 580 rmoveto
+ -7 -9 -1 -2 -8 hvcurveto
+ -49 -9 -64 -66 -78 -121 -25 -38 -24 -46 -24 -52 rrcurveto
+ -15 -31 -7 -31 -28 vvcurveto
+ -19 3 -18 7 -18 vhcurveto
+ -68 25 51 -31 85 hhcurveto
+ 23 26 3 6 25 hvcurveto
+ 99 23 108 69 49 73 12 -175 rcurveline
+ 70 110 -41 620 -74 -122 32 -381 -22 -12 -29 -13 -35 -15 rlinecurve
+ -25 -60 -78 -25 -79 hhcurveto
+ -4 hlineto
+ -36 -29 10 19 -23 hvcurveto
+ -31 24 -16 24 24 vvcurveto
+ 11 2 11 6 11 vhcurveto
+ 19 35 22 34 23 34 24 35 33 26 43 17 rrcurveto
+ 4 9 8 1 7 hhcurveto
+ 28 20 -25 -51 8 hvcurveto
+ -36 -17 -3 -4 -41 -9 -43 -131 rcurveline
+ 80 29 55 47 30 66 rrcurveto
+ 21 47 10 40 36 vvcurveto
+ 56 -24 39 -49 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.fina.jalt">
+ 561 906 233 rmoveto
+ -89 -38 -71 -25 -55 -12 -55 -12 -76 -10 -97 -7 -157 -2 -121 36 -84 73 -32 27 -15 24 2 20 2 20 11 18 18 17 61 58 75 43 90 28 90 28 86 14 82 3 53 113 rcurveline
+ -79 -3 -72 -10 -64 -17 -143 -37 -115 -58 -79 -102 -79 -101 -26 -122 92 -100 64 -69 147 -32 162 4 129 3 121 26 98 42 55 23 44 32 35 40 12 -168 rcurveline
+ 72 110 -17 243 rlineto
+ 6 0 9 -1 12 vhcurveto
+ -20 405 -74 -117 5 -85 14 -260 1 -90 rlinecurve
+ -468 -30 rmoveto
+ 29 35 5 9 19 hvcurveto
+ 25 12 22 28 22 31 21 29 20 24 -2 14 -3 39 -54 -12 -20 34 21 18 17 6 29 8 6 11 19 22 7 13 rrcurveto
+ 13 8 9 17 -11 hhcurveto
+ -10 -27 -15 -8 -11 hvcurveto
+ -68 -47 -68 -89 19 -34 8 -14 21 -14 26 -6 13 -3 8 -8 -18 -9 -36 -18 -60 -21 -33 -21 rrcurveto
+ -12 -19 14 -2 22 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.init">
+ 134 244 182 rmoveto
+ -32 -16 -37 -11 -41 -8 -41 -8 -37 -6 -34 -5 -22 -128 rcurveline
+ 70 17 64 19 57 23 57 23 38 54 21 85 rrcurveto
+ 7 24 5 33 33 vvcurveto
+ 18 vlineto
+ -16 256 106 62 106 62 106 62 rlinecurve
+ 33 117 rlineto
+ 4 vlineto
+ 4 -1 1 -3 -2 -2 0 -2 -3 vhcurveto
+ -19 -11 -241 -141 -63 -37 -32 -117 rcurveline
+ -61 -95 rlineto
+ 6 -97 11 -113 -102 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.init.ain">
+ 221 356 181 rmoveto
+ -13 -6 -22 -8 -32 -10 -62 -19 -165 -42 -23 80 -13 -35 -13 -42 -13 -50 1 -29 27 -15 28 -3 78 -8 79 17 78 41 67 36 43 56 19 76 8 29 5 40 -2 39 -16 256 rcurveline
+ 80 46 -1 1 80 46 53 31 54 32 53 31 32 116 rcurveline
+ 1 9 -4 3 -8 -5 -108 -63 -107 -63 -108 -63 -32 -117 rcurveline
+ -60 -95 rlineto
+ 6 -98 10 -112 -102 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.init.alef">
+ 202 226 450 rmoveto
+ 109 64 88 47 109 64 33 117 rcurveline
+ 1 9 -4 3 -8 -5 -110 -64 -86 -48 -110 -64 -33 -116 rcurveline
+ -2 -9 4 -3 9 5 rrcurveto
+ -35 -388 rmoveto
+ 41 29 35 48 29 64 rrcurveto
+ 16 35 8 36 37 vvcurveto
+ 37 -14 35 -30 31 vhcurveto
+ -68 68 -79 -82 -37 -50 -17 -22 -13 -20 -10 -15 3 -45 rcurveline
+ 34 53 40 14 45 -25 45 -25 21 -39 -3 -54 -52 -24 -58 -14 -65 -6 -62 -122 rcurveline
+ -5 3 -1 5 vhcurveto
+ 1 3 3 0 3 hhcurveto
+ 71 8 61 23 42 30 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.init.alef.loop">
+ -31 35 274 rmoveto
+ 2 -39 48 71 46 21 43 -30 rlinecurve
+ 43 -30 20 -41 -3 -54 -52 -24 -58 -14 -65 -6 -62 -122 rcurveline
+ -5 3 -1 5 vhcurveto
+ 6 1 6 1 5 1 148 22 68 56 55 122 rrcurveto
+ 16 35 8 36 37 vvcurveto
+ 37 -14 35 -30 31 vhcurveto
+ -23 23 -25 10 -25 -5 21 31 19 30 18 31 33 57 43 88 -23 65 -23 64 -67 36 -81 -38 -37 -18 -32 -29 -26 -42 -26 -42 -15 -28 -4 -15 -1 -4 2 -3 5 -4 rrcurveto
+ 5 -4 6 3 7 11 12 16 25 18 40 19 76 36 56 -23 3 -78 1 -38 -6 -31 -14 -25 -14 -24 -22 -44 -23 -14 -29 -19 -27 -26 -25 -35 -25 -35 -14 -30 -3 -24 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.init.dal">
+ 155 224 49 rmoveto
+ 102 54 46 110 -7 112 -16 257 rcurveline
+ 106 62 107 62 106 62 32 117 rcurveline
+ 1 6 -6 3 -5 -2 -108 -63 -108 -63 -108 -63 -32 -117 rcurveline
+ -60 -96 rlineto
+ 7 -100 10 -110 -102 vvcurveto
+ -39 -17 -226 -90 22 127 rrcurveto
+ 3 -3 1 -3 -4 vhcurveto
+ -40 -58 -30 -102 65 -32 48 -23 109 50 30 16 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.init.feh">
+ 306 441 183 rmoveto
+ -66 -29 -96 -17 -85 -6 -65 -5 -77 3 -13 47 -13 -35 -13 -42 -13 -50 1 -29 27 -15 28 -2 46 -5 54 2 62 8 148 19 106 64 32 130 8 30 6 39 -2 40 -16 256 rcurveline
+ 80 46 -1 1 80 46 53 31 53 31 53 31 33 117 rcurveline
+ 1 9 -4 2 -8 -4 -108 -63 -107 -63 -108 -63 -33 -117 rcurveline
+ -60 -95 rlineto
+ 6 -98 11 -112 -102 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.init.hah">
+ -35 101 88 rmoveto
+ -1 vlineto
+ -1 -3 -15 -8 -29 -13 -29 -13 -16 -7 -4 -1 -7 -17 rcurveline
+ 98 -25 27 35 28 40 12 48 rlinecurve
+ 4 14 2 16 3 19 rrcurveto
+ 1 12 1 13 13 vvcurveto
+ 21 vlineto
+ -16 257 106 63 106 61 107 62 rlinecurve
+ 32 117 rlineto
+ 3 vlineto
+ 4 -1 1 -3 -2 -2 -1 -1 -3 vhcurveto
+ -107 -63 -109 -63 -107 -63 -32 -116 rcurveline
+ -61 -96 rlineto
+ 6 -96 11 -110 -102 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.init.heh">
+ 212 346 234 rmoveto
+ -82 -35 -57 -46 -34 -55 -34 -55 -37 -68 -39 -78 -9 -18 rcurveline
+ 4 30 rlineto
+ 1 vlineto
+ -53 -65 rlineto
+ -1 vlineto
+ -3 -38 -3 -41 1 -30 6 -17 rlinecurve
+ 6 -17 13 11 19 40 26 52 22 55 23 54 22 52 29 48 35 43 13 15 19 13 25 11 78 33 52 58 22 86 8 30 5 39 -2 39 -16 257 rcurveline
+ 106 62 107 63 106 62 32 116 rcurveline
+ 2 9 -4 3 -9 -5 -108 -63 -107 -63 -108 -63 -32 -117 rcurveline
+ -60 -96 rlineto
+ 6 -97 10 -112 -102 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.init.meem">
+ -273 17 hmoveto
+ 74 100 1 12 0 12 -1 14 rlinecurve
+ -16 257 80 46 -1 1 80 46 rlinecurve
+ 53 31 54 31 53 31 32 117 rcurveline
+ 1 9 -3 2 -8 -4 -107 -63 -110 -63 -107 -63 -32 -117 rcurveline
+ -60 -96 6 -96 10 -108 1 -99 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.init.ragaa">
+ 314 50 4 rmoveto
+ 26 18 25 16 26 16 40 24 38 23 33 33 10 9 6 8 2 4 38 57 27 61 -6 89 -16 257 rcurveline
+ 106 62 107 62 105 62 33 117 rcurveline
+ 2 9 -4 3 -9 -5 -107 -63 -109 -63 -107 -63 -33 -116 rcurveline
+ -60 -96 rlineto
+ 7 -96 10 -111 -102 vvcurveto
+ -2 -11 -6 -21 -11 vhcurveto
+ -48 -25 -43 -17 -39 -31 -32 -25 -30 -29 -16 -41 46 -33 rcurveline
+ 0 4 4 1 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.init.reh">
+ 149 284 226 rmoveto
+ -2 -1 -2 0 -2 -1 -7 -3 -8 -2 -8 -2 -59 -13 -67 -19 -28 -10 -28 -10 -21 -17 -14 -23 -9 -16 -8 -22 -7 -32 rrcurveto
+ -1 vlineto
+ -15 -18 -4 -16 9 -13 9 -13 10 2 11 17 64 64 127 2 60 67 rrcurveto
+ 0 2 3 7 8 vhcurveto
+ 1 vlineto
+ 13 14 10 17 9 19 21 47 15 50 -4 68 -16 256 rcurveline
+ 106 62 107 63 106 62 32 117 rcurveline
+ 2 9 -4 2 -9 -5 -107 -62 -109 -65 -107 -62 -32 -116 rcurveline
+ -60 -96 6 -98 10 -111 1 -103 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.init.sad">
+ 370 507 193 rmoveto
+ -13 -12 -37 -15 -59 -21 rrcurveto
+ -22 -64 -60 -14 -65 hhcurveto
+ -51 -40 14 26 -28 hvcurveto
+ -13 12 -6 17 22 vvcurveto
+ 31 13 41 26 51 vhcurveto
+ 1 2 0 1 1 vvcurveto
+ 1 -1 1 -1 1 vhcurveto
+ -3 hlineto
+ -2 -1 0 -2 -1 hvcurveto
+ -10 -15 -15 -24 -20 -34 -20 -34 -14 -34 -11 -36 rrcurveto
+ -7 -22 -4 -21 -20 vvcurveto
+ -55 21 -25 57 -8 vhcurveto
+ -3 23 24 -2 26 hhcurveto
+ 83 68 13 25 66 hvcurveto
+ 92 35 84 64 25 100 rrcurveto
+ 7 24 5 34 33 vvcurveto
+ 17 vlineto
+ -17 257 106 62 107 62 106 62 rlinecurve
+ 33 117 rlineto
+ 3 vlineto
+ 4 -2 1 -3 -2 -1 0 -1 -3 vhcurveto
+ -108 -64 -107 -63 -108 -63 -33 -116 rcurveline
+ -60 -96 rlineto
+ 6 -98 11 -111 -103 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.init.yeh">
+ 147 101 88 rmoveto
+ -1 vlineto
+ -1 -3 -15 -8 -29 -13 -29 -13 -16 -7 -4 -1 -7 -17 rcurveline
+ 98 -25 27 35 28 40 12 48 rlinecurve
+ 4 14 2 16 3 19 rrcurveto
+ 1 12 1 13 13 vvcurveto
+ 21 vlineto
+ -16 257 106 63 106 61 107 62 rlinecurve
+ 32 117 rlineto
+ 3 vlineto
+ 4 -1 1 -3 -2 -2 -1 -1 -3 vhcurveto
+ -107 -63 -109 -63 -107 -63 -32 -116 rcurveline
+ -61 -96 rlineto
+ 6 -96 11 -110 -102 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.jalt">
+ 666 906 232 rmoveto
+ -89 -38 -71 -25 -55 -12 -55 -12 -76 -10 -97 -7 -158 -2 -120 35 -84 73 -32 27 -15 24 2 20 2 20 11 18 18 18 61 58 75 43 90 28 90 28 86 14 82 3 53 112 rcurveline
+ -79 -3 -72 -9 -64 -17 -143 -37 -114 -58 -80 -102 -79 -101 -26 -123 92 -100 43 -47 76 -30 109 -14 47 -6 58 -1 71 3 156 6 142 43 101 68 56 38 35 51 16 63 rrcurveto
+ 8 29 5 40 -2 39 -20 405 rcurveline
+ -74 -117 5 -85 14 -261 1 -89 rlinecurve
+ -468 -29 rmoveto
+ 29 35 5 9 19 hvcurveto
+ 25 12 22 28 22 31 21 29 20 24 -2 14 -3 39 -54 -12 -20 34 21 18 17 6 29 8 6 11 19 22 7 13 rrcurveto
+ 13 8 9 17 -11 hhcurveto
+ -10 -27 -15 -8 -11 hvcurveto
+ -68 -47 -68 -89 19 -34 8 -14 21 -14 26 -6 13 -3 8 -8 -18 -9 -36 -18 -60 -21 -33 -21 rrcurveto
+ -12 -19 14 -2 22 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.medi">
+ -105 214 501 rmoveto
+ 32 -324 -32 -17 -75 -16 -117 -16 rlinecurve
+ -22 -128 55 12 47 11 38 10 rlinecurve
+ 38 10 37 30 35 52 9 -125 rcurveline
+ 71 113 -38 461 105 61 84 46 105 61 rlinecurve
+ 33 117 rlineto
+ 1 1 2 1 vvcurveto
+ 3 -1 2 -3 -2 -3 -1 -2 -3 vhcurveto
+ -110 -64 -86 -47 -110 -64 -23 -81 rcurveline
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.medi.ain">
+ 76 396 501 rmoveto
+ 31 -324 -31 -16 -45 -13 -60 -9 rlinecurve
+ -60 -9 -49 -5 -35 1 -49 1 -48 9 -11 37 -13 -34 -13 -42 -13 -51 1 -29 27 -14 28 -3 45 -4 57 3 66 11 46 8 38 9 31 12 31 12 31 29 31 45 9 -125 rcurveline
+ 71 109 -38 465 105 61 85 45 105 62 rlinecurve
+ 32 117 1 8 -4 2 -8 -4 rlinecurve
+ -110 -64 -86 -47 -110 -64 -23 -82 rcurveline
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.medi.dal">
+ -78 241 501 rmoveto
+ 31 -324 -40 -20 -213 -81 31 132 rlinecurve
+ 1 0 1 -2 -2 vhcurveto
+ -43 -56 -35 -111 68 -33 63 -31 136 90 39 57 10 -124 rcurveline
+ 72 106 -39 468 103 60 88 47 104 61 rlinecurve
+ 32 117 1 6 -7 3 -5 -2 rlinecurve
+ -108 -63 -90 -50 -108 -63 -23 -81 rcurveline
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.medi.feh">
+ 99 419 511 rmoveto
+ 31 -324 -30 -15 -43 -13 -54 -10 rlinecurve
+ -54 -10 -43 -6 -32 -2 -65 -5 -77 4 -13 47 -13 -35 -13 -43 -13 -50 1 -29 27 -14 28 -3 65 -7 74 7 80 18 80 18 60 38 39 57 10 -125 rcurveline
+ 69 138 -36 436 105 61 84 46 105 61 rlinecurve
+ 33 117 1 9 -4 3 -8 -5 rlinecurve
+ -110 -64 -87 -48 -110 -64 -22 -81 rcurveline
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.medi.hah">
+ -6 327 358 rmoveto
+ 11 -129 2 -18 19 -211 73 102 rcurveline
+ -40 472 105 61 84 46 105 61 rlinecurve
+ 33 117 2 9 -4 2 -9 -5 rlinecurve
+ -110 -64 -87 -47 -110 -64 -22 -81 rcurveline
+ -65 -108 5 -54 -50 -17 -58 -27 -67 -39 rlinecurve
+ -67 -39 -48 -74 -29 -109 23 -5 rcurveline
+ 71 99 112 81 121 41 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.medi.heh">
+ 118 438 500 rmoveto
+ 15 -167 -48 -12 -49 -26 -50 -42 rlinecurve
+ -50 -42 -37 -35 -23 -31 -52 -67 -42 -79 -39 -78 -1 -3 rcurveline
+ -8 -15 4 29 rlineto
+ 2 vlineto
+ -53 -66 -3 -39 -3 -41 1 -30 6 -17 rlinecurve
+ 6 -17 13 12 19 40 29 58 23 55 15 36 15 36 27 42 40 47 17 21 18 18 18 19 45 47 20 9 64 45 34 24 28 10 24 -6 22 -237 rcurveline
+ 71 111 -38 462 104 61 85 47 105 61 rlinecurve
+ 32 116 1 9 -3 3 -8 -5 rlinecurve
+ -110 -64 -87 -48 -110 -64 -22 -81 rcurveline
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.medi.kaf">
+ -22 328 190 rmoveto
+ -29 -14 -101 -21 -174 -30 -24 -126 rcurveline
+ 129 26 76 16 26 7 33 9 33 29 35 49 1 -11 rcurveline
+ 1 vlineto
+ 10 -125 73 97 -30 416 105 61 86 46 105 62 rlinecurve
+ 32 117 1 9 -3 3 -8 -5 rlinecurve
+ -110 -64 -87 -48 -110 -64 -25 -92 rcurveline
+ -62 -103 1 -9 rlineto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.medi.meem">
+ -44 276 501 rmoveto
+ 4 -52 -69 -35 -58 -35 -46 -37 rlinecurve
+ -46 -37 -35 -57 -24 -77 rrcurveto
+ -11 -3 0 -6 5 hhcurveto
+ 5 4 2 5 3 hvcurveto
+ 38 60 35 39 32 19 32 19 57 24 80 27 31 -349 rcurveline
+ 72 108 -39 466 104 61 86 46 104 61 rlinecurve
+ 32 117 2 9 -3 2 -9 -5 rlinecurve
+ -110 -64 -87 -47 -110 -64 -22 -81 rcurveline
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.medi.ragaa">
+ -114 50 6 rmoveto
+ 21 15 26 16 30 19 40 24 38 23 32 33 3 3 4 3 4 5 2 -30 rcurveline
+ 69 138 -21 366 107 62 106 61 106 63 rlinecurve
+ 32 117 2 9 -4 2 -8 -5 rlinecurve
+ -107 -63 -109 -64 -108 -62 -32 -116 rcurveline
+ -60 -96 17 -308 rlineto
+ -1 vlineto
+ -1 -3 -10 -5 -21 -10 -28 -16 -44 -17 -25 -16 -43 -28 -48 -40 -20 -51 46 -34 rcurveline
+ 1 2 1 2 2 2 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.medi.reh">
+ -52 11 76 rmoveto
+ 6 5 5 9 7 hvcurveto
+ 12 12 25 10 37 10 rrcurveto
+ 1 vlineto
+ 42 9 39 11 36 14 32 12 23 22 17 33 20 -224 rcurveline
+ 71 106 -38 468 105 61 84 46 105 61 rlinecurve
+ 33 117 rlineto
+ 3 vlineto
+ 4 -1 2 -3 -2 -2 0 -2 -3 vhcurveto
+ -110 -64 -87 -48 -110 -64 -22 -81 rcurveline
+ -65 -108 19 -213 -86 -19 -57 -13 -28 -9 rlinecurve
+ -14 -5 -15 -9 -14 -11 -21 -17 -27 -39 -15 -34 rrcurveto
+ -1 vlineto
+ -10 -12 -5 -10 -9 vvcurveto
+ -10 8 -14 9 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.medi.sad">
+ 210 106 382 rmoveto
+ -2 -1 -1 -2 -1 hvcurveto
+ -10 -15 -15 -23 -20 -34 -20 -34 -14 -34 -11 -36 rrcurveto
+ -7 -22 -4 -21 -20 vvcurveto
+ -56 21 -25 57 -8 vhcurveto
+ -3 21 24 -2 26 hhcurveto
+ 15 16 1 1 17 hvcurveto
+ 46 3 46 7 46 11 88 21 89 39 46 61 15 -190 rcurveline
+ 72 109 -37 465 295 168 32 117 rlineto
+ 1 1 1 1 vvcurveto
+ 4 -2 1 -3 -2 -2 -1 -1 -3 vhcurveto
+ -110 -64 -86 -47 -110 -64 -23 -81 rcurveline
+ -64 -108 23 -252 -29 -14 -47 -16 -65 -18 rlinecurve
+ -18 -65 -62 -10 -58 hhcurveto
+ -1 hlineto
+ -57 -44 14 28 -30 hvcurveto
+ -13 12 -7 17 22 vvcurveto
+ 28 11 37 22 44 vhcurveto
+ 1 2 0 0 1 vvcurveto
+ 3 -3 1 -2 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.medi.yeh">
+ -44 276 501 rmoveto
+ 4 -52 -69 -35 -58 -35 -46 -37 rlinecurve
+ -46 -37 -35 -57 -24 -77 rrcurveto
+ -11 -3 0 -6 5 hhcurveto
+ 5 4 2 5 3 hvcurveto
+ 38 60 35 39 32 19 32 19 57 24 80 27 31 -349 rcurveline
+ 72 105 -39 469 104 61 86 46 104 61 rlinecurve
+ 32 117 2 9 -3 2 -9 -5 rlinecurve
+ -110 -64 -87 -47 -110 -64 -22 -81 rcurveline
+ endchar
+ </CharString>
+ <CharString name="kafDotabove-ar">
+ 204 387 782 rmoveto
+ -71 66 -27 -34 -28 -35 -27 -34 rlinecurve
+ 71 -66 28 34 27 34 27 35 rlinecurve
+ 101 -565 rmoveto
+ -89 -47 -202 -79 -94 74 -89 69 68 72 46 67 48 70 111 66 21 -129 -34 -16 -8 -6 -38 -8 -43 -131 rcurveline
+ 322 115 -101 533 -312 -487 -49 -77 -70 -115 33 -89 72 -192 329 119 98 150 33 50 31 56 -4 61 -30 387 rcurveline
+ -73 -122 28 -369 1 -13 1 -5 -6 -4 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="kappa">
+ -86 399 472 rmoveto
+ -94 -60 -88 -68 -76 -82 -6 2 rcurveline
+ 1 31 4 106 2 58 -5 6 rcurveline
+ -79 -26 rlineto
+ 3 -83 1 -82 -83 vvcurveto
+ -63 0 -64 -1 -63 vhcurveto
+ 16 -5 63 26 rlineto
+ -3 63 -3 66 61 vvcurveto
+ 9 4 76 -70 90 -76 85 -72 rlinecurve
+ 67 36 1 14 -89 64 -86 68 -80 75 rlinecurve
+ -4 11 rlineto
+ 2 0 2 1 2 vhcurveto
+ 43 51 113 65 89 38 1 15 rcurveline
+ endchar
+ </CharString>
+ <CharString name="kashida-ar">
+ endchar
+ </CharString>
+ <CharString name="kasra-ar">
+ 79 76 rmoveto
+ 29 46 -67 -24 -76 -26 -64 -26 rlinecurve
+ -33 -52 61 30 81 28 69 24 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="kasratan-ar">
+ 79 75 rmoveto
+ 29 46 -67 -24 -76 -26 -64 -26 rlinecurve
+ -33 -52 61 30 81 28 69 24 rlinecurve
+ -65 vmoveto
+ 29 46 -67 -24 -76 -26 -64 -26 rlinecurve
+ -33 -52 61 30 81 28 69 24 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="keheh-ar">
+ 580 487 148 rmoveto
+ 40 48 31 79 0 vvcurveto
+ 8 28 0 14 -3 42 -16 257 rcurveline
+ 106 62 107 63 106 62 33 117 rcurveline
+ 1 6 -7 2 -5 -2 -108 -63 -108 -63 -108 -63 -32 -117 rcurveline
+ -60 -95 rlineto
+ 7 -100 12 -101 -102 vvcurveto
+ -182 -92 -155 -29 -72 84 -47 54 30 58 46 83 -11 -3 -11 -8 -5 -8 -75 -115 -15 -81 11 -52 13 -59 43 -44 81 -8 130 -13 145 75 70 84 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="keheh-ar.fina">
+ 147 581 138 rmoveto
+ -11 158 -10 162 -10 158 106 62 107 62 106 62 33 117 rcurveline
+ 1 6 -7 2 -5 -2 -108 -63 -108 -63 -108 -63 -32 -116 rcurveline
+ -60 -96 7 -100 6 -96 6 -102 rlinecurve
+ -52 -33 -386 -170 6 230 1 53 27 42 20 36 -11 -3 -7 -5 -5 -8 -129 -198 39 -86 52 -46 114 -101 257 119 80 118 11 -174 rcurveline
+ endchar
+ </CharString>
+ <CharString name="keheh-ar.fina.jalt">
+ 562 905 292 rmoveto
+ -20 1 -21 -18 vvcurveto
+ -89 -38 -71 -25 -55 -12 -55 -12 -76 -10 -97 -7 -157 -2 -121 36 -84 73 -32 27 -15 24 2 20 2 20 11 18 18 17 61 58 75 43 90 28 90 28 86 14 82 3 53 113 rcurveline
+ -79 -3 -72 -10 -64 -17 -143 -37 -115 -58 -79 -102 -79 -101 -26 -122 92 -100 64 -69 147 -32 162 4 129 3 121 26 98 42 55 23 44 31 35 40 11 -167 rcurveline
+ 73 110 -17 241 rlineto
+ 10 0 10 -1 8 vhcurveto
+ -15 257 106 62 106 62 106 62 rlinecurve
+ 33 116 1 9 -4 3 -8 -5 rlinecurve
+ -108 -63 -107 -63 -108 -63 -33 -116 rcurveline
+ -60 -96 5 -82 8 -86 3 -84 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="keheh-ar.jalt">
+ 1019 905 290 rmoveto
+ -20 1 -19 -19 vvcurveto
+ -89 -38 -71 -25 -55 -12 -55 -12 -76 -10 -97 -7 -158 -2 -120 35 -84 73 -32 27 -15 24 2 20 2 20 11 18 18 18 61 58 75 43 90 28 90 28 86 14 82 3 53 112 rcurveline
+ -79 -3 -72 -9 -64 -17 -143 -37 -114 -58 -80 -102 -79 -101 -26 -123 92 -100 43 -47 76 -30 109 -14 47 -6 58 -1 71 3 156 6 142 43 101 68 56 38 35 51 16 63 rrcurveto
+ 7 25 4 26 1 27 rrcurveto
+ 10 0 10 -1 9 vhcurveto
+ -15 256 106 62 106 63 106 62 rlinecurve
+ 33 117 1 8 -4 2 -8 -4 rlinecurve
+ -108 -64 -107 -62 -108 -63 -33 -116 rcurveline
+ -60 -96 5 -81 8 -89 3 -83 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="kehehDotabove-ar">
+ 580 773 927 rmoveto
+ -71 66 -27 -34 -28 -35 -27 -34 rlinecurve
+ 71 -66 28 34 27 34 27 35 rlinecurve
+ -286 -779 rmoveto
+ 40 48 31 79 0 vvcurveto
+ 8 28 0 14 -3 42 -16 257 rcurveline
+ 106 62 107 63 106 62 33 117 rcurveline
+ 1 6 -7 2 -5 -2 -108 -63 -108 -63 -108 -63 -32 -117 rcurveline
+ -60 -95 rlineto
+ 7 -100 12 -101 -102 vvcurveto
+ -182 -92 -155 -29 -72 84 -47 54 30 58 46 83 -11 -3 -11 -8 -5 -8 -75 -115 -15 -81 11 -52 13 -59 43 -44 81 -8 130 -13 145 75 70 84 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="khah-ar">
+ 319 387 752 rmoveto
+ -71 66 -27 -34 -28 -35 -27 -34 rlinecurve
+ 71 -66 28 34 27 34 27 35 rlinecurve
+ 261 -938 rmoveto
+ 4 4 -12 -3 -5 -1 -175 -46 -260 -39 -136 153 -78 88 247 211 55 48 40 35 43 36 32 46 27 38 64 138 -66 27 -64 27 -108 -20 -44 -31 -66 -47 -39 -153 75 -83 rrcurveto
+ -90 -82 -118 -209 30 -141 55 -261 426 67 163 198 rrcurveto
+ -446 594 rmoveto
+ 29 25 136 24 20 -59 -34 -32 -52 -32 -41 -30 -16 36 -27 30 -15 38 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="l">
+ -244 289 112 rmoveto
+ -22 -25 -28 -25 -33 hhcurveto
+ -60 4 12 91 99 vvcurveto
+ 140 10 140 4 140 vhcurveto
+ -6 7 -165 -20 -6 -5 rlineto
+ -23 vlineto
+ 32 -2 48 3 7 -31 rrcurveto
+ 5 -24 0 -43 -33 vvcurveto
+ -7 -378 rlineto
+ -115 31 -26 51 66 52 58 53 34 vhcurveto
+ -11 12 rlineto
+ endchar
+ </CharString>
+ <CharString name="lam-ar">
+ 81 328 666 rmoveto
+ 28 -443 -64 -54 -95 -40 -111 20 rlinecurve
+ -107 46 88 134 31 69 9 24 -12 3 -8 -16 -256 -466 372 -28 146 211 rrcurveto
+ 49 71 30 84 85 vvcurveto
+ 0 -21 340 -5 78 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.fina">
+ 64 328 666 rmoveto
+ 28 -443 -64 -54 -95 -40 -111 20 rlinecurve
+ -107 46 88 134 31 69 9 24 -12 3 -8 -16 -256 -466 372 -28 146 211 rrcurveto
+ 49 71 30 84 85 vvcurveto
+ 0 -21 340 -5 78 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.fina.jalt">
+ 666 906 232 rmoveto
+ -89 -38 -71 -25 -55 -12 -55 -12 -76 -10 -97 -7 -158 -2 -120 35 -84 73 -32 27 -15 24 2 20 2 20 11 18 18 18 61 58 75 43 90 28 90 28 86 14 82 3 53 112 rcurveline
+ -79 -3 -72 -9 -64 -17 -143 -37 -114 -58 -80 -102 -79 -101 -26 -123 92 -100 43 -47 76 -30 109 -14 47 -6 58 -1 71 3 156 6 142 43 101 68 56 38 35 51 16 63 rrcurveto
+ 8 29 5 40 -2 39 -20 405 rcurveline
+ -74 -117 5 -85 14 -261 1 -89 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="lam-ar.init">
+ -31 243 182 rmoveto
+ -30 -13 -30 -10 -29 -7 -29 -7 -44 -7 -58 -9 -22 -125 rcurveline
+ -1 -4 94 23 59 18 23 12 rlinecurve
+ 68 36 43 56 19 76 8 29 5 40 -2 39 -18 333 rcurveline
+ -74 -118 8 -146 9 -83 1 -133 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="lam-ar.init.ain">
+ 90 356 181 rmoveto
+ -13 -6 -22 -8 -32 -10 -63 -19 -165 -40 -22 78 -13 -35 -13 -43 -13 -50 1 -29 27 -15 28 -2 78 -8 79 17 78 41 67 35 42 57 19 76 9 35 5 36 -2 37 -19 338 rcurveline
+ -74 -118 rlineto
+ 6 -92 12 -178 -97 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.init.alef">
+ 310 627 600 rmoveto
+ -18 -42 -21 -38 -19 -41 10 -56 9 -61 8 -58 rrcurveto
+ -4 -5 -6 -9 -8 vhcurveto
+ -29 -25 -33 -22 -35 -19 -43 -23 -43 -18 -45 -22 -215 -94 rcurveline
+ -43 -17 -50 -17 -41 -19 rrcurveto
+ -3 -3 -2 -2 -2 vvcurveto
+ -2 3 -1 7 vhcurveto
+ 13 15 2 6 hhcurveto
+ 117 2 119 5 86 33 157 59 129 142 6 202 -7 55 -12 50 -12 50 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.init.dal">
+ -13 321 205 rmoveto
+ 8 28 5 38 -2 42 -17 348 rcurveline
+ -74 -118 rlineto
+ 7 -100 10 -175 -102 vvcurveto
+ -45 -19 -76 -27 -53 13 rrcurveto
+ -23 6 -12 26 27 vvcurveto
+ -1 5 -5 3 -6 -8 -38 -59 -24 -95 63 -31 45 -22 72 33 36 19 66 35 45 55 19 78 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.init.feh">
+ 198 521 230 rmoveto
+ 10 35 4 37 -2 39 -22 323 rcurveline
+ -75 -121 4 -68 4 22 4 -83 rlinecurve
+ 3 -70 5 -88 -66 vvcurveto
+ -67 -29 -102 -20 -87 -6 -67 -5 -78 4 -14 48 -14 -36 -14 -44 -13 -52 1 -30 28 -14 29 -3 47 -5 55 2 64 8 153 20 110 67 34 135 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.init.hah">
+ -188 91 77 rmoveto
+ -22 -13 -37 -14 -25 -8 -7 -17 rcurveline
+ 98 -25 27 36 19 38 10 40 rlinecurve
+ 9 35 5 36 -2 37 -17 290 rcurveline
+ -74 -117 6 -97 9 -119 1 -102 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="lam-ar.init.heh">
+ 79 346 234 rmoveto
+ -82 -35 -57 -46 -34 -55 -34 -55 -37 -68 -39 -78 -9 -18 rcurveline
+ 4 30 rlineto
+ 1 vlineto
+ -53 -65 rlineto
+ -1 vlineto
+ -3 -38 -3 -41 1 -30 6 -17 rlinecurve
+ 6 -17 13 11 19 40 26 52 22 55 23 54 22 52 29 48 35 43 13 15 19 13 25 11 78 33 52 58 22 86 8 30 5 39 -2 39 -15 288 rcurveline
+ -25 -41 -26 -41 -25 -41 rrcurveto
+ 6 -97 10 -112 -102 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.init.kaf">
+ 7 280 188 rmoveto
+ -30 -13 -29 -9 -29 -7 -29 -7 -61 -11 -92 -16 -10 -125 rcurveline
+ 119 28 72 20 23 12 68 36 42 56 19 76 8 29 5 39 -2 39 -12 212 rcurveline
+ -73 -108 5 -79 5 -90 1 -82 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="lam-ar.init.meem">
+ -230 21 hmoveto
+ 75 100 1 17 0 12 -1 9 rlinecurve
+ -21 337 -75 -121 rlineto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.init.ragaa">
+ 314 267 232 rmoveto
+ 0 0 0 -44 -22 vhcurveto
+ -29 -15 -25 -12 -18 -9 -28 -13 -30 -19 -30 -26 -31 -27 -21 -28 -11 -29 45 -33 rcurveline
+ 1 1 3 3 1 1 18 12 23 15 29 19 47 28 61 32 35 37 11 12 7 7 1 3 16 24 25 44 7 32 10 35 4 36 -2 37 -21 405 rcurveline
+ -74 -117 rlineto
+ 6 -84 14 -258 -91 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.init.reh">
+ 14 285 227 rmoveto
+ -8 -4 -9 -3 -9 -2 -58 -14 -71 -19 -29 -10 -28 -10 -21 -17 -14 -23 -9 -16 -8 -22 -7 -32 rrcurveto
+ -1 vlineto
+ -15 -18 -4 -16 9 -13 9 -13 10 2 11 17 18 18 26 15 29 13 37 16 40 10 36 16 67 30 43 61 18 73 8 29 5 41 -2 39 -18 281 rcurveline
+ -73 -116 6 -98 10 -111 1 -103 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="lam-ar.init.sad">
+ 248 507 199 rmoveto
+ -13 -12 -37 -16 -59 -21 -96 -34 -141 -28 -71 66 -31 29 7 58 44 88 4 7 -9 1 -3 -4 -10 -15 -15 -23 -20 -34 -20 -34 -15 -34 -11 -36 -11 -36 -2 -33 7 -29 rrcurveto
+ 7 -29 24 -19 43 -6 102 -15 109 19 79 30 92 35 84 63 25 100 9 35 5 37 -2 37 -21 350 rcurveline
+ -74 -121 rlineto
+ 6 -90 14 -190 -96 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.init.yeh">
+ -181 91 77 rmoveto
+ -22 -13 -37 -14 -25 -8 -7 -17 rcurveline
+ 98 -25 27 36 19 38 10 40 rlinecurve
+ 9 35 5 36 -2 37 -17 290 rcurveline
+ -74 -117 6 -97 9 -119 1 -102 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="lam-ar.jalt">
+ 666 906 232 rmoveto
+ -89 -38 -71 -25 -55 -12 -55 -12 -76 -10 -97 -7 -158 -2 -120 35 -84 73 -32 27 -15 24 2 20 2 20 11 18 18 18 61 58 75 43 90 28 90 28 86 14 82 3 53 112 rcurveline
+ -79 -3 -72 -9 -64 -17 -143 -37 -114 -58 -80 -102 -79 -101 -26 -123 92 -100 43 -47 76 -30 109 -14 47 -6 58 -1 71 3 156 6 142 43 101 68 56 38 35 51 16 63 rrcurveto
+ 8 29 5 40 -2 39 -20 405 rcurveline
+ -74 -117 5 -85 14 -261 1 -89 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="lam-ar.medi">
+ -118 211 482 rmoveto
+ 22 -305 -32 -17 -71 -16 -108 -15 rlinecurve
+ -22 -129 56 14 44 11 34 9 rlinecurve
+ 34 9 34 30 35 52 10 -125 rcurveline
+ 72 106 -34 498 rlineto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.medi.ain">
+ 77 403 486 rmoveto
+ 25 -309 -32 -16 -45 -13 -60 -9 rlinecurve
+ -60 -9 -49 -5 -35 1 -49 1 -48 9 -11 37 -13 -35 -13 -42 -13 -50 1 -30 28 -13 27 -3 65 -7 69 4 73 16 73 16 56 37 40 59 10 -125 rcurveline
+ 71 104 -36 505 rlineto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.medi.alef">
+ 368 764 565 rmoveto
+ -3 -2 0 -1 -2 hvcurveto
+ -33 -17 -30 -35 -16 -33 -28 -57 -24 -48 -20 -41 -20 -41 -36 -36 -54 -30 -37 -21 -42 -20 -41 -18 -22 -10 rcurveline
+ -215 -94 -43 -17 -50 -17 -41 -19 rlinecurve
+ -3 -3 -2 -2 -2 vvcurveto
+ -2 3 -1 7 vhcurveto
+ 13 15 2 6 hhcurveto
+ 117 2 119 5 86 33 78 30 66 47 51 62 32 40 23 39 14 41 14 41 20 41 28 44 rrcurveto
+ 6 4 3 4 3 hhcurveto
+ 6 3 -9 -3 hvcurveto
+ 21 -425 62 93 -15 464 rlineto
+ 6 -7 2 -8 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.medi.dal">
+ -79 250 484 rmoveto
+ 22 -307 -40 -20 -94 -27 -53 13 rlinecurve
+ -27 7 -15 37 8 32 rrcurveto
+ 1 0 0 -1 -1 vhcurveto
+ -44 -55 -37 -114 69 -34 77 -38 124 92 37 55 10 -125 rcurveline
+ 71 104 -33 502 rlineto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.medi.feh">
+ 98 418 576 rmoveto
+ 31 -389 -3 -2 -4 -2 -4 -1 rlinecurve
+ -1 vlineto
+ -32 -14 -42 -11 -50 -9 -50 -9 -40 -5 -30 -2 -65 -5 -77 4 -13 47 -13 -35 -13 -43 -13 -50 1 -29 27 -14 28 -3 62 -6 71 5 76 16 76 16 59 34 42 51 rrcurveto
+ 5 5 5 7 2 3 9 -125 rcurveline
+ 69 138 -40 551 rlineto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.medi.hah">
+ -9 327 358 rmoveto
+ 28 -358 72 107 -43 581 -73 -122 9 -118 -50 -18 -59 -27 -67 -39 rlinecurve
+ -67 -39 -48 -74 -29 -109 23 -5 rcurveline
+ 71 99 111 81 122 41 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.medi.heh">
+ 118 438 500 rmoveto
+ 15 -167 -48 -12 -49 -26 -50 -42 rlinecurve
+ -50 -42 -37 -35 -23 -31 -52 -67 -42 -79 -39 -78 -1 -3 rcurveline
+ -8 -15 4 29 rlineto
+ 2 vlineto
+ -53 -66 -3 -39 -3 -41 1 -30 6 -17 rlinecurve
+ 6 -17 13 12 19 40 29 58 23 55 15 36 15 36 27 42 40 47 17 21 18 18 18 19 45 47 20 9 64 45 34 24 28 10 24 -6 22 -237 rcurveline
+ 71 109 -41 516 rlineto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.medi.kaf">
+ -59 377 109 rmoveto
+ -31 455 -73 -123 rlineto
+ -8 vlineto
+ 19 -249 -32 -17 -90 -18 -148 -20 rlinecurve
+ -22 -129 95 18 64 14 34 9 rlinecurve
+ 34 9 34 29 35 52 10 -131 rcurveline
+ endchar
+ </CharString>
+ <CharString name="lam-ar.medi.meem">
+ -44 271 580 rmoveto
+ 9 -131 -69 -35 -58 -35 -46 -37 rlinecurve
+ -46 -37 -35 -57 -24 -77 rrcurveto
+ -11 -3 0 -6 5 hhcurveto
+ 5 4 2 5 3 hvcurveto
+ 38 60 35 39 32 19 32 19 57 24 80 27 31 -349 rcurveline
+ 73 101 -50 600 rlineto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.medi.ragaa">
+ -82 51 6 rmoveto
+ 18 12 23 15 29 19 55 32 67 35 36 48 4 -50 rcurveline
+ 69 138 -31 529 -73 -117 27 -432 rlineto
+ 0 0 0 -48 -23 vhcurveto
+ -71 -34 -37 -13 -56 -48 -31 -27 -21 -28 -11 -28 46 -34 rcurveline
+ 1 1 3 4 1 1 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.medi.reh">
+ -52 11 76 rmoveto
+ 6 5 5 9 7 hvcurveto
+ 12 12 25 10 37 10 rrcurveto
+ 1 vlineto
+ 42 9 39 11 36 14 32 12 23 22 17 33 20 -224 rcurveline
+ 72 108 -43 516 -74 -123 19 -213 -86 -19 -57 -13 -28 -9 rlinecurve
+ -14 -5 -15 -9 -14 -11 -21 -17 -27 -39 -15 -34 rrcurveto
+ -1 vlineto
+ -10 -12 -5 -10 -9 vvcurveto
+ -10 8 -14 9 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.medi.sad">
+ 210 106 382 rmoveto
+ -2 -1 -1 -2 -1 hvcurveto
+ -10 -15 -15 -23 -20 -34 -20 -34 -14 -34 -11 -36 rrcurveto
+ -7 -22 -4 -21 -20 vvcurveto
+ -56 21 -25 57 -8 vhcurveto
+ -3 21 24 -2 26 hhcurveto
+ 15 16 1 1 17 hvcurveto
+ 46 3 46 7 46 11 88 21 89 39 46 61 15 -190 rcurveline
+ 72 106 -38 536 -74 -122 21 -271 -29 -14 -47 -16 -65 -18 rlinecurve
+ -18 -65 -62 -10 -58 hhcurveto
+ -1 hlineto
+ -57 -44 14 28 -30 hvcurveto
+ -13 12 -7 17 22 vvcurveto
+ 28 11 37 22 44 vhcurveto
+ 1 2 0 0 1 vvcurveto
+ 3 -3 1 -2 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.medi.yeh">
+ -44 275 537 rmoveto
+ 5 -88 -69 -35 -58 -35 -46 -37 rlinecurve
+ -46 -37 -35 -57 -24 -77 rrcurveto
+ -11 -3 0 -6 5 hhcurveto
+ 5 4 2 5 3 hvcurveto
+ 38 60 35 39 32 19 32 19 57 24 80 27 31 -349 rcurveline
+ 72 103 -45 554 rlineto
+ endchar
+ </CharString>
+ <CharString name="lamVabove-ar">
+ 81 260 838 rmoveto
+ -21 37 -26 39 -32 38 -8 -14 -7 -14 -7 -15 33 -40 34 -41 18 -54 rrcurveto
+ -1 0 0 1 14 3 23 9 4 vhcurveto
+ 17 39 18 35 27 31 rrcurveto
+ 13 3 14 4 14 vhcurveto
+ -3 hlineto
+ -27 -35 -25 -36 -20 -42 rrcurveto
+ 68 -172 rmoveto
+ 28 -443 -64 -54 -95 -40 -111 20 rlinecurve
+ -107 46 88 134 31 69 9 24 -12 3 -8 -16 -256 -466 372 -28 146 211 rrcurveto
+ 49 71 30 84 85 vvcurveto
+ 0 -21 340 -5 78 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="lambda">
+ -64 408 -11 rmoveto
+ 73 26 rlineto
+ 0 2 4 4 2 -1 1 1 vvcurveto
+ -101 220 -35 97 -18 52 -24 65 -30 107 -22 44 rrcurveto
+ 62 -32 -26 16 -32 hhcurveto
+ -52 -50 -15 -16 -44 hvcurveto
+ 8 -25 rlineto
+ 5 23 32 7 15 hhcurveto
+ 81 45 -170 -34 4 hvcurveto
+ -231 -435 18 -13 59 17 26 78 9 19 128 271 rlinecurve
+ 1 3 2 3 4 1 rrcurveto
+ 4 3 -3 -3 1 hvcurveto
+ 146 -384 rlineto
+ endchar
+ </CharString>
+ <CharString name="less">
+ 165 653 528 rmoveto
+ -11 3 -601 -275 rlineto
+ -12 vlineto
+ 600 -280 10 5 11 23 -5 10 -519 241 rlineto
+ 12 vlineto
+ 522 241 2 9 rlineto
+ endchar
+ </CharString>
+ <CharString name="logicalnot">
+ 232 57 409 rmoveto
+ -40 563 -163 40 203 vlineto
+ endchar
+ </CharString>
+ <CharString name="lscript">
+ -165 296 84 rmoveto
+ -10 -8 -28 -23 -19 hhcurveto
+ -68 -11 108 91 -7 hvcurveto
+ 80 101 93 133 124 vvcurveto
+ 59 -18 37 -53 -98 -40 -114 -82 -17 vhcurveto
+ -14 -64 -4 -67 -66 vvcurveto
+ -28 0 -28 2 -27 vhcurveto
+ -66 -74 15 -18 46 44 9 -3 rlineto
+ -70 4 4 -116 106 hhcurveto
+ 55 41 50 28 17 hvcurveto
+ 28 40 -17 13 rlineto
+ -176 182 rmoveto
+ 89 14 107 10 55 vhcurveto
+ 40 7 22 77 36 hhcurveto
+ 22 16 -10 -56 -104 -41 -95 -78 -105 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="m">
+ 328 393 -10 rmoveto
+ 74 28 rlineto
+ -4 69 -2 71 70 vvcurveto
+ 46 1 46 1 46 vhcurveto
+ 16 28 35 18 49 hhcurveto
+ 65 20 -49 -82 hvcurveto
+ -74 -5 -120 -16 vvcurveto
+ -38 21 -39 47 60 55 48 41 45 vhcurveto
+ -7 21 rlineto
+ -14 hlineto
+ -18 -24 -32 -22 -21 hhcurveto
+ -44 -7 38 27 hvcurveto
+ 131 vlineto
+ 100 6 58 -26 27 vhcurveto
+ 21 -21 -29 6 -29 hhcurveto
+ -59 -63 -35 -20 -38 hvcurveto
+ -16 2 rlineto
+ 32 -19 -34 20 -37 hhcurveto
+ -60 -60 -40 -28 -52 hvcurveto
+ -8 6 rlineto
+ 37 -12 37 -50 vhcurveto
+ -49 -2 -48 -35 -40 -32 12 -19 rcurveline
+ 13 23 36 16 16 hhcurveto
+ 41 -1 -64 -75 -91 -6 -92 -1 -92 hvcurveto
+ 14 -8 67 24 rlineto
+ -2 41 0 42 42 vvcurveto
+ 73 2 72 3 72 vhcurveto
+ 6 9 61 38 47 hhcurveto
+ 66 16 -48 -83 hvcurveto
+ -114 -10 -127 -32 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="macron">
+ -25 381 595 rmoveto
+ -235 hlineto
+ -7 -40 rlineto
+ 236 hlineto
+ endchar
+ </CharString>
+ <CharString name="macroncomb">
+ -545 121 595 rmoveto
+ -235 hlineto
+ -7 -40 rlineto
+ 236 hlineto
+ endchar
+ </CharString>
+ <CharString name="madda-ar">
+ 172 54 rmoveto
+ 1 -2 3 -2 -2 vhcurveto
+ -46 -40 -101 -27 -76 39 -10 5 2 3 -10 -5 -36 -18 -22 -20 -20 -35 -40 -70 55 68 19 11 9 5 11 11 12 -6 72 -37 92 25 49 32 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar">
+ 141 475 468 rmoveto
+ 3 13 -1 18 -19 2 -36 4 -46 9 -22 -20 -18 -17 -3 -1 -52 -115 -70 -18 rcurveline
+ -73 -20 -60 -19 -34 -52 rrcurveto
+ -25 -56 -16 -71 -73 vvcurveto
+ 1 -146 43 -124 19 -140 16 56 6 77 -8 66 -42 261 rcurveline
+ -7 43 31 18 26 14 65 35 91 9 65 33 96 49 46 47 24 118 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.fina">
+ -14 475 468 rmoveto
+ 3 13 -1 18 -19 2 -36 4 -46 9 -22 -20 -18 -17 -3 -1 -52 -115 -70 -18 rcurveline
+ -73 -20 -60 -19 -34 -52 rrcurveto
+ -25 -56 -16 -71 -73 vvcurveto
+ 1 -146 43 -124 19 -140 16 56 6 77 -8 66 -42 261 rcurveline
+ -7 43 31 18 26 14 65 35 91 9 65 33 96 49 46 47 24 118 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.init">
+ 41 196 165 rmoveto
+ -55 -17 -58 -12 -61 -7 -22 -129 rcurveline
+ 89 21 76 15 74 38 40 20 31 22 20 24 37 46 7 10 15 74 5 25 -13 13 -31 1 -31 1 -22 -1 -12 -4 rrcurveto
+ -18 -16 -18 -37 -17 hvcurveto
+ -17 -37 -12 -29 -9 -19 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.init.ain">
+ 198 487 176 rmoveto
+ 19 29 16 43 12 58 3 16 -2 15 -16 2 -33 4 -49 10 -22 -20 -16 -15 -12 -19 -7 -23 -7 -23 -9 -21 -10 -20 -8 -15 0 -15 8 -13 -68 -20 -105 -32 -90 16 rrcurveto
+ -28 5 -17 15 -7 23 -13 -35 -13 -43 -13 -50 1 -29 27 -14 28 -3 55 -6 58 6 62 17 102 27 106 59 48 71 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.init.dal">
+ 105 446 279 rmoveto
+ 3 14 -95 48 -20 -26 -69 -91 rcurveline
+ -13 -16 -16 -32 19 -19 -44 -13 -78 -22 -49 12 -24 6 -12 29 2 29 rrcurveto
+ 4 -6 1 -3 -5 vhcurveto
+ -40 -58 -28 -101 65 -32 24 -12 33 4 25 6 142 31 153 106 31 137 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.init.feh">
+ 294 484 99 rmoveto
+ 44 29 31 29 20 29 20 29 15 42 12 58 3 17 -2 15 -16 2 -34 4 -48 9 -22 -20 -7 -7 -5 -4 -1 -3 -44 -98 rcurveline
+ -8 -16 -7 -17 11 -18 -76 -21 -104 -25 -91 -3 -59 -3 -65 6 -12 43 -13 -34 -13 -42 -13 -51 1 -29 27 -15 28 -3 60 -6 72 6 85 17 85 17 71 27 55 36 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.init.hah">
+ 150 402 251 rmoveto
+ 20 18 15 18 11 17 19 29 8 29 8 40 5 25 -13 13 -31 1 -31 1 -22 0 -12 -4 rrcurveto
+ -10 -10 -8 -14 -10 hvcurveto
+ -23 -33 -18 -48 -18 -38 -7 -2 -6 -1 -7 -3 -57 -22 -70 -15 -44 -32 -60 -43 -19 -78 -20 -96 rrcurveto
+ -6 9 0 3 3 vhcurveto
+ 16 30 23 27 29 22 36 27 65 28 53 20 62 23 60 31 46 41 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.init.heh">
+ 230 195 26 rmoveto
+ 37 45 39 33 38 20 76 40 68 31 53 62 26 31 20 49 13 66 3 17 -1 14 -17 2 -33 4 -49 10 -22 -20 -9 -9 -5 -5 -1 -3 -15 -34 -15 -35 -16 -34 rrcurveto
+ -8 -16 0 -15 8 -13 -98 -29 -69 -50 -40 -74 -40 -74 -41 -78 -41 -82 5 30 rcurveline
+ 1 vlineto
+ -54 -65 rlineto
+ -1 vlineto
+ -3 -38 -3 -41 2 -30 6 -17 rlinecurve
+ 6 -17 12 11 19 40 29 58 23 56 15 36 15 36 27 41 40 47 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.init.meem">
+ 79 241 257 rmoveto
+ -5 -4 -1 -2 -2 hvcurveto
+ -63 -15 -51 -24 -33 -42 -30 -39 -29 -78 -24 -54 21 -2 rcurveline
+ 9 22 12 20 17 18 42 43 64 21 61 23 68 26 53 42 34 62 17 33 14 39 9 45 3 17 -1 14 -17 2 -33 4 -49 9 -22 -20 -31 -29 -16 -48 -14 -43 rrcurveto
+ -7 -19 1 -14 6 -10 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.init.ragaa">
+ 314 52 5 rmoveto
+ 52 37 53 33 52 29 47 26 43 23 40 35 57 48 27 50 18 91 4 16 -2 15 -17 2 -33 4 -49 10 -22 -20 -16 -16 -11 -19 -7 -22 -7 -22 -9 -21 -11 -20 rrcurveto
+ -8 -16 0 -15 8 -13 -4 -2 -4 -1 -4 -2 -42 -17 -41 -16 -38 -18 -29 -15 -23 -16 -18 -20 -20 -23 -25 -40 -13 -42 42 -29 rcurveline
+ 6 4 3 1 1 1 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.init.reh">
+ 84 283 128 rmoveto
+ 40 20 30 23 20 24 37 45 7 11 15 73 5 25 -13 14 -31 1 -31 1 -22 -2 -12 -4 rrcurveto
+ -18 -16 -18 -37 -17 hvcurveto
+ -17 -37 -12 -29 -9 -19 -31 -11 -27 -8 -21 -6 -30 -9 -67 -23 -17 -27 -15 -24 -4 -29 -13 -27 rrcurveto
+ -1 vlineto
+ -15 -18 -4 -16 9 -13 9 -13 10 2 11 17 1 1 rcurveline
+ 60 55 111 20 77 39 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.init.sad">
+ 357 271 13 rmoveto
+ 140 23 143 48 82 76 50 45 17 46 17 82 3 17 -2 14 -16 2 -33 4 -49 10 -22 -20 -7 -7 -5 -5 -1 -2 -44 -99 rcurveline
+ -8 -16 -6 -18 10 -17 -58 -16 -59 -17 -61 -12 -88 -18 -143 -22 -39 70 -19 32 7 49 33 65 4 8 -9 1 -3 -4 -25 -35 -37 -65 -19 -48 -15 -41 -17 -56 21 -42 rrcurveto
+ 12 -23 23 -14 34 -5 50 -7 63 4 76 13 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.init.yeh">
+ 60 223 227 rmoveto
+ -2 -1 -6 -2 -3 -1 -73 -18 -48 -25 -22 -33 -22 -33 -23 -44 -24 -57 18 -13 rcurveline
+ 1 hlineto
+ 23 36 30 26 37 14 37 14 39 16 38 17 38 17 36 25 33 34 33 34 25 54 15 76 3 17 -1 14 -17 2 -18 2 -19 2 -20 2 -32 3 -24 -16 -8 -20 rrcurveto
+ -15 -33 -14 -34 -15 -32 -8 -16 0 -14 8 -13 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.medi">
+ 41 196 165 rmoveto
+ -55 -17 -58 -12 -61 -7 -22 -129 rcurveline
+ 89 21 76 15 74 38 40 20 31 22 20 24 37 46 7 10 15 74 5 25 -13 13 -31 1 -31 1 -22 -1 -12 -4 rrcurveto
+ -18 -16 -18 -37 -17 hvcurveto
+ -17 -37 -12 -29 -9 -19 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.medi.ain">
+ 36 239 21 rmoveto
+ 89 26 92 36 46 56 37 46 7 9 15 74 5 25 -13 14 -31 1 -31 1 -22 -1 -12 -4 rrcurveto
+ -18 -16 -19 -37 -17 hvcurveto
+ -17 -37 -12 -28 -9 -19 -31 -9 rcurveline
+ -67 -18 -172 -41 -23 80 -13 -35 -13 -43 -13 -50 1 -29 27 -14 28 -3 59 -5 61 6 63 18 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.medi.dal">
+ -4 35 9 rmoveto
+ 53 -29 150 43 95 48 40 20 40 26 27 34 28 34 9 33 10 49 5 25 -13 13 -31 1 -31 1 -9 0 -25 -4 -14 -2 -5 -5 -10 -14 -24 -33 -18 -48 -18 -39 rrcurveto
+ -58 -29 -103 -14 -46 14 -23 7 -13 30 4 30 1 8 -3 0 -6 -8 -8 -10 -88 -135 84 -46 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.medi.feh">
+ 131 178 4 rmoveto
+ 102 10 106 30 78 38 44 21 33 23 21 26 37 46 6 11 15 74 5 25 -13 14 -31 1 -31 1 -21 -2 -12 -4 rrcurveto
+ -18 -17 -18 -38 -16 hvcurveto
+ -16 -38 -13 -28 -9 -19 -74 -21 -89 -24 -90 -2 -59 -3 -65 6 -12 43 -13 -34 -13 -42 -13 -51 1 -29 27 -15 28 -3 36 -3 40 1 46 4 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.medi.hah">
+ -6 402 251 rmoveto
+ 20 18 15 18 11 17 19 29 8 29 8 40 5 25 -13 13 -31 1 -31 1 -22 0 -12 -4 rrcurveto
+ -10 -10 -8 -14 -10 hvcurveto
+ -23 -33 -18 -48 -18 -38 -7 -2 -6 -1 -7 -3 -57 -22 -70 -15 -44 -32 -60 -43 -19 -78 -20 -96 rrcurveto
+ -6 9 0 3 3 vhcurveto
+ 16 30 23 27 29 22 36 27 65 28 53 20 62 23 60 31 46 41 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.medi.heh">
+ 67 348 142 rmoveto
+ 1 vlineto
+ 61 24 56 30 32 38 37 46 7 10 15 74 5 25 -13 13 -31 1 -31 1 -22 -1 -12 -4 rrcurveto
+ -18 -17 -18 -37 -16 hvcurveto
+ -16 -37 -13 -29 -9 -19 -27 -8 -31 -17 -21 -14 -116 -76 -50 -138 -64 -128 4 30 rcurveline
+ 1 vlineto
+ -53 -65 rlineto
+ -1 vlineto
+ -3 -38 -3 -41 1 -30 6 -17 rlinecurve
+ 6 -17 13 11 19 40 29 58 23 56 15 36 15 36 27 41 40 47 59 71 20 13 76 32 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.medi.meem">
+ -35 188 121 rmoveto
+ 75 25 91 37 41 50 37 45 7 12 15 73 5 25 -13 13 -31 1 -31 1 -21 -1 -12 -4 rrcurveto
+ -18 -17 -18 -37 -17 hvcurveto
+ -17 -37 -12 -29 -9 -19 -38 -11 -16 -6 -37 -13 -36 -13 -29 -21 -22 -29 -16 -20 -13 -23 -12 -26 -12 -26 -14 -32 -16 -36 21 -2 rcurveline
+ 9 21 13 18 18 18 32 31 42 18 53 15 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.medi.ragaa">
+ -52 52 7 rmoveto
+ 52 36 52 33 53 29 47 25 43 25 40 35 57 47 28 50 18 91 4 17 -2 15 -17 2 -33 4 -49 9 -22 -20 -16 -15 -12 -19 -7 -23 -7 -23 -8 -20 -11 -20 rrcurveto
+ -8 -16 0 -14 8 -13 -44 -21 -48 -15 -42 -20 -29 -15 -22 -17 -18 -19 -21 -23 -24 -39 -14 -43 42 -30 rcurveline
+ 1 hlineto
+ 4 3 3 2 2 2 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.medi.reh">
+ -69 420 342 rmoveto
+ 5 25 -13 14 -31 1 -31 1 -21 -1 -12 -4 rrcurveto
+ -18 -18 -24 -48 -17 hvcurveto
+ -17 -48 -13 -33 -9 -20 -37 -13 -42 -12 -33 -15 -39 -18 -32 -48 -19 -44 rrcurveto
+ -1 vlineto
+ -15 -18 -4 -16 9 -13 9 -13 10 2 12 17 21 20 27 16 33 11 32 7 32 9 30 12 105 41 72 92 24 121 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.medi.sad">
+ 216 79 3 rmoveto
+ 96 -12 148 27 87 26 86 23 104 41 46 56 37 46 7 9 15 74 5 25 -13 14 -31 1 -31 1 -22 -1 -12 -4 rrcurveto
+ -18 -17 -19 -37 -16 hvcurveto
+ -16 -37 -13 -28 -9 -19 -44 -13 -50 -13 -46 -9 -49 -11 -45 -6 -40 -2 -66 -4 -61 9 -23 41 -19 32 8 49 33 65 4 8 -9 1 -3 -4 -25 -35 -37 -65 -19 -48 rrcurveto
+ -15 -41 -17 -56 21 -42 12 -23 23 -14 34 -5 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.medi.yeh">
+ -95 237 131 rmoveto
+ 45 22 32 25 20 24 37 45 8 13 15 73 5 25 -13 13 -31 1 -31 1 -21 -1 -12 -4 rrcurveto
+ -18 -17 -18 -38 -17 hvcurveto
+ -17 -38 -12 -29 -9 -19 -8 -2 -11 -5 -15 -7 -22 -10 -34 -17 -17 -14 -46 -38 -22 -60 -26 -60 18 -13 rcurveline
+ 1 hlineto
+ 13 21 19 19 23 16 46 31 65 18 52 26 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="minus">
+ 347 778 276 rmoveto
+ -657 hlineto
+ -7 -40 rlineto
+ 658 hlineto
+ endchar
+ </CharString>
+ <CharString name="mu">
+ 137 415 434 rmoveto
+ 2 -57 2 -57 -58 vvcurveto
+ -21 -2 -73 -1 -48 vhcurveto
+ -39 -36 -56 -24 -36 hhcurveto
+ -85 -8 73 56 hvcurveto
+ 269 vlineto
+ -9 7 -83 -26 rlineto
+ 4 -24 13 -85 -55 vvcurveto
+ -189 vlineto
+ -92 -2 -92 -2 -92 vhcurveto
+ 12 -6 53 20 rlineto
+ -13 63 -6 75 66 vvcurveto
+ 6 2 rlineto
+ -20 17 13 -10 32 hhcurveto
+ 49 76 43 33 58 hvcurveto
+ 8 -5 rlineto
+ -41 6 11 -28 52 hhcurveto
+ 55 56 46 38 41 hvcurveto
+ -8 14 -11 2 rlineto
+ -15 -24 -30 -18 -23 hhcurveto
+ -47 -5 65 34 hvcurveto
+ 167 vlineto
+ 31 3 51 3 41 vhcurveto
+ -8 11 rlineto
+ endchar
+ </CharString>
+ <CharString name="multiply">
+ 58 81 502 rmoveto
+ -24 -32 215 -215 -214 -215 23 -33 220 219 219 -219 23 33 -214 215 218 217 -25 32 -221 -221 rlineto
+ endchar
+ </CharString>
+ <CharString name="n">
+ 86 195 18 rmoveto
+ -2 40 -1 30 28 vvcurveto
+ 73 3 88 3 72 vhcurveto
+ 29 36 47 32 46 hhcurveto
+ 71 19 -61 -100 hvcurveto
+ -5 -171 rlineto
+ -48 17 -40 55 48 63 44 45 46 vhcurveto
+ -9 21 rlineto
+ -13 hlineto
+ -19 -25 -32 -21 -23 hhcurveto
+ -55 7 45 151 64 0 96 -20 24 hvcurveto
+ 22 -19 -29 7 -29 hhcurveto
+ -64 -69 -38 -34 -56 hvcurveto
+ -8 6 rlineto
+ 37 -6 -16 31 -50 hhcurveto
+ -37 -57 -41 -30 -41 hvcurveto
+ 17 -22 rlineto
+ 19 29 25 16 21 hhcurveto
+ 33 4 -48 -67 -81 -7 -165 -2 -51 hvcurveto
+ 15 -7 rlineto
+ endchar
+ </CharString>
+ <CharString name="nine">
+ -45 214 11 rmoveto
+ 13 83 69 97 54 79 rrcurveto
+ 52 77 60 96 85 vvcurveto
+ 107 -71 67 -145 vhcurveto
+ -50 -22 -88 -46 -29 -36 rrcurveto
+ -29 -36 -10 -45 -52 vvcurveto
+ -96 85 -70 69 52 49 17 26 49 vhcurveto
+ 5 -6 rlineto
+ -32 -55 -85 -114 0 vvcurveto
+ -45 -58 -48 -64 -20 -46 10 -8 rcurveline
+ 222 393 rmoveto
+ -24 -24 -35 -8 -33 hhcurveto
+ -84 -46 86 77 52 33 77 57 108 55 -78 -84 -35 -6 -38 -25 -25 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="nine-ar">
+ -47 293 134 rmoveto
+ -3 5 -34 111 3 112 -5 144 rlinecurve
+ -1 32 -16 27 -26 14 -26 14 -29 -15 -14 -15 -39 -42 -136 -221 91 -41 54 -25 54 37 24 35 1 -125 16 -83 29 -100 rrcurveto
+ -142 395 rmoveto
+ -6 5 -2 8 4 7 11 21 11 26 33 -5 19 -3 14 -25 5 -16 rrcurveto
+ -2 7 -12 -1 -2 hvcurveto
+ -23 -16 -46 -7 -23 18 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="nine-ar.dnom">
+ -99 225 94 rmoveto
+ -2 3 -24 78 2 78 -3 101 rlinecurve
+ -1 23 -11 19 -18 9 -18 10 -21 -10 -10 -11 -27 -29 -95 -155 64 -29 37 -17 38 26 17 24 1 -87 11 -58 20 -70 rrcurveto
+ -99 276 rmoveto
+ -4 4 -2 5 3 5 8 15 7 18 24 -3 13 -3 10 -17 3 -11 rrcurveto
+ -1 5 -9 -2 hhcurveto
+ -16 -12 -32 -4 -16 12 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="nine-ar.numr">
+ -99 225 363 rmoveto
+ -2 3 -24 78 2 78 -3 101 rlinecurve
+ -1 23 -11 19 -18 9 -18 10 -21 -10 -10 -11 -27 -29 -95 -155 64 -29 37 -17 38 26 17 24 1 -87 11 -58 20 -70 rrcurveto
+ -99 276 rmoveto
+ -4 4 -2 5 3 5 8 15 7 18 24 -3 13 -3 10 -17 3 -11 rrcurveto
+ -1 5 -9 -2 hhcurveto
+ -16 -12 -32 -4 -16 12 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="nine.dnom">
+ 164 7 rmoveto
+ 10 50 46 58 36 47 rrcurveto
+ 36 46 40 59 50 vvcurveto
+ 65 -49 39 -98 vhcurveto
+ -34 -13 -60 -27 -19 -22 rrcurveto
+ -19 -22 -7 -27 -31 vvcurveto
+ -58 58 -42 46 35 34 10 16 32 vhcurveto
+ 5 -3 rlineto
+ -22 -33 -58 -69 0 vvcurveto
+ -30 -35 -33 -38 -14 -28 7 -4 rcurveline
+ 151 235 rmoveto
+ -14 -16 -25 -5 -22 hhcurveto
+ -57 -31 51 47 31 23 46 38 73 38 -46 -51 -21 -4 -23 -17 -15 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="nine.numr">
+ 164 282 rmoveto
+ 10 50 46 58 36 47 rrcurveto
+ 36 46 40 59 50 vvcurveto
+ 65 -49 39 -98 vhcurveto
+ -34 -13 -60 -27 -19 -22 rrcurveto
+ -19 -22 -7 -27 -31 vvcurveto
+ -58 58 -42 46 35 34 10 16 32 vhcurveto
+ 5 -3 rlineto
+ -22 -33 -58 -69 0 vvcurveto
+ -30 -35 -33 -38 -14 -28 7 -4 rcurveline
+ 151 235 rmoveto
+ -14 -16 -25 -5 -22 hhcurveto
+ -57 -31 51 47 31 23 46 38 73 38 -46 -51 -21 -4 -23 -17 -15 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="noon-ar">
+ 99 368 242 rmoveto
+ -9 vlineto
+ -32 -29 -40 -24 -48 -19 rrcurveto
+ -12 -31 -33 -6 -35 hhcurveto
+ -20 -21 2 4 -21 hvcurveto
+ -35 15 -17 21 29 vvcurveto
+ 10 2 12 5 12 vhcurveto
+ 18 49 20 40 18 40 74 -50 rcurveline
+ 16 28 0 1 16 28 11 19 10 19 11 20 -27 18 -26 18 -27 18 -15 8 rcurveline
+ -17 -29 -21 -36 -16 -30 rrcurveto
+ -59 -107 -28 -85 -62 vvcurveto
+ -71 26 -49 42 -20 vhcurveto
+ -9 19 21 -6 23 hhcurveto
+ 24 27 6 10 29 hvcurveto
+ 56 21 46 36 37 53 37 54 25 61 12 68 rrcurveto
+ 4 19 1 20 19 vvcurveto
+ 47 -11 45 -21 44 vhcurveto
+ -54 -125 rlineto
+ 13 -42 12 -40 -54 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="noon-ar.fina">
+ 64 368 242 rmoveto
+ -9 vlineto
+ -32 -29 -40 -24 -48 -19 rrcurveto
+ -12 -31 -33 -6 -35 hhcurveto
+ -20 -21 2 4 -21 hvcurveto
+ -35 15 -17 21 29 vvcurveto
+ 10 2 12 5 12 vhcurveto
+ 18 49 20 40 18 40 74 -50 rcurveline
+ 16 28 0 1 16 28 11 19 10 19 11 20 -27 18 -26 18 -27 18 -15 8 rcurveline
+ -17 -29 -21 -36 -16 -30 rrcurveto
+ -59 -107 -28 -85 -62 vvcurveto
+ -71 26 -49 42 -20 vhcurveto
+ -9 19 21 -6 23 hhcurveto
+ 24 27 6 10 29 hvcurveto
+ 56 21 46 36 37 53 37 54 25 61 12 68 rrcurveto
+ 4 19 1 20 19 vvcurveto
+ 47 -11 45 -21 44 vhcurveto
+ -54 -125 rlineto
+ 13 -42 12 -40 -54 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="noon-ar.fina.tail">
+ 173 550 226 rmoveto
+ 47 123 -54 -6 -18 14 -16 30 -27 -5 rlinecurve
+ -52 -10 -26 -44 -27 -37 -41 -56 -34 -63 -56 -42 -31 -2 -12 23 -7 21 -25 77 41 197 -133 -150 -46 -52 -24 -72 -9 -88 16 30 13 32 20 26 69 89 20 -52 9 -79 rrcurveto
+ 6 -47 3 -48 29 -25 15 -13 22 -3 15 15 46 45 28 62 35 55 97 153 -6 -112 58 2 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="noon-ar.tail">
+ 173 461 225 rmoveto
+ 8 -12 13 19 20 50 20 50 5 30 -10 10 -30 29 -49 -33 -18 -21 -15 -18 -14 -18 -13 -19 -41 -56 -36 -63 -55 -42 -16 -1 -11 5 -7 9 -19 25 -6 31 -1 46 rrcurveto
+ -1 42 -1 62 -34 2 -14 1 -23 -19 -33 -37 -44 -49 -27 -71 -9 -92 8 15 8 16 7 15 18 37 58 74 22 -27 13 -16 9 -28 5 -40 5 -47 4 -49 29 -24 rrcurveto
+ 18 -16 17 0 16 15 23 22 20 26 16 29 24 44 52 91 31 21 28 19 16 -15 14 -22 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="noonThreedotsabove-ar">
+ 99 371 650 rmoveto
+ -10 19 -11 16 -14 13 -49 46 -46 -45 -41 -55 -41 -56 -38 -66 -17 -33 -1 -1 rcurveline
+ 1 -44 25 34 94 211 60 -147 rlinecurve
+ 6 -15 5 5 4 5 27 35 26 37 20 41 rrcurveto
+ -22 -525 rmoveto
+ 76 109 31 145 -59 124 -54 -125 rcurveline
+ 14 -44 13 -45 -2 -56 -64 -59 -99 -47 -118 21 -107 46 88 134 31 69 9 24 -13 4 -8 -16 -256 -466 372 -29 146 211 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="noonghunna-ar">
+ 99 349 125 rmoveto
+ 76 109 31 145 -59 124 -54 -125 rcurveline
+ 14 -44 13 -45 -2 -56 -64 -59 -99 -47 -118 21 -107 46 88 134 31 69 9 24 -13 4 -8 -16 -256 -466 372 -29 146 211 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="noonghunna-ar.fina">
+ 99 349 125 rmoveto
+ 76 109 31 145 -59 124 -54 -125 rcurveline
+ 14 -44 13 -45 -2 -56 -64 -59 -99 -47 -118 21 -107 46 88 134 31 69 9 24 -13 4 -8 -16 -256 -466 372 -29 146 211 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="noonghunna-ar.jalt">
+ 514 543 154 rmoveto
+ -80 -18 -77 -6 -73 5 -73 5 -71 32 -68 59 -27 23 -16 21 -2 19 -2 19 5 16 13 15 52 59 61 42 70 25 70 25 73 18 75 10 52 113 rcurveline
+ -79 -3 -79 -18 -80 -35 -80 -35 -67 -47 -53 -61 -35 -40 -24 -43 -15 -46 -37 -114 46 -76 71 -51 44 -32 65 -21 85 -11 102 -12 106 27 78 31 88 35 92 59 39 80 rrcurveto
+ 30 62 7 56 -16 49 rrcurveto
+ -24 74 0 0 0 vvcurveto
+ -77 -113 10 -28 23 -61 -2 -33 rlinecurve
+ 0 0 1 -73 -32 vhcurveto
+ -49 -21 -42 -15 -36 -8 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="noonghunnaabove-ar">
+ 3 -72 rmoveto
+ 9 -1 9 3 9 6 26 16 12 26 14 32 3 7 -2 5 -5 -7 -7 -8 -8 -6 -9 -3 -9 -4 -11 0 -9 1 rrcurveto
+ -9 -9 3 7 -8 hvcurveto
+ -8 5 -6 7 -4 10 -4 9 0 12 3 13 3 12 8 14 12 17 rrcurveto
+ 3 vlineto
+ 1 -1 0 -1 -3 -4 -3 -8 -6 vhcurveto
+ -15 -21 -9 -22 -10 -32 -4 -16 -1 -14 1 -12 2 -33 17 -16 34 -3 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ntilde">
+ 86 315 620 rmoveto
+ -26 12 -31 13 -26 -4 -35 -5 -19 -58 -8 -35 14 -5 rcurveline
+ 12 33 10 12 24 3 17 2 18 -4 15 -7 63 -30 rcurveline
+ 20 -9 22 -6 22 3 32 4 20 56 3 29 -13 5 rcurveline
+ -9 -23 -8 -13 -24 -3 -16 -2 -16 5 -14 6 rrcurveto
+ -167 -581 rmoveto
+ -2 40 -1 30 28 vvcurveto
+ 73 3 88 3 72 vhcurveto
+ 29 36 47 32 46 hhcurveto
+ 71 19 -61 -100 hvcurveto
+ -5 -171 rlineto
+ -48 17 -40 55 48 63 44 45 46 vhcurveto
+ -9 21 rlineto
+ -13 hlineto
+ -19 -25 -32 -21 -23 hhcurveto
+ -55 7 45 151 64 0 96 -20 24 hvcurveto
+ 22 -19 -29 7 -29 hhcurveto
+ -64 -69 -38 -34 -56 hvcurveto
+ -8 6 rlineto
+ 37 -6 -16 31 -50 hhcurveto
+ -37 -57 -41 -30 -41 hvcurveto
+ 17 -22 rlineto
+ 19 29 25 16 21 hhcurveto
+ 33 4 -48 -67 -81 -7 -165 -2 -51 hvcurveto
+ 15 -7 rlineto
+ endchar
+ </CharString>
+ <CharString name="nu">
+ -16 531 452 rmoveto
+ -57 16 -23 -10 -33 -129 -36 -110 -56 -118 rlinecurve
+ -5 hlineto
+ -26 119 -37 164 -55 55 rrcurveto
+ 21 -21 -33 11 -30 hhcurveto
+ -53 -43 -22 -39 -35 hvcurveto
+ 20 -26 rlineto
+ 10 15 21 8 31 hhcurveto
+ 73 43 -98 -66 23 hvcurveto
+ 27 -77 16 -81 12 -81 7 -7 rcurveline
+ 56 32 20 50 22 48 24 48 rlinecurve
+ 136 274 rlineto
+ endchar
+ </CharString>
+ <CharString name="numbersign">
+ 170 10 228 rmoveto
+ 6 -10 rlineto
+ 165 hlineto
+ -54 -195 4 -14 33 -3 59 212 rlineto
+ 207 hlineto
+ -54 -195 4 -14 33 -3 59 212 rlineto
+ 164 hlineto
+ 12 8 -6 33 rlineto
+ -158 hlineto
+ 58 209 rlineto
+ 154 hlineto
+ 12 8 -6 33 rlineto
+ -149 hlineto
+ 52 186 -7 10 -22 2 -11 -3 -54 -195 rlineto
+ -207 hlineto
+ 52 186 -7 10 -22 2 -11 -3 -54 -195 rlineto
+ -183 hlineto
+ -8 -10 4 -21 6 -10 rlineto
+ 170 hlineto
+ -59 -209 rlineto
+ -178 hlineto
+ -8 -10 rlineto
+ 229 10 rmoveto
+ 58 209 rlineto
+ 207 hlineto
+ -59 -209 rlineto
+ endchar
+ </CharString>
+ <CharString name="o">
+ -8 431 59 rmoveto
+ 44 49 14 66 65 vvcurveto
+ 112 -51 114 -147 -70 -71 -22 -52 -47 vhcurveto
+ -48 -52 -7 -74 -69 vvcurveto
+ -106 7 49 -104 138 hhcurveto
+ 70 72 20 53 47 hvcurveto
+ -163 367 rmoveto
+ 113 19 -124 -82 -83 -23 -110 -108 -109 -26 128 84 26 2 26 6 25 hvcurveto
+ 74 18 54 36 54 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="oacute">
+ -44 366 694 rmoveto
+ -47 36 -13 -2 -120 -157 18 -31 rlineto
+ 227 -481 rmoveto
+ 44 49 14 66 65 vvcurveto
+ 112 -51 114 -147 -70 -71 -22 -52 -47 vhcurveto
+ -48 -52 -7 -74 -69 vvcurveto
+ -106 7 49 -104 138 hhcurveto
+ 70 72 20 53 47 hvcurveto
+ -163 367 rmoveto
+ 113 19 -124 -82 -83 -23 -110 -108 -109 -26 128 84 26 2 26 6 25 hvcurveto
+ 74 18 54 36 54 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="ocircumflex">
+ -44 88 555 rmoveto
+ 23 -12 143 131 121 -124 39 26 -157 160 rlineto
+ 174 -677 rmoveto
+ 44 49 14 66 65 vvcurveto
+ 112 -51 114 -147 -70 -71 -22 -52 -47 vhcurveto
+ -48 -52 -7 -74 -69 vvcurveto
+ -106 7 49 -104 138 hhcurveto
+ 70 72 20 53 47 hvcurveto
+ -163 367 rmoveto
+ 113 19 -124 -82 -83 -23 -110 -108 -109 -26 128 84 26 2 26 6 25 hvcurveto
+ 74 18 54 36 54 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="odieresis">
+ -8 429 595 rmoveto
+ 30 -20 28 -34 -29 -35 -22 -34 -32 26 -26 32 32 26 23 33 2 vhcurveto
+ -202 hmoveto
+ 30 -20 28 -34 -29 -35 -22 -34 -32 26 -26 32 32 26 23 33 2 vhcurveto
+ 204 -536 rmoveto
+ 44 49 14 66 65 vvcurveto
+ 112 -51 114 -147 -70 -71 -22 -52 -47 vhcurveto
+ -48 -52 -7 -74 -69 vvcurveto
+ -106 7 49 -104 138 hhcurveto
+ 70 72 20 53 47 hvcurveto
+ -163 367 rmoveto
+ 113 19 -124 -82 -83 -23 -110 -108 -109 -26 128 84 26 2 26 6 25 hvcurveto
+ 74 18 54 36 54 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="oe">
+ 270 770 319 rmoveto
+ 11 5 10 4 12 vvcurveto
+ 77 -56 61 -86 -76 -72 -33 -57 -49 vhcurveto
+ -2 -2 rlineto
+ 47 -30 -51 32 -78 hhcurveto
+ -70 -71 -22 -52 -47 hvcurveto
+ -48 -52 -7 -74 -69 vvcurveto
+ -106 7 49 -104 138 hhcurveto
+ 70 72 20 53 47 hvcurveto
+ 1 1 1 2 2 1 rrcurveto
+ -44 24 42 -31 66 hhcurveto
+ 86 80 58 58 62 hvcurveto
+ -13 18 -11 2 rlineto
+ -35 -45 -54 -33 -55 hhcurveto
+ -89 -34 78 63 -6 hvcurveto
+ 42 199 rmoveto
+ 26 21 30 16 33 hhcurveto
+ 56 35 -52 -42 -16 -7 -8 -6 -2 hvcurveto
+ -202 -80 -4 4 rlineto
+ -1 6 -1 6 6 vvcurveto
+ 49 7 45 39 42 vhcurveto
+ -388 -80 rmoveto
+ 74 18 54 36 54 hhcurveto
+ 113 19 -124 -82 -83 -23 -110 -108 -109 -26 128 84 26 2 26 6 25 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="oe-ar">
+ 127 414 623 rmoveto
+ -21 37 -26 39 -32 38 -8 -14 -7 -14 -7 -15 33 -40 34 -41 18 -54 rrcurveto
+ -1 0 0 1 14 3 23 9 4 vhcurveto
+ 17 39 18 35 27 31 rrcurveto
+ 13 3 14 4 14 vhcurveto
+ -3 hlineto
+ -27 -35 -25 -36 -20 -42 rrcurveto
+ -184 -615 rmoveto
+ 180 35 163 279 -129 131 -12 12 -28 13 -15 -17 -32 -36 -16 -48 -22 -44 -10 -20 -3 -24 15 -17 17 -19 43 -2 32 7 7 -10 7 -20 -7 -7 -20 -23 -25 -19 -31 -12 rrcurveto
+ -115 -47 -121 -40 -104 -58 -6 -3 0 -10 7 -1 73 -7 79 -7 73 14 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="ograve">
+ -44 121 695 rmoveto
+ 162 -154 18 31 -120 157 -13 2 rlineto
+ 263 -672 rmoveto
+ 44 49 14 66 65 vvcurveto
+ 112 -51 114 -147 -70 -71 -22 -52 -47 vhcurveto
+ -48 -52 -7 -74 -69 vvcurveto
+ -106 7 49 -104 138 hhcurveto
+ 70 72 20 53 47 hvcurveto
+ -163 367 rmoveto
+ 113 19 -124 -82 -83 -23 -110 -108 -109 -26 128 84 26 2 26 6 25 hvcurveto
+ 74 18 54 36 54 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="omega">
+ 226 609 409 rmoveto
+ 48 -41 20 -63 -61 vvcurveto
+ -87 -45 -96 -94 -94 -14 118 85 65 0 71 9 59 vhcurveto
+ -6 7 -75 -28 rlineto
+ -189 vlineto
+ -53 -4 -71 -33 -33 vhcurveto
+ -24 -24 -31 -18 -34 hhcurveto
+ -90 -30 102 80 91 30 69 78 60 hvcurveto
+ -16 14 rlineto
+ -135 -47 -39 -126 -117 vvcurveto
+ -91 54 -98 104 70 57 54 46 45 vhcurveto
+ 12 hlineto
+ -77 36 28 -14 57 hhcurveto
+ 146 105 168 142 64 -25 62 -51 40 hvcurveto
+ -14 -3 -42 -48 rlineto
+ endchar
+ </CharString>
+ <CharString name="one">
+ -45 92 639 rmoveto
+ -27 83 vlineto
+ 62 -15 -82 -111 -140 -3 -140 -5 -139 hvcurveto
+ 12 -5 84 27 rlineto
+ -3 76 0 198 136 vvcurveto
+ 89 2 90 5 89 vhcurveto
+ -6 12 rlineto
+ endchar
+ </CharString>
+ <CharString name="one-ar">
+ -176 108 14 rmoveto
+ 33 69 26 89 -11 109 rrcurveto
+ 4 -2 12 4 vvcurveto
+ -13 108 -30 91 -34 85 -19 -46 -18 -50 -15 -44 54 -117 34 -155 -21 -173 8 -3 5 11 3 6 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="one-ar.dnom">
+ -99 144 10 rmoveto
+ 23 48 18 62 -8 77 rrcurveto
+ 3 -1 8 3 vvcurveto
+ -9 75 -21 64 -24 60 -13 -33 -13 -35 -10 -30 37 -82 24 -109 -15 -121 6 -2 4 8 2 4 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="one-ar.numr">
+ -99 144 279 rmoveto
+ 23 48 18 62 -8 77 rrcurveto
+ 3 -1 8 3 vvcurveto
+ -9 75 -21 64 -24 60 -13 -33 -13 -35 -10 -30 37 -82 24 -109 -15 -121 6 -2 4 8 2 4 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="one.dnom">
+ 227 427 rmoveto
+ -146 -44 rlineto
+ -16 56 vlineto
+ 42 -10 -49 -67 -84 -2 -84 -3 -83 hvcurveto
+ 8 -3 57 16 rlineto
+ -2 46 0 118 82 vvcurveto
+ 53 1 55 4 53 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="one.numr">
+ 227 702 rmoveto
+ -146 -44 rlineto
+ -16 56 vlineto
+ 42 -10 -49 -67 -84 -2 -84 -3 -83 hvcurveto
+ 8 -3 57 16 rlineto
+ -2 46 0 118 82 vvcurveto
+ 53 1 55 4 53 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="onehalf">
+ 245 589 704 rmoveto
+ -11 -1 -433 -680 rlineto
+ -14 vlineto
+ 31 -13 437 688 -3 11 rlineto
+ -587 -36 rmoveto
+ -16 60 vlineto
+ 44 -10 -49 -67 -84 -1 -85 -4 -83 hvcurveto
+ 8 -3 61 17 rlineto
+ -2 46 -1 118 82 vvcurveto
+ 53 2 54 4 53 vhcurveto
+ -5 8 rlineto
+ 566 -651 rmoveto
+ -222 hlineto
+ -4 -6 0 4 1 1 0 1 1 hvcurveto
+ 86 83 115 105 85 vvcurveto
+ 54 -47 39 -62 -61 -52 -33 -35 -39 vhcurveto
+ 14 -11 rlineto
+ 19 28 31 19 40 hhcurveto
+ 59 23 -45 -34 -71 -57 -61 -56 -55 hvcurveto
+ -38 -37 -41 -35 -41 -35 rrcurveto
+ -10 315 vlineto
+ 17 47 rlineto
+ endchar
+ </CharString>
+ <CharString name="onequarter">
+ 245 593 704 rmoveto
+ -11 -1 -433 -680 rlineto
+ -14 vlineto
+ 31 -13 437 688 -3 11 rlineto
+ -591 -36 rmoveto
+ -16 60 vlineto
+ 44 -10 -49 -67 -84 -1 -85 -4 -83 hvcurveto
+ 8 -3 61 17 rlineto
+ -2 46 -1 118 82 vvcurveto
+ 53 2 54 4 53 vhcurveto
+ -5 8 rlineto
+ 435 -304 rmoveto
+ -206 -260 rlineto
+ -27 204 vlineto
+ 5 -5 rlineto
+ -38 1 -50 -4 -21 vhcurveto
+ 3 -3 58 20 rlineto
+ -2 13 -1 48 32 vvcurveto
+ 6 4 rlineto
+ 59 hlineto
+ 12 23 -3 4 rlineto
+ -68 hlineto
+ -6 5 rlineto
+ 93 1 164 1 16 vhcurveto
+ -6 3 rlineto
+ -55 -281 rmoveto
+ -155 hlineto
+ -3 4 1 13 60 83 27 35 rlinecurve
+ 21 27 21 28 25 23 rrcurveto
+ 1 1 1 1 2 hhcurveto
+ 2 1 -1 -4 hvcurveto
+ -205 vlineto
+ endchar
+ </CharString>
+ <CharString name="onesuperior">
+ -367 -28 685 rmoveto
+ -17 61 vlineto
+ 46 -12 -53 -73 -91 -3 -91 -3 -90 hvcurveto
+ 9 -3 62 17 rlineto
+ -2 49 0 130 88 vvcurveto
+ 58 1 58 4 58 vhcurveto
+ -5 8 rlineto
+ endchar
+ </CharString>
+ <CharString name="opendammatan-ar">
+ 104 41 rmoveto
+ 6 17 2 14 10 vvcurveto
+ 5 vlineto
+ 15 -2 -4 10 -14 hhcurveto
+ -23 -28 -33 -23 -22 20 -10 15 -8 hvcurveto
+ -4 -4 -6 -5 -8 -6 -31 -22 -38 -22 -31 -21 rrcurveto
+ -5 -3 -3 -2 -1 vvcurveto
+ 18 2 16 6 14 5 41 14 26 20 24 32 5 -3 5 -1 4 -5 rrcurveto
+ 6 9 4 7 11 vvcurveto
+ 1 vlineto
+ -1 6 -4 4 -4 3 rrcurveto
+ -85 hmoveto
+ 6 17 2 14 10 vvcurveto
+ 17 -6 13 -14 -24 -28 -33 -23 -22 20 -10 15 -8 vhcurveto
+ -4 -4 -6 -5 -8 -6 -31 -22 -38 -22 -31 -21 rrcurveto
+ -5 -3 -2 -2 -1 vvcurveto
+ 6 1 60 17 40 17 32 44 rlinecurve
+ 6 -3 3 -1 5 -5 rrcurveto
+ 5 9 6 7 11 vvcurveto
+ 1 vlineto
+ -1 6 -4 4 -4 3 rrcurveto
+ 59 41 rmoveto
+ 1 hlineto
+ 8 5 -8 -10 -4 -1 -5 -1 -7 hvcurveto
+ -9 5 -10 4 -7 7 rrcurveto
+ -1 2 0 1 2 vvcurveto
+ 7 9 5 6 1 vhcurveto
+ -86 hmoveto
+ 2 hlineto
+ 9 4 -9 -10 -4 -1 -5 -1 -6 hvcurveto
+ -8 4 -19 7 11 vvcurveto
+ 7 8 4 6 1 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="ordfeminine">
+ -179 269 550 rmoveto
+ 15 -23 -33 8 -23 hhcurveto
+ -123 -52 -90 -92 -59 28 -70 81 43 41 20 21 36 hvcurveto
+ 11 -2 rlineto
+ -22 4 10 -17 27 hhcurveto
+ 23 41 22 16 29 hvcurveto
+ -5 16 rlineto
+ -5 -16 -22 -7 -10 hhcurveto
+ -25 -2 26 16 hvcurveto
+ 25 -2 26 25 vvcurveto
+ 48 2 49 3 48 vhcurveto
+ -4 3 rlineto
+ -55 -236 rmoveto
+ -14 -21 -28 -15 -29 hhcurveto
+ -27 -29 6 21 -16 hvcurveto
+ -17 23 -5 28 1 27 1 66 21 35 17 14 rrcurveto
+ 16 20 24 9 27 hhcurveto
+ 18 18 -9 -12 13 hvcurveto
+ 12 -11 0 -17 -17 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="ordmasculine">
+ -189 159 261 rmoveto
+ 51 53 13 34 35 hvcurveto
+ 32 32 10 43 42 vvcurveto
+ 43 -13 48 -37 30 vhcurveto
+ 21 -26 -35 5 -34 hhcurveto
+ -51 -53 -14 -34 -35 hvcurveto
+ -35 -34 -5 -48 -45 vvcurveto
+ -71 6 37 -65 100 hhcurveto
+ -74 214 rmoveto
+ 47 13 41 25 39 hhcurveto
+ 83 14 -81 -53 -54 -17 -71 -79 -81 -19 82 55 17 2 17 4 16 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="oslash">
+ -25 431 59 rmoveto
+ 44 49 14 66 65 vvcurveto
+ 88 -31 88 -84 35 vhcurveto
+ 28 65 -6 11 -22 5 -10 -2 -29 -68 rlineto
+ 3 -14 -14 1 -16 hhcurveto
+ -70 -71 -22 -52 -47 hvcurveto
+ -48 -52 -7 -74 -69 vvcurveto
+ 5 -74 25 -73 62 -38 -34 -79 rcurveline
+ 2 -14 32 -8 37 85 rlineto
+ -6 19 22 -3 24 hhcurveto
+ 70 72 20 53 47 hvcurveto
+ -163 367 rmoveto
+ 18 16 -3 -6 14 hvcurveto
+ -145 -334 rlineto
+ -28 44 -9 63 49 vvcurveto
+ 26 2 26 6 25 vhcurveto
+ 74 18 54 36 54 hhcurveto
+ 132 -206 rmoveto
+ -83 -23 -110 -108 -28 -23 8 14 -18 vhcurveto
+ 150 345 rlineto
+ 41 -42 9 -76 -56 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="otilde">
+ -8 267 620 rmoveto
+ -26 12 -31 13 -26 -4 -35 -5 -19 -58 -8 -35 14 -5 rcurveline
+ 12 33 10 12 24 3 17 2 18 -4 15 -7 63 -30 rcurveline
+ 20 -9 22 -6 22 3 32 4 20 56 3 29 -13 5 rcurveline
+ -9 -23 -8 -13 -24 -3 -16 -2 -16 5 -14 6 rrcurveto
+ 117 -540 rmoveto
+ 44 49 14 66 65 vvcurveto
+ 112 -51 114 -147 -70 -71 -22 -52 -47 vhcurveto
+ -48 -52 -7 -74 -69 vvcurveto
+ -106 7 49 -104 138 hhcurveto
+ 70 72 20 53 47 hvcurveto
+ -163 367 rmoveto
+ 113 19 -124 -82 -83 -23 -110 -108 -109 -26 128 84 26 2 26 6 25 hvcurveto
+ 74 18 54 36 54 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="p">
+ 17 203 -206 rmoveto
+ -6 52 -3 97 -1 46 10 8 rcurveline
+ -5 19 20 -3 20 hhcurveto
+ 155 105 162 147 75 -35 92 -102 -69 -61 -31 -43 -54 hvcurveto
+ -8 4 rlineto
+ 44 -4 -16 31 -45 hhcurveto
+ -44 -52 -36 -32 -40 hvcurveto
+ 14 -19 rlineto
+ 14 24 28 15 21 hhcurveto
+ 30 9 -52 -45 hvcurveto
+ -221 vlineto
+ -57 -1 -205 -5 -58 vhcurveto
+ 10 -11 rlineto
+ 73 303 rmoveto
+ 1 -2 103 82 11 3 76 6 vvcurveto
+ 37 47 41 21 51 hhcurveto
+ 64 39 -77 -87 -95 -34 -115 -121 -33 -31 15 22 -24 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="paragraph">
+ -92 294 13 rmoveto
+ 62 -19 7 7 rlineto
+ -2 140 -5 141 141 vvcurveto
+ 59 2 59 3 59 vhcurveto
+ 3 40 33 9 38 5 rrcurveto
+ 18 vlineto
+ -7 7 -150 3 -148 3 -95 -95 -6 -106 rlinecurve
+ -4 -84 52 -97 128 -10 rrcurveto
+ 29 -2 67 2 -19 vvcurveto
+ -25 -6 -135 -1 -101 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="parenleft">
+ -288 246 -163 rmoveto
+ -129 25 -7 243 169 vvcurveto
+ 151 9 254 127 32 vhcurveto
+ 27 vlineto
+ -104 -18 -45 -114 -19 -96 rrcurveto
+ -15 -75 -5 -78 -77 vvcurveto
+ -81 4 -81 14 -80 vhcurveto
+ 17 -95 48 -121 105 -9 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="parenleft-ar">
+ 121 244 33 rmoveto
+ -16 -15 5 9 -15 hvcurveto
+ 9 -15 -10 5 -6 hhcurveto
+ -7 -7 -1 -4 -4 hvcurveto
+ 5 -9 rlineto
+ 1 2 2 1 2 hhcurveto
+ 13 8 -13 -11 7 hvcurveto
+ -27 17 24 -24 25 hhcurveto
+ 23 16 11 23 9 hvcurveto
+ 2 -1 rlineto
+ -7 -15 -3 -16 -16 vvcurveto
+ -26 17 -30 34 -34 vhcurveto
+ 7 -7 10 -9 12 -11 27 -25 rcurveline
+ 12 -11 8 -10 4 -8 rrcurveto
+ -12 -3 -6 -6 -10 vvcurveto
+ -12 7 -7 13 13 6 7 13 9 -6 12 -11 17 vhcurveto
+ -17 23 -11 19 -7 13 rrcurveto
+ -30 56 -16 67 77 vvcurveto
+ 76 -23 44 -47 11 vhcurveto
+ 1 vlineto
+ 47 11 23 44 76 vvcurveto
+ 77 16 68 30 56 vhcurveto
+ 7 13 11 19 17 23 rrcurveto
+ 11 17 6 12 9 vvcurveto
+ 13 -6 6 -13 -13 -7 -6 -12 -10 6 -6 12 -3 vhcurveto
+ -4 -8 -8 -10 -12 -11 -27 -26 rcurveline
+ -12 -11 -10 -9 -7 -7 rrcurveto
+ -34 -34 -17 -30 -26 vvcurveto
+ -16 3 -15 7 -15 vhcurveto
+ -2 -2 rlineto
+ 23 -9 -16 12 -23 hhcurveto
+ -20 -19 -13 -25 -18 hvcurveto
+ -11 -9 -10 -26 -18 hhcurveto
+ -2 -2 0 1 -2 hvcurveto
+ -5 -8 rlineto
+ -4 4 7 -1 7 hhcurveto
+ 6 10 5 9 15 hvcurveto
+ 9 15 15 5 16 hhcurveto
+ 45 33 -30 -45 -26 -10 -23 -21 -19 hvcurveto
+ -4 2 rlineto
+ 3 4 2 5 6 vvcurveto
+ 16 -11 11 -21 6 vhcurveto
+ -26 7 -14 16 22 vvcurveto
+ 8 2 8 3 9 vhcurveto
+ -8 4 rlineto
+ -30 -28 -15 -30 -34 vvcurveto
+ 9 -9 -10 5 -12 hhcurveto
+ -32 -20 -22 -25 -21 hvcurveto
+ -10 -11 -9 -8 -10 -5 4 -10 rcurveline
+ 2 3 6 1 7 hhcurveto
+ 6 6 -4 -7 6 hvcurveto
+ 13 -14 6 -7 0 vvcurveto
+ -13 14 15 -7 16 hhcurveto
+ 14 10 4 8 7 hvcurveto
+ -34 15 -31 30 -28 vhcurveto
+ 8 4 rlineto
+ -3 9 -2 9 8 vvcurveto
+ 22 14 15 26 7 vhcurveto
+ 21 6 11 12 16 vvcurveto
+ 6 -2 5 -3 4 vhcurveto
+ 4 1 rlineto
+ 21 -19 10 -22 -26 vvcurveto
+ -45 -33 -30 -45 vhcurveto
+ -29 164 rmoveto
+ -2 vlineto
+ -15 -8 -10 -10 -6 -12 rrcurveto
+ -24 5 -12 10 16 vvcurveto
+ 16 12 10 24 5 vhcurveto
+ 6 -12 10 -10 15 -8 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="parenright">
+ -286 11 709 rmoveto
+ 81 -29 23 -94 15 -75 rrcurveto
+ 15 -77 4 -80 -78 vvcurveto
+ -114 2 -122 -36 -107 vhcurveto
+ -20 -60 -38 -26 -46 -12 rrcurveto
+ -24 vlineto
+ 179 23 11 267 171 vvcurveto
+ 167 -21 262 -169 35 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="parenright-ar">
+ 121 241 359 rmoveto
+ 16 16 -5 -9 15 hvcurveto
+ -9 15 10 -5 6 hhcurveto
+ 7 6 1 4 4 hvcurveto
+ -4 8 rlineto
+ -1 -2 -2 0 -2 hhcurveto
+ -13 -9 13 11 -7 hvcurveto
+ 27 -17 -24 24 -25 hhcurveto
+ -23 -16 -12 -23 -9 hvcurveto
+ -2 2 rlineto
+ 7 15 3 15 16 vvcurveto
+ 26 -17 30 -34 34 vhcurveto
+ -7 7 -9 9 -12 11 -28 26 rcurveline
+ -12 11 -7 10 -4 8 rrcurveto
+ 12 3 5 6 10 vvcurveto
+ 12 -6 6 -13 -13 -7 -6 -13 -9 6 -12 11 -17 vhcurveto
+ 17 -23 12 -19 7 -13 rrcurveto
+ 30 -56 15 -68 -77 vvcurveto
+ -76 24 -44 47 -11 vhcurveto
+ -1 vlineto
+ -47 -11 -24 -44 -76 vvcurveto
+ -77 -15 -67 -30 -56 vhcurveto
+ -7 -13 -12 -19 -17 -23 rrcurveto
+ -11 -17 -6 -12 -9 vvcurveto
+ -13 7 -7 13 13 6 7 12 10 -5 6 -12 3 vhcurveto
+ 4 8 7 10 12 11 28 25 rcurveline
+ 12 11 9 9 7 7 rrcurveto
+ 34 34 17 30 26 vvcurveto
+ 16 -3 16 -7 15 vhcurveto
+ 2 1 rlineto
+ -23 9 16 -11 23 hhcurveto
+ 20 19 12 25 18 hvcurveto
+ 11 9 11 27 18 hhcurveto
+ 2 2 -1 -1 2 hvcurveto
+ 4 9 rlineto
+ 4 -4 -6 1 -7 hhcurveto
+ -6 -10 -5 -9 -15 hvcurveto
+ -9 -15 -16 -5 -16 hhcurveto
+ -45 -32 30 45 26 10 22 21 19 hvcurveto
+ 4 -1 rlineto
+ -3 -4 -2 -5 -6 vvcurveto
+ -16 11 -12 21 -6 vhcurveto
+ 26 -7 13 -15 -22 vvcurveto
+ -8 -1 -9 -3 -9 vhcurveto
+ 8 -4 rlineto
+ 30 28 14 31 34 vvcurveto
+ -9 9 11 -6 12 hhcurveto
+ 32 18 22 25 22 hvcurveto
+ 9 11 10 8 10 5 -4 10 rcurveline
+ -2 -3 -5 0 -7 hhcurveto
+ -6 -7 4 7 -6 hvcurveto
+ -18 20 rlineto
+ 14 -14 -15 7 -16 hhcurveto
+ -14 -11 -4 -8 -7 hvcurveto
+ 34 -14 30 -30 28 vhcurveto
+ -8 -4 rlineto
+ 3 -9 1 -8 -8 vvcurveto
+ -22 -13 -16 -26 -7 vhcurveto
+ -21 -6 -11 -11 -16 vvcurveto
+ -6 2 -5 3 -4 vhcurveto
+ -4 -2 rlineto
+ -21 19 -10 23 26 vvcurveto
+ 45 32 30 45 vhcurveto
+ 30 -164 rmoveto
+ 2 vlineto
+ 15 8 10 10 6 12 rrcurveto
+ 24 -5 11 -10 -16 vvcurveto
+ -16 -11 -10 -24 -5 vhcurveto
+ -6 12 -10 10 -15 8 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="partialdiff">
+ 22 100 548 rmoveto
+ 48 21 34 46 64 hhcurveto
+ 93 52 -94 -100 25 hvcurveto
+ -4 -4 rlineto
+ 10 -36 -23 3 -21 hhcurveto
+ -153 -74 -125 -129 -47 13 -71 34 -41 hvcurveto
+ -42 35 53 -9 58 hhcurveto
+ 42 41 18 28 33 hvcurveto
+ 82 69 15 113 101 vvcurveto
+ 158 -53 219 -175 -90 -56 -62 -82 -28 vhcurveto
+ 300 -430 rmoveto
+ -45 -15 -30 -47 -53 hhcurveto
+ -99 -23 124 48 91 37 129 117 27 27 -9 -11 25 hvcurveto
+ 8 -39 4 -40 -40 vvcurveto
+ -54 -7 -56 -18 -51 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="peh-ar">
+ 437 619 342 rmoveto
+ 13 -34 19 -64 -1 -23 rrcurveto
+ 0 -194 -97 -150 -87 -79 31 85 4 vhcurveto
+ 3 60 37 57 8 15 4 8 -8 5 -11 -16 rrcurveto
+ -54 -81 -37 -81 -55 vvcurveto
+ -165 178 14 11 166 205 106 108 53 vhcurveto
+ 60 120 -63 121 0 vvcurveto
+ -241 -567 rmoveto
+ -10 19 -11 16 -14 13 -49 46 -46 -45 -41 -55 -41 -56 -38 -66 -17 -33 -1 -1 rcurveline
+ 1 -44 25 34 94 211 60 -147 rlinecurve
+ 6 -15 5 5 4 5 27 35 26 37 20 41 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="percent">
+ 282 228 795 rmoveto
+ -85 -43 -83 -71 -92 vvcurveto
+ -71 44 -77 88 91 94 101 90 76 -73 67 -76 20 vhcurveto
+ 475 -18 rmoveto
+ -11 hlineto
+ -616 -746 -1 -14 28 -18 621 754 -1 13 rlineto
+ -545 -23 rmoveto
+ 85 -6 57 -67 -72 vvcurveto
+ -50 -14 -61 -72 -74 -41 74 63 45 14 48 45 26 vhcurveto
+ 446 -401 rmoveto
+ -85 -43 -83 -71 -92 vvcurveto
+ -71 44 -77 88 91 94 101 90 76 -73 67 -76 20 vhcurveto
+ -50 -52 rmoveto
+ 85 -6 57 -67 -72 vvcurveto
+ -50 -14 -61 -72 -74 -41 74 63 45 14 48 45 26 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="percent-ar">
+ 76 24 429 rmoveto
+ 83 -50 68 115 -83 48 rlineto
+ -30 -604 rmoveto
+ 70 32 264 544 -71 -34 rlineto
+ -59 -470 rmoveto
+ 83 -51 68 115 -83 49 rlineto
+ endchar
+ </CharString>
+ <CharString name="period">
+ -273 69 52 rmoveto
+ -37 30 -30 37 37 30 30 37 37 -30 30 -37 -37 -30 -30 -37 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="periodcentered">
+ -273 69 257 rmoveto
+ -37 30 -30 37 37 30 30 37 37 -30 30 -37 -37 -30 -30 -37 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="phi">
+ 99 365 -156 rmoveto
+ -7 49 -4 50 49 vvcurveto
+ 9 10 70 2 67 21 50 50 rlinecurve
+ 48 48 21 69 67 vvcurveto
+ 124 -70 90 -185 vhcurveto
+ -8 10 rlineto
+ 68 3 68 5 67 vhcurveto
+ -7 8 -82 -42 rlineto
+ 4 -56 2 -57 -57 vvcurveto
+ -9 -9 rlineto
+ -42 -83 -21 -47 -47 hvcurveto
+ -50 -51 -24 -70 -72 vvcurveto
+ -115 50 -96 197 -5 vhcurveto
+ 8 -9 rlineto
+ -57 -4 -55 -1 -57 vhcurveto
+ 17 -10 rlineto
+ 61 234 rmoveto
+ 392 vlineto
+ 9 9 47 -1 46 -7 34 -34 rlinecurve
+ 36 -37 11 -52 -51 vvcurveto
+ -105 -62 -116 -113 -7 vhcurveto
+ -81 400 rmoveto
+ -395 vlineto
+ -8 -9 rlineto
+ -110 -54 114 99 56 12 59 41 41 hvcurveto
+ 30 30 49 13 31 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="phi1">
+ 97 265 -197 rmoveto
+ 69 21 rlineto
+ -5 54 -3 53 54 vvcurveto
+ 7 8 81 11 77 28 58 58 rlinecurve
+ 49 49 19 69 69 vvcurveto
+ 96 -50 91 -111 -42 -51 -11 -37 -43 vhcurveto
+ -58 -50 -8 -65 -61 vvcurveto
+ -205 vlineto
+ -7 -7 rlineto
+ -19 -27 9 37 -37 hvcurveto
+ -48 47 -13 79 67 vvcurveto
+ 81 31 58 84 39 vhcurveto
+ -12 22 rlineto
+ -99 -29 -84 -83 -106 vvcurveto
+ -69 18 -60 45 -52 vhcurveto
+ 52 -60 50 -10 59 -6 7 -7 rcurveline
+ -2 -168 rlineto
+ 74 216 rmoveto
+ 232 vlineto
+ 91 29 69 82 82 15 -120 -28 -66 -15 -74 -45 -46 vhcurveto
+ -38 -39 -49 -24 -54 -2 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="pi">
+ 51 171 460 rmoveto
+ -58 -61 -1 -58 -18 hvcurveto
+ -28 -113 21 -9 18 46 rlineto
+ 59 23 26 10 49 hhcurveto
+ 74 hlineto
+ -25 -112 -54 -143 -67 -116 1 -13 rcurveline
+ 55 -15 11 10 44 128 45 131 27 130 rlinecurve
+ 143 hlineto
+ 6 -6 rlineto
+ -10 -80 -6 -80 -81 vvcurveto
+ -45 2 -63 29 -27 vhcurveto
+ -12 12 22 0 19 hhcurveto
+ 41 41 32 28 31 hvcurveto
+ -10 17 -6 2 rlineto
+ -10 -15 -16 -6 -18 hhcurveto
+ -65 2 129 90 34 4 36 2 35 hvcurveto
+ 7 7 38 1 37 11 34 16 rlinecurve
+ 35 59 -8 7 rlineto
+ -18 -34 -38 -10 -39 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="pi1">
+ 230 356 302 rmoveto
+ 2 -22 3 -22 -22 vvcurveto
+ -81 -26 -108 -104 -83 -29 104 73 53 17 52 38 37 vhcurveto
+ -10 21 rlineto
+ -74 -51 -50 -58 -84 vvcurveto
+ -88 38 -114 105 73 63 39 53 49 vhcurveto
+ 8 -1 rlineto
+ -58 20 49 -37 58 hhcurveto
+ 134 112 176 142 161 -141 74 -207 -155 -63 -26 -26 -42 hvcurveto
+ -45 -28 -30 -37 -33 -39 15 -16 rcurveline
+ 68 68 46 40 200 hhcurveto
+ 87 110 -9 -61 59 hvcurveto
+ 51 -54 13 -46 -58 vvcurveto
+ -84 -38 -109 -97 -57 -45 45 63 vhcurveto
+ 154 vlineto
+ -8 12 rlineto
+ endchar
+ </CharString>
+ <CharString name="plus">
+ 202 392 586 rmoveto
+ -40 -6 rlineto
+ -304 -303 vlineto
+ -7 -40 rlineto
+ 310 -310 hlineto
+ 40 7 rlineto
+ 303 308 vlineto
+ 5 40 rlineto
+ -313 hlineto
+ endchar
+ </CharString>
+ <CharString name="plusminus">
+ 218 399 586 rmoveto
+ -40 -6 rlineto
+ -304 -303 vlineto
+ -7 -40 rlineto
+ 310 -271 -303 hlineto
+ -7 -40 rlineto
+ 658 hlineto
+ 6 40 rlineto
+ -314 271 308 hlineto
+ 5 40 rlineto
+ -313 hlineto
+ endchar
+ </CharString>
+ <CharString name="psi">
+ 159 358 -189 rmoveto
+ 76 35 rlineto
+ -7 49 -2 51 50 vvcurveto
+ 7 8 rlineto
+ 139 29 108 114 139 vvcurveto
+ 66 -25 64 -41 51 vhcurveto
+ -21 3 -44 -48 -3 -13 rlineto
+ 36 -39 27 -49 -54 vvcurveto
+ -56 -11 -53 -36 -44 vhcurveto
+ -14 -18 -53 -54 -63 -5 -6 7 rcurveline
+ 352 vlineto
+ 98 0 164 2 30 vhcurveto
+ -7 7 -80 -33 rlineto
+ 6 -101 6 -108 -96 vvcurveto
+ -315 vlineto
+ -7 -6 rlineto
+ -44 -51 23 21 -22 hvcurveto
+ -29 28 -12 41 80 vvcurveto
+ 129 vlineto
+ 116 -35 -2 -29 -47 -49 -35 -31 -39 vhcurveto
+ 17 -21 rlineto
+ 13 20 25 17 19 hhcurveto
+ 38 6 -60 -30 hvcurveto
+ -153 vlineto
+ -106 42 -64 190 vhcurveto
+ 7 -8 rlineto
+ -176 vlineto
+ endchar
+ </CharString>
+ <CharString name="q">
+ -37 451 -214 rmoveto
+ -8 89 -4 116 122 vvcurveto
+ 132 4 139 10 116 vhcurveto
+ -21 4 -44 -59 -9 -2 rlineto
+ 14 -28 -40 14 -31 hhcurveto
+ -169 -71 -146 -139 -84 38 -109 105 63 58 28 38 51 hvcurveto
+ 7 -5 -3 -96 -2 -144 -3 -41 rlinecurve
+ 16 -16 rlineto
+ -8 348 rmoveto
+ -29 -33 -44 -21 -39 hhcurveto
+ -82 -32 75 83 112 34 109 113 26 23 -14 -18 18 hvcurveto
+ 16 -16 0 -30 -25 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="qaf-ar">
+ 270 500 125 rmoveto
+ 45 65 49 148 -9 79 -7 59 -62 102 -45 -62 -27 -37 -19 -46 -22 -41 -10 -19 -1 -34 19 -9 32 -16 37 15 21 18 7 6 3 -11 1 -3 7 -21 1 -61 -1 -25 rrcurveto
+ -73 -67 -232 -102 -15 166 -5 52 18 62 2 45 rrcurveto
+ 8 -10 8 -8 -1 vhcurveto
+ -60 -9 -42 -27 -37 -34 -19 -47 -16 -48 -16 -49 32 43 46 33 64 10 rrcurveto
+ 11 2 2 -18 -9 vvcurveto
+ 1 -20 -3 -18 -3 -18 -48 -252 273 11 119 172 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="qaf-ar.fina">
+ 270 500 125 rmoveto
+ 45 65 49 148 -9 79 -7 59 -62 102 -45 -62 -27 -37 -14 -44 -22 -41 -10 -19 -1 -29 22 -15 25 -17 45 6 16 4 12 -17 3 -50 -1 -25 -73 -67 -232 -102 -15 166 rrcurveto
+ -5 52 18 62 2 45 rrcurveto
+ 8 -10 8 -8 -1 vhcurveto
+ -60 -9 -42 -27 -37 -34 -19 -47 -16 -48 -16 -49 32 43 46 33 64 10 rrcurveto
+ 11 2 2 -18 -9 vvcurveto
+ 1 -20 -3 -18 -3 -18 -48 -252 273 11 119 172 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="qafDotless-ar">
+ 124 103 414 rmoveto
+ 4 -2 3 -4 -3 -4 -3 -6 -3 vhcurveto
+ -59 -111 -28 -86 -58 vvcurveto
+ -96 41 -53 78 -7 vhcurveto
+ 38 -4 42 9 44 22 107 53 52 101 30 141 18 83 -15 66 -46 47 -11 11 -28 15 -16 -18 -31 -35 -17 -50 -22 -44 -13 -25 1 -20 14 -16 17 -19 43 -2 32 8 rrcurveto
+ 11 -17 4 -47 -28 vvcurveto
+ -39 -37 -79 -40 -69 -11 -66 -11 -69 18 -11 49 rrcurveto
+ -2 9 -1 10 10 vvcurveto
+ 12 2 13 3 13 vhcurveto
+ 10 41 32 57 15 35 rrcurveto
+ 2 6 2 4 4 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="qafDotless-ar.fina">
+ 124 103 414 rmoveto
+ 4 -2 3 -4 -3 -4 -3 -6 -3 vhcurveto
+ -59 -111 -28 -86 -58 vvcurveto
+ -96 41 -53 78 -7 vhcurveto
+ 38 -4 42 9 44 22 107 53 52 101 30 141 18 83 -15 66 -46 47 -11 11 -28 15 -16 -18 -31 -35 -17 -50 -22 -44 -13 -25 1 -20 14 -16 17 -19 43 -2 32 8 rrcurveto
+ 11 -17 4 -47 -28 vvcurveto
+ -39 -37 -79 -40 -69 -11 -66 -11 -69 18 -11 49 rrcurveto
+ -2 9 -1 10 10 vvcurveto
+ 12 2 13 3 13 vhcurveto
+ 10 41 32 57 15 35 rrcurveto
+ 2 6 2 4 4 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="qafDotless-ar.fina.jalt">
+ 485 543 154 rmoveto
+ -80 -18 -77 -6 -73 5 -73 5 -71 32 -68 59 -27 23 -16 21 -2 19 -2 19 5 16 13 15 52 59 61 42 70 25 70 25 73 18 75 10 52 113 rcurveline
+ -79 -3 -79 -18 -80 -35 -80 -35 -67 -47 -53 -61 -35 -40 -24 -43 -15 -46 -37 -114 46 -76 71 -51 44 -32 65 -21 85 -11 69 -9 78 10 89 26 89 26 69 40 48 53 rrcurveto
+ 51 56 50 123 -46 93 -13 24 -16 20 -20 14 -20 14 -17 -4 -17 -22 -27 -37 -19 -46 -22 -41 -10 -19 -1 -33 19 -10 33 -17 38 18 19 16 5 6 8 -9 8 -24 rrcurveto
+ 12 -36 0 0 0 vvcurveto
+ -16 -14 -32 -15 -49 -18 -49 -18 -35 -12 -20 -4 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="qafDotless-ar.jalt">
+ 485 543 154 rmoveto
+ -80 -18 -77 -6 -73 5 -73 5 -71 32 -68 59 -27 23 -16 21 -2 19 -2 19 5 16 13 15 52 59 61 42 70 25 70 25 73 18 75 10 52 113 rcurveline
+ -79 -3 -79 -18 -80 -35 -80 -35 -67 -47 -53 -61 -35 -40 -24 -43 -15 -46 -37 -114 46 -76 71 -51 44 -32 65 -21 85 -11 69 -9 78 10 89 26 89 26 69 40 48 53 rrcurveto
+ 51 56 50 123 -46 93 -13 24 -16 20 -20 14 -20 14 -17 -4 -17 -22 -27 -37 -19 -46 -22 -41 -10 -19 -1 -33 19 -10 33 -17 38 18 19 16 5 6 8 -9 8 -24 rrcurveto
+ 12 -36 0 0 0 vvcurveto
+ -16 -14 -32 -15 -49 -18 -49 -18 -35 -12 -20 -4 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="question">
+ -192 162 222 rmoveto
+ -16 12 -11 20 20 vvcurveto
+ 62 122 61 47 79 vhcurveto
+ 17 29 13 27 33 vvcurveto
+ 77 -53 51 -76 -79 -105 -53 -83 -26 10 -27 18 -16 vhcurveto
+ 67 40 rlineto
+ -19 15 -13 22 24 vvcurveto
+ 45 42 27 39 50 48 -62 -54 -113 -99 -44 -64 -83 vhcurveto
+ -13 -16 -13 -19 -20 vvcurveto
+ -30 19 -27 23 -14 vhcurveto
+ 46 32 rlineto
+ -80 -165 rmoveto
+ -31 25 -26 31 32 26 26 31 31 -26 26 -32 -31 -25 -26 -31 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="question-ar">
+ -19 320 755 rmoveto
+ -6 5 1 5 -2 3 -16 28 -25 25 -40 3 -140 9 -72 -182 19 -107 19 -45 30 -35 34 -31 53 -48 47 -87 -31 -101 -2 -7 10 1 2 4 28 54 32 53 3 78 rrcurveto
+ -9 84 -44 52 -46 47 -30 31 -36 30 -10 50 22 17 29 9 33 -1 45 -2 34 -28 3 -44 1 -13 18 9 4 8 18 40 12 43 12 43 rrcurveto
+ -214 -670 rmoveto
+ -3 -4 0 -5 4 -3 72 -70 rcurveline
+ 4 -3 6 -1 3 4 88 92 rcurveline
+ 3 4 1 5 -4 3 -73 70 rcurveline
+ -4 3 -5 1 -3 -4 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="questiondown">
+ -192 271 442 rmoveto
+ 31 -25 26 -31 -32 -26 -26 -31 -31 26 -26 32 31 25 26 31 vhcurveto
+ -80 -176 rmoveto
+ 16 -12 11 -20 -20 vvcurveto
+ -62 -122 -61 -47 -79 vhcurveto
+ -17 -29 -13 -27 -33 vvcurveto
+ -77 53 -51 76 79 105 53 83 26 -10 27 -18 16 vhcurveto
+ -67 -40 rlineto
+ 19 -15 13 -22 -24 vvcurveto
+ -45 -42 -27 -39 -50 -48 62 54 113 99 44 64 83 vhcurveto
+ 13 16 13 19 20 vvcurveto
+ 30 -19 27 -23 14 vhcurveto
+ -46 -32 rlineto
+ endchar
+ </CharString>
+ <CharString name="quotedbl">
+ -212 118 432 rmoveto
+ 21 191 rlineto
+ 52 vlineto
+ 14 -19 6 -14 -25 -9 -17 -21 -24 2 -25 3 -24 vhcurveto
+ 20 -152 rlineto
+ 142 hmoveto
+ 19 194 rlineto
+ 1 15 0 16 16 vvcurveto
+ 13 -18 6 -11 -18 -21 -5 -19 -5 3 -24 2 -14 vhcurveto
+ 22 -193 rlineto
+ endchar
+ </CharString>
+ <CharString name="quotedblbase">
+ 80 116 137 rmoveto
+ -58 -61 rlineto
+ -20 vlineto
+ 42 -14 21 -26 -39 vvcurveto
+ -5 -48 -13 -31 -24 -14 rrcurveto
+ -21 vlineto
+ 22 22 20 38 23 hvcurveto
+ 23 38 12 37 35 vvcurveto
+ 28 -8 25 -14 21 vhcurveto
+ 21 -14 -15 11 -14 hhcurveto
+ 173 hmoveto
+ -59 -61 rlineto
+ -20 vlineto
+ 42 -14 21 -26 -39 vvcurveto
+ -5 -48 -13 -31 -24 -14 rrcurveto
+ -21 vlineto
+ 22 23 20 38 23 hvcurveto
+ 23 38 12 37 35 vvcurveto
+ 28 -8 25 -14 21 vhcurveto
+ 21 -14 -15 11 -14 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="quotedblleft">
+ 80 156 496 rmoveto
+ 58 61 rlineto
+ 21 vlineto
+ -42 14 -21 25 39 vvcurveto
+ 5 48 13 31 24 14 rrcurveto
+ 21 vlineto
+ -22 -23 -19 -38 -23 hvcurveto
+ -23 -38 -11 -38 -35 vvcurveto
+ -28 8 -25 14 -21 vhcurveto
+ -21 14 15 -11 14 hhcurveto
+ 172 hmoveto
+ 58 61 rlineto
+ 21 vlineto
+ -42 14 -21 25 39 vvcurveto
+ 5 48 14 31 24 14 rrcurveto
+ 21 vlineto
+ -22 -23 -19 -38 -23 hvcurveto
+ -23 -38 -12 -38 -35 vvcurveto
+ -28 8 -25 14 -21 vhcurveto
+ -21 14 15 -11 14 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="quotedblright">
+ 80 116 770 rmoveto
+ -58 -61 rlineto
+ -21 vlineto
+ 42 -14 21 -25 -39 vvcurveto
+ -5 -48 -13 -31 -24 -14 rrcurveto
+ -21 vlineto
+ 22 22 19 38 23 hvcurveto
+ 23 38 12 38 35 vvcurveto
+ 28 -8 25 -14 21 vhcurveto
+ 21 -14 -15 11 -14 hhcurveto
+ 173 hmoveto
+ -59 -61 rlineto
+ -21 vlineto
+ 42 -14 21 -25 -39 vvcurveto
+ -5 -48 -13 -31 -24 -14 rrcurveto
+ -21 vlineto
+ 22 23 19 38 23 hvcurveto
+ 23 38 12 38 35 vvcurveto
+ 28 -8 25 -14 21 vhcurveto
+ 21 -14 -15 11 -14 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="quoteleft">
+ -93 156 496 rmoveto
+ 58 61 rlineto
+ 21 vlineto
+ -42 14 -21 25 39 vvcurveto
+ 5 48 13 31 24 14 rrcurveto
+ 21 vlineto
+ -22 -23 -19 -38 -23 hvcurveto
+ -23 -38 -11 -38 -35 vvcurveto
+ -28 8 -25 14 -21 vhcurveto
+ -21 14 15 -11 14 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="quoteleft#1">
+ -345 115 532 rmoveto
+ -9 14 -5 15 16 vvcurveto
+ 35 28 47 21 36 vhcurveto
+ -14 14 rlineto
+ -39 -49 -56 -68 -51 vvcurveto
+ -48 44 -87 30 15 33 24 18 8 -11 19 -5 8 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="quoteright">
+ -93 116 770 rmoveto
+ -58 -61 rlineto
+ -21 vlineto
+ 42 -14 21 -25 -39 vvcurveto
+ -5 -48 -13 -31 -24 -14 rrcurveto
+ -21 vlineto
+ 22 22 19 38 23 hvcurveto
+ 23 38 12 38 35 vvcurveto
+ 28 -8 25 -14 21 vhcurveto
+ 21 -14 -15 11 -14 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="quoteright#1">
+ -348 66 395 rmoveto
+ 35 53 54 54 62 vvcurveto
+ 42 -43 89 -28 -16 -32 -26 -15 -7 8 -16 6 -10 vhcurveto
+ 35 -57 rlineto
+ 7 -13 6 -12 -14 vvcurveto
+ -40 -24 -38 -24 -41 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="quotesinglbase">
+ -93 116 137 rmoveto
+ -58 -61 rlineto
+ -20 vlineto
+ 42 -14 21 -26 -39 vvcurveto
+ -5 -48 -13 -31 -24 -14 rrcurveto
+ -21 vlineto
+ 22 22 20 38 23 hvcurveto
+ 23 38 12 37 35 vvcurveto
+ 28 -8 25 -14 21 vhcurveto
+ 21 -14 -15 11 -14 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="quotesingle">
+ -335 110 436 rmoveto
+ 26 186 rlineto
+ 2 13 2 16 11 vvcurveto
+ 19 -9 14 -21 -19 -17 -10 -19 -13 1 -12 1 -12 vhcurveto
+ 18 -193 rlineto
+ endchar
+ </CharString>
+ <CharString name="r">
+ -129 406 388 rmoveto
+ 52 -5 -25 27 -49 hhcurveto
+ -36 -45 -42 -28 -29 hvcurveto
+ -10 4 rlineto
+ 42 -6 -21 30 -45 hhcurveto
+ -41 -55 -44 -31 -39 hvcurveto
+ 12 -17 rlineto
+ 14 25 30 17 23 hhcurveto
+ 46 -3 -91 -78 -80 -6 -87 -6 -70 hvcurveto
+ 15 -9 70 21 rlineto
+ -2 51 -1 50 51 vvcurveto
+ 54 -7 83 14 33 vhcurveto
+ 27 11 25 35 41 hhcurveto
+ 33 15 -30 -28 5 hvcurveto
+ 12 -5 rlineto
+ endchar
+ </CharString>
+ <CharString name="registered">
+ 87 45 437 rmoveto
+ -150 121 -121 150 150 121 121 150 150 -121 121 -150 -150 -121 -121 -150 vhcurveto
+ 25 hmoveto
+ 136 110 110 136 136 110 -110 -136 -136 -110 -110 -136 -136 -110 110 136 vhcurveto
+ 257 -1 rmoveto
+ 72 6 57 28 70 vvcurveto
+ 48 -52 22 -70 vhcurveto
+ -162 hlineto
+ -4 -4 -1 -8 rlineto
+ 5 41 -6 -16 hvcurveto
+ -28 2 -50 -8 vvcurveto
+ -72 0 -74 -5 -72 vhcurveto
+ 6 -5 50 15 rlineto
+ -3 48 0 48 48 vvcurveto
+ 4 4 -2 -2 4 hvcurveto
+ 18 -14 75 -82 56 -60 60 13 rcurveline
+ 5 vlineto
+ -158 148 rlineto
+ -64 23 rmoveto
+ 2 2 88 2 32 vhcurveto
+ 10 2 3 5 vhcurveto
+ 24 hlineto
+ 44 57 -8 -50 -60 -64 -24 -66 -4 -2 4 3 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="reh-ar">
+ 105 448 272 rmoveto
+ -1 7 -9 1 -3 -8 -16 -35 -23 -28 -30 -20 -64 -43 -79 -27 -81 -25 -236 -73 96 -17 156 -4 101 -3 67 33 45 54 31 37 33 84 13 67 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="reh-ar.fina">
+ 46 375 139 rmoveto
+ 15 8 3 31 -20 3 -7 1 -5 -3 -5 -6 rrcurveto
+ 1 vlineto
+ -13 -15 -15 -9 -18 -5 -96 -25 -110 -12 -90 -32 -9 -4 -3 -4 6 -5 8 -7 26 -10 44 -13 44 -13 27 -9 11 -2 85 -17 43 18 31 59 13 26 14 26 21 18 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="rehVbelow-ar">
+ 105 448 272 rmoveto
+ -1 7 -9 1 -3 -8 -16 -35 -23 -28 -30 -20 -64 -43 -79 -27 -81 -25 -236 -73 96 -17 156 -4 101 -3 67 33 45 54 31 37 33 84 13 67 rrcurveto
+ -197 -506 rmoveto
+ -21 37 -26 39 -32 38 -8 -14 -7 -14 -7 -15 33 -40 34 -41 18 -54 rrcurveto
+ -1 0 0 1 14 3 23 9 4 vhcurveto
+ 17 39 18 35 27 31 rrcurveto
+ 13 3 14 4 14 vhcurveto
+ -3 hlineto
+ -27 -35 -25 -36 -20 -42 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="rho">
+ -61 133 -169 rmoveto
+ 2 4 4 8 1 vvcurveto
+ -20 78 -4 72 -3 80 7 1 rcurveline
+ -50 33 45 -28 54 hhcurveto
+ 120 84 136 118 58 -9 74 -40 40 hvcurveto
+ 36 -37 -47 18 -51 hhcurveto
+ -54 -57 -16 -36 -41 hvcurveto
+ -76 -67 3 -105 -120 vvcurveto
+ -105 5 -105 6 -104 vhcurveto
+ 20 -8 rlineto
+ 40 420 rmoveto
+ 90 28 120 111 91 20 -117 -90 -87 -41 -100 -104 -84 -21 107 77 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="ring">
+ -45 153 575 rmoveto
+ -54 43 -43 54 54 43 43 54 54 -43 43 -54 -54 -43 -43 -54 vhcurveto
+ 30 hmoveto
+ 37 30 30 37 37 30 -30 -37 -37 -30 -30 -37 -37 -30 30 37 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="ringcomb">
+ -545 -97 575 rmoveto
+ -54 43 -43 54 54 43 43 54 54 -43 43 -54 -54 -43 -43 -54 vhcurveto
+ 30 hmoveto
+ 37 30 30 37 37 30 -30 -37 -37 -30 -30 -37 -37 -30 30 37 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="rnoon-ar">
+ 99 198 719 rmoveto
+ 8 -125 29 46 -8 125 rlineto
+ 82 -159 rmoveto
+ 13 18 18 15 -16 20 -13 16 -30 -9 -12 -11 -25 -24 -23 -25 -23 -26 -34 -6 -38 -3 -40 1 rrcurveto
+ -2 -2 -4 -1 2 hvcurveto
+ 29 -17 15 -15 25 -2 11 -1 13 1 17 4 51 13 38 21 26 35 rrcurveto
+ -19 9 rmoveto
+ 2 -3 2 -6 -4 -2 -22 -11 -27 -5 -27 -5 14 14 13 15 18 10 11 6 15 -4 5 -9 rrcurveto
+ 59 -490 rmoveto
+ 76 109 31 145 -59 124 -54 -125 rcurveline
+ 14 -44 13 -45 -2 -56 -64 -59 -99 -47 -118 21 -107 46 88 134 31 69 9 24 -13 4 -8 -16 -256 -466 372 -29 146 211 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="rreh-ar">
+ 105 334 600 rmoveto
+ 8 -125 29 46 -8 125 rlineto
+ 82 -159 rmoveto
+ 13 18 18 15 -16 20 -13 16 -30 -9 -12 -11 -25 -24 -23 -25 -23 -26 -34 -6 -38 -3 -40 1 rrcurveto
+ -2 -2 -4 -1 2 hvcurveto
+ 29 -17 15 -15 25 -2 11 -1 13 1 17 4 51 13 38 21 26 35 rrcurveto
+ -19 9 rmoveto
+ 2 -3 2 -6 -4 -2 -22 -11 -27 -5 -27 -5 14 14 13 15 18 10 11 6 15 -4 5 -9 rrcurveto
+ 22 -224 rmoveto
+ -1 7 -9 1 -3 -8 -16 -35 -23 -28 -30 -20 -64 -43 -79 -27 -81 -25 -236 -73 96 -17 156 -4 101 -3 67 33 45 54 31 37 33 84 13 67 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="s">
+ -166 342 383 rmoveto
+ 61 -3 -58 22 -52 hhcurveto
+ -83 -90 -53 -90 -66 62 -36 63 -26 hvcurveto
+ 47 -20 52 -27 -51 vvcurveto
+ -41 -43 -35 -42 -63 -47 53 62 -4 vhcurveto
+ -14 1 -49 -71 rlineto
+ -63 33 54 -20 60 hhcurveto
+ 88 100 53 102 47 -38 36 -77 33 hvcurveto
+ -73 31 -37 25 40 vvcurveto
+ 46 35 35 47 45 17 -34 -44 3 vhcurveto
+ 12 -7 rlineto
+ endchar
+ </CharString>
+ <CharString name="sad-ar">
+ 517 349 126 rmoveto
+ 34 49 25 56 12 58 33 5 49 10 40 10 87 22 90 51 53 71 34 45 45 59 -42 50 -34 40 -77 -20 -31 -29 rrcurveto
+ -110 -105 -71 -86 0 vvcurveto
+ -59 -13 3 32 -33 73 -54 -125 rcurveline
+ 14 -44 13 -45 -2 -56 -64 -59 -124 -59 -93 33 -105 37 86 143 31 69 9 24 -13 4 -8 -16 -256 -466 372 -29 146 211 rrcurveto
+ 372 373 rmoveto
+ 4 -8 6 -13 -11 -5 -57 -27 -68 -14 -70 -14 36 37 34 39 47 25 28 15 39 -13 12 -22 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="sad-ar.fina">
+ 199 550 416 rmoveto
+ -5 -1 -13 -2 -22 -4 -22 -4 -18 0 -16 4 -14 3 -9 9 -6 16 -6 16 -9 22 -13 28 -54 -125 rcurveline
+ 13 -44 13 -44 -1 -57 -32 -29 -40 -24 -48 -19 -48 -19 -54 -4 -59 11 -45 19 -15 36 15 60 11 44 30 53 16 36 8 23 -12 5 -8 -16 -64 -116 -29 -90 6 -64 rrcurveto
+ 6 -64 22 -42 40 -19 40 -19 47 0 56 21 56 21 46 36 37 53 35 51 23 54 12 58 76 11 76 14 74 17 74 17 63 44 52 70 17 22 16 25 14 28 rrcurveto
+ 14 28 -2 26 -21 25 -17 20 -25 7 -31 -6 -31 -6 -23 -10 -16 -14 -45 -45 -64 -68 -44 -48 -17 -19 -9 -10 -1 -1 rrcurveto
+ 235 88 rmoveto
+ 7 -14 -1 -8 -8 -4 -57 -27 -68 -15 -70 -14 36 37 35 38 47 26 29 16 39 -15 11 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="sad-ar.fina.jalt">
+ 735 293 7 rmoveto
+ 49 -6 57 -2 65 3 143 6 130 36 97 58 53 32 39 42 25 51 5 11 2 6 1 3 74 11 75 16 75 23 75 23 62 46 51 68 17 22 16 25 14 28 rrcurveto
+ 14 28 -3 26 -21 25 -17 20 -24 7 -31 -6 -31 -6 -23 -10 -16 -14 -45 -45 -64 -68 -44 -48 -17 -19 -10 -10 -1 -1 -31 -7 -82 -20 -4 46 -1 12 -2 15 -3 19 rrcurveto
+ -4 19 -8 1 -11 -17 -68 -102 rcurveline
+ 10 -28 22 -60 -2 -33 rrcurveto
+ 0 0 0 -73 -32 vhcurveto
+ -49 -21 -42 -15 -36 -7 -72 -16 -80 -8 -80 -6 -157 -2 -120 36 -85 73 -32 27 -15 24 2 20 2 20 11 18 18 18 61 58 75 42 90 28 90 28 86 14 82 3 53 113 rcurveline
+ -79 -3 -72 -10 -64 -17 -143 -37 -114 -57 -80 -102 -79 -101 -27 -123 92 -100 43 -47 77 -30 109 -14 rrcurveto
+ 1028 469 rmoveto
+ 7 -14 -1 -8 -8 -4 -57 -28 -67 -14 -71 -14 36 37 34 39 47 26 29 15 40 -15 11 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="sad-ar.init">
+ 357 242 16 rmoveto
+ 13 15 1 3 16 hvcurveto
+ 40 6 62 17 33 9 40 15 37 18 34 22 61 39 39 50 34 66 rrcurveto
+ 6 11 2 11 11 vvcurveto
+ 37 -32 33 -38 -38 -36 -17 -16 -17 vhcurveto
+ -64 -60 -59 -64 -57 -67 -19 -4 -20 -3 -23 -2 -1 1 rcurveline
+ 14 32 10 23 5 16 rrcurveto
+ 1 2 0 4 6 vvcurveto
+ 4 0 1 -1 -1 -1 -1 -2 -2 vhcurveto
+ -9 -21 -14 -17 -20 -11 -29 -16 -77 -13 -124 -8 -22 -132 rcurveline
+ 54 5 109 20 41 17 rrcurveto
+ -1 -3 0 -3 -3 vvcurveto
+ -15 20 -2 19 vhcurveto
+ 331 197 rmoveto
+ -5 -2 -3 -4 -2 vhcurveto
+ -57 -28 -67 -14 -71 -14 36 36 34 41 47 25 rrcurveto
+ 5 8 10 1 9 hhcurveto
+ 29 28 -17 -25 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="sad-ar.init.ain">
+ 414 274 37 rmoveto
+ -5 -15 6 -10 18 -1 60 -5 78 28 45 14 40 15 37 18 34 22 61 39 38 50 34 66 14 28 -3 26 -21 25 -17 20 -24 7 -31 -6 -31 -6 -24 -10 -15 -14 rrcurveto
+ -64 -60 -59 -65 -57 -66 -4 -1 -9 -1 -14 -3 -21 -5 rcurveline
+ 15 33 9 24 5 15 rrcurveto
+ 1 1 0 4 6 vvcurveto
+ 6 -1 2 -4 -5 vhcurveto
+ -9 -22 -14 -16 -20 -11 -27 -15 -34 -10 -41 -3 -41 -3 -28 -3 -17 -1 rrcurveto
+ -1 hlineto
+ -55 3 -31 16 -8 28 -13 -35 -13 -44 -13 -49 1 -15 6 -11 11 -7 26 -17 27 1 46 1 48 7 72 14 37 16 rrcurveto
+ 349 188 rmoveto
+ 7 -14 0 -9 -8 -4 -57 -27 -68 -14 -70 -14 36 37 33 38 47 26 29 15 40 -14 11 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="sad-ar.init.dal">
+ 357 262 119 rmoveto
+ 13 29 9 22 7 21 2 3 1 20 -7 -10 -8 -21 -16 -17 -19 -11 -38 -21 -79 -10 -43 11 -26 7 -13 33 5 30 1 3 -3 1 -3 -4 -42 -57 -33 -107 67 -33 rrcurveto
+ 44 -22 76 26 39 16 -12 -41 98 14 71 15 102 22 101 44 64 86 34 45 45 59 -42 50 -34 40 -78 -20 -31 -29 -64 -60 -60 -65 -57 -66 -18 -4 -37 -7 -16 8 rrcurveto
+ 307 91 rmoveto
+ 4 -8 5 -14 -11 -5 -57 -27 -68 -14 -70 -14 36 37 34 39 47 25 28 15 40 -12 12 -22 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="sad-ar.init.feh">
+ 485 430 223 rmoveto
+ 6 -2 2 -4 -5 vhcurveto
+ -9 -22 -14 -17 -19 -11 -15 -8 -25 -9 -35 -10 -70 -20 -176 -33 -22 80 -13 -34 -13 -43 -13 -51 1 -29 27 -14 28 -3 94 -9 116 28 67 28 -5 -15 9 -9 20 -2 rrcurveto
+ 20 -2 23 1 27 4 33 5 59 12 24 8 40 15 38 18 34 22 61 39 38 50 34 66 14 28 -3 26 -21 25 -17 20 -24 7 -31 -6 -31 -6 -24 -10 -15 -14 rrcurveto
+ -64 -60 -59 -65 -58 -66 -13 -3 -31 -4 -11 7 6 15 5 13 5 11 rrcurveto
+ 6 15 8 10 19 vvcurveto
+ 260 5 rmoveto
+ 7 -14 0 -9 -8 -4 -57 -27 -68 -14 -70 -14 36 37 34 38 47 26 29 15 39 -14 11 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="sad-ar.init.hah">
+ 469 439 300 rmoveto
+ -12 -3 -15 -2 -18 -1 -18 -1 -9 8 -1 20 -4 37 -32 12 -43 -15 -24 -8 -25 -14 -25 -17 -51 -34 -84 -75 -32 -48 -8 -10 -5 -7 -3 -4 -13 -32 -14 -63 -3 -38 rrcurveto
+ -6 9 0 3 3 vhcurveto
+ 14 22 11 19 9 16 23 39 29 32 37 28 38 28 53 41 45 10 21 5 9 -10 -3 -24 -3 -21 10 -13 20 -3 20 -3 23 1 27 5 39 7 63 21 31 9 rrcurveto
+ 40 15 37 18 34 22 60 39 39 51 34 65 14 28 -2 26 -21 25 -17 20 -25 7 -31 -6 -31 -6 -23 -9 -16 -15 -64 -60 -60 -65 -57 -66 rrcurveto
+ 241 88 rmoveto
+ 7 -14 0 -9 -8 -4 -57 -27 -68 -14 -70 -14 36 36 34 40 47 25 29 16 39 -14 11 -21 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="sad-ar.init.heh">
+ 611 496 315 rmoveto
+ -50 3 -55 -23 -62 -48 -62 -48 -44 -42 -27 -35 -52 -67 -42 -80 -39 -78 -9 -18 rcurveline
+ 4 30 rlineto
+ 1 vlineto
+ -53 -65 rlineto
+ -1 vlineto
+ -3 -38 -3 -41 1 -30 6 -17 rlinecurve
+ 6 -17 13 11 19 40 29 58 23 56 15 36 15 36 27 41 40 47 17 21 18 19 18 19 37 38 64 48 52 12 rrcurveto
+ 1 hlineto
+ 35 13 24 -7 13 -29 14 -30 60 15 32 9 52 14 51 20 52 25 81 39 52 60 41 79 14 28 -3 27 -21 25 -17 20 -24 7 -31 -6 -31 -6 -23 -11 -16 -14 rrcurveto
+ -64 -60 -60 -63 -57 -67 -23 -5 -14 6 -2 17 rrcurveto
+ 17 -2 -12 9 -21 hhcurveto
+ 310 43 rmoveto
+ 7 -14 0 -8 -8 -4 -57 -28 -68 -14 -71 -14 36 37 34 39 47 26 29 15 40 -15 11 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="sad-ar.init.meem">
+ 417 391 221 rmoveto
+ -19 -4 -12 4 -4 13 -7 21 -14 7 -22 10 -9 3 -9 1 -8 1 rrcurveto
+ -1 hlineto
+ -78 -5 -60 -32 -43 -59 -43 -60 -35 -59 -27 -60 21 -2 rcurveline
+ 13 30 28 35 45 39 45 39 42 17 36 -7 rrcurveto
+ 1 vlineto
+ 24 1 21 -15 14 -30 14 -30 60 15 32 9 52 14 51 20 52 25 81 39 51 61 41 79 14 28 -2 26 -21 25 -17 20 -24 7 -31 -6 -31 -6 -24 -9 -16 -15 rrcurveto
+ -61 -57 -59 -64 -60 -70 rrcurveto
+ 235 88 rmoveto
+ 7 -14 0 -9 -8 -4 -57 -27 -67 -15 -71 -13 27 27 0 1 27 27 18 18 22 15 23 13 29 16 39 -15 11 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="sad-ar.init.qantara">
+ 620 590 306 rmoveto
+ -7 5 -7 8 -7 5 -20 12 -17 2 -17 -8 -44 -23 -34 -33 -38 -29 -40 -31 -80 -49 -56 -19 rrcurveto
+ -10 -29 -29 -5 -27 hhcurveto
+ -27 -20 16 32 -14 hvcurveto
+ -14 32 12 55 39 76 2 4 0 2 -3 1 -3 1 -2 -2 -2 -2 -11 -15 -16 -26 -21 -36 -21 -36 -15 -37 -10 -37 -8 -31 -3 -47 13 -29 rrcurveto
+ -35 15 25 -17 35 hhcurveto
+ 35 33 5 12 29 hvcurveto
+ 43 18 38 22 33 28 33 28 33 26 35 25 10 7 10 9 10 9 13 12 31 17 22 -14 18 -15 3 -5 36 3 26 1 26 5 25 9 75 28 71 48 55 44 rrcurveto
+ 38 31 27 31 17 31 13 25 11 26 9 30 9 30 -7 26 -24 21 -44 37 -75 -44 -20 -26 -53 -69 -48 -74 -46 -75 -11 -4 -12 -5 -11 -4 rrcurveto
+ -1 -7 -5 -2 -3 hhcurveto
+ 266 142 rmoveto
+ 9 -12 1 -10 -7 -5 -53 -37 -65 -25 -65 -24 30 43 28 43 41 33 24 18 41 -4 16 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="sad-ar.init.ragaa">
+ 409 142 217 rmoveto
+ -1 hlineto
+ 1 -1 -41 -29 -18 -18 -36 -54 rlinecurve
+ -24 -37 -16 -28 -7 -19 46 -32 rcurveline
+ 1 1 52 74 11 21 77 47 rlinecurve
+ 1 -3 rlineto
+ 1 0 2 1 hhcurveto
+ 28 10 20 -7 12 -25 4 -10 13 -5 22 1 61 3 75 24 49 14 40 15 37 17 34 22 60 39 39 51 34 65 14 28 -3 27 -21 25 -17 20 -24 7 -31 -6 rrcurveto
+ -31 -6 -23 -10 -16 -15 -64 -60 -60 -63 -57 -67 -18 -4 -22 -6 -19 7 rrcurveto
+ 15 -12 -9 27 -27 hhcurveto
+ -57 -45 -29 -28 -34 hvcurveto
+ 479 105 rmoveto
+ 7 -14 0 -8 -8 -4 -57 -27 -69 -14 -70 -14 27 27 1 0 27 27 18 18 22 16 23 13 29 16 39 -16 11 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="sad-ar.init.reh">
+ 310 561 367 rmoveto
+ -38 -36 -17 -16 -17 hvcurveto
+ -64 -60 -60 -64 -57 -67 rrcurveto
+ -2 -8 -7 0 -7 hhcurveto
+ -19 -6 4 24 hvcurveto
+ 11 vlineto
+ 7 -4 2 -9 vhcurveto
+ -6 hlineto
+ -50 -5 -46 -11 -41 -18 -18 -8 -14 -14 -11 -21 -11 -21 -10 -18 -8 -18 rrcurveto
+ -1 vlineto
+ -10 -12 -5 -11 -9 vvcurveto
+ -10 8 -13 9 6 5 5 9 7 vhcurveto
+ 30 30 51 14 51 5 rrcurveto
+ 1 hlineto
+ 3 2 -2 -2 hvcurveto
+ -1 vlineto
+ -2 -1 -2 -1 vvcurveto
+ -19 19 -6 19 4 3 0 1 4 vhcurveto
+ 5 hlineto
+ 61 64 14 28 67 hvcurveto
+ 101 42 57 61 47 91 rrcurveto
+ 6 11 2 11 11 vvcurveto
+ 36 -31 34 -38 vhcurveto
+ -89 -110 rmoveto
+ 29 29 -17 -25 -5 -3 -3 -4 -2 hvcurveto
+ -57 -28 -67 -14 -71 -14 36 37 34 38 47 26 rrcurveto
+ 5 8 10 2 9 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="sad-ar.init.sad">
+ 521 371 46 rmoveto
+ -1 -3 -1 -2 -3 vvcurveto
+ -13 12 -7 24 vhcurveto
+ 4 hlineto
+ 32 1 32 4 32 7 52 10 49 18 48 23 75 37 53 62 40 77 rrcurveto
+ 6 11 3 12 11 vvcurveto
+ 36 -33 33 -38 -38 -35 -17 -16 -17 vhcurveto
+ -64 -60 -59 -64 -58 -66 rrcurveto
+ -1 -1 -1 -1 hhcurveto
+ -1 vlineto
+ -1 -6 -14 -1 -10 hhcurveto
+ -8 -6 1 3 -5 hvcurveto
+ 15 33 9 23 5 15 rrcurveto
+ 1 2 0 4 6 vvcurveto
+ 4 -1 2 -1 -1 -1 -2 -2 -2 vhcurveto
+ -16 -38 -49 -20 -46 -12 rrcurveto
+ -10 -35 -68 -12 -49 hhcurveto
+ -10 hlineto
+ -30 1 -26 5 -23 10 rrcurveto
+ -25 11 -12 20 31 vvcurveto
+ 30 13 41 25 50 vhcurveto
+ 1 2 0 1 1 vvcurveto
+ 2 -1 1 -1 vhcurveto
+ -2 hlineto
+ -2 -2 -1 -2 -1 hvcurveto
+ -16 -22 -23 -41 -32 -62 rrcurveto
+ -21 -41 -11 -37 -32 vvcurveto
+ -80 60 -17 81 80 98 22 23 53 vhcurveto
+ 358 162 rmoveto
+ -5 -2 -3 -4 -2 vhcurveto
+ -57 -27 -68 -15 -70 -14 36 37 34 39 47 26 rrcurveto
+ 5 8 10 1 9 hhcurveto
+ 29 28 -17 -25 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="sad-ar.init.yeh">
+ 383 358 173 rmoveto
+ -19 -4 -12 4 -4 13 rrcurveto
+ 29 -9 -24 14 -36 hhcurveto
+ -60 1 -49 -18 -39 -38 -39 -38 -33 -51 -26 -62 17 -23 rcurveline
+ 1 hlineto
+ 24 36 27 28 30 18 30 18 30 9 30 -1 27 -1 20 -16 12 -29 12 -30 63 16 31 9 52 14 51 20 52 25 81 39 51 60 41 79 14 28 -2 27 -21 25 rrcurveto
+ -17 20 -24 7 -31 -6 -31 -6 -23 -10 -16 -15 -64 -60 -60 -64 -57 -67 rrcurveto
+ 236 88 rmoveto
+ 7 -14 -1 -9 -8 -4 -57 -27 -68 -14 -70 -14 36 37 34 39 47 26 29 16 40 -17 11 -19 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="sad-ar.jalt">
+ 1026 287 7 rmoveto
+ 49 -6 57 -2 65 3 143 6 130 36 97 58 53 32 39 42 25 51 5 11 2 6 1 3 59 17 62 21 67 28 99 42 58 61 46 89 14 28 -3 26 -21 25 rrcurveto
+ -17 20 -24 7 -31 -6 -61 -11 -5 -15 -39 -40 -36 -37 -47 -50 -34 -37 -17 -19 -10 -10 -1 -2 -29 -7 -15 5 -2 13 -2 13 -3 19 -5 26 -4 19 -7 1 -11 -17 -69 -102 rcurveline
+ 10 -28 23 -60 -2 -33 rrcurveto
+ 0 -1 0 -73 -32 vhcurveto
+ -49 -21 -42 -15 -36 -7 -72 -16 -80 -8 -80 -6 -157 -2 -120 36 -85 73 -32 27 -15 24 2 20 2 20 11 18 18 18 61 58 75 42 90 28 90 28 86 14 82 3 53 113 rcurveline
+ -79 -3 -72 -10 -64 -17 -143 -37 -114 -57 -80 -102 -79 -101 -26 -123 92 -100 43 -47 76 -30 109 -14 rrcurveto
+ 960 465 rmoveto
+ 7 -14 0 -8 -8 -4 -57 -28 -68 -14 -71 -14 36 37 34 39 47 26 29 15 40 -15 11 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="sad-ar.medi">
+ -33 242 16 rmoveto
+ 13 15 1 3 16 hvcurveto
+ 40 6 62 17 33 9 40 15 37 18 34 22 61 39 39 50 34 66 rrcurveto
+ 6 11 2 11 11 vvcurveto
+ 37 -32 33 -38 -38 -36 -17 -16 -17 vhcurveto
+ -64 -60 -59 -64 -57 -67 -19 -4 -20 -3 -23 -2 -1 1 rcurveline
+ 14 32 10 23 5 16 rrcurveto
+ 1 2 0 4 6 vvcurveto
+ 4 0 1 -1 -1 -1 -1 -2 -2 vhcurveto
+ -9 -21 -14 -17 -20 -11 -29 -16 -77 -13 -124 -8 -22 -132 rcurveline
+ 54 5 109 20 41 17 rrcurveto
+ -1 -3 0 -3 -3 vvcurveto
+ -15 20 -2 19 vhcurveto
+ 331 197 rmoveto
+ -5 -2 -3 -4 -2 vhcurveto
+ -57 -28 -67 -14 -71 -14 36 36 34 41 47 25 rrcurveto
+ 5 8 10 1 9 hhcurveto
+ 29 28 -17 -25 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="sad-ar.medi.ain">
+ 23 274 37 rmoveto
+ -5 -15 6 -10 18 -1 60 -5 78 28 45 14 40 15 37 18 34 22 61 39 38 50 34 66 14 28 -3 26 -21 25 -17 20 -24 7 -31 -6 -31 -6 -24 -10 -15 -14 rrcurveto
+ -64 -60 -59 -65 -57 -66 -4 -1 -9 -1 -14 -3 -21 -5 rcurveline
+ 15 33 9 24 5 15 rrcurveto
+ 1 1 0 4 6 vvcurveto
+ 6 -1 2 -4 -5 vhcurveto
+ -9 -22 -14 -16 -20 -11 -27 -15 -34 -10 -41 -3 -41 -3 -28 -3 -17 -1 rrcurveto
+ -1 hlineto
+ -55 3 -31 16 -8 28 -13 -35 -13 -44 -13 -49 1 -15 6 -11 11 -7 26 -17 27 1 46 1 48 7 72 14 37 16 rrcurveto
+ 349 188 rmoveto
+ 7 -14 0 -9 -8 -4 -57 -27 -68 -14 -70 -14 36 37 33 38 47 26 29 15 40 -14 11 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="sad-ar.medi.dal">
+ -31 262 119 rmoveto
+ 13 29 9 22 7 21 2 3 1 20 -7 -10 -8 -21 -16 -17 -19 -11 -38 -21 -79 -10 -43 11 -26 7 -13 33 5 30 1 3 -3 1 -3 -4 -42 -57 -33 -107 67 -33 rrcurveto
+ 44 -22 76 26 39 16 -12 -41 98 14 71 15 102 22 101 44 64 86 34 45 45 59 -42 50 -34 40 -78 -20 -31 -29 -64 -60 -60 -65 -57 -66 -18 -4 -37 -7 -16 8 rrcurveto
+ 307 91 rmoveto
+ 4 -8 5 -14 -11 -5 -57 -27 -68 -14 -70 -14 36 37 34 39 47 25 28 15 40 -12 12 -22 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="sad-ar.medi.feh">
+ 91 430 223 rmoveto
+ 6 -2 2 -4 -5 vhcurveto
+ -9 -22 -14 -17 -19 -11 -15 -8 -25 -9 -35 -10 -70 -20 -176 -33 -22 80 -13 -34 -13 -43 -13 -51 1 -29 27 -14 28 -3 94 -9 116 28 67 28 -5 -15 9 -9 20 -2 rrcurveto
+ 20 -2 23 1 27 4 33 5 59 12 24 8 40 15 38 18 34 22 61 39 38 50 34 66 14 28 -3 26 -21 25 -17 20 -24 7 -31 -6 -31 -6 -24 -10 -15 -14 rrcurveto
+ -64 -60 -59 -65 -58 -66 -13 -3 -31 -4 -11 7 6 15 5 13 5 11 rrcurveto
+ 6 15 8 10 19 vvcurveto
+ 260 5 rmoveto
+ 7 -14 0 -9 -8 -4 -57 -27 -68 -14 -70 -14 36 37 34 38 47 26 29 15 39 -14 11 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="sad-ar.medi.hah">
+ 75 439 300 rmoveto
+ -12 -3 -15 -2 -18 -1 -18 -1 -9 8 -1 20 -4 37 -32 12 -43 -15 -24 -8 -25 -14 -25 -17 -51 -34 -84 -75 -32 -48 -8 -10 -5 -7 -3 -4 -13 -32 -14 -63 -3 -38 rrcurveto
+ -6 9 0 3 3 vhcurveto
+ 14 22 11 19 9 16 23 39 29 32 37 28 38 28 53 41 45 10 21 5 9 -10 -3 -24 -3 -21 10 -13 20 -3 20 -3 23 1 27 5 39 7 63 21 31 9 rrcurveto
+ 40 15 37 18 34 22 60 39 39 51 34 65 14 28 -2 26 -21 25 -17 20 -25 7 -31 -6 -31 -6 -23 -9 -16 -15 -64 -60 -60 -65 -57 -66 rrcurveto
+ 241 88 rmoveto
+ 7 -14 0 -9 -8 -4 -57 -27 -68 -14 -70 -14 36 36 34 40 47 25 29 16 39 -14 11 -21 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="sad-ar.medi.heh">
+ 210 496 315 rmoveto
+ -50 3 -55 -23 -62 -48 -62 -48 -44 -42 -27 -35 -52 -67 -42 -80 -39 -78 -9 -18 rcurveline
+ 4 30 rlineto
+ 1 vlineto
+ -53 -65 rlineto
+ -1 vlineto
+ -3 -38 -3 -41 1 -30 6 -17 rlinecurve
+ 6 -17 13 11 19 40 29 58 23 56 15 36 15 36 27 41 40 47 17 21 18 19 18 19 37 38 64 48 52 12 rrcurveto
+ 1 hlineto
+ 35 13 24 -7 13 -29 14 -30 60 15 32 9 52 14 51 20 52 25 81 39 52 60 41 79 14 28 -3 27 -21 25 -17 20 -24 7 -31 -6 -31 -6 -23 -11 -16 -14 rrcurveto
+ -64 -60 -60 -63 -57 -67 -23 -5 -14 6 -2 17 rrcurveto
+ 17 -2 -12 9 -21 hhcurveto
+ 310 43 rmoveto
+ 7 -14 0 -8 -8 -4 -57 -28 -68 -14 -71 -14 36 37 34 39 47 26 29 15 40 -15 11 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="sad-ar.medi.meem">
+ 26 391 221 rmoveto
+ -19 -4 -12 4 -4 13 -7 21 -14 7 -22 10 -9 3 -9 1 -8 1 rrcurveto
+ -1 hlineto
+ -78 -5 -60 -32 -43 -59 -43 -60 -35 -59 -27 -60 21 -2 rcurveline
+ 13 30 28 35 45 39 45 39 42 17 36 -7 rrcurveto
+ 1 vlineto
+ 24 1 21 -15 14 -30 14 -30 60 15 32 9 52 14 51 20 52 25 81 39 51 61 41 79 14 28 -2 26 -21 25 -17 20 -24 7 -31 -6 -31 -6 -24 -9 -16 -15 rrcurveto
+ -61 -57 -59 -64 -60 -70 rrcurveto
+ 235 88 rmoveto
+ 7 -14 0 -9 -8 -4 -57 -27 -67 -15 -71 -13 27 27 0 1 27 27 18 18 22 15 23 13 29 16 39 -15 11 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="sad-ar.medi.postsad">
+ -33 242 16 rmoveto
+ 13 15 1 3 16 hvcurveto
+ 40 6 62 17 33 9 40 15 37 18 34 22 61 39 39 50 34 66 rrcurveto
+ 6 11 2 11 11 vvcurveto
+ 37 -32 33 -38 -38 -36 -17 -16 -17 vhcurveto
+ -64 -60 -59 -64 -57 -67 -19 -4 -20 -3 -23 -2 -1 1 rcurveline
+ 14 32 10 23 5 16 rrcurveto
+ 1 2 0 4 6 vvcurveto
+ 4 0 1 -1 -1 -1 -1 -2 -2 vhcurveto
+ -9 -21 -14 -17 -20 -11 -29 -16 -77 -13 -124 -8 -22 -132 rcurveline
+ 54 5 109 20 41 17 rrcurveto
+ -1 -3 0 -3 -3 vvcurveto
+ -15 20 -2 19 vhcurveto
+ 331 197 rmoveto
+ -5 -2 -3 -4 -2 vhcurveto
+ -57 -28 -67 -14 -71 -14 36 36 34 41 47 25 rrcurveto
+ 5 8 10 1 9 hhcurveto
+ 29 28 -17 -25 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="sad-ar.medi.qantara">
+ 277 590 306 rmoveto
+ -7 5 -7 8 -7 5 -20 12 -17 2 -17 -8 -44 -23 -34 -33 -38 -29 -40 -31 -80 -49 -56 -19 rrcurveto
+ -10 -29 -29 -5 -27 hhcurveto
+ -27 -20 16 32 -14 hvcurveto
+ -14 32 12 55 39 76 2 4 0 2 -3 1 -3 1 -2 -2 -2 -2 -11 -15 -16 -26 -21 -36 -21 -36 -15 -37 -10 -37 -8 -31 -3 -47 13 -29 rrcurveto
+ -35 15 25 -17 35 hhcurveto
+ 35 33 5 12 29 hvcurveto
+ 43 18 38 22 33 28 33 28 33 26 35 25 10 7 10 9 10 9 13 12 31 17 22 -14 18 -15 3 -5 36 3 26 1 26 5 25 9 75 28 71 48 55 44 rrcurveto
+ 38 31 27 31 17 31 13 25 11 26 9 30 9 30 -7 26 -24 21 -44 37 -75 -44 -20 -26 -53 -69 -48 -74 -46 -75 -11 -4 -12 -5 -11 -4 rrcurveto
+ -1 -7 -5 -2 -3 hhcurveto
+ 266 142 rmoveto
+ 9 -12 1 -10 -7 -5 -53 -37 -65 -25 -65 -24 30 43 28 43 41 33 24 18 41 -4 16 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="sad-ar.medi.ragaa">
+ 21 251 121 rmoveto
+ 4 -10 13 -5 22 1 60 3 77 21 47 16 40 15 37 18 34 22 61 39 38 51 34 65 14 28 -3 27 -21 25 -17 20 -24 7 -31 -6 -31 -6 -23 -11 -16 -14 rrcurveto
+ -64 -60 -60 -64 -57 -67 -18 -4 -22 -6 -19 7 rrcurveto
+ 15 -12 -9 28 -27 hhcurveto
+ -56 -1 -45 -28 -35 -28 rrcurveto
+ -1 hlineto
+ 1 -1 -9 -6 -10 -8 -11 -9 rlinecurve
+ -19 -16 -22 -26 -24 -37 -24 -37 -16 -28 -7 -19 46 -32 rcurveline
+ 1 1 52 74 11 21 77 47 rlinecurve
+ 1 -2 rlineto
+ 0 1 0 1 1 vhcurveto
+ 28 10 21 -6 12 -25 rrcurveto
+ 370 203 rmoveto
+ 7 -14 0 -8 -8 -4 -57 -28 -68 -14 -71 -14 36 37 35 39 47 26 29 16 39 -16 11 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="sad-ar.medi.reh">
+ -75 561 367 rmoveto
+ -38 -36 -17 -16 -17 hvcurveto
+ -64 -60 -60 -64 -57 -67 rrcurveto
+ -2 -8 -7 0 -7 hhcurveto
+ -19 -6 4 24 hvcurveto
+ 11 vlineto
+ 7 -4 2 -9 vhcurveto
+ -6 hlineto
+ -50 -5 -46 -11 -41 -18 -18 -8 -14 -14 -11 -21 -11 -21 -10 -18 -8 -18 rrcurveto
+ -1 vlineto
+ -10 -12 -5 -11 -9 vvcurveto
+ -10 8 -13 9 6 5 5 9 7 vhcurveto
+ 30 30 51 14 51 5 rrcurveto
+ 1 hlineto
+ 3 2 -2 -2 hvcurveto
+ -1 vlineto
+ -2 -1 -2 -1 vvcurveto
+ -19 19 -6 19 4 3 0 1 4 vhcurveto
+ 5 hlineto
+ 61 64 14 28 67 hvcurveto
+ 101 42 57 61 47 91 rrcurveto
+ 6 11 2 11 11 vvcurveto
+ 36 -31 34 -38 vhcurveto
+ -89 -110 rmoveto
+ 29 29 -17 -25 -5 -3 -3 -4 -2 hvcurveto
+ -57 -28 -67 -14 -71 -14 36 37 34 38 47 26 rrcurveto
+ 5 8 10 2 9 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="sad-ar.medi.sad">
+ 112 371 46 rmoveto
+ -1 -3 -1 -2 -3 vvcurveto
+ -13 12 -7 24 vhcurveto
+ 4 hlineto
+ 32 1 32 4 32 7 52 10 49 18 48 23 75 37 53 62 40 77 rrcurveto
+ 6 11 3 12 11 vvcurveto
+ 36 -33 33 -38 -38 -35 -17 -16 -17 vhcurveto
+ -64 -60 -59 -64 -58 -66 rrcurveto
+ -1 -1 -1 -1 hhcurveto
+ -1 vlineto
+ -1 -6 -14 -1 -10 hhcurveto
+ -8 -6 1 3 -5 hvcurveto
+ 15 33 9 23 5 15 rrcurveto
+ 1 2 0 4 6 vvcurveto
+ 4 -1 2 -1 -1 -1 -2 -2 -2 vhcurveto
+ -16 -38 -49 -20 -46 -12 rrcurveto
+ -10 -35 -68 -12 -49 hhcurveto
+ -10 hlineto
+ -30 1 -26 5 -23 10 rrcurveto
+ -25 11 -12 20 31 vvcurveto
+ 30 13 41 25 50 vhcurveto
+ 1 2 0 1 1 vvcurveto
+ 2 -1 1 -1 vhcurveto
+ -2 hlineto
+ -2 -2 -1 -2 -1 hvcurveto
+ -16 -22 -23 -41 -32 -62 rrcurveto
+ -21 -41 -11 -37 -32 vvcurveto
+ -80 60 -17 81 80 98 22 23 53 vhcurveto
+ 358 162 rmoveto
+ -5 -2 -3 -4 -2 vhcurveto
+ -57 -27 -68 -15 -70 -14 36 37 34 39 47 26 rrcurveto
+ 5 8 10 1 9 hhcurveto
+ 29 28 -17 -25 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="sad-ar.medi.yeh">
+ -7 358 173 rmoveto
+ -19 -4 -12 4 -4 13 rrcurveto
+ 29 -9 -24 14 -36 hhcurveto
+ -60 1 -49 -18 -39 -38 -39 -38 -33 -51 -26 -62 17 -23 rcurveline
+ 1 hlineto
+ 24 36 27 28 30 18 30 18 30 9 30 -1 27 -1 20 -16 12 -29 12 -30 63 16 31 9 52 14 51 20 52 25 81 39 51 60 41 79 14 28 -2 27 -21 25 rrcurveto
+ -17 20 -24 7 -31 -6 -31 -6 -23 -10 -16 -15 -64 -60 -60 -64 -57 -67 rrcurveto
+ 236 88 rmoveto
+ 7 -14 -1 -9 -8 -4 -57 -27 -68 -14 -70 -14 36 37 34 39 47 26 29 16 40 -17 11 -19 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="section">
+ -80 35 23 rmoveto
+ -99 9 91 -31 81 hhcurveto
+ 99 81 83 99 26 -5 27 -13 21 hvcurveto
+ 33 37 19 48 51 vvcurveto
+ 86 -87 24 -63 36 vhcurveto
+ -75 43 -60 13 74 vvcurveto
+ 58 32 52 51 44 24 -36 -60 vhcurveto
+ 15 -11 59 21 rlineto
+ 2 12 4 18 7 vvcurveto
+ 61 -69 18 -49 -102 -68 -79 -97 -21 4 -20 6 -20 vhcurveto
+ -26 -38 -22 -42 -46 vvcurveto
+ -86 58 -38 86 -38 vhcurveto
+ 82 -40 60 -26 -62 vvcurveto
+ -69 -43 -60 -62 -71 -45 58 68 -2 vhcurveto
+ -8 5 rlineto
+ 259 116 rmoveto
+ -64 66 -211 33 108 vvcurveto
+ 24 10 27 14 18 vhcurveto
+ 41 -56 144 -28 51 -53 rrcurveto
+ 20 -20 16 -24 -29 vvcurveto
+ -22 -5 -22 -13 -18 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar">
+ 569 426 289 rmoveto
+ 41 14 106 30 126 23 97 44 rlinecurve
+ -7 -20 -12 -18 -6 -20 -3 -9 -4 -13 8 -6 8 -6 10 5 4 8 35 75 32 79 27 82 1 3 -5 3 -2 -3 -13 -22 -26 -12 -26 -11 -105 -42 -125 -24 -123 -26 rrcurveto
+ -42 -9 -2 42 -23 47 -53 -132 rcurveline
+ 15 -47 10 -41 -1 -50 -64 -59 -99 -46 -118 21 -107 46 88 134 31 69 9 24 -13 3 -8 -16 -256 -466 372 -28 146 211 42 61 10 35 25 67 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.fina">
+ 143 606 361 rmoveto
+ 33 43 11 65 7 67 rrcurveto
+ 2 -3 0 -1 -7 vhcurveto
+ -11 -44 -33 -29 -49 -9 4 16 3 20 -1 17 rrcurveto
+ 8 -2 -4 -2 -3 vhcurveto
+ -8 -14 -5 -20 -13 -10 -118 -74 11 54 -31 65 -53 -132 rcurveline
+ 15 -47 10 -41 -1 -50 -64 -59 -99 -47 -118 21 -107 46 88 134 31 69 9 24 -13 4 -8 -16 -256 -466 372 -29 146 211 42 61 10 36 25 67 49 16 14 9 8 5 rrcurveto
+ 2 -8 5 1 5 1 40 10 35 10 21 27 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.fina.jalt">
+ 678 961 248 rmoveto
+ 18 6 18 8 19 9 rrcurveto
+ 5 9 5 2 2 hhcurveto
+ -5 1 3 -2 5 hhcurveto
+ 29 57 31 17 13 hvcurveto
+ 33 42 12 65 7 68 -2 7 -2 -2 -1 -10 -12 -46 -30 -27 -50 -9 5 19 2 17 -1 17 rrcurveto
+ 6 -2 1 -3 -6 vhcurveto
+ -8 -14 -5 -20 -12 -10 -20 -15 -31 -17 -33 -2 rrcurveto
+ -1 vlineto
+ -17 1 -9 9 -1 17 -1 17 -1 15 -2 12 -4 19 -7 1 -11 -17 -69 -102 rcurveline
+ 10 -28 23 -60 -2 -33 rrcurveto
+ 0 -1 0 -73 -32 vhcurveto
+ -49 -21 -42 -15 -36 -7 -72 -16 -80 -8 -80 -6 -157 -2 -120 36 -85 73 -32 27 -15 24 2 20 2 20 11 18 18 18 61 58 75 42 90 28 90 28 86 14 82 3 53 113 rcurveline
+ -79 -3 -72 -10 -64 -17 -143 -37 -114 -57 -80 -102 -79 -101 -26 -123 92 -100 43 -47 76 -30 109 -14 49 -6 57 -2 65 3 143 6 130 36 97 58 53 32 39 42 25 51 rrcurveto
+ 5 11 2 6 1 3 6 1 rcurveline
+ endchar
+ </CharString>
+ <CharString name="seen-ar.init">
+ 321 652 304 rmoveto
+ 1 2 -5 4 -2 -2 -14 -22 -25 -14 -26 -10 -41 -16 -55 -16 -70 -15 -137 -30 -116 -25 -141 -25 -21 -135 rcurveline
+ 231 50 106 30 130 25 94 42 rlinecurve
+ -4 -10 -5 -10 -5 -9 -4 -8 -20 -39 13 -9 9 -7 7 2 6 12 35 75 32 78 27 82 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.init.ain">
+ 361 690 274 rmoveto
+ 1 2 -5 4 -2 -2 -14 -22 -25 -14 -26 -10 -19 -7 -38 -12 -60 -18 -102 -30 -143 -35 -124 1 rrcurveto
+ -55 -31 15 29 -8 hvcurveto
+ -13 -34 -13 -42 -13 -51 1 -29 27 -15 28 -3 30 -3 38 2 48 6 48 6 49 9 52 11 93 20 111 32 74 33 -8 -19 -11 -19 -6 -20 -6 -14 0 -9 6 -4 rrcurveto
+ 9 -7 7 2 6 12 37 79 32 78 25 78 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.init.dal">
+ 332 682 286 rmoveto
+ 1 4 -2 3 -3 -2 -9 -8 -7 -12 -11 -6 -104 -60 -355 -99 -106 27 -26 7 -13 34 5 31 rrcurveto
+ 2 -2 1 -2 -3 vhcurveto
+ -42 -56 -33 -110 67 -33 58 -28 282 60 212 93 -26 -59 rcurveline
+ -11 -25 24 -16 10 20 39 81 45 114 9 40 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.init.feh">
+ 475 799 302 rmoveto
+ 1 -5 6 -2 -3 vhcurveto
+ -11 -18 -21 -15 -32 -12 -14 -6 -42 -14 -70 -21 -124 -38 -177 -43 -147 -6 -68 -3 -38 14 -9 31 -13 -34 -13 -42 -13 -51 1 -29 27 -15 28 -3 36 -4 49 4 61 9 rrcurveto
+ 61 9 62 13 65 15 103 25 135 38 80 35 -4 -10 -5 -10 -5 -9 -5 -8 -19 -39 13 -9 9 -7 7 2 6 12 35 75 32 78 27 82 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.init.hah">
+ 385 713 425 rmoveto
+ 1 2 -6 4 -2 -2 -14 -22 -24 -14 -26 -10 -25 -10 -36 -11 -44 -11 -83 -21 -98 -24 -82 -20 -39 -10 -27 -8 -15 -7 -32 -15 -28 -19 -24 -30 -26 -33 -22 -37 -19 -40 rrcurveto
+ -19 -40 -10 -28 -3 -14 rrcurveto
+ -6 8 0 3 3 vhcurveto
+ 10 16 12 15 14 15 35 38 27 29 56 15 33 9 37 9 39 10 44 11 60 18 76 22 76 22 57 20 37 17 -62 -140 rcurveline
+ 22 18 28 62 69 149 22 68 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="seen-ar.init.heh">
+ 525 847 435 rmoveto
+ 1 -5 5 -2 -3 vhcurveto
+ -14 -22 -24 -13 -26 -10 -63 -25 -57 -17 -51 -9 -109 -19 -85 -20 -81 -51 -42 -27 -45 -42 -47 -61 -52 -67 -42 -80 -39 -78 -9 -18 rcurveline
+ 4 30 rlineto
+ 1 vlineto
+ -53 -65 rlineto
+ -1 vlineto
+ -3 -38 -3 -41 1 -30 6 -17 rlinecurve
+ 6 -17 13 11 19 40 29 58 23 56 15 36 15 36 27 41 40 47 17 21 18 19 18 19 67 69 61 30 138 24 95 17 81 23 67 30 -4 -10 -4 -10 -5 -9 rrcurveto
+ -4 -8 -20 -41 12 -8 9 -7 8 3 6 12 38 81 32 78 24 76 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.init.meem">
+ 226 261 188 rmoveto
+ 13 -22 9 -15 16 -9 23 -1 rlinecurve
+ 19 -2 22 6 24 14 rrcurveto
+ 1 3 8 6 5 hhcurveto
+ -4 1 3 -3 5 hhcurveto
+ 29 58 32 17 12 hvcurveto
+ 32 40 13 67 7 67 -2 7 -2 -2 -1 -10 -12 -46 -31 -27 -49 -9 5 19 2 17 -1 17 rrcurveto
+ 5 -2 1 -3 -5 vhcurveto
+ -5 -19 -11 -19 -17 -18 -19 -20 -52 -24 -15 35 -5 11 -9 10 -14 8 -62 35 -58 -39 -34 -34 -58 -58 -52 -90 -35 -77 -8 -18 -6 -12 -2 -7 -2 -7 -2 -5 -1 -1 rrcurveto
+ 18 hlineto
+ 39 61 58 85 56 38 36 24 30 1 24 -21 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.init.ragaa">
+ 314 411 254 rmoveto
+ -14 -11 -22 -11 -28 -11 -28 -11 -12 10 4 33 1 7 -4 5 -9 1 -35 4 -33 -6 -32 -14 -32 -14 -29 -19 -26 -22 -19 -16 -22 -26 -24 -37 -24 -37 -16 -28 -7 -19 46 -32 rcurveline
+ 1 1 24 35 19 25 12 16 rlinecurve
+ 12 16 21 17 32 21 26 17 56 34 -6 -53 -4 -34 15 -13 32 6 32 6 23 6 15 7 rrcurveto
+ 5 9 6 3 2 hhcurveto
+ -4 1 2 -3 5 hhcurveto
+ 29 57 31 17 13 hvcurveto
+ 33 42 12 66 7 67 rrcurveto
+ 1 -1 1 -1 -1 vhcurveto
+ -1 -1 -2 -2 -3 vvcurveto
+ -12 -46 -31 -27 -49 -9 rrcurveto
+ 5 16 1 18 19 vvcurveto
+ -1 5 0 1 -3 -5 -8 -14 -6 -21 -12 -9 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.init.reh">
+ 342 181 190 rmoveto
+ -6 -1 -5 -1 -6 -1 -61 -9 -40 -33 -21 -53 -7 -11 -6 -12 -6 -13 rrcurveto
+ -1 vlineto
+ -15 -18 -4 -15 9 -13 9 -13 10 2 11 17 20 20 26 12 23 4 26 5 44 8 34 11 131 27 163 43 104 46 -4 -10 -4 -10 -5 -9 -5 -8 -20 -40 13 -9 rrcurveto
+ 9 -7 8 3 6 12 35 75 32 78 27 82 rrcurveto
+ 1 -5 6 -2 -3 vhcurveto
+ -11 -18 -21 -15 -32 -12 -59 -24 -167 -47 -87 -18 -64 -14 -39 -8 -12 -2 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.init.sad">
+ 427 749 288 rmoveto
+ -1 0 0 -1 -1 hvcurveto
+ -11 -18 -22 -15 -32 -12 -114 -45 -140 -24 -131 -28 rrcurveto
+ -8 -44 -38 -7 -43 hhcurveto
+ -57 -39 20 53 -4 hvcurveto
+ 5 vlineto
+ 28 13 40 25 51 vhcurveto
+ 1 2 0 1 1 vvcurveto
+ 3 -3 0 -2 -2 -1 0 -2 -1 vhcurveto
+ -10 -15 -15 -24 -20 -34 -20 -34 -14 -34 -11 -36 rrcurveto
+ -7 -22 -4 -21 -20 vvcurveto
+ -55 21 -25 57 -8 vhcurveto
+ -3 19 18 -1 21 hhcurveto
+ 34 36 4 7 39 hvcurveto
+ 62 12 56 11 49 12 87 23 87 23 75 34 -4 -10 -5 -10 -5 -9 rrcurveto
+ -7 -13 -8 -18 -16 vvcurveto
+ -8 6 -5 7 5 4 4 7 4 vhcurveto
+ 38 81 32 78 24 76 rrcurveto
+ 1 vlineto
+ 1 -2 3 -2 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.init.yeh">
+ 181 217 135 rmoveto
+ 27 -36 18 -24 33 3 49 27 rlinecurve
+ 5 9 4 2 2 hhcurveto
+ -5 1 3 -2 5 hhcurveto
+ 29 58 32 17 13 hvcurveto
+ 33 42 12 65 7 68 -2 6 -2 -2 -2 -9 -11 -46 -31 -28 -50 -9 5 19 2 18 -1 17 rrcurveto
+ 6 -1 0 -3 -6 vhcurveto
+ -8 -14 -6 -21 -12 -9 -50 -38 -26 -11 -5 15 -5 15 -14 15 -22 13 -28 16 -27 2 -27 -10 -27 -10 -26 -17 -24 -24 -44 -44 -44 -71 -29 -56 rrcurveto
+ -2 vlineto
+ 9 -44 29 42 34 41 40 37 rlinecurve
+ 40 37 35 5 30 -27 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.jalt">
+ 1167 287 7 rmoveto
+ 49 -6 57 -2 65 3 143 6 130 36 97 58 53 32 39 42 25 51 5 11 2 6 1 3 85 24 rcurveline
+ 53 15 56 14 59 14 59 14 53 18 49 22 -4 -10 -4 -11 -5 -9 -4 -8 -21 -39 13 -9 9 -7 8 2 6 12 35 75 32 78 27 82 rrcurveto
+ 1 -5 6 -2 -3 vhcurveto
+ -11 -18 -21 -15 -32 -12 -102 -41 -164 -31 -118 -27 -27 -6 -14 7 -1 19 -1 19 -2 16 -3 14 -4 19 -7 1 -11 -17 -69 -102 rcurveline
+ 10 -28 23 -60 -2 -33 rrcurveto
+ 0 -1 0 -73 -32 vhcurveto
+ -49 -21 -42 -15 -36 -7 -72 -16 -80 -8 -80 -6 -157 -2 -120 36 -85 73 -32 27 -15 24 2 20 2 20 11 18 18 18 61 58 75 42 90 28 90 28 86 14 82 3 53 113 rcurveline
+ -79 -3 -72 -10 -64 -17 -143 -37 -114 -57 -80 -102 -79 -101 -26 -123 92 -100 43 -47 76 -30 109 -14 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.medi">
+ -46 201 57 rmoveto
+ 2 -14 19 -6 16 4 21 7 16 8 17 8 rrcurveto
+ 2 4 7 5 5 hhcurveto
+ -4 1 3 -3 4 hhcurveto
+ 26 58 28 21 16 hvcurveto
+ 33 43 12 64 7 67 rrcurveto
+ 2 -4 0 -1 -7 vhcurveto
+ -11 -44 -32 -29 -49 -9 4 16 3 21 -1 17 rrcurveto
+ 8 -3 -5 -2 -3 vhcurveto
+ -8 -14 -4 -20 -13 -10 -44 -33 -38 -2 -6 1 3 13 3 13 -2 12 -1 4 -2 16 -2 -7 -22 -69 -129 -10 -52 -8 -55 -140 rcurveline
+ 90 29 60 5 51 23 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.medi.ain">
+ 52 356 166 rmoveto
+ 4 17 2 12 -1 8 rrcurveto
+ 0 -4 20 -2 -6 vhcurveto
+ -9 -29 -32 -23 -53 -16 -53 -16 -43 -6 -33 2 -42 2 -42 11 -9 33 -13 -34 -13 -42 -13 -51 1 -29 27 -15 28 -3 82 -8 102 29 58 25 2 -16 13 -6 22 6 rrcurveto
+ 20 6 17 8 18 8 rrcurveto
+ 5 9 5 3 2 hhcurveto
+ -4 1 3 -3 4 hhcurveto
+ 29 58 31 17 13 hvcurveto
+ 33 42 11 65 7 68 -2 7 -1 -2 -1 -10 -12 -46 -31 -27 -50 -9 5 18 2 17 -1 18 rrcurveto
+ 5 -1 0 -3 -4 vhcurveto
+ -8 -14 -6 -21 -12 -9 -20 -16 -31 -17 -34 -1 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.medi.dal">
+ -31 217 33 rmoveto
+ 2 -14 19 -6 16 4 21 7 16 7 17 8 rrcurveto
+ 2 4 7 6 5 hhcurveto
+ -4 1 3 -3 4 hhcurveto
+ 26 58 27 21 16 hvcurveto
+ 33 43 12 65 7 67 rrcurveto
+ 2 -4 0 -1 -7 vhcurveto
+ -11 -44 -32 -29 -49 -9 4 16 3 20 -1 17 rrcurveto
+ 8 -3 -4 -2 -3 vhcurveto
+ -8 -14 -4 -20 -13 -10 -21 -16 -32 -18 -33 -1 rrcurveto
+ -1 0 1 -1 hhcurveto
+ 3 13 3 12 -2 12 -1 4 -2 17 -2 -7 -18 -54 -158 -51 -36 60 rrcurveto
+ -7 11 -3 15 19 vvcurveto
+ 7 1 0 -6 -7 vhcurveto
+ -46 -53 -28 -110 66 -33 44 -21 95 29 39 18 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.medi.feh">
+ 171 476 179 rmoveto
+ 4 17 1 12 -1 8 rrcurveto
+ 0 -3 21 -2 -7 vhcurveto
+ -11 -34 -34 -23 -58 -13 -58 -13 -44 -8 -30 -4 -46 -6 -44 -1 -40 4 -40 4 -24 14 -7 26 -13 -34 -13 -43 -13 -51 1 -29 27 -14 28 -3 48 -4 58 4 69 12 rrcurveto
+ 53 9 90 18 44 19 2 -16 13 -6 22 6 16 5 18 8 20 10 rrcurveto
+ 1 3 9 6 4 hhcurveto
+ -4 1 2 -3 5 hhcurveto
+ 29 58 32 17 13 hvcurveto
+ 33 42 12 64 7 68 rrcurveto
+ 3 -4 -5 -1 -3 vhcurveto
+ -11 -46 -32 -27 -50 -9 5 18 3 17 -1 18 -1 6 -2 1 -2 -6 -8 -14 -5 -21 -12 -9 -20 -15 -32 -18 -34 -1 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.medi.hah">
+ 83 501 390 rmoveto
+ -4 -30 -21 -25 -39 -19 -39 -19 -21 6 -2 31 -1 17 -7 12 -12 6 -16 8 -21 -2 -26 -10 -26 -10 -26 -16 -27 -19 -46 -32 -58 -51 -33 -39 -16 -19 -17 -17 -13 -24 rrcurveto
+ -13 -32 -14 -63 -3 -38 rrcurveto
+ -6 9 0 3 3 vhcurveto
+ 41 66 10 26 55 51 33 29 52 40 40 21 28 15 42 16 -5 -45 -4 -33 14 -14 32 6 32 6 24 7 15 7 rrcurveto
+ 5 9 5 2 2 hhcurveto
+ -5 3 -2 5 58 39 26 52 19 vhcurveto
+ 19 52 12 49 5 44 -2 8 -1 -2 -2 -11 -8 -34 -37 -65 -47 17 5 19 1 18 -1 17 rrcurveto
+ 7 -4 -4 -3 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.medi.heh">
+ 245 496 315 rmoveto
+ -50 3 -55 -23 -62 -48 -62 -48 -44 -42 -27 -35 -52 -67 -42 -80 -39 -78 -9 -18 rcurveline
+ 4 30 rlineto
+ 1 vlineto
+ -53 -65 rlineto
+ -1 vlineto
+ -3 -38 -3 -41 1 -30 6 -17 rlinecurve
+ 6 -17 13 11 19 40 29 58 23 56 15 36 15 36 27 41 40 47 34 41 35 38 43 31 rrcurveto
+ 37 52 36 18 20 hhcurveto
+ 20 16 -6 -11 11 hvcurveto
+ 11 -11 14 -10 15 -9 15 -9 27 5 41 21 rrcurveto
+ 2 3 9 5 5 hhcurveto
+ -4 1 2 -2 5 hhcurveto
+ 29 58 31 17 13 hvcurveto
+ 33 42 11 65 7 68 rrcurveto
+ 3 -4 -5 -1 -3 vhcurveto
+ -12 -46 -31 -28 -49 -9 5 19 2 18 -1 17 -1 5 0 1 -3 -5 -8 -13 -5 -22 -12 -9 -10 -7 -74 -53 -15 37 rrcurveto
+ 1 vlineto
+ -1 -1 rlineto
+ 14 -10 -5 16 -24 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.medi.meem">
+ 49 261 188 rmoveto
+ 13 -22 9 -15 16 -9 23 -1 rlinecurve
+ 19 -2 22 6 24 14 rrcurveto
+ 1 3 8 6 5 hhcurveto
+ -4 1 3 -3 5 hhcurveto
+ 29 58 32 17 12 hvcurveto
+ 32 40 13 67 7 67 -2 7 -2 -2 -1 -10 -12 -46 -31 -27 -49 -9 5 19 2 17 -1 17 rrcurveto
+ 5 -2 1 -3 -5 vhcurveto
+ -5 -19 -11 -19 -17 -18 -19 -20 -52 -24 -15 35 -5 11 -9 10 -14 8 -62 35 -58 -39 -34 -34 -58 -58 -52 -90 -35 -77 -8 -18 -6 -12 -2 -7 -2 -7 -2 -5 -1 -1 rrcurveto
+ 18 hlineto
+ 39 61 58 85 56 38 36 24 30 1 24 -21 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.medi.ragaa">
+ 18 411 254 rmoveto
+ -14 -11 -22 -11 -28 -11 -28 -11 -12 10 4 33 1 7 -4 5 -9 1 -35 4 -33 -6 -32 -14 -32 -14 -29 -19 -26 -22 -19 -16 -22 -26 -24 -37 -24 -37 -16 -28 -7 -19 46 -32 rcurveline
+ 1 1 24 35 19 25 12 16 rlinecurve
+ 12 16 21 17 32 21 26 17 56 34 -6 -53 -4 -34 15 -13 32 6 32 6 23 6 15 7 rrcurveto
+ 5 9 6 3 2 hhcurveto
+ -4 1 2 -3 5 hhcurveto
+ 29 57 31 17 13 hvcurveto
+ 33 42 12 66 7 67 rrcurveto
+ 1 -1 1 -1 -1 vhcurveto
+ -1 -1 -2 -2 -3 vvcurveto
+ -12 -46 -31 -27 -49 -9 rrcurveto
+ 5 16 1 18 19 vvcurveto
+ -1 5 0 1 -3 -5 -8 -14 -6 -21 -12 -9 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.medi.reh">
+ -34 237 203 rmoveto
+ -24 -34 -7 -14 -45 hvcurveto
+ -52 -16 -31 -19 -11 -21 -12 -23 -7 -27 -10 -24 rrcurveto
+ -1 -2 -9 -14 -3 vvcurveto
+ -1 vlineto
+ -1 -4 0 -4 -3 vvcurveto
+ -10 6 -11 10 6 6 4 9 6 vhcurveto
+ 11 11 13 10 12 7 21 8 27 9 30 9 rrcurveto
+ 5 14 11 2 7 hhcurveto
+ 8 3 -3 -5 hvcurveto
+ -11 vlineto
+ -21 10 -11 20 4 4 0 1 5 vhcurveto
+ 32 6 24 7 15 7 rrcurveto
+ 5 9 4 2 2 hhcurveto
+ -4 1 3 -2 5 hhcurveto
+ 29 58 31 17 13 hvcurveto
+ 33 42 11 65 7 68 rrcurveto
+ 1 -1 0 0 -3 0 -3 -3 -1 vhcurveto
+ -11 -46 -31 -27 -50 -9 rrcurveto
+ 4 15 2 15 15 vvcurveto
+ 8 vlineto
+ 3 0 1 -1 -1 -1 -2 -2 -1 vhcurveto
+ -8 -14 -6 -21 -12 -9 -14 -11 -21 -11 -28 -11 rrcurveto
+ -3 -7 -7 -1 -5 hhcurveto
+ -12 -6 9 17 hvcurveto
+ 12 vlineto
+ 10 -10 2 -12 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.medi.sad">
+ 216 521 236 rmoveto
+ -1 0 -1 -1 hvcurveto
+ -13 -21 -24 -17 -35 -16 rrcurveto
+ -30 -68 -92 -22 -93 hhcurveto
+ -69 -55 14 65 28 13 40 26 51 hvcurveto
+ 1 2 0 1 1 vvcurveto
+ 3 -3 0 -2 -2 -1 0 -2 -1 vhcurveto
+ -10 -15 -15 -24 -20 -34 -20 -34 -14 -34 -11 -36 rrcurveto
+ -7 -22 -4 -21 -20 vvcurveto
+ -12 2 -11 2 -11 vhcurveto
+ -43 9 50 -14 62 hhcurveto
+ 39 49 5 10 58 hvcurveto
+ 84 14 63 16 43 20 rrcurveto
+ -12 2 7 -6 13 hhcurveto
+ 5 5 1 1 6 hvcurveto
+ 17 5 18 7 19 10 rrcurveto
+ 5 9 5 3 2 hhcurveto
+ -5 1 2 -2 5 hhcurveto
+ 29 58 31 17 13 hvcurveto
+ 33 42 11 64 7 68 rrcurveto
+ 1 1 0 -1 vhcurveto
+ -1 hlineto
+ -1 -1 -1 -1 -1 -3 -12 -46 -32 -27 -49 -9 rrcurveto
+ 4 16 3 16 17 vvcurveto
+ 4 vlineto
+ 3 -1 1 -1 -1 -1 -1 -3 -1 vhcurveto
+ -8 -14 -5 -20 -12 -10 -20 -15 -32 -18 -34 -1 rrcurveto
+ -1 -1 1 0 hvcurveto
+ 3 15 1 11 7 vvcurveto
+ 4 vlineto
+ 0 -2 15 -2 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.medi.yeh">
+ 6 217 135 rmoveto
+ 27 -36 18 -24 33 3 49 27 rlinecurve
+ 5 9 4 2 2 hhcurveto
+ -5 1 3 -2 5 hhcurveto
+ 29 58 32 17 13 hvcurveto
+ 33 42 12 65 7 68 -2 6 -2 -2 -2 -9 -11 -46 -31 -28 -50 -9 5 19 2 18 -1 17 rrcurveto
+ 6 -1 0 -3 -6 vhcurveto
+ -8 -14 -6 -21 -12 -9 -50 -38 -26 -11 -5 15 -5 15 -14 15 -22 13 -28 16 -27 2 -27 -10 -27 -10 -26 -17 -24 -24 -44 -44 -44 -71 -29 -56 rrcurveto
+ -2 vlineto
+ 9 -44 29 42 34 41 40 37 rlinecurve
+ 40 37 35 5 30 -27 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="semicolon">
+ -352 29 400 rmoveto
+ -31 26 -26 32 31 25 26 31 31 -25 26 -31 -32 -26 -26 -31 vhcurveto
+ 41 -590 rmoveto
+ 40 49 50 58 61 vvcurveto
+ 39 -36 82 -35 -12 -11 -4 -7 -9 vhcurveto
+ -2 -2 rlineto
+ -8 -8 -1 -15 -12 vvcurveto
+ -9 4 -9 5 -8 vhcurveto
+ 34 -51 rlineto
+ 7 -12 6 -12 -14 vvcurveto
+ -36 -23 -45 -24 -32 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="semicolon-ar">
+ -86 127 229 rmoveto
+ 60 29 52 91 4 hvcurveto
+ 8 -8 6 -7 -7 vhcurveto
+ -103 -99 8 172 23 85 17 64 9 37 2 10 -31 -30 rcurveline
+ -33 -94 -28 -95 -7 -72 rrcurveto
+ -77 -8 32 -51 41 hhcurveto
+ -70 -144 rmoveto
+ -4 -4 0 -4 4 -4 73 -71 rcurveline
+ 4 -4 4 1 4 4 89 92 rcurveline
+ 4 4 -1 4 -4 4 -72 70 rcurveline
+ -4 4 -4 0 -4 -4 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="semicolon-ar.alt">
+ -86 57 363 rmoveto
+ 89 -92 4 -4 4 0 4 4 rlinecurve
+ 72 70 4 4 1 4 -4 4 rlinecurve
+ -89 92 -4 4 -4 1 -4 -4 rlinecurve
+ -73 -71 -4 -4 0 -4 4 -4 rlinecurve
+ 70 -144 rmoveto
+ -41 -32 -51 -77 8 hvcurveto
+ 7 -72 28 -95 33 -94 31 -30 rcurveline
+ -2 10 -9 37 -17 64 -23 85 -8 172 103 -99 rrcurveto
+ 7 -7 8 6 8 vvcurveto
+ 91 -4 -29 52 -60 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="seven">
+ -45 494 686 rmoveto
+ -208 hlineto
+ -45 -153 2 6 -18 hvcurveto
+ -21 -79 7 -9 rlineto
+ 336 hlineto
+ 6 -12 rlineto
+ -62 -99 -98 -171 0 vvcurveto
+ -54 -92 -85 -150 -24 -82 6 -8 rcurveline
+ 84 20 32 146 65 136 78 128 rlinecurve
+ 154 252 rlineto
+ endchar
+ </CharString>
+ <CharString name="seven-ar">
+ 12 199 10 rmoveto
+ 15 27 2 37 8 32 32 123 34 117 50 103 rrcurveto
+ 48 5 46 7 41 vhcurveto
+ -3 1 -2 0 -1 -3 -50 -114 -47 -120 -36 -134 -36 117 -51 133 -58 121 -15 -47 -16 -48 -12 -44 65 -138 63 -136 30 -169 2 -8 11 10 3 5 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seven-ar.dnom">
+ -99 140 7 rmoveto
+ 11 19 1 26 6 22 22 86 24 82 35 72 rrcurveto
+ 34 3 32 5 29 vhcurveto
+ -2 1 -1 0 -1 -3 -35 -79 -33 -84 -25 -94 -25 82 -36 93 -40 85 -11 -33 -11 -34 -8 -31 45 -96 44 -96 21 -118 2 -5 7 7 2 3 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seven-ar.numr">
+ -99 140 276 rmoveto
+ 11 19 1 26 6 22 22 86 24 82 35 72 rrcurveto
+ 34 3 32 5 29 vhcurveto
+ -2 1 -1 0 -1 -3 -35 -79 -33 -84 -25 -94 -25 82 -36 93 -40 85 -11 -33 -11 -34 -8 -31 45 -96 44 -96 21 -118 2 -5 7 7 2 3 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seven-persian">
+ 12 199 10 rmoveto
+ 15 27 2 37 8 32 32 123 34 117 50 103 rrcurveto
+ 48 5 46 7 41 vhcurveto
+ -3 1 -2 0 -1 -3 -50 -114 -47 -120 -36 -134 -36 117 -51 133 -58 121 -15 -47 -16 -48 -12 -44 65 -138 63 -136 30 -169 2 -8 11 10 3 5 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seven-persian.urd">
+ 181 517 92 rmoveto
+ -134 6 -64 -3 -121 -12 96 75 265 336 -61 88 -35 -22 -41 -22 -44 -19 -18 -216 -149 -150 -101 -77 -27 -20 -33 -17 -19 -24 -4 -5 -4 -14 8 2 rrcurveto
+ 168 54 6 -6 153 hvcurveto
+ 36 28 37 34 38 32 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seven-persian.urd.dnom">
+ -99 304 64 rmoveto
+ -94 5 -45 -2 -84 -9 67 53 185 235 -42 61 -25 -15 -29 -15 -30 -14 -13 -151 -104 -105 -71 -54 -19 -14 -23 -12 -13 -16 -3 -4 -3 -10 6 2 rrcurveto
+ 117 38 4 -4 107 hvcurveto
+ 25 19 26 24 27 22 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seven-persian.urd.numr">
+ -99 304 333 rmoveto
+ -94 5 -45 -2 -84 -9 67 53 185 235 -42 61 -25 -15 -29 -15 -30 -14 -13 -151 -104 -105 -71 -54 -19 -14 -23 -12 -13 -16 -3 -4 -3 -10 6 2 rrcurveto
+ 117 38 4 -4 107 hvcurveto
+ 25 19 26 24 27 22 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="seven.dnom">
+ 353 404 rmoveto
+ 8 -140 vlineto
+ -31 -103 0 4 -13 hvcurveto
+ -14 -47 4 -5 rlineto
+ 228 hlineto
+ 5 -8 rlineto
+ -42 -59 -66 -103 0 vvcurveto
+ -37 -55 -58 -90 -16 -49 4 -5 rcurveline
+ 56 12 22 88 44 81 53 77 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="seven.numr">
+ 353 679 rmoveto
+ 8 -140 vlineto
+ -31 -103 0 4 -13 hvcurveto
+ -14 -47 4 -5 rlineto
+ 228 hlineto
+ 5 -8 rlineto
+ -42 -59 -66 -103 0 vvcurveto
+ -37 -55 -58 -90 -16 -49 4 -5 rcurveline
+ 56 12 22 88 44 81 53 77 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="shadda-ar">
+ -12 -22 rmoveto
+ -15 8 13 -18 24 hhcurveto
+ 9 7 3 6 6 hvcurveto
+ 27 26 4 55 4 48 -18 -17 rcurveline
+ -4 vlineto
+ -25 -10 -26 -21 -3 vhcurveto
+ -2 hlineto
+ -7 -7 5 8 -8 hvcurveto
+ -8 8 -3 12 15 vvcurveto
+ 12 vlineto
+ 2 1 0 2 vvcurveto
+ 1 vlineto
+ -15 -15 -1 -20 -8 -21 -10 -12 rlinecurve
+ -9 -7 -17 -5 -13 hhcurveto
+ -18 -9 12 16 -1 hvcurveto
+ 5 vlineto
+ 14 5 14 12 vvcurveto
+ 1 vlineto
+ -8 -5 -15 -5 -2 hvcurveto
+ -1 -1 -1 -1 -1 -1 0 -1 vvcurveto
+ -4 -15 -7 -24 -20 vvcurveto
+ -31 12 -20 32 -2 vhcurveto
+ 27 3 28 21 4 26 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="sheen-ar">
+ 636 973 504 rmoveto
+ 2 4 -5 -4 0 vvcurveto
+ -32 -28 -36 -24 -42 -16 -92 -35 -93 -34 -107 -21 -91 51 -33 -53 -49 -70 -33 -48 -31 -50 -48 -33 -18 -13 -29 4 -10 19 -21 41 9 30 -1 46 -1 32 -6 28 -20 12 rrcurveto
+ -14 8 -22 -12 -22 -16 -82 -60 -14 -56 -32 -94 8 7 4 7 5 8 21 34 26 33 43 14 20 7 14 -14 8 -12 18 -26 -2 -76 11 -40 8 -30 19 -22 35 -2 rrcurveto
+ 83 26 45 158 71 56 42 33 4 -53 45 2 125 36 115 32 101 59 -14 -33 -16 -21 -13 -33 -3 -7 7 -10 15 19 48 74 41 83 39 83 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="sigma">
+ -2 210 462 rmoveto
+ -126 -5 -53 -118 -118 vvcurveto
+ -109 46 -117 129 145 87 101 132 83 -35 70 -67 45 vhcurveto
+ 1 6 66 -8 69 -8 64 -13 rlinecurve
+ 7 6 14 57 -5 10 rlineto
+ -323 -47 rmoveto
+ 104 26 -122 -91 -69 -20 -111 -96 -60 -40 66 48 -15 hvcurveto
+ -11 34 -3 34 35 vvcurveto
+ 74 27 102 88 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="six">
+ -45 471 688 rmoveto
+ 6 -15 -25 6 -15 hhcurveto
+ -89 -86 -59 -65 -62 hvcurveto
+ -89 -89 -45 -124 -125 vvcurveto
+ -114 50 -137 141 120 115 107 117 85 -59 81 -91 -69 -63 -29 -43 -53 vhcurveto
+ -7 1 1 96 19 101 79 73 rlinecurve
+ 38 41 54 27 61 hhcurveto
+ 20 18 -3 -8 20 hvcurveto
+ 9 4 rlineto
+ -319 -369 rmoveto
+ 21 22 61 28 41 hhcurveto
+ 79 57 -68 -74 -76 -44 -64 -85 -106 -25 142 91 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="six-ar">
+ 15 309 4 rmoveto
+ 17 38 16 41 13 41 rrcurveto
+ 1 -4 6 -1 1 vhcurveto
+ -49 98 -11 161 22 138 -99 -4 -77 25 -63 35 -11 -34 -17 -38 -13 -34 -3 -8 -2 -12 9 -5 58 -31 67 -21 88 -2 -1 -8 -1 -17 -1 -6 -14 -141 23 -126 40 -99 rrcurveto
+ 2 -5 10 2 2 4 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="six-ar.dnom">
+ -99 214 3 rmoveto
+ 12 26 11 29 9 29 rrcurveto
+ 1 -2 4 -1 vhcurveto
+ -34 69 -8 113 15 96 -69 -2 -54 17 -44 25 -8 -24 -12 -27 -9 -24 -2 -5 -1 -9 6 -3 41 -22 47 -15 61 -1 rrcurveto
+ -6 -1 -11 -1 -5 vhcurveto
+ -10 -98 17 -89 28 -69 1 -3 7 1 1 3 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="six-ar.numr">
+ -99 214 272 rmoveto
+ 12 26 11 29 9 29 rrcurveto
+ 1 -2 4 -1 vhcurveto
+ -34 69 -8 113 15 96 -69 -2 -54 17 -44 25 -8 -24 -12 -27 -9 -24 -2 -5 -1 -9 6 -3 41 -22 47 -15 61 -1 rrcurveto
+ -6 -1 -11 -1 -5 vhcurveto
+ -10 -98 17 -89 28 -69 1 -3 7 1 1 3 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="six-persian">
+ 112 377 335 rmoveto
+ 34 38 29 33 11 51 -38 -13 -29 -23 -36 -20 -67 -38 -68 31 -23 45 -11 22 39 83 89 -45 55 -28 24 119 -95 -6 -66 -5 -218 -220 186 -75 rrcurveto
+ -59 -63 -110 -131 -91 vvcurveto
+ 1 -1 rlineto
+ 4 6 9 3 2 hvcurveto
+ 137 198 6 4 197 123 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="six-persian.dnom">
+ -99 230 234 rmoveto
+ 24 27 20 23 8 36 -27 -9 -20 -16 -25 -14 -47 -27 -48 22 -16 31 -8 16 28 58 62 -32 38 -19 17 83 -66 -4 -46 -4 -153 -154 130 -52 rrcurveto
+ -41 -44 -77 -92 -64 vvcurveto
+ 1 hlineto
+ 2 5 6 2 1 hvcurveto
+ 96 139 4 2 138 86 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="six-persian.numr">
+ -99 230 504 rmoveto
+ 24 26 20 23 8 36 -27 -9 -20 -16 -25 -14 -47 -27 -48 22 -16 31 -8 16 28 58 62 -32 38 -19 17 83 -66 -4 -46 -4 -153 -154 130 -52 rrcurveto
+ -41 -44 -77 -92 -64 vvcurveto
+ 1 hlineto
+ 2 5 6 2 1 hvcurveto
+ 96 139 4 2 138 87 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="six.dnom">
+ 338 413 rmoveto
+ 4 -10 -17 3 -10 hhcurveto
+ -61 -57 -35 -39 -43 hvcurveto
+ -60 -55 -31 -72 -76 vvcurveto
+ -69 34 -82 96 81 78 64 71 51 -41 48 -61 -47 -42 -17 -26 -36 vhcurveto
+ -5 1 1 58 13 60 53 44 rlinecurve
+ 23 28 37 16 41 hhcurveto
+ 14 12 -2 -5 13 hvcurveto
+ 7 2 rlineto
+ -217 -221 rmoveto
+ 13 15 41 16 28 hhcurveto
+ 54 38 -41 -44 -47 -31 -37 -56 -70 -19 82 58 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="six.numr">
+ 338 688 rmoveto
+ 4 -10 -17 3 -10 hhcurveto
+ -61 -57 -35 -39 -43 hvcurveto
+ -60 -55 -31 -72 -76 vvcurveto
+ -69 34 -82 96 81 78 64 71 51 -41 48 -61 -47 -42 -17 -26 -36 vhcurveto
+ -5 1 1 58 13 60 53 44 rlinecurve
+ 23 28 37 16 41 hhcurveto
+ 14 12 -2 -5 13 hvcurveto
+ 7 2 rlineto
+ -217 -221 rmoveto
+ 13 15 41 16 28 hhcurveto
+ 54 38 -41 -44 -47 -31 -37 -56 -70 -19 82 58 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="slash">
+ -155 380 720 rmoveto
+ -11 -2 -386 -888 3 -14 32 -8 389 896 -5 11 rlineto
+ endchar
+ </CharString>
+ <CharString name="softhyphen">
+ -545 endchar
+ </CharString>
+ <CharString name="space">
+ -218 endchar
+ </CharString>
+ <CharString name="space#1">
+ -212 endchar
+ </CharString>
+ <CharString name="sterling">
+ 104 301 134 rmoveto
+ 0 -50 36 -80 vhcurveto
+ -3 6 31 16 49 50 17 61 rlinecurve
+ 2 5 1 4 2 5 59 -1 36 -1 89 -3 4 48 rcurveline
+ -178 -6 rlineto
+ 134 32 -4 163 108 hhcurveto
+ 35 28 -29 -32 -37 13 -7 23 hvcurveto
+ 0 46 1 60 vvcurveto
+ 55 -50 23 -51 -142 -78 -109 -173 -22 vhcurveto
+ -2 -15 -3 -17 -3 -18 -36 3 -27 1 -43 1 -8 -45 rcurveline
+ 35 1 36 1 35 1 -11 -50 -17 -48 -20 -19 -31 -31 -41 -15 -22 -37 -23 -39 -12 -33 -3 -33 20 -17 rcurveline
+ 46 15 24 75 67 hhcurveto
+ 26 52 -21 -43 66 hvcurveto
+ -29 36 59 -29 81 hhcurveto
+ 43 25 25 30 29 hvcurveto
+ 39 41 5 57 56 vvcurveto
+ 11 -1 30 -4 17 vhcurveto
+ -24 -5 rlineto
+ 2 -14 2 -24 -17 vvcurveto
+ -67 -36 -61 -63 -44 -86 25 37 -54 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="sukun-ar">
+ 62 11 rmoveto
+ -10 -12 -26 -17 -39 -19 -39 -19 -21 -12 -2 -5 10 -1 rcurveline
+ 83 6 58 31 30 59 rrcurveto
+ 9 18 5 15 12 vvcurveto
+ 10 -4 9 -6 6 vhcurveto
+ -10 10 -26 7 -43 2 rrcurveto
+ -18 hlineto
+ -32 -21 -5 -10 -8 hvcurveto
+ -16 -20 -12 -20 -9 -21 rrcurveto
+ -9 -21 -4 -12 -5 vvcurveto
+ 1 hlineto
+ 2 1 3 3 6 5 rrcurveto
+ 15 16 8 6 34 hhcurveto
+ 8 10 0 -1 10 hvcurveto
+ 36 -4 20 -4 6 -5 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="sukun-ar.alt">
+ -21 -69 rmoveto
+ 21 -4 18 10 15 27 21 36 3 34 -15 31 -32 66 -28 -59 -18 -43 -18 -44 -14 -44 47 -10 rrcurveto
+ -9 69 rmoveto
+ 9 4 9 9 10 vhcurveto
+ 9 10 11 -2 13 -11 19 -18 -3 -12 -24 -6 -24 -6 -13 3 -1 14 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="t">
+ -160 121 582 rmoveto
+ 2 -26 0 -64 -51 vvcurveto
+ -6 -6 rlineto
+ -104 hlineto
+ -6 -6 -7 -24 5 -5 rlineto
+ 112 hlineto
+ 6 -7 rlineto
+ -190 vlineto
+ -135 2 -19 21 -27 vhcurveto
+ -24 18 31 -7 23 hhcurveto
+ 58 60 45 43 46 hvcurveto
+ -7 15 -12 2 rlineto
+ -19 -30 -36 -22 -25 hhcurveto
+ -63 -8 79 71 hvcurveto
+ 189 vlineto
+ 6 6 rlineto
+ 119 hlineto
+ 6 5 8 26 -5 4 rlineto
+ -128 hlineto
+ -6 5 1 58 5 51 5 57 rlinecurve
+ -7 5 rlineto
+ endchar
+ </CharString>
+ <CharString name="tah-ar">
+ 317 295 479 rmoveto
+ 22 -321 74 118 -22 321 rlineto
+ 212 -407 rmoveto
+ 34 45 46 39 -42 50 -34 40 -77 -20 -31 -29 -65 -61 -60 -65 -58 -67 -88 -15 -97 -8 -102 3 rrcurveto
+ -5 -4 -9 -3 5 hvcurveto
+ 74 -44 37 -39 65 -6 28 -3 33 4 44 11 131 34 99 53 67 90 rrcurveto
+ -49 22 rmoveto
+ 4 -8 5 -14 -11 -5 -57 -27 -68 -14 -70 -14 36 37 34 39 47 25 28 15 40 -12 12 -22 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="tah-ar.fina">
+ -44 294 479 rmoveto
+ 22 -321 74 118 -22 321 rlineto
+ 212 -407 rmoveto
+ 34 45 46 39 -42 50 -34 40 -77 -20 -31 -29 -65 -61 -60 -65 -58 -67 -88 -15 -97 -8 -102 3 rrcurveto
+ -5 -4 -9 -3 5 hvcurveto
+ 74 -44 37 -39 65 -6 28 -3 33 4 44 11 131 34 99 53 67 90 rrcurveto
+ -49 22 rmoveto
+ 4 -8 5 -14 -11 -5 -57 -27 -68 -14 -70 -14 36 37 34 39 47 25 28 15 40 -12 12 -22 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="tah-ar.init">
+ 210 197 504 rmoveto
+ 21 -320 74 117 -21 321 rlineto
+ 198 -249 rmoveto
+ -38 -36 -17 -16 -17 hvcurveto
+ -64 -60 -59 -65 -58 -66 -27 -6 -59 -7 -90 -7 rrcurveto
+ -1 vlineto
+ -21 -128 rlineto
+ 2 1 0 1 2 hvcurveto
+ -1 vlineto
+ 81 8 88 17 94 28 94 28 72 47 50 67 17 22 15 25 14 28 rrcurveto
+ 6 11 3 11 11 vvcurveto
+ 36 -32 34 -38 vhcurveto
+ -31 -152 rmoveto
+ -5 -2 -4 -4 -2 vhcurveto
+ -57 -27 -68 -14 -70 -14 36 37 34 38 47 26 rrcurveto
+ 5 8 9 2 9 hhcurveto
+ 29 29 -17 -25 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="tah-ar.init.ain">
+ 341 317 499 rmoveto
+ 22 -321 74 117 -22 321 rlineto
+ -352 -440 rmoveto
+ -13 -34 -13 -43 -13 -51 1 -29 27 -14 28 -3 44 -4 54 3 64 11 64 11 63 14 62 18 40 15 37 18 34 22 61 39 38 51 34 65 14 28 -3 26 -21 25 rrcurveto
+ -17 20 -24 7 -31 -6 -31 -6 -24 -10 -15 -15 -64 -60 -59 -63 -58 -67 -34 -8 -46 -3 -36 -2 rrcurveto
+ -1 hlineto
+ -67 -6 -81 3 -14 48 rrcurveto
+ 515 55 rmoveto
+ 7 -14 -1 -8 -8 -4 -57 -27 -67 -15 -71 -13 36 36 34 40 47 25 29 16 40 -15 11 -21 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="tah-ar.init.dal">
+ 271 251 499 rmoveto
+ 21 -321 74 118 -21 321 rlineto
+ 211 -408 rmoveto
+ 34 45 47 40 -42 50 -34 40 -77 -20 -31 -29 -64 -60 -60 -65 -57 -66 -76 -16 -78 3 -13 3 -29 7 -10 34 5 31 rrcurveto
+ 2 -2 1 -2 -3 vhcurveto
+ -42 -56 -34 -109 67 -33 rrcurveto
+ 28 -14 39 7 0 vvcurveto
+ 155 22 185 65 91 121 rrcurveto
+ -48 23 rmoveto
+ 4 -8 5 -14 -11 -5 -57 -27 -68 -14 -70 -14 36 37 34 39 47 25 28 15 40 -12 12 -22 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="tah-ar.init.feh">
+ 401 375 514 rmoveto
+ 21 -321 74 117 -22 321 rlineto
+ 260 -352 rmoveto
+ 14 28 -2 26 -21 25 -17 20 -25 8 -31 -6 -31 -6 -24 -10 -15 -15 -64 -60 -60 -63 -57 -67 -38 -8 -37 -7 -39 -6 -49 -8 -47 -3 -46 3 -46 3 -26 14 -8 28 rrcurveto
+ -13 -34 -13 -42 -13 -51 1 -29 27 -15 28 -3 95 -9 212 44 71 23 46 15 42 19 40 23 67 40 43 53 36 70 rrcurveto
+ -97 -33 rmoveto
+ 7 -14 -1 -8 -8 -4 -57 -27 -66 -15 -71 -13 36 36 34 40 47 25 29 16 39 -16 11 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="tah-ar.init.hah">
+ 312 290 657 rmoveto
+ 22 -321 73 118 -22 321 rlineto
+ 206 -434 rmoveto
+ 17 22 16 26 17 30 17 30 -1 28 -21 25 -17 20 -24 7 -31 -6 -31 -6 -24 -10 -16 -14 -64 -60 -59 -64 -57 -67 -76 -17 -65 -35 -51 -56 -51 -56 -33 -63 -15 -70 rrcurveto
+ -6 9 0 3 3 vhcurveto
+ 35 55 40 39 49 24 96 47 107 26 100 42 50 21 43 35 37 50 rrcurveto
+ -43 49 rmoveto
+ 7 -14 0 -9 -8 -4 -57 -27 -68 -14 -70 -14 36 37 34 39 47 26 29 16 39 -17 11 -19 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="tah-ar.init.heh">
+ 402 375 628 rmoveto
+ 22 -320 74 117 -22 321 rlineto
+ 260 -352 rmoveto
+ 14 28 -3 27 -21 25 -17 20 -24 7 -31 -6 -31 -6 -24 -11 -15 -14 -60 -57 -70 -70 -52 -64 -29 -12 -32 -21 -36 -33 -36 -33 -27 -28 -19 -24 -52 -67 -42 -80 -39 -78 -9 -18 rcurveline
+ 4 30 rlineto
+ 1 vlineto
+ -53 -65 rlineto
+ -1 vlineto
+ -3 -38 -3 -41 1 -30 6 -17 rlinecurve
+ 6 -17 13 11 19 40 29 58 23 56 15 36 15 36 27 41 40 47 58 70 55 41 99 28 51 15 48 19 46 25 74 40 46 56 39 74 rrcurveto
+ -97 -33 rmoveto
+ 7 -14 -1 -9 -8 -4 -57 -27 -68 -14 -70 -14 36 37 34 39 47 26 29 16 40 -17 11 -19 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="tah-ar.init.kaf">
+ 254 351 308 rmoveto
+ -18 255 -74 -110 18 -262 rlineto
+ 250 189 rmoveto
+ -38 -35 -17 -16 -17 hvcurveto
+ -64 -60 -59 -64 -58 -66 -27 -6 -79 -10 -129 -12 rrcurveto
+ -1 vlineto
+ -21 -128 123 13 109 20 94 28 rlinecurve
+ 94 28 72 46 50 67 17 22 16 25 14 28 rrcurveto
+ 6 11 3 12 11 vvcurveto
+ 36 -33 33 -38 vhcurveto
+ -30 -152 rmoveto
+ -5 -3 -3 -4 -2 vhcurveto
+ -57 -27 -68 -15 -70 -14 36 37 34 39 47 26 rrcurveto
+ 5 8 10 2 9 hhcurveto
+ 29 29 -18 -25 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="tah-ar.init.meem">
+ 221 203 603 rmoveto
+ 21 -321 74 117 -22 321 rlineto
+ 260 -351 rmoveto
+ 14 28 -3 26 -21 25 -17 20 -24 7 -31 -6 -31 -6 -24 -10 -15 -15 -60 -56 -69 -71 -52 -64 -64 -24 -42 -30 -21 -36 -21 -36 -25 -52 -30 -67 21 -2 rcurveline
+ 22 55 30 34 39 13 39 13 39 12 42 12 51 15 49 19 46 25 74 40 46 57 38 74 rrcurveto
+ -97 -34 rmoveto
+ 7 -14 0 -8 -8 -4 -57 -27 -67 -15 -71 -13 36 36 33 40 47 25 29 16 40 -16 11 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="tah-ar.init.qantara">
+ 493 462 574 rmoveto
+ 21 -321 74 118 -21 320 rlineto
+ 258 -279 rmoveto
+ 9 30 -8 25 -24 21 -44 37 -74 -43 -20 -26 -53 -69 -49 -73 -45 -76 -38 -15 -47 -19 -57 -22 -57 -22 -53 -13 -49 -5 -49 -5 -37 10 -26 24 -26 24 0 51 24 78 rrcurveto
+ 4 1 -1 2 -3 hhcurveto
+ -3 -2 -1 -2 -1 hvcurveto
+ -8 -16 -11 -27 -14 -36 -23 -59 -22 -83 27 -65 12 -28 27 -14 43 1 45 1 56 10 67 19 138 40 141 66 106 75 86 61 32 45 30 95 rrcurveto
+ -90 -49 rmoveto
+ 10 -12 1 -9 -8 -5 -52 -37 -66 -26 -66 -24 30 43 28 44 41 32 24 18 42 -3 16 -21 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="tah-ar.init.ragaa">
+ 314 209 569 rmoveto
+ 22 -320 74 117 -22 321 rlineto
+ -94 -599 rmoveto
+ 13 5 13 5 13 4 54 16 48 14 51 24 37 18 36 32 34 46 17 22 17 27 17 30 17 30 -2 28 -21 25 -17 20 -24 7 -31 -6 -31 -6 -24 -10 -15 -14 rrcurveto
+ -64 -60 -59 -64 -58 -67 -75 -16 -81 -49 -30 -63 -6 -13 -15 -32 -3 -13 42 -29 rcurveline
+ 46 31 48 34 53 24 rrcurveto
+ 257 214 rmoveto
+ 7 -14 -1 -9 -8 -4 -57 -28 -66 -13 -71 -14 36 37 33 38 47 26 29 15 40 -14 11 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="tah-ar.init.reh">
+ 222 214 550 rmoveto
+ 22 -321 74 118 -22 321 rlineto
+ 198 -249 rmoveto
+ -38 -35 -17 -16 -17 hvcurveto
+ -64 -60 -60 -64 -57 -66 rrcurveto
+ -1 vlineto
+ -2 -2 -35 -6 -34 -9 -32 -15 rlinecurve
+ -44 -20 -33 -40 -21 -48 rrcurveto
+ -1 vlineto
+ -10 -12 -5 -11 -9 vvcurveto
+ -10 8 -13 9 6 5 5 9 7 vhcurveto
+ 28 28 39 18 42 8 64 12 66 20 68 26 68 26 54 39 39 52 13 17 12 19 13 21 rrcurveto
+ 10 17 6 17 17 3 -1 3 3 vvcurveto
+ 32 -3 -31 28 -35 hhcurveto
+ -30 -152 rmoveto
+ -5 -3 -3 -4 -2 vhcurveto
+ -57 -28 -67 -14 -71 -14 36 37 34 39 47 26 rrcurveto
+ 5 8 10 2 9 hhcurveto
+ 29 29 -18 -25 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="tah-ar.init.sad">
+ 538 504 530 rmoveto
+ 22 -321 74 117 -22 321 rlineto
+ 198 -249 rmoveto
+ -38 -35 -17 -16 -17 hvcurveto
+ -64 -60 -60 -63 -57 -67 rrcurveto
+ -15 -67 -127 -32 -87 hhcurveto
+ -64 -46 14 35 -27 hvcurveto
+ -8 10 -4 13 17 vvcurveto
+ 28 12 37 23 46 vhcurveto
+ 1 2 0 0 1 vvcurveto
+ 3 -3 0 -2 -2 -1 0 -2 -1 vhcurveto
+ -10 -15 -15 -23 -20 -34 -20 -34 -14 -34 -11 -36 rrcurveto
+ -7 -22 -4 -22 -20 vvcurveto
+ -12 2 -11 2 -11 vhcurveto
+ -49 11 61 -9 68 hhcurveto
+ 31 34 3 4 39 hvcurveto
+ 147 16 149 43 114 55 97 47 39 43 43 84 rrcurveto
+ 6 11 3 12 11 vvcurveto
+ 36 -33 33 -38 vhcurveto
+ -30 -152 rmoveto
+ -5 -3 -3 -4 -2 vhcurveto
+ -57 -27 -68 -15 -70 -14 36 37 35 39 47 26 rrcurveto
+ 5 8 9 2 9 hhcurveto
+ 29 29 -18 -25 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="tah-ar.init.yeh">
+ 197 180 561 rmoveto
+ 21 -321 74 117 -21 321 rlineto
+ 259 -352 rmoveto
+ 14 28 -2 27 -21 25 -17 20 -24 7 -31 -6 -31 -6 -24 -11 -15 -14 -60 -57 -70 -70 -52 -64 -55 -21 -39 -26 -21 -29 -21 -29 -22 -39 -22 -50 21 -11 rcurveline
+ 23 35 28 22 34 10 34 10 35 10 35 10 51 15 48 19 46 25 74 40 45 56 39 74 rrcurveto
+ -96 -33 rmoveto
+ 7 -14 -1 -8 -8 -4 -57 -28 -67 -14 -71 -14 36 37 34 39 47 26 29 16 40 -16 11 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="tah-ar.medi">
+ -158 197 504 rmoveto
+ 21 -320 74 117 -21 321 rlineto
+ 198 -249 rmoveto
+ -38 -36 -17 -16 -17 hvcurveto
+ -64 -60 -59 -65 -58 -66 -27 -6 -59 -7 -90 -7 rrcurveto
+ -1 vlineto
+ -21 -128 rlineto
+ 2 1 0 1 2 hvcurveto
+ -1 vlineto
+ 81 8 88 17 94 28 94 28 72 47 50 67 17 22 15 25 14 28 rrcurveto
+ 6 11 3 11 11 vvcurveto
+ 36 -32 34 -38 vhcurveto
+ -31 -152 rmoveto
+ -5 -2 -4 -4 -2 vhcurveto
+ -57 -27 -68 -14 -70 -14 36 37 34 38 47 26 rrcurveto
+ 5 8 9 2 9 hhcurveto
+ 29 29 -17 -25 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="tah-ar.medi.ain">
+ -37 317 499 rmoveto
+ 22 -321 74 117 -22 321 rlineto
+ -352 -440 rmoveto
+ -13 -34 -13 -43 -13 -51 1 -29 27 -14 28 -3 44 -4 54 3 64 11 64 11 63 14 62 18 40 15 37 18 34 22 61 39 38 51 34 65 14 28 -3 26 -21 25 rrcurveto
+ -17 20 -24 7 -31 -6 -31 -6 -24 -10 -15 -15 -64 -60 -59 -63 -58 -67 -34 -8 -46 -3 -36 -2 rrcurveto
+ -1 hlineto
+ -67 -6 -81 3 -14 48 rrcurveto
+ 515 55 rmoveto
+ 7 -14 -1 -8 -8 -4 -57 -27 -67 -15 -71 -13 36 36 34 40 47 25 29 16 40 -15 11 -21 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="tah-ar.medi.dal">
+ -104 251 499 rmoveto
+ 21 -321 74 118 -21 321 rlineto
+ 211 -408 rmoveto
+ 34 45 47 40 -42 50 -34 40 -77 -20 -31 -29 -64 -60 -60 -65 -57 -66 -76 -16 -78 3 -13 3 -29 7 -10 34 5 31 rrcurveto
+ 2 -2 1 -2 -3 vhcurveto
+ -42 -56 -34 -109 67 -33 rrcurveto
+ 28 -14 39 7 0 vvcurveto
+ 155 22 185 65 91 121 rrcurveto
+ -48 23 rmoveto
+ 4 -8 5 -14 -11 -5 -57 -27 -68 -14 -70 -14 36 37 34 39 47 25 28 15 40 -12 12 -22 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="tah-ar.medi.feh">
+ 20 375 514 rmoveto
+ 21 -321 74 117 -22 321 rlineto
+ 260 -352 rmoveto
+ 14 28 -2 26 -21 25 -17 20 -25 8 -31 -6 -31 -6 -24 -10 -15 -15 -64 -60 -60 -63 -57 -67 -38 -8 -37 -7 -39 -6 -49 -8 -47 -3 -46 3 -46 3 -26 14 -8 28 rrcurveto
+ -13 -34 -13 -42 -13 -51 1 -29 27 -15 28 -3 95 -9 212 44 71 23 46 15 42 19 40 23 67 40 43 53 36 70 rrcurveto
+ -97 -33 rmoveto
+ 7 -14 -1 -8 -8 -4 -57 -27 -66 -15 -71 -13 36 36 34 40 47 25 29 16 39 -16 11 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="tah-ar.medi.hah">
+ -65 290 657 rmoveto
+ 22 -321 73 118 -22 321 rlineto
+ 206 -434 rmoveto
+ 17 22 16 26 17 30 17 30 -1 28 -21 25 -17 20 -24 7 -31 -6 -31 -6 -24 -10 -16 -14 -64 -60 -59 -64 -57 -67 -76 -17 -65 -35 -51 -56 -51 -56 -33 -63 -15 -70 rrcurveto
+ -6 9 0 3 3 vhcurveto
+ 35 55 40 39 49 24 96 47 107 26 100 42 50 21 43 35 37 50 rrcurveto
+ -43 49 rmoveto
+ 7 -14 0 -9 -8 -4 -57 -27 -68 -14 -70 -14 36 37 34 39 47 26 29 16 39 -17 11 -19 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="tah-ar.medi.heh">
+ 21 375 628 rmoveto
+ 22 -320 74 117 -22 321 rlineto
+ 260 -352 rmoveto
+ 14 28 -3 27 -21 25 -17 20 -24 7 -31 -6 -31 -6 -24 -11 -15 -14 -60 -57 -70 -70 -52 -64 -29 -12 -32 -21 -36 -33 -36 -33 -27 -28 -19 -24 -52 -67 -42 -80 -39 -78 -9 -18 rcurveline
+ 4 30 rlineto
+ 1 vlineto
+ -53 -65 rlineto
+ -1 vlineto
+ -3 -38 -3 -41 1 -30 6 -17 rlinecurve
+ 6 -17 13 11 19 40 29 58 23 56 15 36 15 36 27 41 40 47 58 70 55 41 99 28 51 15 48 19 46 25 74 40 46 56 39 74 rrcurveto
+ -97 -33 rmoveto
+ 7 -14 -1 -9 -8 -4 -57 -27 -68 -14 -70 -14 36 37 34 39 47 26 29 16 40 -17 11 -19 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="tah-ar.medi.kaf">
+ -99 351 308 rmoveto
+ -18 255 -74 -110 18 -262 rlineto
+ 250 189 rmoveto
+ -38 -35 -17 -16 -17 hvcurveto
+ -64 -60 -59 -64 -58 -66 -27 -6 -79 -10 -129 -12 rrcurveto
+ -1 vlineto
+ -21 -128 123 13 109 20 94 28 rlinecurve
+ 94 28 72 46 50 67 17 22 16 25 14 28 rrcurveto
+ 6 11 3 12 11 vvcurveto
+ 36 -33 33 -38 vhcurveto
+ -30 -152 rmoveto
+ -5 -3 -3 -4 -2 vhcurveto
+ -57 -27 -68 -15 -70 -14 36 37 34 39 47 26 rrcurveto
+ 5 8 10 2 9 hhcurveto
+ 29 29 -18 -25 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="tah-ar.medi.meem">
+ -38 316 622 rmoveto
+ 22 -321 74 117 -22 321 rlineto
+ 260 -351 rmoveto
+ 14 28 -2 26 -21 25 -17 20 -25 7 -31 -6 -31 -6 -24 -10 -15 -14 -60 -57 -69 -71 -52 -64 -13 -5 -30 -8 -49 -12 -49 -12 -28 -7 -9 -6 -35 -23 -27 -28 -16 -33 rrcurveto
+ -16 -33 -21 -43 -24 -54 21 -2 rcurveline
+ 30 66 46 38 62 9 62 9 62 15 63 21 51 15 49 19 46 25 74 40 45 56 39 75 rrcurveto
+ -97 -34 rmoveto
+ 7 -14 -1 -8 -8 -4 -57 -27 -68 -15 -70 -14 36 37 35 39 47 26 29 16 39 -16 11 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="tah-ar.medi.postsad">
+ -158 197 504 rmoveto
+ 21 -320 74 117 -21 321 rlineto
+ 198 -249 rmoveto
+ -38 -36 -17 -16 -17 hvcurveto
+ -64 -60 -59 -65 -58 -66 -27 -6 -59 -7 -90 -7 rrcurveto
+ -1 vlineto
+ -21 -128 rlineto
+ 2 1 0 1 2 hvcurveto
+ -1 vlineto
+ 81 8 88 17 94 28 94 28 72 47 50 67 17 22 15 25 14 28 rrcurveto
+ 6 11 3 11 11 vvcurveto
+ 36 -32 34 -38 vhcurveto
+ -31 -152 rmoveto
+ -5 -2 -4 -4 -2 vhcurveto
+ -57 -27 -68 -14 -70 -14 36 37 34 38 47 26 rrcurveto
+ 5 8 9 2 9 hhcurveto
+ 29 29 -17 -25 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="tah-ar.medi.qantara">
+ 125 462 574 rmoveto
+ 21 -321 74 118 -21 320 rlineto
+ 258 -279 rmoveto
+ 9 30 -8 25 -24 21 -44 37 -74 -43 -20 -26 -53 -69 -49 -73 -45 -76 -38 -15 -47 -19 -57 -22 -57 -22 -53 -13 -49 -5 -49 -5 -37 10 -26 24 -26 24 0 51 24 78 rrcurveto
+ 4 1 -1 2 -3 hhcurveto
+ -3 -2 -1 -2 -1 hvcurveto
+ -8 -16 -11 -27 -14 -36 -23 -59 -22 -83 27 -65 12 -28 27 -14 43 1 45 1 56 10 67 19 138 40 141 66 106 75 86 61 32 45 30 95 rrcurveto
+ -90 -49 rmoveto
+ 10 -12 1 -9 -8 -5 -52 -37 -66 -26 -66 -24 30 43 28 44 41 32 24 18 42 -3 16 -21 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="tah-ar.medi.ragaa">
+ -145 209 571 rmoveto
+ 22 -321 74 117 -22 321 rlineto
+ -94 -598 rmoveto
+ 13 5 13 4 13 4 54 16 48 15 51 24 37 18 36 32 35 46 17 22 16 27 17 30 17 30 -2 28 -21 25 -17 20 -24 7 -31 -6 -31 -6 -24 -10 -15 -15 rrcurveto
+ -64 -60 -60 -63 -57 -67 -77 -17 -78 -47 -31 -64 -6 -13 -15 -31 -3 -14 42 -30 rcurveline
+ 1 hlineto
+ 4 3 3 2 2 2 42 29 46 32 49 22 rrcurveto
+ 257 213 rmoveto
+ 7 -14 -1 -8 -8 -4 -57 -27 -66 -15 -71 -13 36 36 33 40 47 25 29 16 40 -15 11 -21 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="tah-ar.medi.reh">
+ -151 214 550 rmoveto
+ 22 -321 74 118 -22 321 rlineto
+ 198 -249 rmoveto
+ -38 -35 -17 -16 -17 hvcurveto
+ -64 -60 -60 -64 -57 -66 rrcurveto
+ -1 vlineto
+ -2 -2 -35 -6 -34 -9 -32 -15 rlinecurve
+ -44 -20 -33 -40 -21 -48 rrcurveto
+ -1 vlineto
+ -10 -12 -5 -11 -9 vvcurveto
+ -10 8 -13 9 6 5 5 9 7 vhcurveto
+ 28 28 39 18 42 8 64 12 66 20 68 26 68 26 54 39 39 52 13 17 12 19 13 21 rrcurveto
+ 10 17 6 17 17 3 -1 3 3 vvcurveto
+ 32 -3 -31 28 -35 hhcurveto
+ -30 -152 rmoveto
+ -5 -3 -3 -4 -2 vhcurveto
+ -57 -28 -67 -14 -71 -14 36 37 34 39 47 26 rrcurveto
+ 5 8 10 2 9 hhcurveto
+ 29 29 -18 -25 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="tah-ar.medi.sad">
+ 137 504 530 rmoveto
+ 22 -321 74 117 -22 321 rlineto
+ 198 -249 rmoveto
+ -38 -35 -17 -16 -17 hvcurveto
+ -64 -60 -60 -63 -57 -67 rrcurveto
+ -15 -67 -127 -32 -87 hhcurveto
+ -64 -46 14 35 -27 hvcurveto
+ -8 10 -4 13 17 vvcurveto
+ 28 12 37 23 46 vhcurveto
+ 1 2 0 0 1 vvcurveto
+ 3 -3 0 -2 -2 -1 0 -2 -1 vhcurveto
+ -10 -15 -15 -23 -20 -34 -20 -34 -14 -34 -11 -36 rrcurveto
+ -7 -22 -4 -22 -20 vvcurveto
+ -12 2 -11 2 -11 vhcurveto
+ -49 11 61 -9 68 hhcurveto
+ 31 34 3 4 39 hvcurveto
+ 147 16 149 43 114 55 97 47 39 43 43 84 rrcurveto
+ 6 11 3 12 11 vvcurveto
+ 36 -33 33 -38 vhcurveto
+ -30 -152 rmoveto
+ -5 -3 -3 -4 -2 vhcurveto
+ -57 -27 -68 -15 -70 -14 36 37 35 39 47 26 rrcurveto
+ 5 8 9 2 9 hhcurveto
+ 29 29 -18 -25 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="tah-ar.medi.yeh">
+ 26 380 599 rmoveto
+ 22 -321 73 118 -21 320 rlineto
+ -171 -612 rmoveto
+ 43 8 42 10 42 14 51 15 48 20 46 25 75 41 45 54 39 74 14 28 -3 26 -21 25 -17 20 -24 7 -31 -6 -31 -6 -23 -9 -16 -15 -60 -56 -70 -72 -52 -63 rrcurveto
+ -27 -10 -47 -9 -35 -9 -41 -10 -39 -9 -37 -9 -37 -9 -32 -21 -27 -35 -25 -30 -15 -35 -18 -40 rrcurveto
+ -1 vlineto
+ 21 -17 17 21 20 17 23 11 rlinecurve
+ 57 27 76 15 69 13 rrcurveto
+ 334 228 rmoveto
+ 7 -14 -1 -9 -8 -4 -57 -27 -68 -14 -70 -14 37 36 33 40 47 25 29 16 40 -15 11 -20 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="tahabove-ar">
+ -26 143 rmoveto
+ 8 -125 29 46 -8 125 rlineto
+ 82 -159 rmoveto
+ 13 18 18 15 -16 20 -13 16 -30 -9 -12 -11 -25 -24 -23 -25 -23 -26 -34 -6 -38 -3 -40 1 rrcurveto
+ -2 -2 -4 -1 2 hvcurveto
+ 29 -17 15 -15 25 -2 11 -1 13 1 17 4 51 13 38 21 26 35 rrcurveto
+ -19 9 rmoveto
+ 2 -3 2 -6 -4 -2 -22 -11 -27 -5 -27 -5 14 14 13 15 18 10 11 6 15 -4 5 -9 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="tau">
+ -59 130 461 rmoveto
+ -29 -39 -5 -30 -20 hvcurveto
+ -13 -20 -22 -102 -4 -19 22 -3 rcurveline
+ 13 34 17 46 13 14 rrcurveto
+ 20 20 37 2 28 hhcurveto
+ 75 hlineto
+ 7 -7 rlineto
+ -7 -83 -8 -83 -83 vvcurveto
+ -63 10 -88 68 43 53 38 37 39 vhcurveto
+ -9 14 -9 2 rlineto
+ -10 -16 -26 -15 -19 hhcurveto
+ -62 1 134 34 54 9 77 2 34 hvcurveto
+ 9 8 rlineto
+ 68 hlineto
+ 28 28 4 6 27 hvcurveto
+ 43 67 -13 9 rlineto
+ -16 -34 -38 -7 -38 hhcurveto
+ endchar
+ </CharString>
+ <CharString name="tcheh-ar">
+ 319 648 -186 rmoveto
+ 4 4 -12 -3 -5 -1 -175 -46 -260 -39 -136 153 -78 88 247 211 55 48 40 35 43 36 32 46 27 38 64 138 -66 27 -64 27 -108 -20 -44 -31 -66 -47 -39 -153 75 -83 rrcurveto
+ -90 -82 -118 -209 30 -141 55 -261 426 67 163 198 rrcurveto
+ -446 594 rmoveto
+ 29 25 136 24 20 -59 -34 -32 -52 -32 -41 -30 -16 36 -27 30 -15 38 rrcurveto
+ 327 -358 rmoveto
+ -10 19 -11 16 -14 13 -49 46 -46 -45 -41 -55 -41 -56 -38 -66 -17 -33 -1 -1 rcurveline
+ 1 -44 25 34 94 211 60 -147 rlinecurve
+ 6 -15 5 5 4 5 27 35 26 37 20 41 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="teh-ar">
+ 437 462 468 rmoveto
+ 60 119 -64 -12 -64 -12 -64 -12 rlinecurve
+ -60 -119 64 12 64 12 64 12 rlinecurve
+ 157 -126 rmoveto
+ 13 -34 19 -64 -1 -23 rrcurveto
+ 0 -194 -97 -150 -87 -79 31 85 4 vhcurveto
+ 3 60 37 57 8 15 4 8 -8 5 -11 -16 rrcurveto
+ -54 -81 -37 -81 -55 vvcurveto
+ -165 178 14 11 166 205 106 108 53 vhcurveto
+ 60 120 -63 121 0 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="tehMarbuta-ar">
+ -117 210 521 rmoveto
+ 60 119 -64 -12 -64 -12 -64 -12 rlinecurve
+ -60 -119 64 12 64 12 64 12 rlinecurve
+ 7 -354 rmoveto
+ 50 226 -122 160 -114 -333 -40 -116 -21 -132 120 31 84 22 27 68 16 74 rrcurveto
+ -79 98 rmoveto
+ 13 -9 37 -78 -17 -11 -29 -18 -46 -17 -39 17 -6 3 -9 8 2 4 4 15 42 119 48 -33 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="thal-ar">
+ 3 312 575 rmoveto
+ -71 66 -27 -34 -28 -35 -27 -34 rlinecurve
+ 71 -66 28 34 27 34 27 35 rlinecurve
+ -70 -264 rmoveto
+ 14 -40 18 -55 -1 -26 -50 -22 -89 -24 -60 -11 -74 -133 rcurveline
+ 56 15 105 22 46 24 29 15 25 22 21 24 rrcurveto
+ 122 145 -85 158 0 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="theh-ar">
+ 437 544 579 rmoveto
+ -10 19 -11 16 -14 13 -49 46 -46 -45 -41 -55 -41 -56 -38 -66 -17 -33 -1 -1 rcurveline
+ 1 -44 25 34 94 211 60 -147 rlinecurve
+ 6 -15 5 5 4 5 27 35 26 37 20 41 rrcurveto
+ 75 -237 rmoveto
+ 13 -34 19 -64 -1 -23 rrcurveto
+ 0 -194 -97 -150 -87 -79 31 85 4 vhcurveto
+ 3 60 37 57 8 15 4 8 -8 5 -11 -16 rrcurveto
+ -54 -81 -37 -81 -55 vvcurveto
+ -165 178 14 11 166 205 106 108 53 vhcurveto
+ 60 120 -63 121 0 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="theta">
+ -45 214 -11 rmoveto
+ 109 91 99 103 32 hvcurveto
+ 18 56 5 61 60 vvcurveto
+ 134 -16 193 -153 -115 -89 -82 -108 -34 vhcurveto
+ -19 -58 -1 -62 -60 vvcurveto
+ -135 19 -201 153 vhcurveto
+ -95 388 rmoveto
+ 94 11 177 125 118 5 -167 -104 6 vhcurveto
+ -5 -7 rlineto
+ -254 hlineto
+ 264 -45 rmoveto
+ -85 -4 -109 -47 -48 vhcurveto
+ -19 -19 -21 -17 -27 hhcurveto
+ -125 -27 168 111 hvcurveto
+ 7 7 rlineto
+ 255 hlineto
+ endchar
+ </CharString>
+ <CharString name="theta1">
+ -19 114 118 rmoveto
+ -76 31 -56 73 104 91 94 100 35 vhcurveto
+ 17 50 7 47 53 vvcurveto
+ 4 4 rlineto
+ 52 27 -53 hlineto
+ -4 6 rlineto
+ 99 -20 116 -76 76 vhcurveto
+ 24 -24 -32 16 -34 hhcurveto
+ -84 -65 -63 -84 -135 129 -72 132 -13 hvcurveto
+ 4 -5 rlineto
+ -103 -19 -189 -125 -56 -13 37 118 vhcurveto
+ 108 vlineto
+ 39 -19 36 -39 -50 -52 -35 -33 -38 vhcurveto
+ 11 -20 rlineto
+ 13 22 25 15 22 hhcurveto
+ 40 4 -48 -36 hvcurveto
+ 278 137 rmoveto
+ -111 10 -103 87 115 vvcurveto
+ 43 33 39 44 61 40 -80 -58 19 vhcurveto
+ 16 -49 6 -50 -52 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="thorn">
+ -2 199 -206 rmoveto
+ -5 52 0 13 -2 46 10 8 rcurveline
+ -5 19 17 -3 20 hhcurveto
+ 155 105 162 147 75 -35 92 -102 -69 -59 -31 -43 -54 hvcurveto
+ -8 4 rlineto
+ 10 0 28 -1 31 vhcurveto
+ 69 -2 -28 21 -36 hhcurveto
+ -44 -52 -36 -32 -40 hvcurveto
+ 14 -19 rlineto
+ 14 24 28 15 21 hhcurveto
+ 30 9 -52 -45 hvcurveto
+ -221 vlineto
+ -57 -1 -205 -5 -58 vhcurveto
+ 10 -11 rlineto
+ 73 219 rmoveto
+ 1 -1 81 82 11 2 98 6 vvcurveto
+ 37 47 41 21 51 hhcurveto
+ 64 39 -77 -87 -95 -34 -115 -121 -33 -31 15 22 -24 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="three">
+ -45 241 382 rmoveto
+ 87 25 71 65 96 vvcurveto
+ 87 -65 47 -81 -62 -68 -51 -43 -51 vhcurveto
+ 14 -22 rlineto
+ 24 37 46 29 39 hhcurveto
+ 60 49 -37 -62 -90 -70 -51 -121 -28 hvcurveto
+ -1 -26 rlineto
+ 60 79 -4 -41 39 hvcurveto
+ 29 -31 20 -40 -43 vvcurveto
+ -86 -56 -77 -90 -61 -45 47 51 -30 vhcurveto
+ -10 hlineto
+ -42 -72 7 -11 rlineto
+ -35 45 54 -20 57 hhcurveto
+ 133 132 95 137 100 -78 48 -127 11 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="three-ar">
+ 50 219 4 rmoveto
+ 71 111 -16 143 -64 110 -4 7 19 15 10 8 5 -6 4 -6 7 -4 28 -17 35 19 17 15 41 38 11 69 6 74 1 8 -9 -18 -1 -4 -7 -36 -33 -29 -43 10 rrcurveto
+ -14 3 -12 17 3 21 1 3 -5 10 -3 -6 -5 -8 -7 -26 -5 -7 -21 -29 -61 -19 -37 26 -27 19 -15 39 -15 31 -19 -40 -15 -43 -15 -41 21 -52 34 -40 27 -45 rrcurveto
+ 52 -85 63 -99 -14 -142 rrcurveto
+ -2 9 4 2 4 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="three-ar.dnom">
+ -99 141 3 rmoveto
+ 50 78 -11 100 -45 77 -3 5 14 10 7 6 3 -5 3 -4 5 -3 19 -12 25 14 12 10 28 27 8 48 4 52 1 6 -6 -13 -1 -3 -5 -25 -23 -20 -30 7 rrcurveto
+ -10 2 -8 12 2 14 1 3 -4 7 -2 -5 -4 -5 -4 -18 -4 -5 -15 -21 -42 -13 -26 18 -19 14 -11 27 -10 22 -13 -28 -11 -31 -10 -28 14 -37 24 -28 19 -31 rrcurveto
+ 36 -60 44 -69 -9 -99 rrcurveto
+ -2 6 3 1 3 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="three-ar.numr">
+ -99 141 272 rmoveto
+ 50 78 -11 100 -45 77 -3 5 14 10 7 6 3 -5 3 -4 5 -3 19 -11 25 13 12 10 28 27 8 48 4 52 1 6 -6 -13 -1 -3 -5 -25 -23 -20 -30 7 rrcurveto
+ -10 2 -8 12 2 14 1 3 -4 7 -2 -5 -4 -5 -4 -18 -4 -5 -15 -21 -42 -13 -26 18 -19 14 -11 27 -10 22 -13 -28 -11 -31 -10 -28 14 -37 24 -28 19 -31 rrcurveto
+ 36 -60 44 -69 -9 -99 rrcurveto
+ -2 6 3 1 3 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="three.dnom">
+ 182 229 rmoveto
+ 59 15 48 39 58 vvcurveto
+ 53 -46 27 -53 -42 -46 -30 -26 -35 vhcurveto
+ 10 -13 rlineto
+ 15 26 31 16 26 hhcurveto
+ 41 32 -22 -37 -55 -48 -29 -81 -17 hvcurveto
+ -1 -16 rlineto
+ 41 54 -2 -25 26 hvcurveto
+ 20 -19 13 -23 -26 vvcurveto
+ -53 -39 -45 -60 -41 -29 27 32 -22 vhcurveto
+ -7 hlineto
+ -28 -44 4 -6 rlineto
+ -21 31 37 -12 39 hhcurveto
+ 89 90 56 83 62 -56 26 -83 7 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="three.numr">
+ 182 504 rmoveto
+ 59 15 48 39 58 vvcurveto
+ 53 -46 27 -53 -42 -46 -30 -26 -35 vhcurveto
+ 10 -13 rlineto
+ 15 26 31 16 26 hhcurveto
+ 41 32 -22 -37 -55 -48 -29 -81 -17 hvcurveto
+ -1 -16 rlineto
+ 41 54 -2 -25 26 hvcurveto
+ 20 -19 13 -23 -26 vvcurveto
+ -53 -39 -45 -60 -41 -29 27 32 -22 vhcurveto
+ -7 hlineto
+ -28 -44 4 -6 rlineto
+ -21 31 37 -12 39 hhcurveto
+ 89 90 56 83 62 -56 26 -83 7 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="threedotsdownbelow-ar">
+ 147 74 rmoveto
+ -10 19 -11 16 -14 13 -49 46 -46 -45 -41 -55 -41 -56 -38 -66 -17 -33 -1 -1 rcurveline
+ 1 -44 25 34 94 211 60 -147 rlinecurve
+ 6 -15 5 5 4 5 27 35 26 37 20 41 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="threedotsupabove-ar">
+ 147 74 rmoveto
+ -10 19 -11 16 -14 13 -49 46 -46 -45 -41 -55 -41 -56 -38 -66 -17 -33 -1 -1 rcurveline
+ 1 -44 25 34 94 211 60 -147 rlinecurve
+ 6 -15 5 5 4 5 27 35 26 37 20 41 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="threequarters">
+ 245 633 704 rmoveto
+ -11 -1 -433 -680 rlineto
+ -14 vlineto
+ 31 -13 437 688 -3 11 rlineto
+ -475 -188 rmoveto
+ 62 15 52 39 58 vvcurveto
+ 53 -49 27 -56 -46 -48 -31 -25 -37 vhcurveto
+ 10 -13 rlineto
+ 14 27 32 17 29 hhcurveto
+ 41 37 -20 -39 -55 -51 -29 -86 -17 hvcurveto
+ -1 -16 rlineto
+ 43 58 -2 -25 28 hvcurveto
+ 20 -18 15 -25 -25 vvcurveto
+ -52 -40 -46 -65 -43 -33 28 31 -22 vhcurveto
+ -7 hlineto
+ -30 -44 4 -6 rlineto
+ -21 32 40 -12 41 hhcurveto
+ 96 94 57 82 59 -53 29 -94 7 hvcurveto
+ 435 -103 rmoveto
+ -206 -260 rlineto
+ -27 204 vlineto
+ 5 -5 rlineto
+ -38 1 -50 -4 -21 vhcurveto
+ 3 -3 58 20 rlineto
+ -2 13 -1 48 32 vvcurveto
+ 6 4 rlineto
+ 59 hlineto
+ 12 23 -3 4 rlineto
+ -68 hlineto
+ -6 5 rlineto
+ 93 1 164 1 16 vhcurveto
+ -6 3 rlineto
+ -55 -281 rmoveto
+ -155 hlineto
+ -3 4 1 13 60 83 27 35 rlinecurve
+ 21 27 21 28 25 23 rrcurveto
+ 1 1 1 1 2 hhcurveto
+ 2 1 -1 -4 hvcurveto
+ -205 vlineto
+ endchar
+ </CharString>
+ <CharString name="threesuperior">
+ -246 144 518 rmoveto
+ 64 16 52 43 62 vvcurveto
+ 58 -50 29 -57 -46 -49 -32 -29 -38 vhcurveto
+ 10 -14 rlineto
+ 16 28 33 18 29 hhcurveto
+ 45 35 -24 -40 -59 -53 -33 -88 -18 hvcurveto
+ -17 vlineto
+ 44 57 -2 -27 29 hvcurveto
+ 21 -20 16 -26 -28 vvcurveto
+ -57 -42 -49 -65 -44 -32 30 34 -24 vhcurveto
+ -8 hlineto
+ -31 -47 5 -7 rlineto
+ -23 33 40 -13 42 hhcurveto
+ 96 99 61 90 67 -61 29 -90 7 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="tilde">
+ -45 249 620 rmoveto
+ -26 12 -31 13 -26 -4 -35 -5 -19 -58 -8 -35 14 -5 rcurveline
+ 12 33 10 12 24 3 17 2 18 -4 15 -7 63 -30 rcurveline
+ 20 -9 22 -6 22 3 32 4 20 56 3 29 -13 5 rcurveline
+ -9 -23 -8 -13 -24 -3 -16 -2 -16 5 -14 6 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="tildecomb">
+ -545 -2 620 rmoveto
+ -26 12 -31 13 -26 -4 -35 -5 -19 -58 -8 -35 14 -5 rcurveline
+ 12 33 10 12 24 3 17 2 18 -4 15 -7 63 -30 rcurveline
+ 20 -9 22 -6 22 3 32 4 20 56 3 29 -13 5 rcurveline
+ -9 -23 -8 -13 -24 -3 -16 -2 -16 5 -14 6 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="tteh-ar">
+ 437 371 648 rmoveto
+ 8 -125 29 46 -8 125 rlineto
+ 82 -159 rmoveto
+ 13 18 18 15 -16 20 -13 16 -30 -9 -12 -11 -25 -24 -23 -25 -23 -26 -34 -6 -38 -3 -40 1 rrcurveto
+ -2 -2 -4 -1 2 hvcurveto
+ 29 -17 15 -15 25 -2 11 -1 13 1 17 4 51 13 38 21 26 35 rrcurveto
+ -19 9 rmoveto
+ 2 -3 2 -6 -4 -2 -22 -11 -27 -5 -27 -5 14 14 13 15 18 10 11 6 15 -4 5 -9 rrcurveto
+ 156 -202 rmoveto
+ 13 -34 19 -64 -1 -23 rrcurveto
+ 0 -194 -97 -150 -87 -79 31 85 4 vhcurveto
+ 3 60 37 57 8 15 4 8 -8 5 -11 -16 rrcurveto
+ -54 -81 -37 -81 -55 vvcurveto
+ -165 178 14 11 166 205 106 108 53 vhcurveto
+ 60 120 -63 121 0 vvcurveto
+ endchar
+ </CharString>
+ <CharString name="two">
+ -45 467 88 rmoveto
+ -309 hlineto
+ -5 -8 1 6 2 1 1 1 1 hvcurveto
+ 84 98 88 101 59 107 rrcurveto
+ 26 46 22 48 54 vvcurveto
+ 87 -63 68 -88 -84 -73 -53 -60 -54 vhcurveto
+ 20 -19 rlineto
+ 32 38 44 32 55 hhcurveto
+ 85 28 -80 -52 -119 -78 -101 -78 -91 hvcurveto
+ -53 -62 -56 -59 -57 -58 rrcurveto
+ -16 437 vlineto
+ 23 78 rlineto
+ endchar
+ </CharString>
+ <CharString name="two-ar">
+ -78 262 571 rmoveto
+ 2 -2 1 0 vhcurveto
+ -41 10 -43 10 -48 -6 -113 -13 -8 -212 52 -89 39 -66 51 -101 -12 -107 6 4 3 5 1 5 17 64 31 63 -9 78 -22 79 -54 84 -29 72 45 13 52 -9 41 -12 rrcurveto
+ 5 -1 6 7 2 7 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="two-ar.dnom">
+ -99 214 400 rmoveto
+ 1 -1 1 0 vhcurveto
+ -29 7 -30 7 -33 -4 -79 -9 -6 -149 36 -62 28 -46 35 -71 -8 -75 4 3 2 3 1 4 12 45 22 44 -7 54 -15 56 -38 58 -20 51 31 9 37 -6 28 -9 rrcurveto
+ 4 4 4 5 1 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="two-ar.numr">
+ -99 214 669 rmoveto
+ 1 -1 1 0 vhcurveto
+ -29 7 -30 7 -33 -4 -79 -9 -6 -149 36 -62 28 -46 35 -71 -8 -75 4 3 2 3 1 4 12 45 22 44 -7 54 -15 56 -38 58 -20 51 31 9 37 -6 28 -9 rrcurveto
+ 4 4 4 5 1 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="two-persian">
+ 28 210 372 rmoveto
+ 57 -18 42 17 26 51 26 51 11 52 -5 56 rrcurveto
+ 4 -2 -1 -3 -6 vhcurveto
+ -3 -6 -2 -3 -2 vvcurveto
+ -40 -68 -49 -30 -58 7 -58 7 -45 38 -33 68 -19 -39 -16 -43 -15 -42 11 -26 13 -25 15 -21 46 -65 36 -63 37 -79 24 -52 9 -61 -7 -71 rrcurveto
+ -1 -3 12 9 0 vvcurveto
+ 35 56 16 60 -5 66 -5 66 -18 60 -32 56 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="two-persian.dnom">
+ -99 142 260 rmoveto
+ 40 -12 29 12 18 35 19 36 7 37 -3 39 rrcurveto
+ 3 -2 -1 -2 -4 vhcurveto
+ -2 -5 -1 -2 -1 vvcurveto
+ -28 -48 -34 -21 -41 5 -41 5 -31 27 -23 47 -13 -27 -12 -30 -10 -29 8 -19 9 -17 10 -15 32 -45 26 -44 25 -56 17 -36 7 -43 -5 -50 rrcurveto
+ -1 -2 8 7 0 vvcurveto
+ 25 39 11 42 -3 46 -4 46 -13 42 -22 39 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="two-persian.numr">
+ -99 142 529 rmoveto
+ 40 -12 29 12 18 35 19 36 7 37 -3 39 rrcurveto
+ 3 -2 -1 -2 -4 vhcurveto
+ -2 -5 -1 -2 -1 vvcurveto
+ -28 -48 -34 -21 -41 5 -41 5 -31 27 -23 47 -13 -27 -12 -30 -10 -29 8 -19 9 -17 10 -15 32 -45 26 -44 25 -56 17 -36 7 -43 -5 -50 rrcurveto
+ -1 -2 8 7 0 vvcurveto
+ 25 39 11 42 -3 46 -4 46 -13 42 -22 39 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="two.dnom">
+ 338 48 rmoveto
+ -3 5 rlineto
+ -209 hlineto
+ -4 -5 0 4 1 0 0 1 1 hvcurveto
+ 82 83 107 106 84 vvcurveto
+ 53 -44 40 -58 -56 -50 -32 -36 -37 vhcurveto
+ 13 -11 rlineto
+ 19 26 31 19 37 hhcurveto
+ 56 20 -46 -33 -72 -53 -60 -53 -55 hvcurveto
+ -36 -37 -38 -35 -38 -35 rrcurveto
+ -10 296 vlineto
+ endchar
+ </CharString>
+ <CharString name="two.numr">
+ 338 323 rmoveto
+ -3 5 rlineto
+ -209 hlineto
+ -4 -5 0 4 1 0 0 1 1 hvcurveto
+ 82 83 107 106 84 vvcurveto
+ 53 -44 40 -58 -56 -50 -32 -36 -37 vhcurveto
+ 13 -11 rlineto
+ 19 26 31 19 37 hhcurveto
+ 56 20 -46 -33 -72 -53 -60 -53 -55 hvcurveto
+ -36 -37 -38 -35 -38 -35 rrcurveto
+ -10 296 vlineto
+ endchar
+ </CharString>
+ <CharString name="twodotshorizontalabove-ar">
+ 65 -37 rmoveto
+ 60 119 -64 -12 -64 -12 -64 -12 rlinecurve
+ -60 -119 64 12 64 12 64 12 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="twodotshorizontalbelow-ar">
+ 65 -37 rmoveto
+ 60 119 -64 -12 -64 -12 -64 -12 rlinecurve
+ -60 -119 64 12 64 12 64 12 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="twosuperior">
+ -241 308 327 rmoveto
+ -227 hlineto
+ -5 -4 1 4 1 0 0 1 1 hvcurveto
+ 88 90 117 114 91 vvcurveto
+ 58 -48 43 -63 -61 -54 -34 -39 -40 vhcurveto
+ 14 -13 rlineto
+ 21 28 34 21 40 hhcurveto
+ 60 22 -50 -36 -78 -57 -65 -57 -59 hvcurveto
+ -39 -40 -41 -38 -42 -38 rrcurveto
+ -11 321 vlineto
+ 17 51 rlineto
+ endchar
+ </CharString>
+ <CharString name="u">
+ 93 627 107 rmoveto
+ -19 -26 -34 -23 -27 hhcurveto
+ -49 0 55 61 92 4 93 8 93 hvcurveto
+ -13 11 -77 -35 rlineto
+ 1 -21 0 -39 -46 -71 -1 -89 -65 vvcurveto
+ -24 -39 -47 -29 -45 hhcurveto
+ -92 2 91 102 169 9 55 -75 -42 -55 -43 -30 -39 hvcurveto
+ 13 -20 rlineto
+ 13 23 34 17 14 hhcurveto
+ 12 10 -2 -7 6 hvcurveto
+ 13 -14 4 -16 -91 -29 -4 -101 -33 vvcurveto
+ -56 19 -66 86 59 73 41 34 56 vhcurveto
+ 8 -1 rlineto
+ -42 4 19 -30 46 hhcurveto
+ 51 63 53 41 47 hvcurveto
+ -11 19 rlineto
+ endchar
+ </CharString>
+ <CharString name="uacute">
+ 88 442 704 rmoveto
+ -47 36 -13 -2 -120 -157 18 -31 rlineto
+ 347 -443 rmoveto
+ -19 -26 -34 -23 -27 hhcurveto
+ -49 0 55 61 92 4 93 8 93 hvcurveto
+ -13 11 -77 -35 rlineto
+ 1 -21 0 -39 -46 -71 -1 -89 -65 vvcurveto
+ -24 -39 -47 -29 -45 hhcurveto
+ -92 2 91 102 169 9 55 -75 -42 -55 -43 -30 -39 hvcurveto
+ 13 -20 rlineto
+ 13 23 34 17 14 hhcurveto
+ 12 10 -2 -7 6 hvcurveto
+ 13 -14 4 -16 -91 -29 -4 -101 -33 vvcurveto
+ -56 19 -66 86 59 73 41 34 56 vhcurveto
+ 8 -1 rlineto
+ -42 4 19 -30 46 hhcurveto
+ 51 63 53 41 47 hvcurveto
+ -11 19 rlineto
+ endchar
+ </CharString>
+ <CharString name="ucircumflex">
+ 88 154 561 rmoveto
+ 23 -12 143 131 121 -124 39 26 -157 160 rlineto
+ 304 -635 rmoveto
+ -19 -26 -34 -23 -27 hhcurveto
+ -49 0 55 61 92 4 93 8 93 hvcurveto
+ -13 11 -77 -35 rlineto
+ 1 -21 0 -39 -46 -71 -1 -89 -65 vvcurveto
+ -24 -39 -47 -29 -45 hhcurveto
+ -92 2 91 102 169 9 55 -75 -42 -55 -43 -30 -39 hvcurveto
+ 13 -20 rlineto
+ 13 23 34 17 14 hhcurveto
+ 12 10 -2 -7 6 hvcurveto
+ 13 -14 4 -16 -91 -29 -4 -101 -33 vvcurveto
+ -56 19 -66 86 59 73 41 34 56 vhcurveto
+ 8 -1 rlineto
+ -42 4 19 -30 46 hhcurveto
+ 51 63 53 41 47 hvcurveto
+ -11 19 rlineto
+ endchar
+ </CharString>
+ <CharString name="udieresis">
+ 88 477 606 rmoveto
+ 30 -20 28 -34 -29 -35 -22 -34 -32 26 -26 32 32 26 23 33 2 vhcurveto
+ -202 hmoveto
+ 30 -20 28 -34 -29 -35 -22 -34 -32 26 -26 32 32 26 23 33 2 vhcurveto
+ 352 -499 rmoveto
+ -19 -26 -34 -23 -27 hhcurveto
+ -49 0 55 61 92 4 93 8 93 hvcurveto
+ -13 11 -77 -35 rlineto
+ 1 -21 0 -39 -46 -71 -1 -89 -65 vvcurveto
+ -24 -39 -47 -29 -45 hhcurveto
+ -92 2 91 102 169 9 55 -75 -42 -55 -43 -30 -39 hvcurveto
+ 13 -20 rlineto
+ 13 23 34 17 14 hhcurveto
+ 12 10 -2 -7 6 hvcurveto
+ 13 -14 4 -16 -91 -29 -4 -101 -33 vvcurveto
+ -56 19 -66 86 59 73 41 34 56 vhcurveto
+ 8 -1 rlineto
+ -42 4 19 -30 46 hhcurveto
+ 51 63 53 41 47 hvcurveto
+ -11 19 rlineto
+ endchar
+ </CharString>
+ <CharString name="ugrave">
+ 88 187 705 rmoveto
+ 162 -154 18 31 -120 157 -13 2 rlineto
+ 393 -634 rmoveto
+ -19 -26 -34 -23 -27 hhcurveto
+ -49 0 55 61 92 4 93 8 93 hvcurveto
+ -13 11 -77 -35 rlineto
+ 1 -21 0 -39 -46 -71 -1 -89 -65 vvcurveto
+ -24 -39 -47 -29 -45 hhcurveto
+ -92 2 91 102 169 9 55 -75 -42 -55 -43 -30 -39 hvcurveto
+ 13 -20 rlineto
+ 13 23 34 17 14 hhcurveto
+ 12 10 -2 -7 6 hvcurveto
+ 13 -14 4 -16 -91 -29 -4 -101 -33 vvcurveto
+ -56 19 -66 86 59 73 41 34 56 vhcurveto
+ 8 -1 rlineto
+ -42 4 19 -30 46 hhcurveto
+ 51 63 53 41 47 hvcurveto
+ -11 19 rlineto
+ endchar
+ </CharString>
+ <CharString name="underscore">
+ 211 756 -74 rmoveto
+ -756 -40 756 hlineto
+ endchar
+ </CharString>
+ <CharString name="upsilon">
+ -2 387 398 rmoveto
+ 39 -38 18 -53 -54 vvcurveto
+ -76 -35 -126 -129 -67 -27 58 72 vhcurveto
+ 69 5 60 66 vvcurveto
+ 46 -10 50 -56 -50 -49 -37 -34 -38 vhcurveto
+ 16 -22 rlineto
+ 17 21 24 18 26 hhcurveto
+ 30 8 -43 -41 hvcurveto
+ -211 vlineto
+ -65 27 -66 81 156 142 152 156 66 -29 61 -45 48 vhcurveto
+ -20 -4 -42 -51 rlineto
+ endchar
+ </CharString>
+ <CharString name="v">
+ -52 363 425 rmoveto
+ -2 -2 -2 -3 -3 vvcurveto
+ -2 0 -2 1 -1 vhcurveto
+ 17 -32 20 -36 -32 vvcurveto
+ -71 -57 -78 -50 -59 vhcurveto
+ -8 -8 -11 -14 -5 hhcurveto
+ -21 -32 151 60 -15 hvcurveto
+ 107 -28 -14 69 -51 hhcurveto
+ -39 -50 -33 -25 -36 hvcurveto
+ 9 -24 rlineto
+ 13 23 18 8 22 hhcurveto
+ 31 24 -76 -85 23 hvcurveto
+ 69 -258 rlineto
+ 24 hlineto
+ 5 3 14 14 11 11 59 60 55 63 45 72 rrcurveto
+ 28 45 27 50 55 vvcurveto
+ 58 -27 42 -19 -2 -3 0 -2 -3 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="vabove-ar">
+ 18 -10 rmoveto
+ -21 37 -26 39 -32 38 -8 -14 -7 -14 -7 -15 33 -40 34 -41 18 -54 rrcurveto
+ -1 0 0 1 14 3 23 9 4 vhcurveto
+ 17 39 18 35 27 31 rrcurveto
+ 13 3 14 4 14 vhcurveto
+ -3 hlineto
+ -27 -35 -25 -36 -20 -42 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="vbelow-ar">
+ 18 -10 rmoveto
+ -21 37 -26 39 -32 38 -8 -14 -7 -14 -7 -15 33 -40 34 -41 18 -54 rrcurveto
+ -1 0 0 1 14 3 23 9 4 vhcurveto
+ 17 39 18 35 27 31 rrcurveto
+ 13 3 14 4 14 vhcurveto
+ -3 hlineto
+ -27 -35 -25 -36 -20 -42 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="veh-ar">
+ 315 630 724 rmoveto
+ -10 19 -11 16 -14 13 -49 46 -46 -45 -41 -55 -41 -56 -38 -66 -17 -33 -1 -1 rcurveline
+ 1 -44 25 34 94 211 60 -147 rlinecurve
+ 6 -15 5 5 4 5 27 35 26 37 20 41 rrcurveto
+ -542 -690 rmoveto
+ 111 -74 277 53 103 122 67 79 40 106 -45 89 -25 49 -46 42 -33 -45 -27 -37 -19 -45 -22 -41 -10 -19 -1 -34 19 -9 32 -16 38 15 21 18 rrcurveto
+ 11 12 21 -75 0 vvcurveto
+ -72 -72 -455 -111 17 200 4 53 24 42 20 36 -11 -3 -4 -9 -5 -8 -114 -174 15 -98 69 -46 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="w">
+ 256 668 416 rmoveto
+ 18 -31 20 -40 -33 vvcurveto
+ -81 -63 -76 -51 -64 vhcurveto
+ -4 -3 -8 -6 -4 hhcurveto
+ -8 -7 8 7 -3 hvcurveto
+ -44 118 -27 124 -26 126 -12 3 rcurveline
+ -52 -26 -52 -106 -57 -104 -57 -103 rlinecurve
+ -11 2 -10 81 -4 82 -15 80 rlinecurve
+ 41 -8 -16 55 -54 hhcurveto
+ -41 -54 -40 -28 -39 hvcurveto
+ 9 -20 rlineto
+ 14 27 33 17 23 hhcurveto
+ 10 34 1 -191 21 hvcurveto
+ 24 -224 7 -6 42 13 55 119 68 128 56 103 rlinecurve
+ 3 1 6 2 4 hhcurveto
+ 5 2 -6 -4 2 hvcurveto
+ 29 -114 45 -175 17 -48 rrcurveto
+ -9 3 12 -12 11 hhcurveto
+ 13 12 11 10 10 hvcurveto
+ 58 63 55 66 45 74 rrcurveto
+ 28 47 28 51 55 vvcurveto
+ 24 -18 72 -25 -3 -2 0 -1 -1 vhcurveto
+ -57 -35 rlineto
+ -2 -1 0 -3 -3 vvcurveto
+ -2 0 -2 1 -2 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="wasla-ar">
+ -92 -34 rmoveto
+ 75 74 -46 -89 101 42 28 11 26 15 16 22 12 16 16 21 -15 18 -12 14 -27 -8 -11 -10 -23 -21 -22 -22 -20 -24 rrcurveto
+ -1 -3 -2 0 -2 hhcurveto
+ -35 42 -55 -64 -10 -40 -1 -4 8 6 2 2 rrcurveto
+ 182 90 rmoveto
+ 2 -3 1 -4 -4 -2 -20 -10 -24 -5 -25 -5 13 13 12 14 17 9 10 5 14 -4 4 -8 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="waw-ar">
+ 127 230 8 rmoveto
+ 180 35 163 279 -129 131 -12 12 -28 13 -15 -17 -32 -36 -16 -48 -22 -44 -10 -20 -3 -24 15 -17 17 -19 43 -2 32 7 7 -10 7 -20 -7 -7 -20 -23 -25 -19 -31 -12 rrcurveto
+ -115 -47 -121 -40 -104 -58 -6 -3 0 -10 7 -1 73 -7 79 -7 73 14 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="waw-ar.fina">
+ 127 230 8 rmoveto
+ 180 35 163 279 -129 131 -12 12 -28 13 -15 -17 -32 -36 -16 -48 -22 -44 -10 -20 -3 -24 15 -17 17 -19 43 -2 32 7 7 -10 7 -20 -7 -7 -20 -23 -25 -19 -31 -12 rrcurveto
+ -115 -47 -121 -40 -104 -58 -6 -3 0 -10 7 -1 73 -7 79 -7 73 14 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="wawDotabove-ar">
+ 127 465 619 rmoveto
+ -71 66 -27 -34 -28 -35 -27 -34 rlinecurve
+ 71 -66 28 34 27 34 27 35 rlinecurve
+ -235 -611 rmoveto
+ 180 35 163 279 -129 131 -12 12 -28 13 -15 -17 -32 -36 -16 -48 -22 -44 -10 -20 -3 -24 15 -17 17 -19 43 -2 32 7 7 -10 7 -20 -7 -7 -20 -23 -25 -19 -31 -12 rrcurveto
+ -115 -47 -121 -40 -104 -58 -6 -3 0 -10 7 -1 73 -7 79 -7 73 14 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="wawHamzaabove-ar">
+ 127 396 559 rmoveto
+ 37 26 20 43 -28 18 -15 10 -24 1 -12 14 15 21 26 3 8 18 21 45 rcurveline
+ -9 -4 -9 -4 -8 -6 -26 -20 -88 -94 50 -28 11 -6 16 -6 11 -7 6 -4 -8 -5 -3 -2 -29 -16 -33 -13 -31 -14 36 6 35 2 31 22 rrcurveto
+ -166 -551 rmoveto
+ 180 35 163 279 -129 131 -12 12 -28 13 -15 -17 -32 -36 -16 -48 -22 -44 -10 -20 -3 -24 15 -17 17 -19 43 -2 32 7 7 -10 7 -20 -7 -7 -20 -23 -25 -19 -31 -12 rrcurveto
+ -115 -47 -121 -40 -104 -58 -6 -3 0 -10 7 -1 73 -7 79 -7 73 14 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="weierstrass">
+ 46 182 464 rmoveto
+ -51 -37 -42 -55 -66 vvcurveto
+ -43 21 -42 20 -37 vhcurveto
+ -28 -52 -58 -121 -76 vvcurveto
+ -61 31 -70 75 92 42 100 82 15 -2 14 -4 15 vhcurveto
+ -21 20 27 -15 30 hhcurveto
+ 37 39 29 28 28 hvcurveto
+ 66 66 25 97 92 vvcurveto
+ 72 -21 94 -99 -118 -79 -119 -62 -39 vhcurveto
+ -18 -26 rlineto
+ -9 hlineto
+ -11 22 -11 28 27 vvcurveto
+ 43 25 36 26 33 vhcurveto
+ 73 -395 rmoveto
+ -19 56 -31 59 -30 53 40 62 63 92 39 16 rrcurveto
+ 11 28 10 2 19 hhcurveto
+ 80 22 -94 -65 -92 -23 -110 -88 -27 -20 17 35 -9 hvcurveto
+ -7 1 rlineto
+ -162 42 rmoveto
+ 38 -60 51 -75 -60 vvcurveto
+ -45 -19 -52 -58 -56 -16 71 47 50 21 72 30 52 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="x">
+ -55 410 462 rmoveto
+ 2 -2 -2 0 -2 hhcurveto
+ -3 -2 0 -2 -1 hvcurveto
+ -44 -51 -59 -70 -36 -48 -6 1 rcurveline
+ -29 56 -41 72 -21 23 rrcurveto
+ 15 -14 -23 4 -17 hhcurveto
+ -33 -50 -37 -27 -35 hvcurveto
+ 14 -18 rlineto
+ 12 18 25 13 21 hhcurveto
+ 49 48 -107 -77 38 hvcurveto
+ -49 -64 -50 -69 -43 -69 rrcurveto
+ -8 vlineto
+ 28 -25 16 4 30 77 40 62 39 60 rlinecurve
+ 7 hlineto
+ -129 66 34 -74 51 hhcurveto
+ 42 51 56 38 35 hvcurveto
+ -8 19 rlineto
+ -8 hlineto
+ -17 -20 -27 -21 -24 hhcurveto
+ -44 -59 106 90 -41 hvcurveto
+ 52 61 64 65 56 39 rrcurveto
+ 2 1 1 1 3 vvcurveto
+ 1 -2 2 -1 1 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="xi">
+ -73 411 -137 rmoveto
+ 32 43 42 54 47 vvcurveto
+ 42 -55 9 -32 vhcurveto
+ -40 -84 -11 -56 hhcurveto
+ -66 -53 39 69 132 122 48 108 hvcurveto
+ 23 vlineto
+ -74 8 -86 21 91 vvcurveto
+ 110 112 34 87 10 vhcurveto
+ 28 vlineto
+ -6 -32 -35 -5 -31 hhcurveto
+ -50 -51 13 32 -39 hvcurveto
+ -8 hlineto
+ -28 -46 41 -22 47 -5 44 -1 rlinecurve
+ 1 -8 rlineto
+ -68 -27 -68 -55 -79 vvcurveto
+ -70 57 -24 51 -11 vhcurveto
+ -6 vlineto
+ -94 -29 -91 -77 -108 vvcurveto
+ -81 62 -53 83 vhcurveto
+ 28 106 16 52 hhcurveto
+ 34 45 -9 -42 -24 -19 -30 -15 -25 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="y">
+ 27 104 -182 rmoveto
+ -28 27 53 -23 47 hhcurveto
+ 107 103 54 130 36 hvcurveto
+ 22 95 -15 212 14 204 -12 4 rcurveline
+ -79 -38 rlineto
+ 5 -69 3 -72 -72 vvcurveto
+ -36 -1 -36 -1 -35 vhcurveto
+ -22 -37 -49 -30 -48 hhcurveto
+ -24 -24 7 19 -15 hvcurveto
+ -16 21 -9 30 -3 93 rrcurveto
+ 58 4 58 56 vvcurveto
+ 37 -20 33 -43 -46 -79 -57 -10 -14 vhcurveto
+ 11 -19 rlineto
+ 12 23 31 16 17 hhcurveto
+ 41 5 -44 -72 hvcurveto
+ -50 -4 -42 -45 vvcurveto
+ -67 7 -98 97 64 68 42 35 56 vhcurveto
+ 6 -5 -1 -32 -1 -33 -6 -33 rlinecurve
+ -57 -10 -24 -101 -107 hhcurveto
+ -45 -38 39 38 -21 hvcurveto
+ -13 hlineto
+ -44 -56 rlineto
+ endchar
+ </CharString>
+ <CharString name="yacute">
+ 7 441 699 rmoveto
+ -47 36 -13 -2 -120 -157 18 -31 rlineto
+ -175 -727 rmoveto
+ -28 27 53 -23 47 hhcurveto
+ 107 103 54 130 36 hvcurveto
+ 22 95 -15 212 14 204 -12 4 rcurveline
+ -79 -38 rlineto
+ 5 -69 3 -72 -72 vvcurveto
+ -36 -1 -36 -1 -35 vhcurveto
+ -22 -37 -49 -30 -48 hhcurveto
+ -24 -24 7 19 -15 hvcurveto
+ -16 21 -9 30 -3 93 rrcurveto
+ 58 4 58 56 vvcurveto
+ 37 -20 33 -43 -46 -79 -57 -10 -14 vhcurveto
+ 11 -19 rlineto
+ 12 23 31 16 17 hhcurveto
+ 41 5 -44 -72 hvcurveto
+ -50 -4 -42 -45 vvcurveto
+ -67 7 -98 97 64 68 42 35 56 vhcurveto
+ 6 -5 -1 -32 -1 -33 -6 -33 rlinecurve
+ -57 -10 -24 -101 -107 hhcurveto
+ -45 -38 39 38 -21 hvcurveto
+ -13 hlineto
+ -44 -56 rlineto
+ endchar
+ </CharString>
+ <CharString name="ydieresis">
+ 7 456 605 rmoveto
+ 30 -20 28 -34 -29 -35 -22 -34 -32 26 -26 32 32 26 23 33 2 vhcurveto
+ -202 hmoveto
+ 30 -20 28 -34 -29 -35 -22 -34 -32 26 -26 32 32 26 23 33 2 vhcurveto
+ -150 -787 rmoveto
+ -28 27 53 -23 47 hhcurveto
+ 107 103 54 130 36 hvcurveto
+ 22 95 -15 212 14 204 -12 4 rcurveline
+ -79 -38 rlineto
+ 5 -69 3 -72 -72 vvcurveto
+ -36 -1 -36 -1 -35 vhcurveto
+ -22 -37 -49 -30 -48 hhcurveto
+ -24 -24 7 19 -15 hvcurveto
+ -16 21 -9 30 -3 93 rrcurveto
+ 58 4 58 56 vvcurveto
+ 37 -20 33 -43 -46 -79 -57 -10 -14 vhcurveto
+ 11 -19 rlineto
+ 12 23 31 16 17 hhcurveto
+ 41 5 -44 -72 hvcurveto
+ -50 -4 -42 -45 vvcurveto
+ -67 7 -98 97 64 68 42 35 56 vhcurveto
+ 6 -5 -1 -32 -1 -33 -6 -33 rlinecurve
+ -57 -10 -24 -101 -107 hhcurveto
+ -45 -38 39 38 -21 hvcurveto
+ -13 hlineto
+ -44 -56 rlineto
+ endchar
+ </CharString>
+ <CharString name="yeh-ar">
+ 251 78 24 rmoveto
+ 157 -86 273 169 84 130 26 39 7 38 -25 27 -18 19 -33 -1 -28 8 -160 45 117 73 49 -15 20 32 11 39 17 36 rrcurveto
+ 9 4 -14 1 -4 hhcurveto
+ -35 -1 -28 -29 -19 -18 -42 -40 -83 -134 16 -56 15 -54 64 -20 67 -7 -60 -39 -69 -30 -83 -15 -69 -13 -90 2 -45 35 -103 81 104 151 39 81 4 8 -9 1 -3 -5 rrcurveto
+ -67 -94 -160 -272 173 -95 rrcurveto
+ 246 -158 rmoveto
+ 60 119 -64 -12 -64 -12 -64 -12 rlinecurve
+ -60 -119 64 12 64 12 64 12 rlinecurve
+ endchar
+ </CharString>
+ <CharString name="yeh-farsi">
+ 251 78 24 rmoveto
+ 157 -86 273 169 84 130 26 39 7 38 -25 27 -18 19 -33 -1 -28 8 -160 45 117 73 49 -15 20 32 11 39 17 36 rrcurveto
+ 9 4 -14 1 -4 hhcurveto
+ -35 -1 -28 -29 -19 -18 -42 -40 -83 -134 16 -56 15 -54 64 -20 67 -7 -60 -39 -69 -30 -83 -15 -69 -13 -90 2 -45 35 -103 81 104 151 39 81 4 8 -9 1 -3 -5 rrcurveto
+ -67 -94 -160 -272 173 -95 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="yehHamzaabove-ar">
+ 251 296 573 rmoveto
+ 37 26 20 43 -28 18 -15 10 -24 1 -12 14 15 21 26 3 8 18 21 45 rcurveline
+ -9 -4 -9 -4 -8 -6 -26 -20 -88 -94 50 -28 11 -6 16 -6 11 -7 6 -4 -8 -5 -3 -2 -29 -16 -33 -13 -31 -14 36 6 35 2 31 22 rrcurveto
+ -218 -549 rmoveto
+ 157 -86 273 169 84 130 26 39 7 38 -25 27 -18 19 -33 -1 -28 8 -160 45 117 73 49 -15 20 32 11 39 17 36 rrcurveto
+ 9 4 -14 1 -4 hhcurveto
+ -35 -1 -28 -29 -19 -18 -42 -40 -83 -134 16 -56 15 -54 64 -20 67 -7 -60 -39 -69 -30 -83 -15 -69 -13 -90 2 -45 35 -103 81 104 151 39 81 4 8 -9 1 -3 -5 rrcurveto
+ -67 -94 -160 -272 173 -95 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="yehVabove-ar">
+ 251 339 671 rmoveto
+ -21 37 -26 39 -32 38 -8 -14 -7 -14 -7 -15 33 -40 34 -41 18 -54 rrcurveto
+ -1 0 0 1 14 3 23 9 4 vhcurveto
+ 17 39 18 35 27 31 rrcurveto
+ 13 3 14 4 14 vhcurveto
+ -3 hlineto
+ -27 -35 -25 -36 -20 -42 rrcurveto
+ -261 -647 rmoveto
+ 157 -86 273 169 84 130 26 39 7 38 -25 27 -18 19 -33 -1 -28 8 -160 45 117 73 49 -15 20 32 11 39 17 36 rrcurveto
+ 9 4 -14 1 -4 hhcurveto
+ -35 -1 -28 -29 -19 -18 -42 -40 -83 -134 16 -56 15 -54 64 -20 67 -7 -60 -39 -69 -30 -83 -15 -69 -13 -90 2 -45 35 -103 81 104 151 39 81 4 8 -9 1 -3 -5 rrcurveto
+ -67 -94 -160 -272 173 -95 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="yehbarree-ar">
+ 335 344 463 rmoveto
+ -14 32 -15 11 -19 -8 -19 -8 -14 -13 -10 -17 -19 -33 -19 -31 -21 -30 -21 -30 -26 -24 -31 -18 -41 -24 -37 -34 -18 -48 -10 -24 -11 -64 5 -37 3 -23 12 -16 22 -9 rrcurveto
+ 44 -18 62 0 55 9 162 25 129 59 97 86 29 26 31 25 11 45 -125 -71 -129 -57 -184 -11 -55 -3 -53 6 -50 17 rrcurveto
+ 4 3 4 7 4 vhcurveto
+ 56 30 46 50 36 70 14 26 17 23 32 8 29 -4 12 -29 2 -29 rrcurveto
+ -6 4 -2 6 4 vhcurveto
+ 6 4 3 4 2 4 17 41 -2 60 -11 44 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="yehbarree-ar.fina">
+ 335 67 158 rmoveto
+ -46 33 -5 -10 -5 -19 -5 -30 rlinecurve
+ -9 -56 3 -45 41 -17 44 -18 62 0 55 9 161 25 130 60 97 86 29 26 30 25 11 45 -125 -71 -129 -57 -183 -11 -55 -3 -53 6 -50 17 rrcurveto
+ 1 1 2 1 2 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="yehbarreeHamzaabove-ar">
+ 335 291 612 rmoveto
+ 37 26 20 43 -28 18 -15 10 -24 1 -12 14 15 21 26 3 8 18 21 45 rcurveline
+ -9 -4 -9 -4 -8 -6 -26 -20 -88 -94 50 -28 11 -6 16 -6 11 -7 6 -4 -8 -5 -3 -2 -29 -16 -33 -13 -31 -14 36 6 35 2 31 22 rrcurveto
+ 53 -149 rmoveto
+ -14 32 -15 11 -19 -8 -19 -8 -14 -13 -10 -17 -19 -33 -19 -31 -21 -30 -21 -30 -26 -24 -31 -18 -41 -24 -37 -34 -18 -48 -10 -24 -11 -64 5 -37 3 -23 12 -16 22 -9 rrcurveto
+ 44 -18 62 0 55 9 162 25 129 59 97 86 29 26 31 25 11 45 -125 -71 -129 -57 -184 -11 -55 -3 -53 6 -50 17 rrcurveto
+ 4 3 4 7 4 vhcurveto
+ 56 30 46 50 36 70 14 26 17 23 32 8 29 -4 12 -29 2 -29 rrcurveto
+ -6 4 -2 6 4 vhcurveto
+ 6 4 3 4 2 4 17 41 -2 60 -11 44 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="yen">
+ 78 250 299 rmoveto
+ -21 0 -20 -21 vvcurveto
+ -149 hlineto
+ -7 -40 rlineto
+ 156 hlineto
+ -66 -1 -67 -2 -66 vhcurveto
+ 11 -9 90 29 -6 179 rlineto
+ 166 hlineto
+ 6 40 rlineto
+ -173 hlineto
+ -2 69 5 8 5 7 5 8 rlinecurve
+ 152 hlineto
+ 6 40 rlineto
+ -131 hlineto
+ 67 99 67 87 92 120 -4 18 rcurveline
+ -85 -17 -36 -57 -84 -145 -8 -14 rlinecurve
+ -54 -30 -35 -53 -5 hhcurveto
+ -6 -5 6 2 -1 hvcurveto
+ -141 325 rlineto
+ -145 hlineto
+ -7 -7 rlineto
+ -28 vlineto
+ 40 -6 23 -6 23 -45 114 -225 rcurveline
+ -116 hlineto
+ -7 -40 rlineto
+ 143 hlineto
+ endchar
+ </CharString>
+ <CharString name="z">
+ -82 402 462 rmoveto
+ -17 -21 -23 -14 -29 -56 -68 31 -51 hhcurveto
+ -29 -13 -10 -31 -20 hvcurveto
+ -50 -89 20 -13 rlineto
+ 43 31 21 28 37 36 51 -19 33 hhcurveto
+ 11 9 0 2 10 hvcurveto
+ -295 -381 15 -19 rlineto
+ 6 hlineto
+ 23 16 22 20 24 hhcurveto
+ 117 -11 43 -4 75 -10 11 1 rlinecurve
+ 50 -1 27 28 20 40 41 80 rcurveline
+ -22 12 rlineto
+ -36 -23 -29 -42 -57 hhcurveto
+ -9 -98 3 10 -98 hvcurveto
+ -5 8 99 134 108 133 83 88 rlinecurve
+ -14 13 rlineto
+ endchar
+ </CharString>
+ <CharString name="zah-ar">
+ 317 295 479 rmoveto
+ 22 -321 74 118 -22 321 rlineto
+ 220 -109 rmoveto
+ -71 66 -27 -34 -28 -35 -27 -34 rlinecurve
+ 71 -66 28 34 27 34 27 35 rlinecurve
+ -8 -298 rmoveto
+ 34 45 46 39 -42 50 -34 40 -77 -20 -31 -29 -65 -61 -60 -65 -58 -67 -88 -15 -97 -8 -102 3 rrcurveto
+ -5 -4 -9 -3 5 hvcurveto
+ 74 -44 37 -39 65 -6 28 -3 33 4 44 11 131 34 99 53 67 90 rrcurveto
+ -49 22 rmoveto
+ 4 -8 5 -14 -11 -5 -57 -27 -68 -14 -70 -14 36 37 34 39 47 25 28 15 40 -12 12 -22 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="zain-ar">
+ 105 439 470 rmoveto
+ -71 66 -27 -34 -28 -35 -27 -34 rlinecurve
+ 71 -66 28 34 27 34 27 35 rlinecurve
+ 9 -198 rmoveto
+ -1 7 -9 1 -3 -8 -16 -35 -23 -28 -30 -20 -64 -43 -79 -27 -81 -25 -236 -73 96 -17 156 -4 101 -3 67 33 45 54 31 37 33 84 13 67 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="zero">
+ -45 290 704 rmoveto
+ -44 -18 -49 -24 -33 -33 rrcurveto
+ -85 -85 -45 -121 -120 vvcurveto
+ -115 28 -202 145 184 69 211 159 133 -49 138 -121 77 vhcurveto
+ -56 -64 rmoveto
+ 45 -19 44 -70 7 -12 rrcurveto
+ 44 -79 24 -85 -90 vvcurveto
+ -97 -24 -136 -122 -64 -46 79 68 -20 vhcurveto
+ -16 55 -5 59 58 vvcurveto
+ 101 45 113 88 55 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="zero-ar">
+ -133 30 263 rmoveto
+ -2 -2 -1 -1 -2 vvcurveto
+ -3 2 -3 3 -2 vhcurveto
+ 83 -70 rlineto
+ -2 2 3 -1 2 hhcurveto
+ 2 1 2 2 2 hvcurveto
+ 75 91 rlineto
+ 2 2 1 2 2 vvcurveto
+ 2 -2 3 -3 2 vhcurveto
+ -83 70 rlineto
+ 2 -2 -3 1 -2 hhcurveto
+ -2 -2 -1 -2 -2 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="zero-ar.dnom">
+ -99 72 184 rmoveto
+ -1 -1 -1 -1 -1 vvcurveto
+ -2 1 -3 2 -1 vhcurveto
+ 59 -49 rlineto
+ -1 1 2 -1 1 hhcurveto
+ 2 1 1 2 1 hvcurveto
+ 52 63 rlineto
+ 2 2 1 1 2 vvcurveto
+ 1 -2 2 -2 2 vhcurveto
+ -58 48 rlineto
+ 2 -1 -3 1 -1 hhcurveto
+ -1 -2 -1 -2 -1 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="zero-ar.numr">
+ -99 72 453 rmoveto
+ -1 -1 -1 -1 -1 vvcurveto
+ -2 1 -3 2 -1 vhcurveto
+ 59 -49 rlineto
+ -1 1 2 -1 1 hhcurveto
+ 2 1 1 2 1 hvcurveto
+ 52 63 rlineto
+ 2 2 1 1 2 vvcurveto
+ 1 -2 2 -2 2 vhcurveto
+ -58 49 rlineto
+ 1 -1 -3 1 -1 hhcurveto
+ -1 -2 -1 -1 -1 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="zero.dnom">
+ 215 422 rmoveto
+ -29 -10 -34 -15 -22 -20 rrcurveto
+ -58 -51 -31 -72 -72 vvcurveto
+ -71 21 -119 97 122 50 123 99 79 -33 84 -83 45 vhcurveto
+ -38 -38 rmoveto
+ 31 -11 30 -42 4 -8 rrcurveto
+ 30 -47 17 -51 -54 vvcurveto
+ -59 -18 -81 -81 -45 -30 48 40 -14 vhcurveto
+ -11 33 -3 36 35 vvcurveto
+ 60 31 67 59 34 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="zero.numr">
+ 215 697 rmoveto
+ -29 -10 -34 -15 -22 -20 rrcurveto
+ -58 -51 -31 -72 -72 vvcurveto
+ -71 21 -119 97 122 50 123 99 79 -33 84 -83 45 vhcurveto
+ -38 -38 rmoveto
+ 31 -11 30 -42 4 -8 rrcurveto
+ 30 -47 17 -51 -54 vvcurveto
+ -59 -18 -81 -81 -45 -30 48 40 -14 vhcurveto
+ -11 33 -3 36 35 vvcurveto
+ 60 31 67 59 34 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="zeta">
+ -124 363 -136 rmoveto
+ 32 40 40 54 48 vvcurveto
+ 36 -39 11 -41 vhcurveto
+ -24 -37 -6 -40 hhcurveto
+ -104 -45 80 83 181 148 196 155 49 hvcurveto
+ 19 vlineto
+ -5 -34 -29 -3 -26 hhcurveto
+ -55 -42 12 32 -48 hvcurveto
+ 4 -7 1 0 -2 hhcurveto
+ -2 -1 0 -1 -2 hvcurveto
+ -28 -35 rlineto
+ -2 -2 0 -1 -1 vvcurveto
+ 18 -17 26 -6 25 -4 91 -8 rcurveline
+ 1 -7 rlineto
+ -130 -109 -134 -171 -159 vvcurveto
+ -93 38 -91 124 vhcurveto
+ 26 68 9 41 hhcurveto
+ 22 29 -14 -24 -26 -19 -32 -15 -27 hvcurveto
+ endchar
+ </CharString>
+ </CharStrings>
+ </CFFFont>
+
+ <GlobalSubrs>
+ <!-- The 'index' attribute is only for humans; it is ignored when parsed. -->
+ </GlobalSubrs>
+ </CFF>
+
+ <GDEF>
+ <Version value="0x00010002"/>
+ <GlyphClassDef>
+ <ClassDef glyph="A" class="1"/>
+ <ClassDef glyph="Aacute" class="1"/>
+ <ClassDef glyph="Acircumflex" class="1"/>
+ <ClassDef glyph="Adieresis" class="1"/>
+ <ClassDef glyph="Agrave" class="1"/>
+ <ClassDef glyph="Aring" class="1"/>
+ <ClassDef glyph="Atilde" class="1"/>
+ <ClassDef glyph="C" class="1"/>
+ <ClassDef glyph="Ccedilla" class="1"/>
+ <ClassDef glyph="E" class="1"/>
+ <ClassDef glyph="Eacute" class="1"/>
+ <ClassDef glyph="Ecircumflex" class="1"/>
+ <ClassDef glyph="Edieresis" class="1"/>
+ <ClassDef glyph="Egrave" class="1"/>
+ <ClassDef glyph="I" class="1"/>
+ <ClassDef glyph="Iacute" class="1"/>
+ <ClassDef glyph="Icircumflex" class="1"/>
+ <ClassDef glyph="Idieresis" class="1"/>
+ <ClassDef glyph="Igrave" class="1"/>
+ <ClassDef glyph="N" class="1"/>
+ <ClassDef glyph="Ntilde" class="1"/>
+ <ClassDef glyph="O" class="1"/>
+ <ClassDef glyph="Oacute" class="1"/>
+ <ClassDef glyph="Ocircumflex" class="1"/>
+ <ClassDef glyph="Odieresis" class="1"/>
+ <ClassDef glyph="Ograve" class="1"/>
+ <ClassDef glyph="Oslash" class="1"/>
+ <ClassDef glyph="Otilde" class="1"/>
+ <ClassDef glyph="U" class="1"/>
+ <ClassDef glyph="Uacute" class="1"/>
+ <ClassDef glyph="Ucircumflex" class="1"/>
+ <ClassDef glyph="Udieresis" class="1"/>
+ <ClassDef glyph="Ugrave" class="1"/>
+ <ClassDef glyph="Y" class="1"/>
+ <ClassDef glyph="Yacute" class="1"/>
+ <ClassDef glyph="a" class="1"/>
+ <ClassDef glyph="aacute" class="1"/>
+ <ClassDef glyph="acircumflex" class="1"/>
+ <ClassDef glyph="acutecomb" class="3"/>
+ <ClassDef glyph="adieresis" class="1"/>
+ <ClassDef glyph="ae-ar" class="1"/>
+ <ClassDef glyph="agrave" class="1"/>
+ <ClassDef glyph="ain-ar" class="1"/>
+ <ClassDef glyph="ain-ar.fina" class="1"/>
+ <ClassDef glyph="ain-ar.init" class="1"/>
+ <ClassDef glyph="ain-ar.init.ain" class="1"/>
+ <ClassDef glyph="ain-ar.init.dal" class="1"/>
+ <ClassDef glyph="ain-ar.init.feh" class="1"/>
+ <ClassDef glyph="ain-ar.init.hah" class="1"/>
+ <ClassDef glyph="ain-ar.init.heh" class="1"/>
+ <ClassDef glyph="ain-ar.init.meem" class="1"/>
+ <ClassDef glyph="ain-ar.init.ragaa" class="1"/>
+ <ClassDef glyph="ain-ar.init.reh" class="1"/>
+ <ClassDef glyph="ain-ar.init.sad" class="1"/>
+ <ClassDef glyph="ain-ar.init.yeh" class="1"/>
+ <ClassDef glyph="ain-ar.medi" class="1"/>
+ <ClassDef glyph="ain-ar.medi.ain" class="1"/>
+ <ClassDef glyph="ain-ar.medi.dal" class="1"/>
+ <ClassDef glyph="ain-ar.medi.feh" class="1"/>
+ <ClassDef glyph="ain-ar.medi.hah" class="1"/>
+ <ClassDef glyph="ain-ar.medi.heh" class="1"/>
+ <ClassDef glyph="ain-ar.medi.meem" class="1"/>
+ <ClassDef glyph="ain-ar.medi.ragaa" class="1"/>
+ <ClassDef glyph="ain-ar.medi.reh" class="1"/>
+ <ClassDef glyph="ain-ar.medi.sad" class="1"/>
+ <ClassDef glyph="ain-ar.medi.yeh" class="1"/>
+ <ClassDef glyph="alef-ar" class="1"/>
+ <ClassDef glyph="alef-ar.fina" class="1"/>
+ <ClassDef glyph="alef-ar.fina.lam" class="1"/>
+ <ClassDef glyph="alefMaksura-ar" class="1"/>
+ <ClassDef glyph="alefMaksura-ar.fina" class="1"/>
+ <ClassDef glyph="alefMaksura-ar.fina.jalt" class="1"/>
+ <ClassDef glyph="alefMaksura-ar.fina.yeh" class="1"/>
+ <ClassDef glyph="alefMaksura-ar.fina.yeh.jalt" class="1"/>
+ <ClassDef glyph="alefMaksura-ar.jalt" class="1"/>
+ <ClassDef glyph="alefabove-ar" class="3"/>
+ <ClassDef glyph="alefabove-ar.medi" class="1"/>
+ <ClassDef glyph="alefbelow-ar" class="3"/>
+ <ClassDef glyph="aring" class="1"/>
+ <ClassDef glyph="atilde" class="1"/>
+ <ClassDef glyph="behDotless-ar" class="1"/>
+ <ClassDef glyph="behDotless-ar.fina" class="1"/>
+ <ClassDef glyph="behDotless-ar.fina.jalt" class="1"/>
+ <ClassDef glyph="behDotless-ar.init" class="1"/>
+ <ClassDef glyph="behDotless-ar.init.ain" class="1"/>
+ <ClassDef glyph="behDotless-ar.init.ascend" class="1"/>
+ <ClassDef glyph="behDotless-ar.init.dal" class="1"/>
+ <ClassDef glyph="behDotless-ar.init.feh" class="1"/>
+ <ClassDef glyph="behDotless-ar.init.hah" class="1"/>
+ <ClassDef glyph="behDotless-ar.init.heh" class="1"/>
+ <ClassDef glyph="behDotless-ar.init.meem" class="1"/>
+ <ClassDef glyph="behDotless-ar.init.ragaa" class="1"/>
+ <ClassDef glyph="behDotless-ar.init.reh" class="1"/>
+ <ClassDef glyph="behDotless-ar.init.sad" class="1"/>
+ <ClassDef glyph="behDotless-ar.init.yeh" class="1"/>
+ <ClassDef glyph="behDotless-ar.jalt" class="1"/>
+ <ClassDef glyph="behDotless-ar.medi" class="1"/>
+ <ClassDef glyph="behDotless-ar.medi.ain" class="1"/>
+ <ClassDef glyph="behDotless-ar.medi.dal" class="1"/>
+ <ClassDef glyph="behDotless-ar.medi.feh" class="1"/>
+ <ClassDef glyph="behDotless-ar.medi.hah" class="1"/>
+ <ClassDef glyph="behDotless-ar.medi.heh" class="1"/>
+ <ClassDef glyph="behDotless-ar.medi.high" class="1"/>
+ <ClassDef glyph="behDotless-ar.medi.high2" class="1"/>
+ <ClassDef glyph="behDotless-ar.medi.meem" class="1"/>
+ <ClassDef glyph="behDotless-ar.medi.noon" class="1"/>
+ <ClassDef glyph="behDotless-ar.medi.ragaa" class="1"/>
+ <ClassDef glyph="behDotless-ar.medi.reh" class="1"/>
+ <ClassDef glyph="behDotless-ar.medi.sad" class="1"/>
+ <ClassDef glyph="behDotless-ar.medi.yeh" class="1"/>
+ <ClassDef glyph="c" class="1"/>
+ <ClassDef glyph="ccedilla" class="1"/>
+ <ClassDef glyph="cedillacomb" class="3"/>
+ <ClassDef glyph="circumflexcomb" class="3"/>
+ <ClassDef glyph="dal-ar" class="1"/>
+ <ClassDef glyph="dal-ar.fina" class="1"/>
+ <ClassDef glyph="damma-ar" class="3"/>
+ <ClassDef glyph="dammainverted-ar" class="3"/>
+ <ClassDef glyph="dammainverted-ar.urd" class="3"/>
+ <ClassDef glyph="dammatan-ar" class="3"/>
+ <ClassDef glyph="dieresiscomb" class="3"/>
+ <ClassDef glyph="dotabove-ar" class="3"/>
+ <ClassDef glyph="dotbelow-ar" class="3"/>
+ <ClassDef glyph="dotlessi" class="1"/>
+ <ClassDef glyph="e" class="1"/>
+ <ClassDef glyph="eacute" class="1"/>
+ <ClassDef glyph="ecircumflex" class="1"/>
+ <ClassDef glyph="edieresis" class="1"/>
+ <ClassDef glyph="egrave" class="1"/>
+ <ClassDef glyph="fatha-ar" class="3"/>
+ <ClassDef glyph="fathatan-ar" class="3"/>
+ <ClassDef glyph="fehDotless-ar" class="1"/>
+ <ClassDef glyph="fehDotless-ar.fina" class="1"/>
+ <ClassDef glyph="fehDotless-ar.fina.jalt" class="1"/>
+ <ClassDef glyph="fehDotless-ar.init" class="1"/>
+ <ClassDef glyph="fehDotless-ar.init.ain" class="1"/>
+ <ClassDef glyph="fehDotless-ar.init.dal" class="1"/>
+ <ClassDef glyph="fehDotless-ar.init.feh" class="1"/>
+ <ClassDef glyph="fehDotless-ar.init.hah" class="1"/>
+ <ClassDef glyph="fehDotless-ar.init.heh" class="1"/>
+ <ClassDef glyph="fehDotless-ar.init.meem" class="1"/>
+ <ClassDef glyph="fehDotless-ar.init.ragaa" class="1"/>
+ <ClassDef glyph="fehDotless-ar.init.reh" class="1"/>
+ <ClassDef glyph="fehDotless-ar.init.sad" class="1"/>
+ <ClassDef glyph="fehDotless-ar.init.yeh" class="1"/>
+ <ClassDef glyph="fehDotless-ar.jalt" class="1"/>
+ <ClassDef glyph="fehDotless-ar.medi" class="1"/>
+ <ClassDef glyph="fehDotless-ar.medi.ain" class="1"/>
+ <ClassDef glyph="fehDotless-ar.medi.dal" class="1"/>
+ <ClassDef glyph="fehDotless-ar.medi.feh" class="1"/>
+ <ClassDef glyph="fehDotless-ar.medi.hah" class="1"/>
+ <ClassDef glyph="fehDotless-ar.medi.heh" class="1"/>
+ <ClassDef glyph="fehDotless-ar.medi.meem" class="1"/>
+ <ClassDef glyph="fehDotless-ar.medi.ragaa" class="1"/>
+ <ClassDef glyph="fehDotless-ar.medi.reh" class="1"/>
+ <ClassDef glyph="fehDotless-ar.medi.sad" class="1"/>
+ <ClassDef glyph="fehDotless-ar.medi.yeh" class="1"/>
+ <ClassDef glyph="gafsarkashabove-ar" class="3"/>
+ <ClassDef glyph="gravecomb" class="3"/>
+ <ClassDef glyph="hah-ar" class="1"/>
+ <ClassDef glyph="hah-ar.fina" class="1"/>
+ <ClassDef glyph="hah-ar.init" class="1"/>
+ <ClassDef glyph="hah-ar.init.ain" class="1"/>
+ <ClassDef glyph="hah-ar.init.dal" class="1"/>
+ <ClassDef glyph="hah-ar.init.feh" class="1"/>
+ <ClassDef glyph="hah-ar.init.hah" class="1"/>
+ <ClassDef glyph="hah-ar.init.heh" class="1"/>
+ <ClassDef glyph="hah-ar.init.heh.ragaa" class="1"/>
+ <ClassDef glyph="hah-ar.init.meem" class="1"/>
+ <ClassDef glyph="hah-ar.init.ragaa" class="1"/>
+ <ClassDef glyph="hah-ar.init.reh" class="1"/>
+ <ClassDef glyph="hah-ar.init.sad" class="1"/>
+ <ClassDef glyph="hah-ar.init.yeh" class="1"/>
+ <ClassDef glyph="hah-ar.medi" class="1"/>
+ <ClassDef glyph="hah-ar.medi.ain" class="1"/>
+ <ClassDef glyph="hah-ar.medi.dal" class="1"/>
+ <ClassDef glyph="hah-ar.medi.feh" class="1"/>
+ <ClassDef glyph="hah-ar.medi.hah" class="1"/>
+ <ClassDef glyph="hah-ar.medi.heh" class="1"/>
+ <ClassDef glyph="hah-ar.medi.heh.ragaa" class="1"/>
+ <ClassDef glyph="hah-ar.medi.meem" class="1"/>
+ <ClassDef glyph="hah-ar.medi.ragaa" class="1"/>
+ <ClassDef glyph="hah-ar.medi.reh" class="1"/>
+ <ClassDef glyph="hah-ar.medi.sad" class="1"/>
+ <ClassDef glyph="hah-ar.medi.yeh" class="1"/>
+ <ClassDef glyph="hamza-ar" class="1"/>
+ <ClassDef glyph="hamzaabove-ar" class="3"/>
+ <ClassDef glyph="hamzabelow-ar" class="3"/>
+ <ClassDef glyph="heh-ar" class="1"/>
+ <ClassDef glyph="heh-ar.fina" class="1"/>
+ <ClassDef glyph="heh-ar.init" class="1"/>
+ <ClassDef glyph="heh-ar.init.ain" class="1"/>
+ <ClassDef glyph="heh-ar.init.dal" class="1"/>
+ <ClassDef glyph="heh-ar.init.feh" class="1"/>
+ <ClassDef glyph="heh-ar.init.hah" class="1"/>
+ <ClassDef glyph="heh-ar.init.heh" class="1"/>
+ <ClassDef glyph="heh-ar.init.meem" class="1"/>
+ <ClassDef glyph="heh-ar.init.ragaa" class="1"/>
+ <ClassDef glyph="heh-ar.init.reh" class="1"/>
+ <ClassDef glyph="heh-ar.init.sad" class="1"/>
+ <ClassDef glyph="heh-ar.init.yeh" class="1"/>
+ <ClassDef glyph="heh-ar.medi" class="1"/>
+ <ClassDef glyph="heh-ar.medi.ain" class="1"/>
+ <ClassDef glyph="heh-ar.medi.dal" class="1"/>
+ <ClassDef glyph="heh-ar.medi.feh" class="1"/>
+ <ClassDef glyph="heh-ar.medi.hah" class="1"/>
+ <ClassDef glyph="heh-ar.medi.heh" class="1"/>
+ <ClassDef glyph="heh-ar.medi.meem" class="1"/>
+ <ClassDef glyph="heh-ar.medi.ragaa" class="1"/>
+ <ClassDef glyph="heh-ar.medi.reh" class="1"/>
+ <ClassDef glyph="heh-ar.medi.sad" class="1"/>
+ <ClassDef glyph="heh-ar.medi.yeh" class="1"/>
+ <ClassDef glyph="hehDoachashmee-ar" class="1"/>
+ <ClassDef glyph="hehDoachashmee-ar.fina" class="1"/>
+ <ClassDef glyph="hehDoachashmee-ar.medi" class="1"/>
+ <ClassDef glyph="hehDoachashmee-ar.medi.ain" class="1"/>
+ <ClassDef glyph="hehDoachashmee-ar.medi.dal" class="1"/>
+ <ClassDef glyph="hehDoachashmee-ar.medi.feh" class="1"/>
+ <ClassDef glyph="hehDoachashmee-ar.medi.hah" class="1"/>
+ <ClassDef glyph="hehDoachashmee-ar.medi.heh" class="1"/>
+ <ClassDef glyph="hehDoachashmee-ar.medi.meem" class="1"/>
+ <ClassDef glyph="hehDoachashmee-ar.medi.ragaa" class="1"/>
+ <ClassDef glyph="hehDoachashmee-ar.medi.reh" class="1"/>
+ <ClassDef glyph="hehDoachashmee-ar.medi.sad" class="1"/>
+ <ClassDef glyph="hehDoachashmee-ar.medi.yeh" class="1"/>
+ <ClassDef glyph="hehgoal-ar.fina" class="1"/>
+ <ClassDef glyph="hehgoal-ar.init" class="1"/>
+ <ClassDef glyph="hehgoal-ar.init.ain" class="1"/>
+ <ClassDef glyph="hehgoal-ar.init.dal" class="1"/>
+ <ClassDef glyph="hehgoal-ar.init.feh" class="1"/>
+ <ClassDef glyph="hehgoal-ar.init.hah" class="1"/>
+ <ClassDef glyph="hehgoal-ar.init.heh" class="1"/>
+ <ClassDef glyph="hehgoal-ar.init.meem" class="1"/>
+ <ClassDef glyph="hehgoal-ar.init.ragaa" class="1"/>
+ <ClassDef glyph="hehgoal-ar.init.reh" class="1"/>
+ <ClassDef glyph="hehgoal-ar.init.sad" class="1"/>
+ <ClassDef glyph="hehgoal-ar.init.yeh" class="1"/>
+ <ClassDef glyph="iacute" class="1"/>
+ <ClassDef glyph="icircumflex" class="1"/>
+ <ClassDef glyph="idieresis" class="1"/>
+ <ClassDef glyph="igrave" class="1"/>
+ <ClassDef glyph="kaf-ar" class="1"/>
+ <ClassDef glyph="kaf-ar.fina" class="1"/>
+ <ClassDef glyph="kaf-ar.fina.jalt" class="1"/>
+ <ClassDef glyph="kaf-ar.init" class="1"/>
+ <ClassDef glyph="kaf-ar.init.ain" class="1"/>
+ <ClassDef glyph="kaf-ar.init.alef" class="1"/>
+ <ClassDef glyph="kaf-ar.init.alef.loop" class="1"/>
+ <ClassDef glyph="kaf-ar.init.dal" class="1"/>
+ <ClassDef glyph="kaf-ar.init.feh" class="1"/>
+ <ClassDef glyph="kaf-ar.init.hah" class="1"/>
+ <ClassDef glyph="kaf-ar.init.heh" class="1"/>
+ <ClassDef glyph="kaf-ar.init.meem" class="1"/>
+ <ClassDef glyph="kaf-ar.init.ragaa" class="1"/>
+ <ClassDef glyph="kaf-ar.init.reh" class="1"/>
+ <ClassDef glyph="kaf-ar.init.sad" class="1"/>
+ <ClassDef glyph="kaf-ar.init.yeh" class="1"/>
+ <ClassDef glyph="kaf-ar.jalt" class="1"/>
+ <ClassDef glyph="kaf-ar.medi" class="1"/>
+ <ClassDef glyph="kaf-ar.medi.ain" class="1"/>
+ <ClassDef glyph="kaf-ar.medi.dal" class="1"/>
+ <ClassDef glyph="kaf-ar.medi.feh" class="1"/>
+ <ClassDef glyph="kaf-ar.medi.hah" class="1"/>
+ <ClassDef glyph="kaf-ar.medi.heh" class="1"/>
+ <ClassDef glyph="kaf-ar.medi.kaf" class="1"/>
+ <ClassDef glyph="kaf-ar.medi.meem" class="1"/>
+ <ClassDef glyph="kaf-ar.medi.ragaa" class="1"/>
+ <ClassDef glyph="kaf-ar.medi.reh" class="1"/>
+ <ClassDef glyph="kaf-ar.medi.sad" class="1"/>
+ <ClassDef glyph="kaf-ar.medi.yeh" class="1"/>
+ <ClassDef glyph="kashida-ar" class="3"/>
+ <ClassDef glyph="kasra-ar" class="3"/>
+ <ClassDef glyph="kasratan-ar" class="3"/>
+ <ClassDef glyph="keheh-ar" class="1"/>
+ <ClassDef glyph="keheh-ar.fina" class="1"/>
+ <ClassDef glyph="keheh-ar.fina.jalt" class="1"/>
+ <ClassDef glyph="keheh-ar.jalt" class="1"/>
+ <ClassDef glyph="lam-ar" class="1"/>
+ <ClassDef glyph="lam-ar.fina" class="1"/>
+ <ClassDef glyph="lam-ar.fina.jalt" class="1"/>
+ <ClassDef glyph="lam-ar.init" class="1"/>
+ <ClassDef glyph="lam-ar.init.ain" class="1"/>
+ <ClassDef glyph="lam-ar.init.alef" class="1"/>
+ <ClassDef glyph="lam-ar.init.dal" class="1"/>
+ <ClassDef glyph="lam-ar.init.feh" class="1"/>
+ <ClassDef glyph="lam-ar.init.hah" class="1"/>
+ <ClassDef glyph="lam-ar.init.heh" class="1"/>
+ <ClassDef glyph="lam-ar.init.kaf" class="1"/>
+ <ClassDef glyph="lam-ar.init.meem" class="1"/>
+ <ClassDef glyph="lam-ar.init.ragaa" class="1"/>
+ <ClassDef glyph="lam-ar.init.reh" class="1"/>
+ <ClassDef glyph="lam-ar.init.sad" class="1"/>
+ <ClassDef glyph="lam-ar.init.yeh" class="1"/>
+ <ClassDef glyph="lam-ar.jalt" class="1"/>
+ <ClassDef glyph="lam-ar.medi" class="1"/>
+ <ClassDef glyph="lam-ar.medi.ain" class="1"/>
+ <ClassDef glyph="lam-ar.medi.alef" class="1"/>
+ <ClassDef glyph="lam-ar.medi.dal" class="1"/>
+ <ClassDef glyph="lam-ar.medi.feh" class="1"/>
+ <ClassDef glyph="lam-ar.medi.hah" class="1"/>
+ <ClassDef glyph="lam-ar.medi.heh" class="1"/>
+ <ClassDef glyph="lam-ar.medi.kaf" class="1"/>
+ <ClassDef glyph="lam-ar.medi.meem" class="1"/>
+ <ClassDef glyph="lam-ar.medi.ragaa" class="1"/>
+ <ClassDef glyph="lam-ar.medi.reh" class="1"/>
+ <ClassDef glyph="lam-ar.medi.sad" class="1"/>
+ <ClassDef glyph="lam-ar.medi.yeh" class="1"/>
+ <ClassDef glyph="macroncomb" class="3"/>
+ <ClassDef glyph="madda-ar" class="3"/>
+ <ClassDef glyph="meem-ar" class="1"/>
+ <ClassDef glyph="meem-ar.fina" class="1"/>
+ <ClassDef glyph="meem-ar.init" class="1"/>
+ <ClassDef glyph="meem-ar.init.ain" class="1"/>
+ <ClassDef glyph="meem-ar.init.dal" class="1"/>
+ <ClassDef glyph="meem-ar.init.feh" class="1"/>
+ <ClassDef glyph="meem-ar.init.hah" class="1"/>
+ <ClassDef glyph="meem-ar.init.heh" class="1"/>
+ <ClassDef glyph="meem-ar.init.meem" class="1"/>
+ <ClassDef glyph="meem-ar.init.ragaa" class="1"/>
+ <ClassDef glyph="meem-ar.init.reh" class="1"/>
+ <ClassDef glyph="meem-ar.init.sad" class="1"/>
+ <ClassDef glyph="meem-ar.init.yeh" class="1"/>
+ <ClassDef glyph="meem-ar.medi" class="1"/>
+ <ClassDef glyph="meem-ar.medi.ain" class="1"/>
+ <ClassDef glyph="meem-ar.medi.dal" class="1"/>
+ <ClassDef glyph="meem-ar.medi.feh" class="1"/>
+ <ClassDef glyph="meem-ar.medi.hah" class="1"/>
+ <ClassDef glyph="meem-ar.medi.heh" class="1"/>
+ <ClassDef glyph="meem-ar.medi.meem" class="1"/>
+ <ClassDef glyph="meem-ar.medi.ragaa" class="1"/>
+ <ClassDef glyph="meem-ar.medi.reh" class="1"/>
+ <ClassDef glyph="meem-ar.medi.sad" class="1"/>
+ <ClassDef glyph="meem-ar.medi.yeh" class="1"/>
+ <ClassDef glyph="n" class="1"/>
+ <ClassDef glyph="noon-ar" class="1"/>
+ <ClassDef glyph="noon-ar.fina" class="1"/>
+ <ClassDef glyph="noon-ar.fina.tail" class="1"/>
+ <ClassDef glyph="noon-ar.tail" class="1"/>
+ <ClassDef glyph="noonghunna-ar" class="1"/>
+ <ClassDef glyph="noonghunna-ar.fina" class="1"/>
+ <ClassDef glyph="noonghunna-ar.jalt" class="1"/>
+ <ClassDef glyph="noonghunnaabove-ar" class="3"/>
+ <ClassDef glyph="ntilde" class="1"/>
+ <ClassDef glyph="o" class="1"/>
+ <ClassDef glyph="oacute" class="1"/>
+ <ClassDef glyph="ocircumflex" class="1"/>
+ <ClassDef glyph="odieresis" class="1"/>
+ <ClassDef glyph="ograve" class="1"/>
+ <ClassDef glyph="opendammatan-ar" class="3"/>
+ <ClassDef glyph="oslash" class="1"/>
+ <ClassDef glyph="otilde" class="1"/>
+ <ClassDef glyph="qaf-ar" class="1"/>
+ <ClassDef glyph="qaf-ar.fina" class="1"/>
+ <ClassDef glyph="qafDotless-ar" class="1"/>
+ <ClassDef glyph="qafDotless-ar.fina" class="1"/>
+ <ClassDef glyph="qafDotless-ar.fina.jalt" class="1"/>
+ <ClassDef glyph="qafDotless-ar.jalt" class="1"/>
+ <ClassDef glyph="reh-ar" class="1"/>
+ <ClassDef glyph="reh-ar.fina" class="1"/>
+ <ClassDef glyph="ringcomb" class="3"/>
+ <ClassDef glyph="sad-ar" class="1"/>
+ <ClassDef glyph="sad-ar.fina" class="1"/>
+ <ClassDef glyph="sad-ar.fina.jalt" class="1"/>
+ <ClassDef glyph="sad-ar.init" class="1"/>
+ <ClassDef glyph="sad-ar.init.ain" class="1"/>
+ <ClassDef glyph="sad-ar.init.dal" class="1"/>
+ <ClassDef glyph="sad-ar.init.feh" class="1"/>
+ <ClassDef glyph="sad-ar.init.hah" class="1"/>
+ <ClassDef glyph="sad-ar.init.heh" class="1"/>
+ <ClassDef glyph="sad-ar.init.meem" class="1"/>
+ <ClassDef glyph="sad-ar.init.qantara" class="1"/>
+ <ClassDef glyph="sad-ar.init.ragaa" class="1"/>
+ <ClassDef glyph="sad-ar.init.reh" class="1"/>
+ <ClassDef glyph="sad-ar.init.sad" class="1"/>
+ <ClassDef glyph="sad-ar.init.yeh" class="1"/>
+ <ClassDef glyph="sad-ar.jalt" class="1"/>
+ <ClassDef glyph="sad-ar.medi" class="1"/>
+ <ClassDef glyph="sad-ar.medi.ain" class="1"/>
+ <ClassDef glyph="sad-ar.medi.dal" class="1"/>
+ <ClassDef glyph="sad-ar.medi.feh" class="1"/>
+ <ClassDef glyph="sad-ar.medi.hah" class="1"/>
+ <ClassDef glyph="sad-ar.medi.heh" class="1"/>
+ <ClassDef glyph="sad-ar.medi.meem" class="1"/>
+ <ClassDef glyph="sad-ar.medi.postsad" class="1"/>
+ <ClassDef glyph="sad-ar.medi.qantara" class="1"/>
+ <ClassDef glyph="sad-ar.medi.ragaa" class="1"/>
+ <ClassDef glyph="sad-ar.medi.reh" class="1"/>
+ <ClassDef glyph="sad-ar.medi.sad" class="1"/>
+ <ClassDef glyph="sad-ar.medi.yeh" class="1"/>
+ <ClassDef glyph="seen-ar" class="1"/>
+ <ClassDef glyph="seen-ar.fina" class="1"/>
+ <ClassDef glyph="seen-ar.fina.jalt" class="1"/>
+ <ClassDef glyph="seen-ar.init" class="1"/>
+ <ClassDef glyph="seen-ar.init.ain" class="1"/>
+ <ClassDef glyph="seen-ar.init.dal" class="1"/>
+ <ClassDef glyph="seen-ar.init.feh" class="1"/>
+ <ClassDef glyph="seen-ar.init.hah" class="1"/>
+ <ClassDef glyph="seen-ar.init.heh" class="1"/>
+ <ClassDef glyph="seen-ar.init.meem" class="1"/>
+ <ClassDef glyph="seen-ar.init.ragaa" class="1"/>
+ <ClassDef glyph="seen-ar.init.reh" class="1"/>
+ <ClassDef glyph="seen-ar.init.sad" class="1"/>
+ <ClassDef glyph="seen-ar.init.yeh" class="1"/>
+ <ClassDef glyph="seen-ar.jalt" class="1"/>
+ <ClassDef glyph="seen-ar.medi" class="1"/>
+ <ClassDef glyph="seen-ar.medi.ain" class="1"/>
+ <ClassDef glyph="seen-ar.medi.dal" class="1"/>
+ <ClassDef glyph="seen-ar.medi.feh" class="1"/>
+ <ClassDef glyph="seen-ar.medi.hah" class="1"/>
+ <ClassDef glyph="seen-ar.medi.heh" class="1"/>
+ <ClassDef glyph="seen-ar.medi.meem" class="1"/>
+ <ClassDef glyph="seen-ar.medi.ragaa" class="1"/>
+ <ClassDef glyph="seen-ar.medi.reh" class="1"/>
+ <ClassDef glyph="seen-ar.medi.sad" class="1"/>
+ <ClassDef glyph="seen-ar.medi.yeh" class="1"/>
+ <ClassDef glyph="shadda-ar" class="3"/>
+ <ClassDef glyph="sheen-ar" class="1"/>
+ <ClassDef glyph="sukun-ar" class="3"/>
+ <ClassDef glyph="sukun-ar.alt" class="3"/>
+ <ClassDef glyph="tah-ar" class="1"/>
+ <ClassDef glyph="tah-ar.fina" class="1"/>
+ <ClassDef glyph="tah-ar.init" class="1"/>
+ <ClassDef glyph="tah-ar.init.ain" class="1"/>
+ <ClassDef glyph="tah-ar.init.dal" class="1"/>
+ <ClassDef glyph="tah-ar.init.feh" class="1"/>
+ <ClassDef glyph="tah-ar.init.hah" class="1"/>
+ <ClassDef glyph="tah-ar.init.heh" class="1"/>
+ <ClassDef glyph="tah-ar.init.kaf" class="1"/>
+ <ClassDef glyph="tah-ar.init.meem" class="1"/>
+ <ClassDef glyph="tah-ar.init.qantara" class="1"/>
+ <ClassDef glyph="tah-ar.init.ragaa" class="1"/>
+ <ClassDef glyph="tah-ar.init.reh" class="1"/>
+ <ClassDef glyph="tah-ar.init.sad" class="1"/>
+ <ClassDef glyph="tah-ar.init.yeh" class="1"/>
+ <ClassDef glyph="tah-ar.medi" class="1"/>
+ <ClassDef glyph="tah-ar.medi.ain" class="1"/>
+ <ClassDef glyph="tah-ar.medi.dal" class="1"/>
+ <ClassDef glyph="tah-ar.medi.feh" class="1"/>
+ <ClassDef glyph="tah-ar.medi.hah" class="1"/>
+ <ClassDef glyph="tah-ar.medi.heh" class="1"/>
+ <ClassDef glyph="tah-ar.medi.kaf" class="1"/>
+ <ClassDef glyph="tah-ar.medi.meem" class="1"/>
+ <ClassDef glyph="tah-ar.medi.postsad" class="1"/>
+ <ClassDef glyph="tah-ar.medi.qantara" class="1"/>
+ <ClassDef glyph="tah-ar.medi.ragaa" class="1"/>
+ <ClassDef glyph="tah-ar.medi.reh" class="1"/>
+ <ClassDef glyph="tah-ar.medi.sad" class="1"/>
+ <ClassDef glyph="tah-ar.medi.yeh" class="1"/>
+ <ClassDef glyph="tahabove-ar" class="3"/>
+ <ClassDef glyph="threedotsdownbelow-ar" class="3"/>
+ <ClassDef glyph="threedotsupabove-ar" class="3"/>
+ <ClassDef glyph="tildecomb" class="3"/>
+ <ClassDef glyph="twodotshorizontalabove-ar" class="3"/>
+ <ClassDef glyph="twodotshorizontalbelow-ar" class="3"/>
+ <ClassDef glyph="u" class="1"/>
+ <ClassDef glyph="uacute" class="1"/>
+ <ClassDef glyph="ucircumflex" class="1"/>
+ <ClassDef glyph="udieresis" class="1"/>
+ <ClassDef glyph="ugrave" class="1"/>
+ <ClassDef glyph="vabove-ar" class="3"/>
+ <ClassDef glyph="vbelow-ar" class="3"/>
+ <ClassDef glyph="wasla-ar" class="3"/>
+ <ClassDef glyph="waw-ar" class="1"/>
+ <ClassDef glyph="waw-ar.fina" class="1"/>
+ <ClassDef glyph="y" class="1"/>
+ <ClassDef glyph="yacute" class="1"/>
+ <ClassDef glyph="ydieresis" class="1"/>
+ <ClassDef glyph="yehbarree-ar" class="1"/>
+ <ClassDef glyph="yehbarree-ar.fina" class="1"/>
+ </GlyphClassDef>
+ <MarkGlyphSetsDef>
+ <MarkSetTableFormat value="1"/>
+ <!-- MarkSetCount=5 -->
+ <Coverage index="0">
+ <Glyph value="dotabove-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="threedotsupabove-ar"/>
+ </Coverage>
+ <Coverage index="1">
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="threedotsdownbelow-ar"/>
+ <Glyph value="alefbelow-ar"/>
+ <Glyph value="hamzabelow-ar"/>
+ <Glyph value="kasratan-ar"/>
+ <Glyph value="kasra-ar"/>
+ <Glyph value="shadda-ar"/>
+ </Coverage>
+ <Coverage index="2">
+ <Glyph value="dotabove-ar"/>
+ <Glyph value="twodotshorizontalabove-ar"/>
+ <Glyph value="threedotsupabove-ar"/>
+ <Glyph value="gafsarkashabove-ar"/>
+ <Glyph value="alefabove-ar"/>
+ <Glyph value="hamzaabove-ar"/>
+ <Glyph value="fathatan-ar"/>
+ <Glyph value="dammatan-ar"/>
+ <Glyph value="fatha-ar"/>
+ <Glyph value="damma-ar"/>
+ <Glyph value="shadda-ar"/>
+ <Glyph value="sukun-ar"/>
+ <Glyph value="sukun-ar.alt"/>
+ <Glyph value="madda-ar"/>
+ <Glyph value="noonghunnaabove-ar"/>
+ <Glyph value="dammainverted-ar"/>
+ <Glyph value="dammainverted-ar.urd"/>
+ <Glyph value="opendammatan-ar"/>
+ </Coverage>
+ <Coverage index="3">
+ <Glyph value="cedillacomb"/>
+ </Coverage>
+ <Coverage index="4">
+ <Glyph value="dieresiscomb"/>
+ <Glyph value="gravecomb"/>
+ <Glyph value="acutecomb"/>
+ <Glyph value="circumflexcomb"/>
+ <Glyph value="ringcomb"/>
+ <Glyph value="tildecomb"/>
+ <Glyph value="macroncomb"/>
+ </Coverage>
+ </MarkGlyphSetsDef>
+ </GDEF>
+
+ <GPOS>
+ <Version value="0x00010000"/>
+ <ScriptList>
+ <!-- ScriptCount=4 -->
+ <ScriptRecord index="0">
+ <ScriptTag value="DFLT"/>
+ <Script>
+ <DefaultLangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=3 -->
+ <FeatureIndex index="0" value="2"/>
+ <FeatureIndex index="1" value="4"/>
+ <FeatureIndex index="2" value="6"/>
+ </DefaultLangSys>
+ <!-- LangSysCount=0 -->
+ </Script>
+ </ScriptRecord>
+ <ScriptRecord index="1">
+ <ScriptTag value="arab"/>
+ <Script>
+ <DefaultLangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=4 -->
+ <FeatureIndex index="0" value="0"/>
+ <FeatureIndex index="1" value="1"/>
+ <FeatureIndex index="2" value="3"/>
+ <FeatureIndex index="3" value="5"/>
+ </DefaultLangSys>
+ <!-- LangSysCount=4 -->
+ <LangSysRecord index="0">
+ <LangSysTag value="KSH "/>
+ <LangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=4 -->
+ <FeatureIndex index="0" value="0"/>
+ <FeatureIndex index="1" value="1"/>
+ <FeatureIndex index="2" value="3"/>
+ <FeatureIndex index="3" value="5"/>
+ </LangSys>
+ </LangSysRecord>
+ <LangSysRecord index="1">
+ <LangSysTag value="MLY "/>
+ <LangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=4 -->
+ <FeatureIndex index="0" value="0"/>
+ <FeatureIndex index="1" value="1"/>
+ <FeatureIndex index="2" value="3"/>
+ <FeatureIndex index="3" value="5"/>
+ </LangSys>
+ </LangSysRecord>
+ <LangSysRecord index="2">
+ <LangSysTag value="SND "/>
+ <LangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=4 -->
+ <FeatureIndex index="0" value="0"/>
+ <FeatureIndex index="1" value="1"/>
+ <FeatureIndex index="2" value="3"/>
+ <FeatureIndex index="3" value="5"/>
+ </LangSys>
+ </LangSysRecord>
+ <LangSysRecord index="3">
+ <LangSysTag value="URD "/>
+ <LangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=4 -->
+ <FeatureIndex index="0" value="0"/>
+ <FeatureIndex index="1" value="1"/>
+ <FeatureIndex index="2" value="3"/>
+ <FeatureIndex index="3" value="5"/>
+ </LangSys>
+ </LangSysRecord>
+ </Script>
+ </ScriptRecord>
+ <ScriptRecord index="2">
+ <ScriptTag value="grek"/>
+ <Script>
+ <DefaultLangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=3 -->
+ <FeatureIndex index="0" value="2"/>
+ <FeatureIndex index="1" value="4"/>
+ <FeatureIndex index="2" value="6"/>
+ </DefaultLangSys>
+ <!-- LangSysCount=0 -->
+ </Script>
+ </ScriptRecord>
+ <ScriptRecord index="3">
+ <ScriptTag value="latn"/>
+ <Script>
+ <DefaultLangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=3 -->
+ <FeatureIndex index="0" value="2"/>
+ <FeatureIndex index="1" value="4"/>
+ <FeatureIndex index="2" value="6"/>
+ </DefaultLangSys>
+ <!-- LangSysCount=0 -->
+ </Script>
+ </ScriptRecord>
+ </ScriptList>
+ <FeatureList>
+ <!-- FeatureCount=7 -->
+ <FeatureRecord index="0">
+ <FeatureTag value="curs"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="0"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="1">
+ <FeatureTag value="kern"/>
+ <Feature>
+ <!-- LookupCount=2 -->
+ <LookupListIndex index="0" value="12"/>
+ <LookupListIndex index="1" value="13"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="2">
+ <FeatureTag value="kern"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="24"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="3">
+ <FeatureTag value="mark"/>
+ <Feature>
+ <!-- LookupCount=3 -->
+ <LookupListIndex index="0" value="1"/>
+ <LookupListIndex index="1" value="2"/>
+ <LookupListIndex index="2" value="3"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="4">
+ <FeatureTag value="mark"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="25"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="5">
+ <FeatureTag value="mkmk"/>
+ <Feature>
+ <!-- LookupCount=2 -->
+ <LookupListIndex index="0" value="10"/>
+ <LookupListIndex index="1" value="11"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="6">
+ <FeatureTag value="mkmk"/>
+ <Feature>
+ <!-- LookupCount=2 -->
+ <LookupListIndex index="0" value="26"/>
+ <LookupListIndex index="1" value="27"/>
+ </Feature>
+ </FeatureRecord>
+ </FeatureList>
+ <LookupList>
+ <!-- LookupCount=28 -->
+ <Lookup index="0">
+ <LookupType value="3"/>
+ <LookupFlag value="9"/><!-- rightToLeft ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <CursivePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="alef-ar.fina"/>
+ <Glyph value="alef-ar.fina.lam"/>
+ <Glyph value="behDotless-ar.fina"/>
+ <Glyph value="behDotless-ar.fina.jalt"/>
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.medi.ain"/>
+ <Glyph value="behDotless-ar.medi.dal"/>
+ <Glyph value="behDotless-ar.medi.feh"/>
+ <Glyph value="behDotless-ar.medi.hah"/>
+ <Glyph value="behDotless-ar.medi.heh"/>
+ <Glyph value="behDotless-ar.medi.high"/>
+ <Glyph value="behDotless-ar.medi.high2"/>
+ <Glyph value="behDotless-ar.medi.meem"/>
+ <Glyph value="behDotless-ar.medi.noon"/>
+ <Glyph value="behDotless-ar.medi.ragaa"/>
+ <Glyph value="behDotless-ar.medi.reh"/>
+ <Glyph value="behDotless-ar.medi.sad"/>
+ <Glyph value="behDotless-ar.medi.yeh"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="behDotless-ar.init.ain"/>
+ <Glyph value="behDotless-ar.init.ascend"/>
+ <Glyph value="behDotless-ar.init.dal"/>
+ <Glyph value="behDotless-ar.init.feh"/>
+ <Glyph value="behDotless-ar.init.hah"/>
+ <Glyph value="behDotless-ar.init.heh"/>
+ <Glyph value="behDotless-ar.init.meem"/>
+ <Glyph value="behDotless-ar.init.ragaa"/>
+ <Glyph value="behDotless-ar.init.reh"/>
+ <Glyph value="behDotless-ar.init.sad"/>
+ <Glyph value="behDotless-ar.init.yeh"/>
+ <Glyph value="hah-ar.fina"/>
+ <Glyph value="hah-ar.medi"/>
+ <Glyph value="hah-ar.medi.ain"/>
+ <Glyph value="hah-ar.medi.dal"/>
+ <Glyph value="hah-ar.medi.feh"/>
+ <Glyph value="hah-ar.medi.hah"/>
+ <Glyph value="hah-ar.medi.heh"/>
+ <Glyph value="hah-ar.medi.heh.ragaa"/>
+ <Glyph value="hah-ar.medi.meem"/>
+ <Glyph value="hah-ar.medi.ragaa"/>
+ <Glyph value="hah-ar.medi.reh"/>
+ <Glyph value="hah-ar.medi.sad"/>
+ <Glyph value="hah-ar.medi.yeh"/>
+ <Glyph value="hah-ar.init"/>
+ <Glyph value="hah-ar.init.ain"/>
+ <Glyph value="hah-ar.init.dal"/>
+ <Glyph value="hah-ar.init.feh"/>
+ <Glyph value="hah-ar.init.hah"/>
+ <Glyph value="hah-ar.init.heh"/>
+ <Glyph value="hah-ar.init.heh.ragaa"/>
+ <Glyph value="hah-ar.init.meem"/>
+ <Glyph value="hah-ar.init.ragaa"/>
+ <Glyph value="hah-ar.init.reh"/>
+ <Glyph value="hah-ar.init.sad"/>
+ <Glyph value="hah-ar.init.yeh"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="seen-ar.fina"/>
+ <Glyph value="seen-ar.fina.jalt"/>
+ <Glyph value="seen-ar.medi"/>
+ <Glyph value="seen-ar.medi.ain"/>
+ <Glyph value="seen-ar.medi.dal"/>
+ <Glyph value="seen-ar.medi.feh"/>
+ <Glyph value="seen-ar.medi.hah"/>
+ <Glyph value="seen-ar.medi.heh"/>
+ <Glyph value="seen-ar.medi.meem"/>
+ <Glyph value="seen-ar.medi.ragaa"/>
+ <Glyph value="seen-ar.medi.reh"/>
+ <Glyph value="seen-ar.medi.sad"/>
+ <Glyph value="seen-ar.medi.yeh"/>
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="seen-ar.init.ain"/>
+ <Glyph value="seen-ar.init.dal"/>
+ <Glyph value="seen-ar.init.feh"/>
+ <Glyph value="seen-ar.init.hah"/>
+ <Glyph value="seen-ar.init.heh"/>
+ <Glyph value="seen-ar.init.meem"/>
+ <Glyph value="seen-ar.init.ragaa"/>
+ <Glyph value="seen-ar.init.reh"/>
+ <Glyph value="seen-ar.init.sad"/>
+ <Glyph value="seen-ar.init.yeh"/>
+ <Glyph value="sad-ar.fina"/>
+ <Glyph value="sad-ar.fina.jalt"/>
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="sad-ar.medi.ain"/>
+ <Glyph value="sad-ar.medi.dal"/>
+ <Glyph value="sad-ar.medi.feh"/>
+ <Glyph value="sad-ar.medi.hah"/>
+ <Glyph value="sad-ar.medi.heh"/>
+ <Glyph value="sad-ar.medi.meem"/>
+ <Glyph value="sad-ar.medi.postsad"/>
+ <Glyph value="sad-ar.medi.qantara"/>
+ <Glyph value="sad-ar.medi.ragaa"/>
+ <Glyph value="sad-ar.medi.reh"/>
+ <Glyph value="sad-ar.medi.sad"/>
+ <Glyph value="sad-ar.medi.yeh"/>
+ <Glyph value="sad-ar.init"/>
+ <Glyph value="sad-ar.init.ain"/>
+ <Glyph value="sad-ar.init.dal"/>
+ <Glyph value="sad-ar.init.feh"/>
+ <Glyph value="sad-ar.init.hah"/>
+ <Glyph value="sad-ar.init.heh"/>
+ <Glyph value="sad-ar.init.meem"/>
+ <Glyph value="sad-ar.init.qantara"/>
+ <Glyph value="sad-ar.init.ragaa"/>
+ <Glyph value="sad-ar.init.reh"/>
+ <Glyph value="sad-ar.init.sad"/>
+ <Glyph value="sad-ar.init.yeh"/>
+ <Glyph value="tah-ar.fina"/>
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.medi.ain"/>
+ <Glyph value="tah-ar.medi.dal"/>
+ <Glyph value="tah-ar.medi.feh"/>
+ <Glyph value="tah-ar.medi.hah"/>
+ <Glyph value="tah-ar.medi.heh"/>
+ <Glyph value="tah-ar.medi.kaf"/>
+ <Glyph value="tah-ar.medi.meem"/>
+ <Glyph value="tah-ar.medi.postsad"/>
+ <Glyph value="tah-ar.medi.qantara"/>
+ <Glyph value="tah-ar.medi.ragaa"/>
+ <Glyph value="tah-ar.medi.reh"/>
+ <Glyph value="tah-ar.medi.sad"/>
+ <Glyph value="tah-ar.medi.yeh"/>
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="tah-ar.init.ain"/>
+ <Glyph value="tah-ar.init.dal"/>
+ <Glyph value="tah-ar.init.feh"/>
+ <Glyph value="tah-ar.init.hah"/>
+ <Glyph value="tah-ar.init.heh"/>
+ <Glyph value="tah-ar.init.kaf"/>
+ <Glyph value="tah-ar.init.meem"/>
+ <Glyph value="tah-ar.init.qantara"/>
+ <Glyph value="tah-ar.init.ragaa"/>
+ <Glyph value="tah-ar.init.reh"/>
+ <Glyph value="tah-ar.init.sad"/>
+ <Glyph value="tah-ar.init.yeh"/>
+ <Glyph value="ain-ar.fina"/>
+ <Glyph value="ain-ar.medi"/>
+ <Glyph value="ain-ar.medi.ain"/>
+ <Glyph value="ain-ar.medi.dal"/>
+ <Glyph value="ain-ar.medi.feh"/>
+ <Glyph value="ain-ar.medi.hah"/>
+ <Glyph value="ain-ar.medi.heh"/>
+ <Glyph value="ain-ar.medi.meem"/>
+ <Glyph value="ain-ar.medi.ragaa"/>
+ <Glyph value="ain-ar.medi.reh"/>
+ <Glyph value="ain-ar.medi.sad"/>
+ <Glyph value="ain-ar.medi.yeh"/>
+ <Glyph value="ain-ar.init"/>
+ <Glyph value="ain-ar.init.ain"/>
+ <Glyph value="ain-ar.init.dal"/>
+ <Glyph value="ain-ar.init.feh"/>
+ <Glyph value="ain-ar.init.hah"/>
+ <Glyph value="ain-ar.init.heh"/>
+ <Glyph value="ain-ar.init.meem"/>
+ <Glyph value="ain-ar.init.ragaa"/>
+ <Glyph value="ain-ar.init.reh"/>
+ <Glyph value="ain-ar.init.sad"/>
+ <Glyph value="ain-ar.init.yeh"/>
+ <Glyph value="fehDotless-ar.fina"/>
+ <Glyph value="fehDotless-ar.fina.jalt"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.medi.ain"/>
+ <Glyph value="fehDotless-ar.medi.dal"/>
+ <Glyph value="fehDotless-ar.medi.feh"/>
+ <Glyph value="fehDotless-ar.medi.hah"/>
+ <Glyph value="fehDotless-ar.medi.heh"/>
+ <Glyph value="fehDotless-ar.medi.meem"/>
+ <Glyph value="fehDotless-ar.medi.ragaa"/>
+ <Glyph value="fehDotless-ar.medi.reh"/>
+ <Glyph value="fehDotless-ar.medi.sad"/>
+ <Glyph value="fehDotless-ar.medi.yeh"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="fehDotless-ar.init.ain"/>
+ <Glyph value="fehDotless-ar.init.dal"/>
+ <Glyph value="fehDotless-ar.init.feh"/>
+ <Glyph value="fehDotless-ar.init.hah"/>
+ <Glyph value="fehDotless-ar.init.heh"/>
+ <Glyph value="fehDotless-ar.init.meem"/>
+ <Glyph value="fehDotless-ar.init.ragaa"/>
+ <Glyph value="fehDotless-ar.init.reh"/>
+ <Glyph value="fehDotless-ar.init.sad"/>
+ <Glyph value="fehDotless-ar.init.yeh"/>
+ <Glyph value="qafDotless-ar.fina"/>
+ <Glyph value="qafDotless-ar.fina.jalt"/>
+ <Glyph value="qaf-ar.fina"/>
+ <Glyph value="kaf-ar.fina"/>
+ <Glyph value="kaf-ar.fina.jalt"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.medi.ain"/>
+ <Glyph value="kaf-ar.medi.dal"/>
+ <Glyph value="kaf-ar.medi.feh"/>
+ <Glyph value="kaf-ar.medi.hah"/>
+ <Glyph value="kaf-ar.medi.heh"/>
+ <Glyph value="kaf-ar.medi.kaf"/>
+ <Glyph value="kaf-ar.medi.meem"/>
+ <Glyph value="kaf-ar.medi.ragaa"/>
+ <Glyph value="kaf-ar.medi.reh"/>
+ <Glyph value="kaf-ar.medi.sad"/>
+ <Glyph value="kaf-ar.medi.yeh"/>
+ <Glyph value="kaf-ar.init"/>
+ <Glyph value="kaf-ar.init.ain"/>
+ <Glyph value="kaf-ar.init.alef"/>
+ <Glyph value="kaf-ar.init.alef.loop"/>
+ <Glyph value="kaf-ar.init.dal"/>
+ <Glyph value="kaf-ar.init.feh"/>
+ <Glyph value="kaf-ar.init.hah"/>
+ <Glyph value="kaf-ar.init.heh"/>
+ <Glyph value="kaf-ar.init.meem"/>
+ <Glyph value="kaf-ar.init.ragaa"/>
+ <Glyph value="kaf-ar.init.reh"/>
+ <Glyph value="kaf-ar.init.sad"/>
+ <Glyph value="kaf-ar.init.yeh"/>
+ <Glyph value="keheh-ar.fina"/>
+ <Glyph value="keheh-ar.fina.jalt"/>
+ <Glyph value="lam-ar.fina"/>
+ <Glyph value="lam-ar.fina.jalt"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.medi.ain"/>
+ <Glyph value="lam-ar.medi.alef"/>
+ <Glyph value="lam-ar.medi.dal"/>
+ <Glyph value="lam-ar.medi.feh"/>
+ <Glyph value="lam-ar.medi.hah"/>
+ <Glyph value="lam-ar.medi.heh"/>
+ <Glyph value="lam-ar.medi.kaf"/>
+ <Glyph value="lam-ar.medi.meem"/>
+ <Glyph value="lam-ar.medi.ragaa"/>
+ <Glyph value="lam-ar.medi.reh"/>
+ <Glyph value="lam-ar.medi.sad"/>
+ <Glyph value="lam-ar.medi.yeh"/>
+ <Glyph value="lam-ar.init"/>
+ <Glyph value="lam-ar.init.ain"/>
+ <Glyph value="lam-ar.init.alef"/>
+ <Glyph value="lam-ar.init.dal"/>
+ <Glyph value="lam-ar.init.feh"/>
+ <Glyph value="lam-ar.init.hah"/>
+ <Glyph value="lam-ar.init.heh"/>
+ <Glyph value="lam-ar.init.kaf"/>
+ <Glyph value="lam-ar.init.meem"/>
+ <Glyph value="lam-ar.init.ragaa"/>
+ <Glyph value="lam-ar.init.reh"/>
+ <Glyph value="lam-ar.init.sad"/>
+ <Glyph value="lam-ar.init.yeh"/>
+ <Glyph value="meem-ar.fina"/>
+ <Glyph value="meem-ar.medi"/>
+ <Glyph value="meem-ar.medi.ain"/>
+ <Glyph value="meem-ar.medi.dal"/>
+ <Glyph value="meem-ar.medi.feh"/>
+ <Glyph value="meem-ar.medi.hah"/>
+ <Glyph value="meem-ar.medi.heh"/>
+ <Glyph value="meem-ar.medi.meem"/>
+ <Glyph value="meem-ar.medi.ragaa"/>
+ <Glyph value="meem-ar.medi.reh"/>
+ <Glyph value="meem-ar.medi.sad"/>
+ <Glyph value="meem-ar.medi.yeh"/>
+ <Glyph value="meem-ar.init"/>
+ <Glyph value="meem-ar.init.ain"/>
+ <Glyph value="meem-ar.init.dal"/>
+ <Glyph value="meem-ar.init.feh"/>
+ <Glyph value="meem-ar.init.hah"/>
+ <Glyph value="meem-ar.init.heh"/>
+ <Glyph value="meem-ar.init.meem"/>
+ <Glyph value="meem-ar.init.ragaa"/>
+ <Glyph value="meem-ar.init.reh"/>
+ <Glyph value="meem-ar.init.sad"/>
+ <Glyph value="meem-ar.init.yeh"/>
+ <Glyph value="noon-ar.fina"/>
+ <Glyph value="noon-ar.fina.tail"/>
+ <Glyph value="noonghunna-ar.fina"/>
+ <Glyph value="heh-ar.fina"/>
+ <Glyph value="heh-ar.medi"/>
+ <Glyph value="heh-ar.medi.ain"/>
+ <Glyph value="heh-ar.medi.dal"/>
+ <Glyph value="heh-ar.medi.feh"/>
+ <Glyph value="heh-ar.medi.hah"/>
+ <Glyph value="heh-ar.medi.heh"/>
+ <Glyph value="heh-ar.medi.meem"/>
+ <Glyph value="heh-ar.medi.ragaa"/>
+ <Glyph value="heh-ar.medi.reh"/>
+ <Glyph value="heh-ar.medi.sad"/>
+ <Glyph value="heh-ar.medi.yeh"/>
+ <Glyph value="heh-ar.init"/>
+ <Glyph value="heh-ar.init.ain"/>
+ <Glyph value="heh-ar.init.dal"/>
+ <Glyph value="heh-ar.init.feh"/>
+ <Glyph value="heh-ar.init.hah"/>
+ <Glyph value="heh-ar.init.heh"/>
+ <Glyph value="heh-ar.init.meem"/>
+ <Glyph value="heh-ar.init.ragaa"/>
+ <Glyph value="heh-ar.init.reh"/>
+ <Glyph value="heh-ar.init.sad"/>
+ <Glyph value="heh-ar.init.yeh"/>
+ <Glyph value="hehgoal-ar.fina"/>
+ <Glyph value="hehgoal-ar.init"/>
+ <Glyph value="hehgoal-ar.init.ain"/>
+ <Glyph value="hehgoal-ar.init.dal"/>
+ <Glyph value="hehgoal-ar.init.feh"/>
+ <Glyph value="hehgoal-ar.init.hah"/>
+ <Glyph value="hehgoal-ar.init.heh"/>
+ <Glyph value="hehgoal-ar.init.meem"/>
+ <Glyph value="hehgoal-ar.init.ragaa"/>
+ <Glyph value="hehgoal-ar.init.reh"/>
+ <Glyph value="hehgoal-ar.init.sad"/>
+ <Glyph value="hehgoal-ar.init.yeh"/>
+ <Glyph value="hehDoachashmee-ar.fina"/>
+ <Glyph value="hehDoachashmee-ar.medi"/>
+ <Glyph value="hehDoachashmee-ar.medi.ain"/>
+ <Glyph value="hehDoachashmee-ar.medi.dal"/>
+ <Glyph value="hehDoachashmee-ar.medi.feh"/>
+ <Glyph value="hehDoachashmee-ar.medi.hah"/>
+ <Glyph value="hehDoachashmee-ar.medi.heh"/>
+ <Glyph value="hehDoachashmee-ar.medi.meem"/>
+ <Glyph value="hehDoachashmee-ar.medi.ragaa"/>
+ <Glyph value="hehDoachashmee-ar.medi.reh"/>
+ <Glyph value="hehDoachashmee-ar.medi.sad"/>
+ <Glyph value="hehDoachashmee-ar.medi.yeh"/>
+ <Glyph value="waw-ar.fina"/>
+ <Glyph value="alefMaksura-ar.fina"/>
+ <Glyph value="alefMaksura-ar.fina.jalt"/>
+ <Glyph value="alefMaksura-ar.fina.yeh"/>
+ <Glyph value="alefMaksura-ar.fina.yeh.jalt"/>
+ <Glyph value="yehbarree-ar.fina"/>
+ <Glyph value="alefabove-ar.medi"/>
+ </Coverage>
+ <!-- EntryExitCount=323 -->
+ <EntryExitRecord index="0">
+ <EntryAnchor Format="1">
+ <XCoordinate value="112"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="1">
+ <EntryAnchor Format="1">
+ <XCoordinate value="-27"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="2">
+ <EntryAnchor Format="1">
+ <XCoordinate value="492"/>
+ <YCoordinate value="26"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="3">
+ <EntryAnchor Format="1">
+ <XCoordinate value="851"/>
+ <YCoordinate value="83"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="4">
+ <EntryAnchor Format="1">
+ <XCoordinate value="198"/>
+ <YCoordinate value="22"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="5">
+ <EntryAnchor Format="1">
+ <XCoordinate value="352"/>
+ <YCoordinate value="26"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="6">
+ <EntryAnchor Format="1">
+ <XCoordinate value="233"/>
+ <YCoordinate value="18"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="7">
+ <EntryAnchor Format="1">
+ <XCoordinate value="400"/>
+ <YCoordinate value="35"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="8">
+ <EntryAnchor Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="184"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="-31"/>
+ <YCoordinate value="7"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="9">
+ <EntryAnchor Format="1">
+ <XCoordinate value="475"/>
+ <YCoordinate value="132"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="10">
+ <EntryAnchor Format="1">
+ <XCoordinate value="229"/>
+ <YCoordinate value="171"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="11">
+ <EntryAnchor Format="1">
+ <XCoordinate value="237"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="12">
+ <EntryAnchor Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="92"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="-24"/>
+ <YCoordinate value="-49"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="13">
+ <EntryAnchor Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="44"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="14">
+ <EntryAnchor Format="1">
+ <XCoordinate value="285"/>
+ <YCoordinate value="91"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="15">
+ <EntryAnchor Format="1">
+ <XCoordinate value="264"/>
+ <YCoordinate value="22"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="16">
+ <EntryAnchor Format="1">
+ <XCoordinate value="489"/>
+ <YCoordinate value="48"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="17">
+ <EntryAnchor Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="92"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="10"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="18">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="19">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="20">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="21">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="22">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="23">
+ <ExitAnchor Format="1">
+ <XCoordinate value="-44"/>
+ <YCoordinate value="-107"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="24">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="25">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="26">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="27">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="28">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="29">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="30">
+ <EntryAnchor Format="1">
+ <XCoordinate value="147"/>
+ <YCoordinate value="424"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="31">
+ <EntryAnchor Format="1">
+ <XCoordinate value="225"/>
+ <YCoordinate value="284"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="32">
+ <EntryAnchor Format="1">
+ <XCoordinate value="339"/>
+ <YCoordinate value="278"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="33">
+ <EntryAnchor Format="1">
+ <XCoordinate value="237"/>
+ <YCoordinate value="261"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="34">
+ <EntryAnchor Format="1">
+ <XCoordinate value="387"/>
+ <YCoordinate value="279"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="35">
+ <EntryAnchor Format="1">
+ <XCoordinate value="208"/>
+ <YCoordinate value="389"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="36">
+ <EntryAnchor Format="1">
+ <XCoordinate value="396"/>
+ <YCoordinate value="374"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="37">
+ <EntryAnchor Format="1">
+ <XCoordinate value="306"/>
+ <YCoordinate value="288"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="38">
+ <EntryAnchor Format="1">
+ <XCoordinate value="249"/>
+ <YCoordinate value="389"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="-10"/>
+ <YCoordinate value="-24"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="39">
+ <EntryAnchor Format="1">
+ <XCoordinate value="149"/>
+ <YCoordinate value="340"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="40">
+ <EntryAnchor Format="1">
+ <XCoordinate value="222"/>
+ <YCoordinate value="333"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="41">
+ <EntryAnchor Format="1">
+ <XCoordinate value="484"/>
+ <YCoordinate value="297"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="42">
+ <EntryAnchor Format="1">
+ <XCoordinate value="230"/>
+ <YCoordinate value="374"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="10"/>
+ <YCoordinate value="49"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="43">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="44">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="45">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="46">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="47">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="48">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="49">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="50">
+ <ExitAnchor Format="1">
+ <XCoordinate value="-24"/>
+ <YCoordinate value="-49"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="51">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="52">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="53">
+ <ExitAnchor Format="1">
+ <XCoordinate value="24"/>
+ <YCoordinate value="49"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="54">
+ <ExitAnchor Format="1">
+ <XCoordinate value="10"/>
+ <YCoordinate value="49"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="55">
+ <EntryAnchor Format="1">
+ <XCoordinate value="338"/>
+ <YCoordinate value="48"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="56">
+ <EntryAnchor Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="105"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="57">
+ <EntryAnchor Format="1">
+ <XCoordinate value="571"/>
+ <YCoordinate value="321"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="58">
+ <EntryAnchor Format="1">
+ <XCoordinate value="1107"/>
+ <YCoordinate value="281"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="59">
+ <EntryAnchor Format="1">
+ <XCoordinate value="387"/>
+ <YCoordinate value="70"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="60">
+ <EntryAnchor Format="1">
+ <XCoordinate value="470"/>
+ <YCoordinate value="62"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="61">
+ <EntryAnchor Format="1">
+ <XCoordinate value="396"/>
+ <YCoordinate value="40"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="62">
+ <EntryAnchor Format="1">
+ <XCoordinate value="580"/>
+ <YCoordinate value="66"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="63">
+ <EntryAnchor Format="1">
+ <XCoordinate value="505"/>
+ <YCoordinate value="198"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="64">
+ <EntryAnchor Format="1">
+ <XCoordinate value="677"/>
+ <YCoordinate value="171"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="65">
+ <EntryAnchor Format="1">
+ <XCoordinate value="483"/>
+ <YCoordinate value="167"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="66">
+ <EntryAnchor Format="1">
+ <XCoordinate value="446"/>
+ <YCoordinate value="118"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="67">
+ <EntryAnchor Format="1">
+ <XCoordinate value="396"/>
+ <YCoordinate value="48"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="68">
+ <EntryAnchor Format="1">
+ <XCoordinate value="646"/>
+ <YCoordinate value="79"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="69">
+ <EntryAnchor Format="1">
+ <XCoordinate value="439"/>
+ <YCoordinate value="110"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="-5"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="70">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="71">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="72">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="73">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="74">
+ <ExitAnchor Format="1">
+ <XCoordinate value="10"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="75">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="76">
+ <ExitAnchor Format="1">
+ <XCoordinate value="5"/>
+ <YCoordinate value="10"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="77">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="78">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="79">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="80">
+ <ExitAnchor Format="1">
+ <XCoordinate value="-5"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="81">
+ <EntryAnchor Format="1">
+ <XCoordinate value="460"/>
+ <YCoordinate value="55"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="82">
+ <EntryAnchor Format="1">
+ <XCoordinate value="986"/>
+ <YCoordinate value="42"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="83">
+ <EntryAnchor Format="1">
+ <XCoordinate value="539"/>
+ <YCoordinate value="72"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="84">
+ <EntryAnchor Format="1">
+ <XCoordinate value="270"/>
+ <YCoordinate value="-250"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="85">
+ <EntryAnchor Format="1">
+ <XCoordinate value="259"/>
+ <YCoordinate value="-215"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="86">
+ <EntryAnchor Format="1">
+ <XCoordinate value="347"/>
+ <YCoordinate value="-217"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="87">
+ <EntryAnchor Format="1">
+ <XCoordinate value="330"/>
+ <YCoordinate value="-62"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="88">
+ <EntryAnchor Format="1">
+ <XCoordinate value="483"/>
+ <YCoordinate value="-88"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="89">
+ <EntryAnchor Format="1">
+ <XCoordinate value="299"/>
+ <YCoordinate value="-132"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="90">
+ <EntryAnchor Format="1">
+ <XCoordinate value="255"/>
+ <YCoordinate value="-189"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="91">
+ <EntryAnchor Format="1">
+ <XCoordinate value="559"/>
+ <YCoordinate value="-32"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="92">
+ <EntryAnchor Format="1">
+ <XCoordinate value="591"/>
+ <YCoordinate value="167"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="93">
+ <EntryAnchor Format="1">
+ <XCoordinate value="202"/>
+ <YCoordinate value="-215"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="94">
+ <EntryAnchor Format="1">
+ <XCoordinate value="374"/>
+ <YCoordinate value="-242"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="95">
+ <EntryAnchor Format="1">
+ <XCoordinate value="272"/>
+ <YCoordinate value="-193"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="12"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="96">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="97">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="98">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="99">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="100">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="2"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="101">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="102">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="103">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="104">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="105">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="106">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="107">
+ <ExitAnchor Format="1">
+ <XCoordinate value="12"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="108">
+ <EntryAnchor Format="1">
+ <XCoordinate value="211"/>
+ <YCoordinate value="-196"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="109">
+ <EntryAnchor Format="1">
+ <XCoordinate value="417"/>
+ <YCoordinate value="109"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="110">
+ <EntryAnchor Format="1">
+ <XCoordinate value="219"/>
+ <YCoordinate value="-230"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="111">
+ <EntryAnchor Format="1">
+ <XCoordinate value="185"/>
+ <YCoordinate value="-189"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="112">
+ <EntryAnchor Format="1">
+ <XCoordinate value="268"/>
+ <YCoordinate value="-213"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="113">
+ <EntryAnchor Format="1">
+ <XCoordinate value="202"/>
+ <YCoordinate value="-40"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="114">
+ <EntryAnchor Format="1">
+ <XCoordinate value="268"/>
+ <YCoordinate value="-123"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="115">
+ <EntryAnchor Format="1">
+ <XCoordinate value="163"/>
+ <YCoordinate value="-185"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="116">
+ <EntryAnchor Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="-66"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="-10"/>
+ <YCoordinate value="-24"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="117">
+ <EntryAnchor Format="1">
+ <XCoordinate value="105"/>
+ <YCoordinate value="-195"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="118">
+ <EntryAnchor Format="1">
+ <XCoordinate value="414"/>
+ <YCoordinate value="-86"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="119">
+ <EntryAnchor Format="1">
+ <XCoordinate value="430"/>
+ <YCoordinate value="172"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="120">
+ <EntryAnchor Format="1">
+ <XCoordinate value="107"/>
+ <YCoordinate value="-175"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="121">
+ <EntryAnchor Format="1">
+ <XCoordinate value="388"/>
+ <YCoordinate value="-206"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="122">
+ <EntryAnchor Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="-92"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="10"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="123">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="124">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="125">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="126">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="127">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="1"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="128">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="129">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="130">
+ <ExitAnchor Format="1">
+ <XCoordinate value="-10"/>
+ <YCoordinate value="-24"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="131">
+ <ExitAnchor Format="1">
+ <XCoordinate value="9"/>
+ <YCoordinate value="31"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="132">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="133">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="134">
+ <ExitAnchor Format="1">
+ <XCoordinate value="9"/>
+ <YCoordinate value="31"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="135">
+ <ExitAnchor Format="1">
+ <XCoordinate value="10"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="136">
+ <EntryAnchor Format="1">
+ <XCoordinate value="264"/>
+ <YCoordinate value="246"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="137">
+ <EntryAnchor Format="1">
+ <XCoordinate value="255"/>
+ <YCoordinate value="57"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="138">
+ <EntryAnchor Format="1">
+ <XCoordinate value="382"/>
+ <YCoordinate value="53"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="139">
+ <EntryAnchor Format="1">
+ <XCoordinate value="246"/>
+ <YCoordinate value="40"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="140">
+ <EntryAnchor Format="1">
+ <XCoordinate value="444"/>
+ <YCoordinate value="57"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="141">
+ <EntryAnchor Format="1">
+ <XCoordinate value="277"/>
+ <YCoordinate value="171"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="142">
+ <EntryAnchor Format="1">
+ <XCoordinate value="483"/>
+ <YCoordinate value="145"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="143">
+ <EntryAnchor Format="1">
+ <XCoordinate value="343"/>
+ <YCoordinate value="149"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="-10"/>
+ <YCoordinate value="-24"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="144">
+ <EntryAnchor Format="1">
+ <XCoordinate value="269"/>
+ <YCoordinate value="102"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="145">
+ <EntryAnchor Format="1">
+ <XCoordinate value="255"/>
+ <YCoordinate value="75"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="146">
+ <EntryAnchor Format="1">
+ <XCoordinate value="492"/>
+ <YCoordinate value="48"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="147">
+ <EntryAnchor Format="1">
+ <XCoordinate value="360"/>
+ <YCoordinate value="141"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="10"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="148">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="149">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="150">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="151">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="152">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="153">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="154">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="-10"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="155">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="156">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="157">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="158">
+ <ExitAnchor Format="1">
+ <XCoordinate value="10"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="159">
+ <EntryAnchor Format="1">
+ <XCoordinate value="505"/>
+ <YCoordinate value="53"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="160">
+ <EntryAnchor Format="1">
+ <XCoordinate value="738"/>
+ <YCoordinate value="44"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="161">
+ <EntryAnchor Format="1">
+ <XCoordinate value="220"/>
+ <YCoordinate value="22"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="162">
+ <EntryAnchor Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="13"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="163">
+ <EntryAnchor Format="1">
+ <XCoordinate value="220"/>
+ <YCoordinate value="9"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="164">
+ <EntryAnchor Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="31"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="165">
+ <EntryAnchor Format="1">
+ <XCoordinate value="224"/>
+ <YCoordinate value="119"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="166">
+ <EntryAnchor Format="1">
+ <XCoordinate value="457"/>
+ <YCoordinate value="123"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="167">
+ <EntryAnchor Format="1">
+ <XCoordinate value="281"/>
+ <YCoordinate value="119"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="-20"/>
+ <YCoordinate value="-39"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="168">
+ <EntryAnchor Format="1">
+ <XCoordinate value="215"/>
+ <YCoordinate value="81"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="169">
+ <EntryAnchor Format="1">
+ <XCoordinate value="246"/>
+ <YCoordinate value="57"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="170">
+ <EntryAnchor Format="1">
+ <XCoordinate value="497"/>
+ <YCoordinate value="44"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="171">
+ <EntryAnchor Format="1">
+ <XCoordinate value="281"/>
+ <YCoordinate value="114"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="10"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="172">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="173">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="174">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="175">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="176">
+ <ExitAnchor Format="1">
+ <XCoordinate value="-18"/>
+ <YCoordinate value="-83"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="177">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="178">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="-10"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="179">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="180">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="181">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="182">
+ <ExitAnchor Format="1">
+ <XCoordinate value="24"/>
+ <YCoordinate value="10"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="183">
+ <EntryAnchor Format="1">
+ <XCoordinate value="376"/>
+ <YCoordinate value="316"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="184">
+ <EntryAnchor Format="1">
+ <XCoordinate value="615"/>
+ <YCoordinate value="35"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="185">
+ <EntryAnchor Format="1">
+ <XCoordinate value="523"/>
+ <YCoordinate value="316"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="186">
+ <EntryAnchor Format="1">
+ <XCoordinate value="512"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="187">
+ <EntryAnchor Format="1">
+ <XCoordinate value="926"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="188">
+ <EntryAnchor Format="1">
+ <XCoordinate value="259"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="189">
+ <EntryAnchor Format="1">
+ <XCoordinate value="441"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="190">
+ <EntryAnchor Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="191">
+ <EntryAnchor Format="1">
+ <XCoordinate value="464"/>
+ <YCoordinate value="9"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="192">
+ <EntryAnchor Format="1">
+ <XCoordinate value="359"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="-5"/>
+ <YCoordinate value="122"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="193">
+ <EntryAnchor Format="1">
+ <XCoordinate value="482"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="194">
+ <EntryAnchor Format="1">
+ <XCoordinate value="343"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="195">
+ <EntryAnchor Format="1">
+ <XCoordinate value="321"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="171"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="196">
+ <EntryAnchor Format="1">
+ <XCoordinate value="247"/>
+ <YCoordinate value="113"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="197">
+ <EntryAnchor Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="-10"/>
+ <YCoordinate value="73"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="198">
+ <EntryAnchor Format="1">
+ <XCoordinate value="574"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="24"/>
+ <YCoordinate value="88"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="199">
+ <EntryAnchor Format="1">
+ <XCoordinate value="325"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="15"/>
+ <YCoordinate value="171"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="200">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="201">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="202">
+ <EntryAnchor Format="1">
+ <XCoordinate value="167"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="203">
+ <EntryAnchor Format="1">
+ <XCoordinate value="132"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="204">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="205">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="206">
+ <ExitAnchor Format="1">
+ <XCoordinate value="-50"/>
+ <YCoordinate value="-83"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="207">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="208">
+ <ExitAnchor Format="1">
+ <XCoordinate value="-10"/>
+ <YCoordinate value="-49"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="209">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="210">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="211">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="212">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="213">
+ <EntryAnchor Format="1">
+ <XCoordinate value="512"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="214">
+ <EntryAnchor Format="1">
+ <XCoordinate value="923"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="215">
+ <EntryAnchor Format="1">
+ <XCoordinate value="360"/>
+ <YCoordinate value="211"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="216">
+ <EntryAnchor Format="1">
+ <XCoordinate value="916"/>
+ <YCoordinate value="220"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="217">
+ <EntryAnchor Format="1">
+ <XCoordinate value="247"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="218">
+ <EntryAnchor Format="1">
+ <XCoordinate value="442"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="219">
+ <EntryAnchor Format="1">
+ <XCoordinate value="732"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="220">
+ <EntryAnchor Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="221">
+ <EntryAnchor Format="1">
+ <XCoordinate value="463"/>
+ <YCoordinate value="9"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="222">
+ <EntryAnchor Format="1">
+ <XCoordinate value="355"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="-5"/>
+ <YCoordinate value="122"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="223">
+ <EntryAnchor Format="1">
+ <XCoordinate value="483"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="224">
+ <EntryAnchor Format="1">
+ <XCoordinate value="306"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="225">
+ <EntryAnchor Format="1">
+ <XCoordinate value="321"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="171"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="226">
+ <EntryAnchor Format="1">
+ <XCoordinate value="279"/>
+ <YCoordinate value="113"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="227">
+ <EntryAnchor Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="-10"/>
+ <YCoordinate value="73"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="228">
+ <EntryAnchor Format="1">
+ <XCoordinate value="574"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="24"/>
+ <YCoordinate value="88"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="229">
+ <EntryAnchor Format="1">
+ <XCoordinate value="321"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="15"/>
+ <YCoordinate value="171"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="230">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="231">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="232">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="233">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="234">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="235">
+ <ExitAnchor Format="1">
+ <XCoordinate value="-49"/>
+ <YCoordinate value="-86"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="236">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="237">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="238">
+ <ExitAnchor Format="1">
+ <XCoordinate value="-10"/>
+ <YCoordinate value="-49"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="239">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="240">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="241">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="242">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="243">
+ <EntryAnchor Format="1">
+ <XCoordinate value="303"/>
+ <YCoordinate value="404"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="244">
+ <EntryAnchor Format="1">
+ <XCoordinate value="215"/>
+ <YCoordinate value="207"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="245">
+ <EntryAnchor Format="1">
+ <XCoordinate value="343"/>
+ <YCoordinate value="193"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="246">
+ <EntryAnchor Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="211"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="247">
+ <EntryAnchor Format="1">
+ <XCoordinate value="453"/>
+ <YCoordinate value="224"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="248">
+ <EntryAnchor Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="347"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="249">
+ <EntryAnchor Format="1">
+ <XCoordinate value="378"/>
+ <YCoordinate value="299"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="250">
+ <EntryAnchor Format="1">
+ <XCoordinate value="281"/>
+ <YCoordinate value="308"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="-24"/>
+ <YCoordinate value="-29"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="251">
+ <EntryAnchor Format="1">
+ <XCoordinate value="274"/>
+ <YCoordinate value="317"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="252">
+ <EntryAnchor Format="1">
+ <XCoordinate value="264"/>
+ <YCoordinate value="303"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="-10"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="253">
+ <EntryAnchor Format="1">
+ <XCoordinate value="532"/>
+ <YCoordinate value="233"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="254">
+ <EntryAnchor Format="1">
+ <XCoordinate value="229"/>
+ <YCoordinate value="286"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="10"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="255">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="256">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="257">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="258">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="259">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="260">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="261">
+ <ExitAnchor Format="1">
+ <XCoordinate value="-10"/>
+ <YCoordinate value="-24"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="262">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="263">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="264">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="265">
+ <ExitAnchor Format="1">
+ <XCoordinate value="10"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="266">
+ <EntryAnchor Format="1">
+ <XCoordinate value="381"/>
+ <YCoordinate value="229"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="267">
+ <EntryAnchor Format="1">
+ <XCoordinate value="510"/>
+ <YCoordinate value="217"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="268">
+ <EntryAnchor Format="1">
+ <XCoordinate value="369"/>
+ <YCoordinate value="237"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="269">
+ <EntryAnchor Format="1">
+ <XCoordinate value="193"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="270">
+ <EntryAnchor Format="1">
+ <XCoordinate value="202"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="271">
+ <EntryAnchor Format="1">
+ <XCoordinate value="338"/>
+ <YCoordinate value="18"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="272">
+ <EntryAnchor Format="1">
+ <XCoordinate value="211"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="273">
+ <EntryAnchor Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="22"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="274">
+ <EntryAnchor Format="1">
+ <XCoordinate value="374"/>
+ <YCoordinate value="119"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="-22"/>
+ <YCoordinate value="-49"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="275">
+ <EntryAnchor Format="1">
+ <XCoordinate value="536"/>
+ <YCoordinate value="167"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="276">
+ <EntryAnchor Format="1">
+ <XCoordinate value="329"/>
+ <YCoordinate value="-71"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="3"/>
+ <YCoordinate value="9"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="277">
+ <EntryAnchor Format="1">
+ <XCoordinate value="302"/>
+ <YCoordinate value="147"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="-171"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="278">
+ <EntryAnchor Format="1">
+ <XCoordinate value="268"/>
+ <YCoordinate value="40"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="279">
+ <EntryAnchor Format="1">
+ <XCoordinate value="536"/>
+ <YCoordinate value="48"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="280">
+ <EntryAnchor Format="1">
+ <XCoordinate value="290"/>
+ <YCoordinate value="110"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="20"/>
+ <YCoordinate value="24"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="281">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="282">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="283">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="284">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="285">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="286">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="287">
+ <ExitAnchor Format="1">
+ <XCoordinate value="-10"/>
+ <YCoordinate value="-24"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="288">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="289">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="290">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="291">
+ <ExitAnchor Format="1">
+ <XCoordinate value="10"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="292">
+ <EntryAnchor Format="1">
+ <XCoordinate value="233"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="293">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="294">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="295">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="296">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="297">
+ <ExitAnchor Format="1">
+ <XCoordinate value="-5"/>
+ <YCoordinate value="-29"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="298">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="299">
+ <ExitAnchor Format="1">
+ <XCoordinate value="-7"/>
+ <YCoordinate value="-24"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="300">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="301">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="302">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="303">
+ <ExitAnchor Format="1">
+ <XCoordinate value="10"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="304">
+ <EntryAnchor Format="1">
+ <XCoordinate value="444"/>
+ <YCoordinate value="316"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="305">
+ <EntryAnchor Format="1">
+ <XCoordinate value="277"/>
+ <YCoordinate value="347"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="306">
+ <EntryAnchor Format="1">
+ <XCoordinate value="479"/>
+ <YCoordinate value="369"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="307">
+ <EntryAnchor Format="1">
+ <XCoordinate value="334"/>
+ <YCoordinate value="334"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="308">
+ <EntryAnchor Format="1">
+ <XCoordinate value="527"/>
+ <YCoordinate value="378"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="309">
+ <EntryAnchor Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="453"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="310">
+ <EntryAnchor Format="1">
+ <XCoordinate value="598"/>
+ <YCoordinate value="523"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="311">
+ <EntryAnchor Format="1">
+ <XCoordinate value="426"/>
+ <YCoordinate value="492"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="-5"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="312">
+ <EntryAnchor Format="1">
+ <XCoordinate value="371"/>
+ <YCoordinate value="430"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="313">
+ <EntryAnchor Format="1">
+ <XCoordinate value="360"/>
+ <YCoordinate value="374"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="314">
+ <EntryAnchor Format="1">
+ <XCoordinate value="536"/>
+ <YCoordinate value="360"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="10"/>
+ <YCoordinate value="88"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="315">
+ <EntryAnchor Format="1">
+ <XCoordinate value="396"/>
+ <YCoordinate value="466"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="4"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="316">
+ <EntryAnchor Format="1">
+ <XCoordinate value="426"/>
+ <YCoordinate value="259"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="317">
+ <EntryAnchor Format="1">
+ <XCoordinate value="387"/>
+ <YCoordinate value="365"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="318">
+ <EntryAnchor Format="1">
+ <XCoordinate value="780"/>
+ <YCoordinate value="374"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="319">
+ <EntryAnchor Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="391"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="320">
+ <EntryAnchor Format="1">
+ <XCoordinate value="798"/>
+ <YCoordinate value="395"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="321">
+ <EntryAnchor Format="1">
+ <XCoordinate value="19"/>
+ <YCoordinate value="156"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="322">
+ <EntryAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ </CursivePos>
+ </Lookup>
+ <Lookup index="1">
+ <LookupType value="4"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <MarkBasePos index="0" Format="1">
+ <MarkCoverage>
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="threedotsdownbelow-ar"/>
+ </MarkCoverage>
+ <BaseCoverage>
+ <Glyph value="hah-ar"/>
+ <Glyph value="hah-ar.fina"/>
+ </BaseCoverage>
+ <!-- ClassCount=1 -->
+ <MarkArray>
+ <!-- MarkCount=3 -->
+ <MarkRecord index="0">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="49"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="1">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="49"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="2">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="49"/>
+ </MarkAnchor>
+ </MarkRecord>
+ </MarkArray>
+ <BaseArray>
+ <!-- BaseCount=2 -->
+ <BaseRecord index="0">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="382"/>
+ <YCoordinate value="73"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="1">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="382"/>
+ <YCoordinate value="73"/>
+ </BaseAnchor>
+ </BaseRecord>
+ </BaseArray>
+ </MarkBasePos>
+ </Lookup>
+ <Lookup index="2">
+ <LookupType value="4"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <MarkBasePos index="0" Format="1">
+ <MarkCoverage>
+ <Glyph value="tahabove-ar"/>
+ <Glyph value="dotabove-ar"/>
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="twodotshorizontalabove-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="threedotsdownbelow-ar"/>
+ <Glyph value="threedotsupabove-ar"/>
+ <Glyph value="wasla-ar"/>
+ <Glyph value="gafsarkashabove-ar"/>
+ <Glyph value="alefabove-ar"/>
+ <Glyph value="alefbelow-ar"/>
+ <Glyph value="hamzaabove-ar"/>
+ <Glyph value="hamzabelow-ar"/>
+ <Glyph value="fathatan-ar"/>
+ <Glyph value="dammatan-ar"/>
+ <Glyph value="kasratan-ar"/>
+ <Glyph value="fatha-ar"/>
+ <Glyph value="damma-ar"/>
+ <Glyph value="kasra-ar"/>
+ <Glyph value="shadda-ar"/>
+ <Glyph value="sukun-ar"/>
+ <Glyph value="sukun-ar.alt"/>
+ <Glyph value="madda-ar"/>
+ <Glyph value="noonghunnaabove-ar"/>
+ <Glyph value="dammainverted-ar"/>
+ <Glyph value="dammainverted-ar.urd"/>
+ <Glyph value="vabove-ar"/>
+ <Glyph value="vbelow-ar"/>
+ <Glyph value="opendammatan-ar"/>
+ </MarkCoverage>
+ <BaseCoverage>
+ <Glyph value="hamza-ar"/>
+ <Glyph value="alef-ar"/>
+ <Glyph value="alef-ar.fina"/>
+ <Glyph value="alef-ar.fina.lam"/>
+ <Glyph value="behDotless-ar"/>
+ <Glyph value="behDotless-ar.jalt"/>
+ <Glyph value="behDotless-ar.fina"/>
+ <Glyph value="behDotless-ar.fina.jalt"/>
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.medi.ain"/>
+ <Glyph value="behDotless-ar.medi.dal"/>
+ <Glyph value="behDotless-ar.medi.feh"/>
+ <Glyph value="behDotless-ar.medi.hah"/>
+ <Glyph value="behDotless-ar.medi.heh"/>
+ <Glyph value="behDotless-ar.medi.high"/>
+ <Glyph value="behDotless-ar.medi.high2"/>
+ <Glyph value="behDotless-ar.medi.meem"/>
+ <Glyph value="behDotless-ar.medi.noon"/>
+ <Glyph value="behDotless-ar.medi.ragaa"/>
+ <Glyph value="behDotless-ar.medi.reh"/>
+ <Glyph value="behDotless-ar.medi.sad"/>
+ <Glyph value="behDotless-ar.medi.yeh"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="behDotless-ar.init.ain"/>
+ <Glyph value="behDotless-ar.init.ascend"/>
+ <Glyph value="behDotless-ar.init.dal"/>
+ <Glyph value="behDotless-ar.init.feh"/>
+ <Glyph value="behDotless-ar.init.hah"/>
+ <Glyph value="behDotless-ar.init.heh"/>
+ <Glyph value="behDotless-ar.init.meem"/>
+ <Glyph value="behDotless-ar.init.ragaa"/>
+ <Glyph value="behDotless-ar.init.reh"/>
+ <Glyph value="behDotless-ar.init.sad"/>
+ <Glyph value="behDotless-ar.init.yeh"/>
+ <Glyph value="hah-ar"/>
+ <Glyph value="hah-ar.fina"/>
+ <Glyph value="hah-ar.medi"/>
+ <Glyph value="hah-ar.medi.ain"/>
+ <Glyph value="hah-ar.medi.dal"/>
+ <Glyph value="hah-ar.medi.feh"/>
+ <Glyph value="hah-ar.medi.hah"/>
+ <Glyph value="hah-ar.medi.heh"/>
+ <Glyph value="hah-ar.medi.heh.ragaa"/>
+ <Glyph value="hah-ar.medi.meem"/>
+ <Glyph value="hah-ar.medi.ragaa"/>
+ <Glyph value="hah-ar.medi.reh"/>
+ <Glyph value="hah-ar.medi.sad"/>
+ <Glyph value="hah-ar.medi.yeh"/>
+ <Glyph value="hah-ar.init"/>
+ <Glyph value="hah-ar.init.ain"/>
+ <Glyph value="hah-ar.init.dal"/>
+ <Glyph value="hah-ar.init.feh"/>
+ <Glyph value="hah-ar.init.hah"/>
+ <Glyph value="hah-ar.init.heh"/>
+ <Glyph value="hah-ar.init.heh.ragaa"/>
+ <Glyph value="hah-ar.init.meem"/>
+ <Glyph value="hah-ar.init.ragaa"/>
+ <Glyph value="hah-ar.init.reh"/>
+ <Glyph value="hah-ar.init.sad"/>
+ <Glyph value="hah-ar.init.yeh"/>
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="seen-ar"/>
+ <Glyph value="seen-ar.jalt"/>
+ <Glyph value="seen-ar.fina"/>
+ <Glyph value="seen-ar.fina.jalt"/>
+ <Glyph value="seen-ar.medi"/>
+ <Glyph value="seen-ar.medi.ain"/>
+ <Glyph value="seen-ar.medi.dal"/>
+ <Glyph value="seen-ar.medi.feh"/>
+ <Glyph value="seen-ar.medi.hah"/>
+ <Glyph value="seen-ar.medi.heh"/>
+ <Glyph value="seen-ar.medi.meem"/>
+ <Glyph value="seen-ar.medi.ragaa"/>
+ <Glyph value="seen-ar.medi.reh"/>
+ <Glyph value="seen-ar.medi.sad"/>
+ <Glyph value="seen-ar.medi.yeh"/>
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="seen-ar.init.ain"/>
+ <Glyph value="seen-ar.init.dal"/>
+ <Glyph value="seen-ar.init.feh"/>
+ <Glyph value="seen-ar.init.hah"/>
+ <Glyph value="seen-ar.init.heh"/>
+ <Glyph value="seen-ar.init.meem"/>
+ <Glyph value="seen-ar.init.ragaa"/>
+ <Glyph value="seen-ar.init.reh"/>
+ <Glyph value="seen-ar.init.sad"/>
+ <Glyph value="seen-ar.init.yeh"/>
+ <Glyph value="sheen-ar"/>
+ <Glyph value="sad-ar"/>
+ <Glyph value="sad-ar.jalt"/>
+ <Glyph value="sad-ar.fina"/>
+ <Glyph value="sad-ar.fina.jalt"/>
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="sad-ar.medi.ain"/>
+ <Glyph value="sad-ar.medi.dal"/>
+ <Glyph value="sad-ar.medi.feh"/>
+ <Glyph value="sad-ar.medi.hah"/>
+ <Glyph value="sad-ar.medi.heh"/>
+ <Glyph value="sad-ar.medi.meem"/>
+ <Glyph value="sad-ar.medi.postsad"/>
+ <Glyph value="sad-ar.medi.qantara"/>
+ <Glyph value="sad-ar.medi.ragaa"/>
+ <Glyph value="sad-ar.medi.reh"/>
+ <Glyph value="sad-ar.medi.sad"/>
+ <Glyph value="sad-ar.medi.yeh"/>
+ <Glyph value="sad-ar.init"/>
+ <Glyph value="sad-ar.init.ain"/>
+ <Glyph value="sad-ar.init.dal"/>
+ <Glyph value="sad-ar.init.feh"/>
+ <Glyph value="sad-ar.init.hah"/>
+ <Glyph value="sad-ar.init.heh"/>
+ <Glyph value="sad-ar.init.meem"/>
+ <Glyph value="sad-ar.init.qantara"/>
+ <Glyph value="sad-ar.init.ragaa"/>
+ <Glyph value="sad-ar.init.reh"/>
+ <Glyph value="sad-ar.init.sad"/>
+ <Glyph value="sad-ar.init.yeh"/>
+ <Glyph value="tah-ar"/>
+ <Glyph value="tah-ar.fina"/>
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.medi.ain"/>
+ <Glyph value="tah-ar.medi.dal"/>
+ <Glyph value="tah-ar.medi.feh"/>
+ <Glyph value="tah-ar.medi.hah"/>
+ <Glyph value="tah-ar.medi.heh"/>
+ <Glyph value="tah-ar.medi.kaf"/>
+ <Glyph value="tah-ar.medi.meem"/>
+ <Glyph value="tah-ar.medi.postsad"/>
+ <Glyph value="tah-ar.medi.qantara"/>
+ <Glyph value="tah-ar.medi.ragaa"/>
+ <Glyph value="tah-ar.medi.reh"/>
+ <Glyph value="tah-ar.medi.sad"/>
+ <Glyph value="tah-ar.medi.yeh"/>
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="tah-ar.init.ain"/>
+ <Glyph value="tah-ar.init.dal"/>
+ <Glyph value="tah-ar.init.feh"/>
+ <Glyph value="tah-ar.init.hah"/>
+ <Glyph value="tah-ar.init.heh"/>
+ <Glyph value="tah-ar.init.kaf"/>
+ <Glyph value="tah-ar.init.meem"/>
+ <Glyph value="tah-ar.init.qantara"/>
+ <Glyph value="tah-ar.init.ragaa"/>
+ <Glyph value="tah-ar.init.reh"/>
+ <Glyph value="tah-ar.init.sad"/>
+ <Glyph value="tah-ar.init.yeh"/>
+ <Glyph value="ain-ar"/>
+ <Glyph value="ain-ar.fina"/>
+ <Glyph value="ain-ar.medi"/>
+ <Glyph value="ain-ar.medi.ain"/>
+ <Glyph value="ain-ar.medi.dal"/>
+ <Glyph value="ain-ar.medi.feh"/>
+ <Glyph value="ain-ar.medi.hah"/>
+ <Glyph value="ain-ar.medi.heh"/>
+ <Glyph value="ain-ar.medi.meem"/>
+ <Glyph value="ain-ar.medi.ragaa"/>
+ <Glyph value="ain-ar.medi.reh"/>
+ <Glyph value="ain-ar.medi.sad"/>
+ <Glyph value="ain-ar.medi.yeh"/>
+ <Glyph value="ain-ar.init"/>
+ <Glyph value="ain-ar.init.ain"/>
+ <Glyph value="ain-ar.init.dal"/>
+ <Glyph value="ain-ar.init.feh"/>
+ <Glyph value="ain-ar.init.hah"/>
+ <Glyph value="ain-ar.init.heh"/>
+ <Glyph value="ain-ar.init.meem"/>
+ <Glyph value="ain-ar.init.ragaa"/>
+ <Glyph value="ain-ar.init.reh"/>
+ <Glyph value="ain-ar.init.sad"/>
+ <Glyph value="ain-ar.init.yeh"/>
+ <Glyph value="fehDotless-ar"/>
+ <Glyph value="fehDotless-ar.jalt"/>
+ <Glyph value="fehDotless-ar.fina"/>
+ <Glyph value="fehDotless-ar.fina.jalt"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.medi.ain"/>
+ <Glyph value="fehDotless-ar.medi.dal"/>
+ <Glyph value="fehDotless-ar.medi.feh"/>
+ <Glyph value="fehDotless-ar.medi.hah"/>
+ <Glyph value="fehDotless-ar.medi.heh"/>
+ <Glyph value="fehDotless-ar.medi.meem"/>
+ <Glyph value="fehDotless-ar.medi.ragaa"/>
+ <Glyph value="fehDotless-ar.medi.reh"/>
+ <Glyph value="fehDotless-ar.medi.sad"/>
+ <Glyph value="fehDotless-ar.medi.yeh"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="fehDotless-ar.init.ain"/>
+ <Glyph value="fehDotless-ar.init.dal"/>
+ <Glyph value="fehDotless-ar.init.feh"/>
+ <Glyph value="fehDotless-ar.init.hah"/>
+ <Glyph value="fehDotless-ar.init.heh"/>
+ <Glyph value="fehDotless-ar.init.meem"/>
+ <Glyph value="fehDotless-ar.init.ragaa"/>
+ <Glyph value="fehDotless-ar.init.reh"/>
+ <Glyph value="fehDotless-ar.init.sad"/>
+ <Glyph value="fehDotless-ar.init.yeh"/>
+ <Glyph value="qafDotless-ar"/>
+ <Glyph value="qafDotless-ar.jalt"/>
+ <Glyph value="qafDotless-ar.fina"/>
+ <Glyph value="qafDotless-ar.fina.jalt"/>
+ <Glyph value="qaf-ar"/>
+ <Glyph value="qaf-ar.fina"/>
+ <Glyph value="kaf-ar"/>
+ <Glyph value="kaf-ar.jalt"/>
+ <Glyph value="kaf-ar.fina"/>
+ <Glyph value="kaf-ar.fina.jalt"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.medi.ain"/>
+ <Glyph value="kaf-ar.medi.dal"/>
+ <Glyph value="kaf-ar.medi.feh"/>
+ <Glyph value="kaf-ar.medi.hah"/>
+ <Glyph value="kaf-ar.medi.heh"/>
+ <Glyph value="kaf-ar.medi.meem"/>
+ <Glyph value="kaf-ar.medi.ragaa"/>
+ <Glyph value="kaf-ar.medi.reh"/>
+ <Glyph value="kaf-ar.medi.sad"/>
+ <Glyph value="kaf-ar.medi.yeh"/>
+ <Glyph value="kaf-ar.init"/>
+ <Glyph value="kaf-ar.init.ain"/>
+ <Glyph value="kaf-ar.init.alef"/>
+ <Glyph value="kaf-ar.init.alef.loop"/>
+ <Glyph value="kaf-ar.init.dal"/>
+ <Glyph value="kaf-ar.init.feh"/>
+ <Glyph value="kaf-ar.init.hah"/>
+ <Glyph value="kaf-ar.init.heh"/>
+ <Glyph value="kaf-ar.init.meem"/>
+ <Glyph value="kaf-ar.init.ragaa"/>
+ <Glyph value="kaf-ar.init.reh"/>
+ <Glyph value="kaf-ar.init.sad"/>
+ <Glyph value="kaf-ar.init.yeh"/>
+ <Glyph value="keheh-ar"/>
+ <Glyph value="keheh-ar.jalt"/>
+ <Glyph value="keheh-ar.fina"/>
+ <Glyph value="keheh-ar.fina.jalt"/>
+ <Glyph value="lam-ar"/>
+ <Glyph value="lam-ar.jalt"/>
+ <Glyph value="lam-ar.fina"/>
+ <Glyph value="lam-ar.fina.jalt"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.medi.ain"/>
+ <Glyph value="lam-ar.medi.alef"/>
+ <Glyph value="lam-ar.medi.dal"/>
+ <Glyph value="lam-ar.medi.feh"/>
+ <Glyph value="lam-ar.medi.hah"/>
+ <Glyph value="lam-ar.medi.heh"/>
+ <Glyph value="lam-ar.medi.meem"/>
+ <Glyph value="lam-ar.medi.ragaa"/>
+ <Glyph value="lam-ar.medi.reh"/>
+ <Glyph value="lam-ar.medi.sad"/>
+ <Glyph value="lam-ar.medi.yeh"/>
+ <Glyph value="lam-ar.init"/>
+ <Glyph value="lam-ar.init.ain"/>
+ <Glyph value="lam-ar.init.alef"/>
+ <Glyph value="lam-ar.init.dal"/>
+ <Glyph value="lam-ar.init.feh"/>
+ <Glyph value="lam-ar.init.hah"/>
+ <Glyph value="lam-ar.init.heh"/>
+ <Glyph value="lam-ar.init.meem"/>
+ <Glyph value="lam-ar.init.ragaa"/>
+ <Glyph value="lam-ar.init.reh"/>
+ <Glyph value="lam-ar.init.sad"/>
+ <Glyph value="lam-ar.init.yeh"/>
+ <Glyph value="meem-ar"/>
+ <Glyph value="meem-ar.fina"/>
+ <Glyph value="meem-ar.medi"/>
+ <Glyph value="meem-ar.medi.ain"/>
+ <Glyph value="meem-ar.medi.dal"/>
+ <Glyph value="meem-ar.medi.feh"/>
+ <Glyph value="meem-ar.medi.hah"/>
+ <Glyph value="meem-ar.medi.heh"/>
+ <Glyph value="meem-ar.medi.meem"/>
+ <Glyph value="meem-ar.medi.ragaa"/>
+ <Glyph value="meem-ar.medi.reh"/>
+ <Glyph value="meem-ar.medi.sad"/>
+ <Glyph value="meem-ar.medi.yeh"/>
+ <Glyph value="meem-ar.init"/>
+ <Glyph value="meem-ar.init.ain"/>
+ <Glyph value="meem-ar.init.dal"/>
+ <Glyph value="meem-ar.init.feh"/>
+ <Glyph value="meem-ar.init.hah"/>
+ <Glyph value="meem-ar.init.heh"/>
+ <Glyph value="meem-ar.init.meem"/>
+ <Glyph value="meem-ar.init.ragaa"/>
+ <Glyph value="meem-ar.init.reh"/>
+ <Glyph value="meem-ar.init.sad"/>
+ <Glyph value="meem-ar.init.yeh"/>
+ <Glyph value="noon-ar"/>
+ <Glyph value="noon-ar.tail"/>
+ <Glyph value="noon-ar.fina"/>
+ <Glyph value="noon-ar.fina.tail"/>
+ <Glyph value="noonghunna-ar"/>
+ <Glyph value="noonghunna-ar.jalt"/>
+ <Glyph value="noonghunna-ar.fina"/>
+ <Glyph value="heh-ar"/>
+ <Glyph value="heh-ar.fina"/>
+ <Glyph value="heh-ar.medi"/>
+ <Glyph value="heh-ar.medi.ain"/>
+ <Glyph value="heh-ar.medi.dal"/>
+ <Glyph value="heh-ar.medi.feh"/>
+ <Glyph value="heh-ar.medi.hah"/>
+ <Glyph value="heh-ar.medi.heh"/>
+ <Glyph value="heh-ar.medi.meem"/>
+ <Glyph value="heh-ar.medi.ragaa"/>
+ <Glyph value="heh-ar.medi.reh"/>
+ <Glyph value="heh-ar.medi.sad"/>
+ <Glyph value="heh-ar.medi.yeh"/>
+ <Glyph value="heh-ar.init"/>
+ <Glyph value="heh-ar.init.ain"/>
+ <Glyph value="heh-ar.init.dal"/>
+ <Glyph value="heh-ar.init.feh"/>
+ <Glyph value="heh-ar.init.hah"/>
+ <Glyph value="heh-ar.init.heh"/>
+ <Glyph value="heh-ar.init.meem"/>
+ <Glyph value="heh-ar.init.ragaa"/>
+ <Glyph value="heh-ar.init.reh"/>
+ <Glyph value="heh-ar.init.sad"/>
+ <Glyph value="heh-ar.init.yeh"/>
+ <Glyph value="hehgoal-ar.fina"/>
+ <Glyph value="hehgoal-ar.init"/>
+ <Glyph value="hehgoal-ar.init.ain"/>
+ <Glyph value="hehgoal-ar.init.dal"/>
+ <Glyph value="hehgoal-ar.init.feh"/>
+ <Glyph value="hehgoal-ar.init.hah"/>
+ <Glyph value="hehgoal-ar.init.heh"/>
+ <Glyph value="hehgoal-ar.init.meem"/>
+ <Glyph value="hehgoal-ar.init.ragaa"/>
+ <Glyph value="hehgoal-ar.init.reh"/>
+ <Glyph value="hehgoal-ar.init.sad"/>
+ <Glyph value="hehgoal-ar.init.yeh"/>
+ <Glyph value="hehDoachashmee-ar"/>
+ <Glyph value="hehDoachashmee-ar.fina"/>
+ <Glyph value="hehDoachashmee-ar.medi"/>
+ <Glyph value="hehDoachashmee-ar.medi.ain"/>
+ <Glyph value="hehDoachashmee-ar.medi.dal"/>
+ <Glyph value="hehDoachashmee-ar.medi.feh"/>
+ <Glyph value="hehDoachashmee-ar.medi.hah"/>
+ <Glyph value="hehDoachashmee-ar.medi.heh"/>
+ <Glyph value="hehDoachashmee-ar.medi.meem"/>
+ <Glyph value="hehDoachashmee-ar.medi.ragaa"/>
+ <Glyph value="hehDoachashmee-ar.medi.reh"/>
+ <Glyph value="hehDoachashmee-ar.medi.sad"/>
+ <Glyph value="hehDoachashmee-ar.medi.yeh"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ <Glyph value="alefMaksura-ar"/>
+ <Glyph value="alefMaksura-ar.jalt"/>
+ <Glyph value="alefMaksura-ar.fina"/>
+ <Glyph value="alefMaksura-ar.fina.jalt"/>
+ <Glyph value="alefMaksura-ar.fina.yeh"/>
+ <Glyph value="alefMaksura-ar.fina.yeh.jalt"/>
+ <Glyph value="yehbarree-ar"/>
+ <Glyph value="yehbarree-ar.fina"/>
+ <Glyph value="ae-ar"/>
+ </BaseCoverage>
+ <!-- ClassCount=5 -->
+ <MarkArray>
+ <!-- MarkCount=29 -->
+ <MarkRecord index="0">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="1">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="2">
+ <Class value="1"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="3">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="4">
+ <Class value="1"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="5">
+ <Class value="1"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="49"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="6">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="7">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="8">
+ <Class value="2"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="9">
+ <Class value="3"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="10">
+ <Class value="4"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="98"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="11">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="12">
+ <Class value="1"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="13">
+ <Class value="3"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="14">
+ <Class value="3"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="15">
+ <Class value="4"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="16">
+ <Class value="3"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="17">
+ <Class value="3"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="18">
+ <Class value="4"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="19">
+ <Class value="3"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="20">
+ <Class value="3"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="21">
+ <Class value="3"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="22">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="23">
+ <Class value="3"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="24">
+ <Class value="3"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="25">
+ <Class value="3"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="26">
+ <Class value="3"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="27">
+ <Class value="1"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="28">
+ <Class value="3"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ </MarkArray>
+ <BaseArray>
+ <!-- BaseCount=356 -->
+ <BaseRecord index="0">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="272"/>
+ <YCoordinate value="584"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="119"/>
+ <YCoordinate value="-189"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="294"/>
+ <YCoordinate value="576"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="149"/>
+ <YCoordinate value="-189"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="1">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="121"/>
+ <YCoordinate value="791"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="128"/>
+ <YCoordinate value="-22"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="129"/>
+ <YCoordinate value="835"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="145"/>
+ <YCoordinate value="-31"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="2">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="112"/>
+ <YCoordinate value="800"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="125"/>
+ <YCoordinate value="-185"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="116"/>
+ <YCoordinate value="791"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="208"/>
+ <YCoordinate value="-189"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="3">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="285"/>
+ <YCoordinate value="714"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="317"/>
+ <YCoordinate value="-204"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="290"/>
+ <YCoordinate value="671"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="317"/>
+ <YCoordinate value="-113"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="4">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="397"/>
+ <YCoordinate value="505"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="-136"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="347"/>
+ <YCoordinate value="532"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="330"/>
+ <YCoordinate value="-185"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="5">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="523"/>
+ <YCoordinate value="338"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="488"/>
+ <YCoordinate value="-163"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="505"/>
+ <YCoordinate value="795"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="479"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="6">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="352"/>
+ <YCoordinate value="413"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="-193"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="453"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="255"/>
+ <YCoordinate value="-185"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="7">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="558"/>
+ <YCoordinate value="360"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="453"/>
+ <YCoordinate value="-176"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="536"/>
+ <YCoordinate value="804"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="466"/>
+ <YCoordinate value="-180"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="8">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="215"/>
+ <YCoordinate value="374"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="149"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="250"/>
+ <YCoordinate value="404"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="145"/>
+ <YCoordinate value="-193"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="9">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="400"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="224"/>
+ <YCoordinate value="-136"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="400"/>
+ <YCoordinate value="409"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="321"/>
+ <YCoordinate value="-180"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="10">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="387"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="193"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="281"/>
+ <YCoordinate value="435"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="202"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="11">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="461"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="338"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="453"/>
+ <YCoordinate value="492"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="374"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="12">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="229"/>
+ <YCoordinate value="488"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="461"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="580"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="400"/>
+ <YCoordinate value="18"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="13">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="514"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="413"/>
+ <YCoordinate value="-79"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="417"/>
+ <YCoordinate value="541"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="466"/>
+ <YCoordinate value="-83"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="14">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="132"/>
+ <YCoordinate value="492"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="167"/>
+ <YCoordinate value="-123"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="224"/>
+ <YCoordinate value="628"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="229"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="15">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="244"/>
+ <YCoordinate value="586"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="189"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="250"/>
+ <YCoordinate value="545"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="272"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="16">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="224"/>
+ <YCoordinate value="461"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="347"/>
+ <YCoordinate value="-88"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="246"/>
+ <YCoordinate value="466"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="281"/>
+ <YCoordinate value="-114"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="17">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="158"/>
+ <YCoordinate value="457"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="88"/>
+ <YCoordinate value="-101"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="224"/>
+ <YCoordinate value="497"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="136"/>
+ <YCoordinate value="-176"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="18">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="247"/>
+ <YCoordinate value="494"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="206"/>
+ <YCoordinate value="-255"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="247"/>
+ <YCoordinate value="537"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="206"/>
+ <YCoordinate value="-255"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="19">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="198"/>
+ <YCoordinate value="453"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="198"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="229"/>
+ <YCoordinate value="426"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="20">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="532"/>
+ <YCoordinate value="483"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="-149"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="541"/>
+ <YCoordinate value="457"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="448"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="21">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="470"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="321"/>
+ <YCoordinate value="-110"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="483"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="294"/>
+ <YCoordinate value="-123"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="22">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="218"/>
+ <YCoordinate value="496"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="189"/>
+ <YCoordinate value="-136"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="193"/>
+ <YCoordinate value="527"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="149"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="23">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="360"/>
+ <YCoordinate value="519"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="303"/>
+ <YCoordinate value="-163"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="299"/>
+ <YCoordinate value="527"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="334"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="24">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="211"/>
+ <YCoordinate value="422"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="163"/>
+ <YCoordinate value="-136"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="198"/>
+ <YCoordinate value="422"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="145"/>
+ <YCoordinate value="-145"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="25">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="213"/>
+ <YCoordinate value="409"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="171"/>
+ <YCoordinate value="-154"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="409"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="220"/>
+ <YCoordinate value="-145"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="26">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="448"/>
+ <YCoordinate value="541"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="-141"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="510"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="413"/>
+ <YCoordinate value="-114"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="27">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="412"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="378"/>
+ <YCoordinate value="-29"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="472"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="-66"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="28">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="417"/>
+ <YCoordinate value="514"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="387"/>
+ <YCoordinate value="-62"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="470"/>
+ <YCoordinate value="501"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="409"/>
+ <YCoordinate value="-79"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="29">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="545"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="-9"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="272"/>
+ <YCoordinate value="479"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="264"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="30">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="199"/>
+ <YCoordinate value="623"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="419"/>
+ <YCoordinate value="145"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="639"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="274"/>
+ <YCoordinate value="-102"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="31">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="229"/>
+ <YCoordinate value="422"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="202"/>
+ <YCoordinate value="-127"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="250"/>
+ <YCoordinate value="400"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="211"/>
+ <YCoordinate value="-123"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="32">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="567"/>
+ <YCoordinate value="602"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="426"/>
+ <YCoordinate value="-105"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="497"/>
+ <YCoordinate value="637"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="483"/>
+ <YCoordinate value="-92"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="33">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="92"/>
+ <YCoordinate value="470"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="325"/>
+ <YCoordinate value="88"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="101"/>
+ <YCoordinate value="497"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="145"/>
+ <YCoordinate value="-457"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="34">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="739"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="325"/>
+ <YCoordinate value="738"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="294"/>
+ <YCoordinate value="-545"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="35">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="158"/>
+ <YCoordinate value="760"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="141"/>
+ <YCoordinate value="773"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="294"/>
+ <YCoordinate value="-545"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="36">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="180"/>
+ <YCoordinate value="620"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="-88"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="176"/>
+ <YCoordinate value="580"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="-145"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="37">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="628"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="-105"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="237"/>
+ <YCoordinate value="497"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="413"/>
+ <YCoordinate value="-127"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="38">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="229"/>
+ <YCoordinate value="602"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="-123"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="264"/>
+ <YCoordinate value="615"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="334"/>
+ <YCoordinate value="-119"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="39">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="650"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="510"/>
+ <YCoordinate value="-83"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="396"/>
+ <YCoordinate value="633"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="457"/>
+ <YCoordinate value="-110"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="40">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="189"/>
+ <YCoordinate value="716"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="444"/>
+ <YCoordinate value="101"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="264"/>
+ <YCoordinate value="743"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="79"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="41">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="439"/>
+ <YCoordinate value="738"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="461"/>
+ <YCoordinate value="-13"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="387"/>
+ <YCoordinate value="694"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="475"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="42">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="350"/>
+ <YCoordinate value="653"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="372"/>
+ <YCoordinate value="-99"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="297"/>
+ <YCoordinate value="609"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="385"/>
+ <YCoordinate value="-121"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="43">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="202"/>
+ <YCoordinate value="738"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="378"/>
+ <YCoordinate value="-4"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="229"/>
+ <YCoordinate value="725"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="4"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="44">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="167"/>
+ <YCoordinate value="693"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="462"/>
+ <YCoordinate value="167"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="344"/>
+ <YCoordinate value="682"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="301"/>
+ <YCoordinate value="-86"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="45">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="163"/>
+ <YCoordinate value="664"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="325"/>
+ <YCoordinate value="-48"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="189"/>
+ <YCoordinate value="589"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="-79"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="46">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="492"/>
+ <YCoordinate value="694"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="483"/>
+ <YCoordinate value="-149"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="606"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="483"/>
+ <YCoordinate value="-114"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="47">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="250"/>
+ <YCoordinate value="729"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="431"/>
+ <YCoordinate value="48"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="272"/>
+ <YCoordinate value="712"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="382"/>
+ <YCoordinate value="9"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="48">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="334"/>
+ <YCoordinate value="545"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="264"/>
+ <YCoordinate value="-141"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="347"/>
+ <YCoordinate value="554"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="303"/>
+ <YCoordinate value="-185"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="49">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="562"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="338"/>
+ <YCoordinate value="-149"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="400"/>
+ <YCoordinate value="562"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="-132"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="50">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="426"/>
+ <YCoordinate value="567"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="325"/>
+ <YCoordinate value="-154"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="549"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="-123"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="51">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="562"/>
+ <YCoordinate value="606"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="505"/>
+ <YCoordinate value="-154"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="549"/>
+ <YCoordinate value="576"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="527"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="52">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="330"/>
+ <YCoordinate value="751"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="453"/>
+ <YCoordinate value="119"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="347"/>
+ <YCoordinate value="734"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="396"/>
+ <YCoordinate value="62"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="53">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="431"/>
+ <YCoordinate value="756"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="483"/>
+ <YCoordinate value="35"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="453"/>
+ <YCoordinate value="708"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="470"/>
+ <YCoordinate value="-22"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="54">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="349"/>
+ <YCoordinate value="635"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="401"/>
+ <YCoordinate value="-85"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="371"/>
+ <YCoordinate value="587"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="388"/>
+ <YCoordinate value="-143"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="55">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="734"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="426"/>
+ <YCoordinate value="9"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="703"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="387"/>
+ <YCoordinate value="-4"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="56">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="333"/>
+ <YCoordinate value="671"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="510"/>
+ <YCoordinate value="193"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="338"/>
+ <YCoordinate value="666"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="333"/>
+ <YCoordinate value="-38"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="57">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="338"/>
+ <YCoordinate value="655"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="-57"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="374"/>
+ <YCoordinate value="637"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="347"/>
+ <YCoordinate value="-62"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="58">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="580"/>
+ <YCoordinate value="567"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="475"/>
+ <YCoordinate value="-163"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="598"/>
+ <YCoordinate value="571"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="448"/>
+ <YCoordinate value="-149"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="59">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="743"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="343"/>
+ <YCoordinate value="22"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="334"/>
+ <YCoordinate value="738"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="92"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="60">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="233"/>
+ <YCoordinate value="562"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="198"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="233"/>
+ <YCoordinate value="571"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="180"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="61">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="347"/>
+ <YCoordinate value="417"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="211"/>
+ <YCoordinate value="-207"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="457"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="207"/>
+ <YCoordinate value="-176"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="62">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="360"/>
+ <YCoordinate value="457"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="233"/>
+ <YCoordinate value="-224"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="277"/>
+ <YCoordinate value="431"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="-193"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="63">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="334"/>
+ <YCoordinate value="439"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="211"/>
+ <YCoordinate value="-220"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="369"/>
+ <YCoordinate value="466"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="224"/>
+ <YCoordinate value="-176"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="64">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="633"/>
+ <YCoordinate value="703"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="541"/>
+ <YCoordinate value="-4"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="655"/>
+ <YCoordinate value="725"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="602"/>
+ <YCoordinate value="26"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="65">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="1239"/>
+ <YCoordinate value="703"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="1213"/>
+ <YCoordinate value="782"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="519"/>
+ <YCoordinate value="-163"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="66">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="545"/>
+ <YCoordinate value="681"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="510"/>
+ <YCoordinate value="13"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="549"/>
+ <YCoordinate value="690"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="554"/>
+ <YCoordinate value="92"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="67">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="1081"/>
+ <YCoordinate value="690"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="1020"/>
+ <YCoordinate value="690"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="523"/>
+ <YCoordinate value="-154"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="68">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="338"/>
+ <YCoordinate value="431"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="272"/>
+ <YCoordinate value="-127"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="352"/>
+ <YCoordinate value="461"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="-149"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="69">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="426"/>
+ <YCoordinate value="510"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="422"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="431"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="70">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="457"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="338"/>
+ <YCoordinate value="435"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="338"/>
+ <YCoordinate value="-154"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="71">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="557"/>
+ <YCoordinate value="468"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="545"/>
+ <YCoordinate value="488"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="519"/>
+ <YCoordinate value="-149"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="72">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="444"/>
+ <YCoordinate value="514"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="448"/>
+ <YCoordinate value="624"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="413"/>
+ <YCoordinate value="26"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="73">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="650"/>
+ <YCoordinate value="584"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="611"/>
+ <YCoordinate value="580"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="505"/>
+ <YCoordinate value="-57"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="74">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="444"/>
+ <YCoordinate value="598"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="444"/>
+ <YCoordinate value="545"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="448"/>
+ <YCoordinate value="-22"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="75">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="392"/>
+ <YCoordinate value="521"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="414"/>
+ <YCoordinate value="537"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="333"/>
+ <YCoordinate value="-97"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="76">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="378"/>
+ <YCoordinate value="457"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="338"/>
+ <YCoordinate value="444"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="325"/>
+ <YCoordinate value="-141"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="77">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="633"/>
+ <YCoordinate value="510"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="602"/>
+ <YCoordinate value="510"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="510"/>
+ <YCoordinate value="-127"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="78">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="527"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="400"/>
+ <YCoordinate value="483"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="-53"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="79">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="409"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="290"/>
+ <YCoordinate value="-180"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="352"/>
+ <YCoordinate value="461"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="281"/>
+ <YCoordinate value="-141"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="80">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="448"/>
+ <YCoordinate value="492"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="444"/>
+ <YCoordinate value="492"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="-141"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="81">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="347"/>
+ <YCoordinate value="448"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="391"/>
+ <YCoordinate value="435"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="321"/>
+ <YCoordinate value="-136"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="82">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="545"/>
+ <YCoordinate value="554"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="497"/>
+ <YCoordinate value="475"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="-163"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="83">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="470"/>
+ <YCoordinate value="628"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="439"/>
+ <YCoordinate value="576"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="-44"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="84">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="606"/>
+ <YCoordinate value="650"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="606"/>
+ <YCoordinate value="589"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="545"/>
+ <YCoordinate value="-26"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="85">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="453"/>
+ <YCoordinate value="611"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="461"/>
+ <YCoordinate value="545"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="396"/>
+ <YCoordinate value="-18"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="86">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="387"/>
+ <YCoordinate value="537"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="387"/>
+ <YCoordinate value="484"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="306"/>
+ <YCoordinate value="-70"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="87">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="475"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="325"/>
+ <YCoordinate value="-79"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="382"/>
+ <YCoordinate value="448"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="-101"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="88">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="602"/>
+ <YCoordinate value="483"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="606"/>
+ <YCoordinate value="466"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="461"/>
+ <YCoordinate value="-127"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="89">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="413"/>
+ <YCoordinate value="523"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="475"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="-57"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="90">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="655"/>
+ <YCoordinate value="725"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="602"/>
+ <YCoordinate value="26"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="91">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="610"/>
+ <YCoordinate value="781"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="558"/>
+ <YCoordinate value="92"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="633"/>
+ <YCoordinate value="791"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="589"/>
+ <YCoordinate value="97"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="92">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="1138"/>
+ <YCoordinate value="760"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="998"/>
+ <YCoordinate value="743"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="576"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="93">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="685"/>
+ <YCoordinate value="781"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="633"/>
+ <YCoordinate value="62"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="668"/>
+ <YCoordinate value="782"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="633"/>
+ <YCoordinate value="92"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="94">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="1173"/>
+ <YCoordinate value="712"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="1072"/>
+ <YCoordinate value="747"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="576"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="95">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="545"/>
+ <YCoordinate value="567"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="343"/>
+ <YCoordinate value="-202"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="505"/>
+ <YCoordinate value="523"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="-127"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="96">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="606"/>
+ <YCoordinate value="532"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="505"/>
+ <YCoordinate value="514"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="501"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="97">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="510"/>
+ <YCoordinate value="541"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="501"/>
+ <YCoordinate value="488"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="98">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="584"/>
+ <YCoordinate value="549"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="584"/>
+ <YCoordinate value="532"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="532"/>
+ <YCoordinate value="-136"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="99">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="558"/>
+ <YCoordinate value="584"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="527"/>
+ <YCoordinate value="664"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="479"/>
+ <YCoordinate value="31"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="100">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="743"/>
+ <YCoordinate value="655"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="751"/>
+ <YCoordinate value="681"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="527"/>
+ <YCoordinate value="-44"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="101">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="545"/>
+ <YCoordinate value="611"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="519"/>
+ <YCoordinate value="593"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="466"/>
+ <YCoordinate value="-70"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="102">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="545"/>
+ <YCoordinate value="567"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="343"/>
+ <YCoordinate value="-202"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="505"/>
+ <YCoordinate value="523"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="-127"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="103">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="672"/>
+ <YCoordinate value="580"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="677"/>
+ <YCoordinate value="536"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="523"/>
+ <YCoordinate value="-123"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="104">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="564"/>
+ <YCoordinate value="645"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="548"/>
+ <YCoordinate value="650"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="446"/>
+ <YCoordinate value="-81"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="105">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="488"/>
+ <YCoordinate value="571"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="426"/>
+ <YCoordinate value="519"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="382"/>
+ <YCoordinate value="-119"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="106">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="672"/>
+ <YCoordinate value="580"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="677"/>
+ <YCoordinate value="536"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="523"/>
+ <YCoordinate value="-123"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="107">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="501"/>
+ <YCoordinate value="541"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="497"/>
+ <YCoordinate value="571"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="431"/>
+ <YCoordinate value="-97"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="108">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="505"/>
+ <YCoordinate value="558"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="334"/>
+ <YCoordinate value="-193"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="510"/>
+ <YCoordinate value="571"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="387"/>
+ <YCoordinate value="-136"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="109">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="598"/>
+ <YCoordinate value="567"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="541"/>
+ <YCoordinate value="562"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="479"/>
+ <YCoordinate value="-154"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="110">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="532"/>
+ <YCoordinate value="536"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="483"/>
+ <YCoordinate value="523"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="431"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="111">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="606"/>
+ <YCoordinate value="549"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="571"/>
+ <YCoordinate value="554"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="523"/>
+ <YCoordinate value="-163"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="112">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="593"/>
+ <YCoordinate value="646"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="606"/>
+ <YCoordinate value="703"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="488"/>
+ <YCoordinate value="-4"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="113">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="747"/>
+ <YCoordinate value="681"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="620"/>
+ <YCoordinate value="655"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="615"/>
+ <YCoordinate value="-18"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="114">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="580"/>
+ <YCoordinate value="628"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="532"/>
+ <YCoordinate value="628"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="479"/>
+ <YCoordinate value="-31"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="115">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="677"/>
+ <YCoordinate value="558"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="690"/>
+ <YCoordinate value="549"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="523"/>
+ <YCoordinate value="-149"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="116">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="542"/>
+ <YCoordinate value="645"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="645"/>
+ <YCoordinate value="655"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="414"/>
+ <YCoordinate value="-64"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="117">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="457"/>
+ <YCoordinate value="545"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="343"/>
+ <YCoordinate value="-101"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="444"/>
+ <YCoordinate value="536"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="-132"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="118">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="677"/>
+ <YCoordinate value="558"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="690"/>
+ <YCoordinate value="549"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="523"/>
+ <YCoordinate value="-149"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="119">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="532"/>
+ <YCoordinate value="549"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="536"/>
+ <YCoordinate value="549"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="-88"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="120">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="510"/>
+ <YCoordinate value="475"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="-207"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="677"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="325"/>
+ <YCoordinate value="-145"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="121">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="497"/>
+ <YCoordinate value="479"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="-145"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="708"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="-149"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="122">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="492"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="281"/>
+ <YCoordinate value="-101"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="259"/>
+ <YCoordinate value="721"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="198"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="123">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="545"/>
+ <YCoordinate value="523"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="738"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="453"/>
+ <YCoordinate value="-132"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="124">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="461"/>
+ <YCoordinate value="505"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="290"/>
+ <YCoordinate value="751"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="387"/>
+ <YCoordinate value="-101"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="125">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="593"/>
+ <YCoordinate value="541"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="804"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="501"/>
+ <YCoordinate value="-123"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="126">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="510"/>
+ <YCoordinate value="686"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="352"/>
+ <YCoordinate value="927"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="448"/>
+ <YCoordinate value="44"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="127">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="593"/>
+ <YCoordinate value="650"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="431"/>
+ <YCoordinate value="857"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="483"/>
+ <YCoordinate value="-22"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="128">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="457"/>
+ <YCoordinate value="483"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="255"/>
+ <YCoordinate value="-70"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="321"/>
+ <YCoordinate value="708"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="129">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="536"/>
+ <YCoordinate value="659"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="360"/>
+ <YCoordinate value="831"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="470"/>
+ <YCoordinate value="-9"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="130">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="492"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="281"/>
+ <YCoordinate value="-101"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="259"/>
+ <YCoordinate value="721"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="198"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="131">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="708"/>
+ <YCoordinate value="532"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="558"/>
+ <YCoordinate value="773"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="584"/>
+ <YCoordinate value="-101"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="132">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="414"/>
+ <YCoordinate value="585"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="258"/>
+ <YCoordinate value="833"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="306"/>
+ <YCoordinate value="-102"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="133">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="444"/>
+ <YCoordinate value="562"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="268"/>
+ <YCoordinate value="787"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="338"/>
+ <YCoordinate value="-75"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="134">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="708"/>
+ <YCoordinate value="532"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="558"/>
+ <YCoordinate value="773"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="584"/>
+ <YCoordinate value="-101"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="135">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="584"/>
+ <YCoordinate value="606"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="431"/>
+ <YCoordinate value="853"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="527"/>
+ <YCoordinate value="-13"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="136">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="501"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="229"/>
+ <YCoordinate value="-141"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="250"/>
+ <YCoordinate value="721"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="198"/>
+ <YCoordinate value="-149"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="137">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="532"/>
+ <YCoordinate value="523"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="369"/>
+ <YCoordinate value="769"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="-132"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="138">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="444"/>
+ <YCoordinate value="497"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="299"/>
+ <YCoordinate value="729"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="-101"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="139">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="598"/>
+ <YCoordinate value="536"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="431"/>
+ <YCoordinate value="773"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="409"/>
+ <YCoordinate value="-136"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="140">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="492"/>
+ <YCoordinate value="668"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="360"/>
+ <YCoordinate value="901"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="439"/>
+ <YCoordinate value="-4"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="141">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="589"/>
+ <YCoordinate value="637"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="417"/>
+ <YCoordinate value="888"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="532"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="142">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="453"/>
+ <YCoordinate value="470"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="220"/>
+ <YCoordinate value="-88"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="694"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="299"/>
+ <YCoordinate value="-145"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="143">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="413"/>
+ <YCoordinate value="611"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="250"/>
+ <YCoordinate value="844"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="360"/>
+ <YCoordinate value="-4"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="144">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="721"/>
+ <YCoordinate value="545"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="558"/>
+ <YCoordinate value="813"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="549"/>
+ <YCoordinate value="-92"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="145">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="591"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="269"/>
+ <YCoordinate value="827"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="-86"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="146">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="431"/>
+ <YCoordinate value="554"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="352"/>
+ <YCoordinate value="-22"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="264"/>
+ <YCoordinate value="778"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="378"/>
+ <YCoordinate value="-40"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="147">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="721"/>
+ <YCoordinate value="545"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="558"/>
+ <YCoordinate value="813"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="549"/>
+ <YCoordinate value="-92"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="148">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="378"/>
+ <YCoordinate value="558"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="268"/>
+ <YCoordinate value="795"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="417"/>
+ <YCoordinate value="-13"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="149">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="193"/>
+ <YCoordinate value="756"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="299"/>
+ <YCoordinate value="-532"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="224"/>
+ <YCoordinate value="765"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="303"/>
+ <YCoordinate value="-523"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="150">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="338"/>
+ <YCoordinate value="760"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="299"/>
+ <YCoordinate value="-527"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="347"/>
+ <YCoordinate value="729"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="303"/>
+ <YCoordinate value="-532"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="151">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="321"/>
+ <YCoordinate value="541"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="215"/>
+ <YCoordinate value="-105"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="334"/>
+ <YCoordinate value="492"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="-136"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="152">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="457"/>
+ <YCoordinate value="545"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="519"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="-132"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="153">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="545"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="330"/>
+ <YCoordinate value="536"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="299"/>
+ <YCoordinate value="-119"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="154">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="505"/>
+ <YCoordinate value="580"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="510"/>
+ <YCoordinate value="562"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="-110"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="155">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="374"/>
+ <YCoordinate value="650"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="374"/>
+ <YCoordinate value="668"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="382"/>
+ <YCoordinate value="9"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="156">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="554"/>
+ <YCoordinate value="677"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="558"/>
+ <YCoordinate value="637"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="475"/>
+ <YCoordinate value="-13"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="157">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="400"/>
+ <YCoordinate value="677"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="409"/>
+ <YCoordinate value="624"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="413"/>
+ <YCoordinate value="-9"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="158">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="580"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="344"/>
+ <YCoordinate value="612"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="295"/>
+ <YCoordinate value="-91"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="159">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="343"/>
+ <YCoordinate value="562"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="303"/>
+ <YCoordinate value="545"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="290"/>
+ <YCoordinate value="-83"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="160">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="589"/>
+ <YCoordinate value="541"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="554"/>
+ <YCoordinate value="549"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="527"/>
+ <YCoordinate value="-97"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="161">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="369"/>
+ <YCoordinate value="637"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="369"/>
+ <YCoordinate value="633"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="396"/>
+ <YCoordinate value="-13"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="162">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="294"/>
+ <YCoordinate value="620"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="215"/>
+ <YCoordinate value="-123"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="598"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="272"/>
+ <YCoordinate value="-180"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="163">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="479"/>
+ <YCoordinate value="633"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="483"/>
+ <YCoordinate value="628"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="475"/>
+ <YCoordinate value="-119"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="164">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="602"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="321"/>
+ <YCoordinate value="576"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="352"/>
+ <YCoordinate value="-114"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="165">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="492"/>
+ <YCoordinate value="628"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="510"/>
+ <YCoordinate value="646"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="479"/>
+ <YCoordinate value="-141"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="166">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="268"/>
+ <YCoordinate value="747"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="264"/>
+ <YCoordinate value="729"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="338"/>
+ <YCoordinate value="-4"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="167">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="378"/>
+ <YCoordinate value="694"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="396"/>
+ <YCoordinate value="686"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="-44"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="168">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="290"/>
+ <YCoordinate value="716"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="686"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="352"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="169">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="301"/>
+ <YCoordinate value="720"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="344"/>
+ <YCoordinate value="709"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="338"/>
+ <YCoordinate value="-43"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="170">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="655"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="369"/>
+ <YCoordinate value="-9"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="321"/>
+ <YCoordinate value="672"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="-79"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="171">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="554"/>
+ <YCoordinate value="637"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="571"/>
+ <YCoordinate value="633"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="514"/>
+ <YCoordinate value="-105"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="172">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="272"/>
+ <YCoordinate value="659"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="272"/>
+ <YCoordinate value="664"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="360"/>
+ <YCoordinate value="-26"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="173">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="483"/>
+ <YCoordinate value="650"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="334"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="532"/>
+ <YCoordinate value="606"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="290"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="174">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="831"/>
+ <YCoordinate value="664"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="466"/>
+ <YCoordinate value="778"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="488"/>
+ <YCoordinate value="-176"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="175">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="620"/>
+ <YCoordinate value="624"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="290"/>
+ <YCoordinate value="-145"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="642"/>
+ <YCoordinate value="567"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="-154"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="176">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="896"/>
+ <YCoordinate value="611"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="853"/>
+ <YCoordinate value="677"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="439"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="177">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="360"/>
+ <YCoordinate value="589"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="198"/>
+ <YCoordinate value="-127"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="562"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="224"/>
+ <YCoordinate value="-141"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="178">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="483"/>
+ <YCoordinate value="580"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="475"/>
+ <YCoordinate value="571"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="387"/>
+ <YCoordinate value="-127"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="179">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="382"/>
+ <YCoordinate value="576"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="360"/>
+ <YCoordinate value="576"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="299"/>
+ <YCoordinate value="-119"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="180">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="580"/>
+ <YCoordinate value="637"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="589"/>
+ <YCoordinate value="589"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="466"/>
+ <YCoordinate value="-132"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="181">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="431"/>
+ <YCoordinate value="734"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="690"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="347"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="182">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="576"/>
+ <YCoordinate value="664"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="620"/>
+ <YCoordinate value="694"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="536"/>
+ <YCoordinate value="-31"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="183">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="444"/>
+ <YCoordinate value="708"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="400"/>
+ <YCoordinate value="646"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="378"/>
+ <YCoordinate value="-18"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="184">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="376"/>
+ <YCoordinate value="661"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="655"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="285"/>
+ <YCoordinate value="-107"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="185">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="409"/>
+ <YCoordinate value="628"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="387"/>
+ <YCoordinate value="584"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="290"/>
+ <YCoordinate value="-101"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="186">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="606"/>
+ <YCoordinate value="628"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="628"/>
+ <YCoordinate value="589"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="532"/>
+ <YCoordinate value="-110"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="187">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="448"/>
+ <YCoordinate value="681"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="417"/>
+ <YCoordinate value="655"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="417"/>
+ <YCoordinate value="9"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="188">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="259"/>
+ <YCoordinate value="642"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="185"/>
+ <YCoordinate value="-136"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="624"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="198"/>
+ <YCoordinate value="-145"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="189">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="409"/>
+ <YCoordinate value="624"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="391"/>
+ <YCoordinate value="637"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="417"/>
+ <YCoordinate value="-101"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="190">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="628"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="272"/>
+ <YCoordinate value="615"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="272"/>
+ <YCoordinate value="-119"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="191">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="453"/>
+ <YCoordinate value="668"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="439"/>
+ <YCoordinate value="659"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="-136"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="192">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="88"/>
+ <YCoordinate value="554"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="110"/>
+ <YCoordinate value="554"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="352"/>
+ <YCoordinate value="35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="193">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="743"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="439"/>
+ <YCoordinate value="747"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="448"/>
+ <YCoordinate value="-13"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="194">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="272"/>
+ <YCoordinate value="716"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="712"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="-4"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="195">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="199"/>
+ <YCoordinate value="693"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="236"/>
+ <YCoordinate value="661"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="285"/>
+ <YCoordinate value="-81"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="196">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="246"/>
+ <YCoordinate value="646"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="250"/>
+ <YCoordinate value="668"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="277"/>
+ <YCoordinate value="-83"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="197">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="527"/>
+ <YCoordinate value="690"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="580"/>
+ <YCoordinate value="664"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="475"/>
+ <YCoordinate value="-105"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="198">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="75"/>
+ <YCoordinate value="532"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="97"/>
+ <YCoordinate value="532"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="110"/>
+ <YCoordinate value="-422"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="199">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="218"/>
+ <YCoordinate value="637"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="188"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="297"/>
+ <YCoordinate value="655"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="174"/>
+ <YCoordinate value="-180"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="200">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="703"/>
+ <YCoordinate value="602"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="501"/>
+ <YCoordinate value="787"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="201">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="218"/>
+ <YCoordinate value="637"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="201"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="284"/>
+ <YCoordinate value="664"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="174"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="202">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="747"/>
+ <YCoordinate value="589"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="708"/>
+ <YCoordinate value="716"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="-163"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="203">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="637"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="334"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="444"/>
+ <YCoordinate value="655"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="321"/>
+ <YCoordinate value="-180"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="204">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="637"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="347"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="431"/>
+ <YCoordinate value="664"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="321"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="205">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="769"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="255"/>
+ <YCoordinate value="-127"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="769"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="721"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="237"/>
+ <YCoordinate value="-149"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="206">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="566"/>
+ <YCoordinate value="769"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="567"/>
+ <YCoordinate value="848"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="461"/>
+ <YCoordinate value="-145"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="207">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="773"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="-185"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="773"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="330"/>
+ <YCoordinate value="725"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="220"/>
+ <YCoordinate value="-154"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="208">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="566"/>
+ <YCoordinate value="769"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="567"/>
+ <YCoordinate value="835"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="466"/>
+ <YCoordinate value="-141"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="209">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="413"/>
+ <YCoordinate value="875"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="229"/>
+ <YCoordinate value="-193"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="413"/>
+ <YCoordinate value="875"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="940"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="220"/>
+ <YCoordinate value="-180"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="210">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="598"/>
+ <YCoordinate value="861"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="598"/>
+ <YCoordinate value="861"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="541"/>
+ <YCoordinate value="945"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="453"/>
+ <YCoordinate value="-189"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="211">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="457"/>
+ <YCoordinate value="870"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="457"/>
+ <YCoordinate value="870"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="918"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="-176"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="212">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="637"/>
+ <YCoordinate value="901"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="637"/>
+ <YCoordinate value="901"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="554"/>
+ <YCoordinate value="918"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="497"/>
+ <YCoordinate value="-176"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="213">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="545"/>
+ <YCoordinate value="888"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="545"/>
+ <YCoordinate value="888"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="475"/>
+ <YCoordinate value="940"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="404"/>
+ <YCoordinate value="-193"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="214">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="659"/>
+ <YCoordinate value="888"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="659"/>
+ <YCoordinate value="888"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="606"/>
+ <YCoordinate value="927"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="523"/>
+ <YCoordinate value="-154"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="215">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="497"/>
+ <YCoordinate value="896"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="497"/>
+ <YCoordinate value="896"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="391"/>
+ <YCoordinate value="896"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="343"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="216">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="327"/>
+ <YCoordinate value="958"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="327"/>
+ <YCoordinate value="958"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="317"/>
+ <YCoordinate value="978"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="263"/>
+ <YCoordinate value="-129"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="217">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="497"/>
+ <YCoordinate value="914"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="497"/>
+ <YCoordinate value="914"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="391"/>
+ <YCoordinate value="914"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="374"/>
+ <YCoordinate value="-141"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="218">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="760"/>
+ <YCoordinate value="896"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="760"/>
+ <YCoordinate value="896"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="686"/>
+ <YCoordinate value="940"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="602"/>
+ <YCoordinate value="-180"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="219">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="492"/>
+ <YCoordinate value="883"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="492"/>
+ <YCoordinate value="883"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="409"/>
+ <YCoordinate value="918"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="391"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="220">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="918"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="171"/>
+ <YCoordinate value="-110"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="918"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="426"/>
+ <YCoordinate value="940"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="158"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="221">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="584"/>
+ <YCoordinate value="918"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="584"/>
+ <YCoordinate value="918"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="497"/>
+ <YCoordinate value="958"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="378"/>
+ <YCoordinate value="-136"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="222">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="366"/>
+ <YCoordinate value="758"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="396"/>
+ <YCoordinate value="738"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="809"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="268"/>
+ <YCoordinate value="-127"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="223">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="167"/>
+ <YCoordinate value="910"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="167"/>
+ <YCoordinate value="910"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="211"/>
+ <YCoordinate value="984"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="-163"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="224">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="523"/>
+ <YCoordinate value="923"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="523"/>
+ <YCoordinate value="923"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="413"/>
+ <YCoordinate value="927"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="-145"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="225">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="655"/>
+ <YCoordinate value="914"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="655"/>
+ <YCoordinate value="914"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="549"/>
+ <YCoordinate value="945"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="-145"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="226">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="325"/>
+ <YCoordinate value="817"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="325"/>
+ <YCoordinate value="817"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="281"/>
+ <YCoordinate value="883"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="378"/>
+ <YCoordinate value="31"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="227">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="567"/>
+ <YCoordinate value="962"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="567"/>
+ <YCoordinate value="962"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="488"/>
+ <YCoordinate value="984"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="426"/>
+ <YCoordinate value="-40"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="228">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="229"/>
+ <YCoordinate value="760"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="229"/>
+ <YCoordinate value="760"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="229"/>
+ <YCoordinate value="782"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="127"/>
+ <YCoordinate value="-352"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="229">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="391"/>
+ <YCoordinate value="953"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="391"/>
+ <YCoordinate value="953"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="381"/>
+ <YCoordinate value="972"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="258"/>
+ <YCoordinate value="-91"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="230">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="497"/>
+ <YCoordinate value="976"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="497"/>
+ <YCoordinate value="976"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="431"/>
+ <YCoordinate value="1024"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="-31"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="231">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="734"/>
+ <YCoordinate value="923"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="734"/>
+ <YCoordinate value="923"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="677"/>
+ <YCoordinate value="976"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="453"/>
+ <YCoordinate value="-132"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="232">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="831"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="831"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="290"/>
+ <YCoordinate value="870"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="369"/>
+ <YCoordinate value="57"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="233">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="694"/>
+ <YCoordinate value="914"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="250"/>
+ <YCoordinate value="-92"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="694"/>
+ <YCoordinate value="914"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="677"/>
+ <YCoordinate value="967"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="272"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="234">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="1107"/>
+ <YCoordinate value="971"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="1107"/>
+ <YCoordinate value="971"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="558"/>
+ <YCoordinate value="822"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="523"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="235">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="694"/>
+ <YCoordinate value="914"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="-105"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="694"/>
+ <YCoordinate value="914"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="677"/>
+ <YCoordinate value="967"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="272"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="236">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="1103"/>
+ <YCoordinate value="967"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" Format="1">
+ <XCoordinate value="1103"/>
+ <YCoordinate value="967"/>
+ </BaseAnchor>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="549"/>
+ <YCoordinate value="839"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="-145"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="237">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="198"/>
+ <YCoordinate value="844"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="176"/>
+ <YCoordinate value="-189"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="848"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="180"/>
+ <YCoordinate value="-163"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="238">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="593"/>
+ <YCoordinate value="352"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="554"/>
+ <YCoordinate value="804"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="519"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="239">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="215"/>
+ <YCoordinate value="892"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="198"/>
+ <YCoordinate value="-163"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="198"/>
+ <YCoordinate value="835"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="193"/>
+ <YCoordinate value="-163"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="240">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="589"/>
+ <YCoordinate value="347"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="554"/>
+ <YCoordinate value="804"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="241">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="224"/>
+ <YCoordinate value="773"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="185"/>
+ <YCoordinate value="-105"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="237"/>
+ <YCoordinate value="826"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="264"/>
+ <YCoordinate value="-189"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="242">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="426"/>
+ <YCoordinate value="804"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="453"/>
+ <YCoordinate value="-163"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="243">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="716"/>
+ <YCoordinate value="729"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="635"/>
+ <YCoordinate value="-164"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="763"/>
+ <YCoordinate value="677"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="730"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="244">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="277"/>
+ <YCoordinate value="848"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="321"/>
+ <YCoordinate value="-163"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="245">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="466"/>
+ <YCoordinate value="826"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="488"/>
+ <YCoordinate value="-180"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="246">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="866"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="378"/>
+ <YCoordinate value="-141"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="247">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="497"/>
+ <YCoordinate value="760"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="523"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="248">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="294"/>
+ <YCoordinate value="822"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="249">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="295"/>
+ <YCoordinate value="945"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="269"/>
+ <YCoordinate value="-113"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="250">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="773"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="352"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="251">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="589"/>
+ <YCoordinate value="817"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="624"/>
+ <YCoordinate value="-136"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="252">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="822"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="396"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="253">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="189"/>
+ <YCoordinate value="738"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="154"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="202"/>
+ <YCoordinate value="760"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="193"/>
+ <YCoordinate value="-123"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="254">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="330"/>
+ <YCoordinate value="835"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="-123"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="255">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="615"/>
+ <YCoordinate value="734"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="589"/>
+ <YCoordinate value="-110"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="623"/>
+ <YCoordinate value="677"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="553"/>
+ <YCoordinate value="-113"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="256">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="224"/>
+ <YCoordinate value="800"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="202"/>
+ <YCoordinate value="-141"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="257">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="413"/>
+ <YCoordinate value="914"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="400"/>
+ <YCoordinate value="-119"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="258">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="123"/>
+ <YCoordinate value="672"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="347"/>
+ <YCoordinate value="57"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="259">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="374"/>
+ <YCoordinate value="800"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="347"/>
+ <YCoordinate value="-66"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="260">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="44"/>
+ <YCoordinate value="593"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="127"/>
+ <YCoordinate value="-343"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="261">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="285"/>
+ <YCoordinate value="929"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="295"/>
+ <YCoordinate value="-91"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="262">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="290"/>
+ <YCoordinate value="782"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="294"/>
+ <YCoordinate value="-62"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="263">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="505"/>
+ <YCoordinate value="725"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="541"/>
+ <YCoordinate value="861"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="448"/>
+ <YCoordinate value="-110"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="264">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="123"/>
+ <YCoordinate value="615"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="97"/>
+ <YCoordinate value="-426"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="265">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="166"/>
+ <YCoordinate value="586"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="299"/>
+ <YCoordinate value="-9"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="225"/>
+ <YCoordinate value="625"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="317"/>
+ <YCoordinate value="-24"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="266">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="166"/>
+ <YCoordinate value="586"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="62"/>
+ <YCoordinate value="-444"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="225"/>
+ <YCoordinate value="625"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="317"/>
+ <YCoordinate value="24"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="267">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="202"/>
+ <YCoordinate value="439"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="185"/>
+ <YCoordinate value="-92"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="281"/>
+ <YCoordinate value="514"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="244"/>
+ <YCoordinate value="-117"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="268">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="396"/>
+ <YCoordinate value="431"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="382"/>
+ <YCoordinate value="-141"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="269">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="213"/>
+ <YCoordinate value="479"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="352"/>
+ <YCoordinate value="-154"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="270">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="510"/>
+ <YCoordinate value="523"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="409"/>
+ <YCoordinate value="-154"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="271">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="620"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="409"/>
+ <YCoordinate value="9"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="272">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="483"/>
+ <YCoordinate value="628"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="439"/>
+ <YCoordinate value="-44"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="273">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="338"/>
+ <YCoordinate value="567"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="334"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="274">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="247"/>
+ <YCoordinate value="661"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="306"/>
+ <YCoordinate value="-86"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="275">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="321"/>
+ <YCoordinate value="562"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="330"/>
+ <YCoordinate value="-75"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="276">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="642"/>
+ <YCoordinate value="519"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="593"/>
+ <YCoordinate value="-119"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="277">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="152"/>
+ <YCoordinate value="545"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="382"/>
+ <YCoordinate value="-22"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="278">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="202"/>
+ <YCoordinate value="439"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="185"/>
+ <YCoordinate value="-53"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="281"/>
+ <YCoordinate value="514"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="244"/>
+ <YCoordinate value="-117"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="279">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="461"/>
+ <YCoordinate value="532"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="382"/>
+ <YCoordinate value="-154"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="280">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="299"/>
+ <YCoordinate value="505"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="-114"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="281">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="470"/>
+ <YCoordinate value="584"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="439"/>
+ <YCoordinate value="-127"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="282">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="272"/>
+ <YCoordinate value="593"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="426"/>
+ <YCoordinate value="53"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="283">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="444"/>
+ <YCoordinate value="615"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="453"/>
+ <YCoordinate value="-31"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="284">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="602"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="431"/>
+ <YCoordinate value="35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="285">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="381"/>
+ <YCoordinate value="618"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="328"/>
+ <YCoordinate value="-43"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="286">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="545"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="-79"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="287">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="598"/>
+ <YCoordinate value="479"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="637"/>
+ <YCoordinate value="576"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="510"/>
+ <YCoordinate value="-101"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="288">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="290"/>
+ <YCoordinate value="571"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="330"/>
+ <YCoordinate value="-26"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="289">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="237"/>
+ <YCoordinate value="664"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="185"/>
+ <YCoordinate value="-101"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="277"/>
+ <YCoordinate value="650"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="205"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="290">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="293"/>
+ <YCoordinate value="635"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="225"/>
+ <YCoordinate value="-166"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="291">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="237"/>
+ <YCoordinate value="664"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="163"/>
+ <YCoordinate value="-110"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="277"/>
+ <YCoordinate value="650"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="205"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="292">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="293"/>
+ <YCoordinate value="635"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="225"/>
+ <YCoordinate value="-166"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="293">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="224"/>
+ <YCoordinate value="576"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="158"/>
+ <YCoordinate value="-105"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="259"/>
+ <YCoordinate value="635"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="205"/>
+ <YCoordinate value="-166"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="294">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="444"/>
+ <YCoordinate value="338"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="497"/>
+ <YCoordinate value="787"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="426"/>
+ <YCoordinate value="-163"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="295">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="224"/>
+ <YCoordinate value="576"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="171"/>
+ <YCoordinate value="-97"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="259"/>
+ <YCoordinate value="635"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="205"/>
+ <YCoordinate value="-166"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="296">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="145"/>
+ <YCoordinate value="558"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="75"/>
+ <YCoordinate value="-132"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="158"/>
+ <YCoordinate value="558"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="97"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="297">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="189"/>
+ <YCoordinate value="628"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="189"/>
+ <YCoordinate value="-105"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="180"/>
+ <YCoordinate value="624"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="185"/>
+ <YCoordinate value="-185"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="298">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="439"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="215"/>
+ <YCoordinate value="-413"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="431"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="237"/>
+ <YCoordinate value="-435"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="299">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="439"/>
+ <YCoordinate value="417"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="360"/>
+ <YCoordinate value="-439"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="300">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="290"/>
+ <YCoordinate value="387"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="233"/>
+ <YCoordinate value="-439"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="301">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="457"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="439"/>
+ <YCoordinate value="-409"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="302">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="369"/>
+ <YCoordinate value="510"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="400"/>
+ <YCoordinate value="-312"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="303">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="571"/>
+ <YCoordinate value="576"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="536"/>
+ <YCoordinate value="-255"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="304">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="527"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="321"/>
+ <YCoordinate value="-489"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="305">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="349"/>
+ <YCoordinate value="527"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="331"/>
+ <YCoordinate value="-321"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="306">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="321"/>
+ <YCoordinate value="453"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="259"/>
+ <YCoordinate value="-387"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="307">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="593"/>
+ <YCoordinate value="461"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="549"/>
+ <YCoordinate value="-409"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="308">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="334"/>
+ <YCoordinate value="527"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="-321"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="309">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="708"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="255"/>
+ <YCoordinate value="-48"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="413"/>
+ <YCoordinate value="778"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="325"/>
+ <YCoordinate value="-127"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="310">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="479"/>
+ <YCoordinate value="747"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="470"/>
+ <YCoordinate value="-136"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="311">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="417"/>
+ <YCoordinate value="743"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="330"/>
+ <YCoordinate value="-132"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="312">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="549"/>
+ <YCoordinate value="839"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="541"/>
+ <YCoordinate value="-141"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="313">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="448"/>
+ <YCoordinate value="896"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="475"/>
+ <YCoordinate value="26"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="314">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="576"/>
+ <YCoordinate value="870"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="545"/>
+ <YCoordinate value="-18"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="315">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="426"/>
+ <YCoordinate value="883"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="470"/>
+ <YCoordinate value="-4"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="316">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="500"/>
+ <YCoordinate value="854"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="403"/>
+ <YCoordinate value="-81"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="317">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="409"/>
+ <YCoordinate value="817"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="334"/>
+ <YCoordinate value="-75"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="318">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="690"/>
+ <YCoordinate value="782"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="589"/>
+ <YCoordinate value="-101"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="319">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="426"/>
+ <YCoordinate value="857"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="409"/>
+ <YCoordinate value="-4"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="320">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="163"/>
+ <YCoordinate value="369"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="127"/>
+ <YCoordinate value="-193"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="189"/>
+ <YCoordinate value="374"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="198"/>
+ <YCoordinate value="-237"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="321">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="220"/>
+ <YCoordinate value="554"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="250"/>
+ <YCoordinate value="-281"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="571"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="-347"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="322">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="479"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="347"/>
+ <YCoordinate value="-378"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="323">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="549"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="343"/>
+ <YCoordinate value="-347"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="324">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="387"/>
+ <YCoordinate value="593"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="-365"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="325">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="694"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="501"/>
+ <YCoordinate value="-189"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="326">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="466"/>
+ <YCoordinate value="677"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="479"/>
+ <YCoordinate value="-176"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="327">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="299"/>
+ <YCoordinate value="637"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="347"/>
+ <YCoordinate value="-242"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="328">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="474"/>
+ <YCoordinate value="684"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="505"/>
+ <YCoordinate value="-204"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="329">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="330"/>
+ <YCoordinate value="593"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="316"/>
+ <YCoordinate value="-290"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="330">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="558"/>
+ <YCoordinate value="593"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="549"/>
+ <YCoordinate value="-294"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="331">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="343"/>
+ <YCoordinate value="650"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="374"/>
+ <YCoordinate value="-237"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="332">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="461"/>
+ <YCoordinate value="751"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="365"/>
+ <YCoordinate value="-105"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="541"/>
+ <YCoordinate value="751"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="386"/>
+ <YCoordinate value="-181"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="333">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="686"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="387"/>
+ <YCoordinate value="-123"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="475"/>
+ <YCoordinate value="642"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="386"/>
+ <YCoordinate value="-176"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="334">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="690"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="-101"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="343"/>
+ <YCoordinate value="686"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="268"/>
+ <YCoordinate value="-154"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="335">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="448"/>
+ <YCoordinate value="633"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="475"/>
+ <YCoordinate value="-154"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="336">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="664"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="369"/>
+ <YCoordinate value="-154"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="337">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="501"/>
+ <YCoordinate value="646"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="461"/>
+ <YCoordinate value="-154"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="338">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="299"/>
+ <YCoordinate value="747"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="435"/>
+ <YCoordinate value="-18"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="339">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="483"/>
+ <YCoordinate value="809"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="584"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="340">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="330"/>
+ <YCoordinate value="743"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="453"/>
+ <YCoordinate value="-31"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="341">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="376"/>
+ <YCoordinate value="806"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="354"/>
+ <YCoordinate value="-129"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="342">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="343"/>
+ <YCoordinate value="677"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="400"/>
+ <YCoordinate value="-119"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="343">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="470"/>
+ <YCoordinate value="633"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="536"/>
+ <YCoordinate value="-149"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="344">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" empty="1"/>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="264"/>
+ <YCoordinate value="672"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="422"/>
+ <YCoordinate value="-88"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="345">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="386"/>
+ <YCoordinate value="606"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="224"/>
+ <YCoordinate value="-92"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="396"/>
+ <YCoordinate value="633"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="288"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="346">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="386"/>
+ <YCoordinate value="606"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="250"/>
+ <YCoordinate value="-101"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="396"/>
+ <YCoordinate value="633"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="288"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="347">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="620"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="259"/>
+ <YCoordinate value="-97"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="321"/>
+ <YCoordinate value="681"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="-141"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="348">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="176"/>
+ <YCoordinate value="665"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="536"/>
+ <YCoordinate value="-136"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="536"/>
+ <YCoordinate value="822"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="488"/>
+ <YCoordinate value="-171"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="349">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="281"/>
+ <YCoordinate value="606"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="233"/>
+ <YCoordinate value="-101"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="277"/>
+ <YCoordinate value="681"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="308"/>
+ <YCoordinate value="-141"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="350">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="176"/>
+ <YCoordinate value="665"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="510"/>
+ <YCoordinate value="-136"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="523"/>
+ <YCoordinate value="813"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="426"/>
+ <YCoordinate value="-163"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="351">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="-119"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="312"/>
+ <YCoordinate value="672"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="277"/>
+ <YCoordinate value="-163"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="352">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="176"/>
+ <YCoordinate value="665"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="466"/>
+ <YCoordinate value="-141"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="554"/>
+ <YCoordinate value="835"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="413"/>
+ <YCoordinate value="-158"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="353">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="281"/>
+ <YCoordinate value="659"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="483"/>
+ <YCoordinate value="-119"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="360"/>
+ <YCoordinate value="712"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="549"/>
+ <YCoordinate value="-185"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="354">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="567"/>
+ <YCoordinate value="628"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="514"/>
+ <YCoordinate value="-127"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="549"/>
+ <YCoordinate value="650"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="541"/>
+ <YCoordinate value="-185"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="355">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="145"/>
+ <YCoordinate value="558"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="75"/>
+ <YCoordinate value="-132"/>
+ </BaseAnchor>
+ <BaseAnchor index="2" empty="1"/>
+ <BaseAnchor index="3" Format="1">
+ <XCoordinate value="158"/>
+ <YCoordinate value="558"/>
+ </BaseAnchor>
+ <BaseAnchor index="4" Format="1">
+ <XCoordinate value="97"/>
+ <YCoordinate value="-167"/>
+ </BaseAnchor>
+ </BaseRecord>
+ </BaseArray>
+ </MarkBasePos>
+ </Lookup>
+ <Lookup index="3">
+ <LookupType value="8"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <ChainContextPos index="0" Format="2">
+ <Coverage>
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="threedotsdownbelow-ar"/>
+ </Coverage>
+ <BacktrackClassDef>
+ <ClassDef glyph="behDotless-ar.init.ascend" class="5"/>
+ <ClassDef glyph="behDotless-ar.init.feh" class="4"/>
+ <ClassDef glyph="behDotless-ar.medi" class="3"/>
+ <ClassDef glyph="behDotless-ar.medi.high" class="2"/>
+ <ClassDef glyph="hah-ar.init" class="1"/>
+ </BacktrackClassDef>
+ <InputClassDef>
+ <ClassDef glyph="dotbelow-ar" class="1"/>
+ <ClassDef glyph="threedotsdownbelow-ar" class="1"/>
+ <ClassDef glyph="twodotshorizontalbelow-ar" class="1"/>
+ </InputClassDef>
+ <LookAheadClassDef>
+ <ClassDef glyph="behDotless-ar.medi.ragaa" class="3"/>
+ <ClassDef glyph="fehDotless-ar.medi.ragaa" class="2"/>
+ <ClassDef glyph="kaf-ar.medi.ragaa" class="1"/>
+ <ClassDef glyph="lam-ar.medi.ragaa" class="1"/>
+ </LookAheadClassDef>
+ <!-- ChainPosClassSetCount=2 -->
+ <ChainPosClassSet index="0">
+ <!-- ChainPosClassRuleCount=0 -->
+ </ChainPosClassSet>
+ <ChainPosClassSet index="1">
+ <!-- ChainPosClassRuleCount=8 -->
+ <ChainPosClassRule index="0">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="5"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="3"/>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="4"/>
+ </PosLookupRecord>
+ </ChainPosClassRule>
+ <ChainPosClassRule index="1">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="5"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="5"/>
+ </PosLookupRecord>
+ </ChainPosClassRule>
+ <ChainPosClassRule index="2">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="2"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="3"/>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="6"/>
+ </PosLookupRecord>
+ </ChainPosClassRule>
+ <ChainPosClassRule index="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="3"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="3"/>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="7"/>
+ </PosLookupRecord>
+ </ChainPosClassRule>
+ <ChainPosClassRule index="4">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="3"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="6"/>
+ </PosLookupRecord>
+ </ChainPosClassRule>
+ <ChainPosClassRule index="5">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="4"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="2"/>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="8"/>
+ </PosLookupRecord>
+ </ChainPosClassRule>
+ <ChainPosClassRule index="6">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="1"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="3"/>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="9"/>
+ </PosLookupRecord>
+ </ChainPosClassRule>
+ <ChainPosClassRule index="7">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="1"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="6"/>
+ </PosLookupRecord>
+ </ChainPosClassRule>
+ </ChainPosClassSet>
+ </ChainContextPos>
+ </Lookup>
+ <Lookup index="4">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="threedotsdownbelow-ar"/>
+ </Coverage>
+ <ValueFormat value="3"/>
+ <Value XPlacement="98" YPlacement="-146"/>
+ </SinglePos>
+ </Lookup>
+ <Lookup index="5">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="threedotsdownbelow-ar"/>
+ </Coverage>
+ <ValueFormat value="2"/>
+ <Value YPlacement="-186"/>
+ </SinglePos>
+ </Lookup>
+ <Lookup index="6">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="threedotsdownbelow-ar"/>
+ </Coverage>
+ <ValueFormat value="2"/>
+ <Value YPlacement="-146"/>
+ </SinglePos>
+ </Lookup>
+ <Lookup index="7">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="threedotsdownbelow-ar"/>
+ </Coverage>
+ <ValueFormat value="3"/>
+ <Value XPlacement="42" YPlacement="-146"/>
+ </SinglePos>
+ </Lookup>
+ <Lookup index="8">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="threedotsdownbelow-ar"/>
+ </Coverage>
+ <ValueFormat value="2"/>
+ <Value YPlacement="-73"/>
+ </SinglePos>
+ </Lookup>
+ <Lookup index="9">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="threedotsdownbelow-ar"/>
+ </Coverage>
+ <ValueFormat value="3"/>
+ <Value XPlacement="24" YPlacement="-122"/>
+ </SinglePos>
+ </Lookup>
+ <Lookup index="10">
+ <LookupType value="6"/>
+ <LookupFlag value="16"/><!-- useMarkFilteringSet -->
+ <!-- SubTableCount=1 -->
+ <MarkMarkPos index="0" Format="1">
+ <Mark1Coverage>
+ <Glyph value="alefbelow-ar"/>
+ <Glyph value="kasratan-ar"/>
+ <Glyph value="kasra-ar"/>
+ </Mark1Coverage>
+ <Mark2Coverage>
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="threedotsdownbelow-ar"/>
+ <Glyph value="hamzabelow-ar"/>
+ <Glyph value="shadda-ar"/>
+ </Mark2Coverage>
+ <!-- ClassCount=1 -->
+ <Mark1Array>
+ <!-- MarkCount=3 -->
+ <MarkRecord index="0">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="98"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="1">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="2">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ </Mark1Array>
+ <Mark2Array>
+ <!-- Mark2Count=5 -->
+ <Mark2Record index="0">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="-249"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ <Mark2Record index="1">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="-215"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ <Mark2Record index="2">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="-225"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ <Mark2Record index="3">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="-192"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ <Mark2Record index="4">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="-5"/>
+ <YCoordinate value="-195"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ </Mark2Array>
+ </MarkMarkPos>
+ <MarkFilteringSet value="1"/>
+ </Lookup>
+ <Lookup index="11">
+ <LookupType value="6"/>
+ <LookupFlag value="16"/><!-- useMarkFilteringSet -->
+ <!-- SubTableCount=1 -->
+ <MarkMarkPos index="0" Format="1">
+ <Mark1Coverage>
+ <Glyph value="alefabove-ar"/>
+ <Glyph value="fathatan-ar"/>
+ <Glyph value="dammatan-ar"/>
+ <Glyph value="fatha-ar"/>
+ <Glyph value="damma-ar"/>
+ <Glyph value="shadda-ar"/>
+ <Glyph value="sukun-ar"/>
+ <Glyph value="sukun-ar.alt"/>
+ <Glyph value="madda-ar"/>
+ <Glyph value="noonghunnaabove-ar"/>
+ <Glyph value="dammainverted-ar"/>
+ <Glyph value="dammainverted-ar.urd"/>
+ <Glyph value="opendammatan-ar"/>
+ </Mark1Coverage>
+ <Mark2Coverage>
+ <Glyph value="dotabove-ar"/>
+ <Glyph value="twodotshorizontalabove-ar"/>
+ <Glyph value="threedotsupabove-ar"/>
+ <Glyph value="gafsarkashabove-ar"/>
+ <Glyph value="hamzaabove-ar"/>
+ <Glyph value="fatha-ar"/>
+ <Glyph value="shadda-ar"/>
+ </Mark2Coverage>
+ <!-- ClassCount=1 -->
+ <Mark1Array>
+ <!-- MarkCount=13 -->
+ <MarkRecord index="0">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="1">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="2">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="3">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="4">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="5">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="6">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="7">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="8">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="9">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="10">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="11">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="12">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ </Mark1Array>
+ <Mark2Array>
+ <!-- Mark2Count=7 -->
+ <Mark2Record index="0">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="2"/>
+ <YCoordinate value="195"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ <Mark2Record index="1">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="35"/>
+ <YCoordinate value="244"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ <Mark2Record index="2">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="49"/>
+ <YCoordinate value="293"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ <Mark2Record index="3">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="195"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ <Mark2Record index="4">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="239"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ <Mark2Record index="5">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="-20"/>
+ <YCoordinate value="122"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ <Mark2Record index="6">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="-10"/>
+ <YCoordinate value="171"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ </Mark2Array>
+ </MarkMarkPos>
+ <MarkFilteringSet value="2"/>
+ </Lookup>
+ <Lookup index="12">
+ <LookupType value="2"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <PairPos index="0" Format="1">
+ <Coverage>
+ <Glyph value="alef-ar.fina"/>
+ <Glyph value="alef-ar.fina.lam"/>
+ </Coverage>
+ <ValueFormat1 value="5"/>
+ <ValueFormat2 value="0"/>
+ <!-- PairSetCount=2 -->
+ <PairSet index="0">
+ <!-- PairValueCount=1 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="hah-ar"/>
+ <Value1 XPlacement="-193" XAdvance="-193"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="1">
+ <!-- PairValueCount=1 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="hah-ar"/>
+ <Value1 XPlacement="-195" XAdvance="-195"/>
+ </PairValueRecord>
+ </PairSet>
+ </PairPos>
+ </Lookup>
+ <Lookup index="13">
+ <LookupType value="8"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=27 -->
+ <ChainContextPos index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="hah-ar"/>
+ <Glyph value="hah-ar.init.meem"/>
+ <Glyph value="seen-ar"/>
+ <Glyph value="sad-ar"/>
+ <Glyph value="ain-ar"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="14"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="1" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="alef-ar"/>
+ <Glyph value="meem-ar"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="15"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="2" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=2 -->
+ <InputCoverage index="0">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </InputCoverage>
+ <InputCoverage index="1">
+ <Glyph value="heh-ar"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- PosCount=2 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="15"/>
+ </PosLookupRecord>
+ <PosLookupRecord index="1">
+ <SequenceIndex value="1"/>
+ <LookupListIndex value="14"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="3" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=2 -->
+ <InputCoverage index="0">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </InputCoverage>
+ <InputCoverage index="1">
+ <Glyph value="tah-ar"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- PosCount=2 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="16"/>
+ </PosLookupRecord>
+ <PosLookupRecord index="1">
+ <SequenceIndex value="1"/>
+ <LookupListIndex value="14"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="4" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=2 -->
+ <InputCoverage index="0">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </InputCoverage>
+ <InputCoverage index="1">
+ <Glyph value="qafDotless-ar"/>
+ <Glyph value="qaf-ar"/>
+ <Glyph value="noon-ar"/>
+ <Glyph value="noonghunna-ar"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- PosCount=2 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="17"/>
+ </PosLookupRecord>
+ <PosLookupRecord index="1">
+ <SequenceIndex value="1"/>
+ <LookupListIndex value="14"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="5" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=3 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="sad-ar.init"/>
+ </LookAheadCoverage>
+ <LookAheadCoverage index="1">
+ <Glyph value="behDotless-ar.medi.sad"/>
+ </LookAheadCoverage>
+ <LookAheadCoverage index="2">
+ <Glyph value="tah-ar.fina"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="18"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="6" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=2 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="sad-ar.init"/>
+ </LookAheadCoverage>
+ <LookAheadCoverage index="1">
+ <Glyph value="alef-ar.fina"/>
+ <Glyph value="behDotless-ar.fina"/>
+ <Glyph value="kaf-ar.fina"/>
+ <Glyph value="lam-ar.medi.alef"/>
+ <Glyph value="heh-ar.fina"/>
+ <Glyph value="hehgoal-ar.fina"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="18"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="7" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=2 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="heh-ar.init"/>
+ </LookAheadCoverage>
+ <LookAheadCoverage index="1">
+ <Glyph value="alef-ar.fina"/>
+ <Glyph value="behDotless-ar.fina"/>
+ <Glyph value="kaf-ar.fina"/>
+ <Glyph value="lam-ar.medi.alef"/>
+ <Glyph value="heh-ar.fina"/>
+ <Glyph value="hehgoal-ar.fina"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="19"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="8" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="sad-ar.init"/>
+ <Glyph value="sad-ar.init.ain"/>
+ <Glyph value="ain-ar.init.yeh"/>
+ <Glyph value="kaf-ar.init.alef"/>
+ <Glyph value="heh-ar.init"/>
+ <Glyph value="heh-ar.init.meem"/>
+ <Glyph value="heh-ar.init.yeh"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="20"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="9" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="behDotless-ar"/>
+ <Glyph value="fehDotless-ar"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="21"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="10" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="alef-ar.fina.lam"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="behDotless-ar"/>
+ <Glyph value="fehDotless-ar"/>
+ <Glyph value="qafDotless-ar"/>
+ <Glyph value="qaf-ar"/>
+ <Glyph value="noon-ar"/>
+ <Glyph value="noonghunna-ar"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="14"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="11" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=3 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="lam-ar.init.sad"/>
+ </LookAheadCoverage>
+ <LookAheadCoverage index="1">
+ <Glyph value="sad-ar.medi.heh"/>
+ </LookAheadCoverage>
+ <LookAheadCoverage index="2">
+ <Glyph value="heh-ar.medi"/>
+ </LookAheadCoverage>
+ <!-- PosCount=0 -->
+ </ChainContextPos>
+ <ChainContextPos index="12" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="lam-ar.init.alef"/>
+ <Glyph value="lam-ar.init.dal"/>
+ <Glyph value="lam-ar.init.heh"/>
+ <Glyph value="lam-ar.init.meem"/>
+ <Glyph value="lam-ar.init.reh"/>
+ <Glyph value="lam-ar.init.sad"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="15"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="13" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="lam-ar.init.alef"/>
+ <Glyph value="lam-ar.init.dal"/>
+ <Glyph value="lam-ar.init.heh"/>
+ <Glyph value="lam-ar.init.meem"/>
+ <Glyph value="lam-ar.init.reh"/>
+ <Glyph value="lam-ar.init.sad"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="22"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="14" Format="3">
+ <!-- BacktrackGlyphCount=3 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="meem-ar.medi"/>
+ </BacktrackCoverage>
+ <BacktrackCoverage index="1">
+ <Glyph value="lam-ar.init.meem"/>
+ </BacktrackCoverage>
+ <BacktrackCoverage index="2">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="alef-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="14"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="15" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=2 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="lam-ar.init"/>
+ </LookAheadCoverage>
+ <LookAheadCoverage index="1">
+ <Glyph value="alef-ar.fina"/>
+ <Glyph value="behDotless-ar.fina"/>
+ <Glyph value="kaf-ar.fina"/>
+ <Glyph value="lam-ar.medi.alef"/>
+ <Glyph value="heh-ar.fina"/>
+ <Glyph value="hehgoal-ar.fina"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="19"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="16" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="lam-ar.init"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="14"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="17" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="lam-ar.init"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="15"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="18" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="lam-ar.init.ragaa"/>
+ <Glyph value="lam-ar.init.yeh"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="22"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="19" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="lam-ar.init.ragaa"/>
+ <Glyph value="lam-ar.init.yeh"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="21"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="20" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="lam-ar"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="23"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="21" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="lam-ar"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="19"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="22" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="fehDotless-ar.init.ain"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="23"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="23" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="ain-ar.init"/>
+ <Glyph value="fehDotless-ar.init"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="kaf-ar.init.alef.loop"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="14"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="24" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="alef-ar"/>
+ <Glyph value="alef-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=2 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="lam-ar.init.hah"/>
+ </LookAheadCoverage>
+ <LookAheadCoverage index="1">
+ <Glyph value="hah-ar.fina"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="15"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="25" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="alef-ar"/>
+ <Glyph value="alef-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="lam-ar.init.hah"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="16"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="26" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="alefMaksura-ar.fina"/>
+ <Glyph value="alefMaksura-ar.fina.jalt"/>
+ <Glyph value="alefMaksura-ar.fina.yeh"/>
+ <Glyph value="alefMaksura-ar.fina.yeh.jalt"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="hamza-ar"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="14"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ </Lookup>
+ <Lookup index="14">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=3 -->
+ <SinglePos index="0" Format="2">
+ <Coverage>
+ <Glyph value="hamza-ar"/>
+ <Glyph value="alef-ar.fina"/>
+ <Glyph value="tah-ar"/>
+ <Glyph value="qafDotless-ar"/>
+ <Glyph value="qaf-ar"/>
+ <Glyph value="noon-ar"/>
+ <Glyph value="noonghunna-ar"/>
+ <Glyph value="heh-ar"/>
+ </Coverage>
+ <ValueFormat value="2"/>
+ <!-- ValueCount=8 -->
+ <Value index="0" YPlacement="195"/>
+ <Value index="1" YPlacement="98"/>
+ <Value index="2" YPlacement="215"/>
+ <Value index="3" YPlacement="85"/>
+ <Value index="4" YPlacement="85"/>
+ <Value index="5" YPlacement="85"/>
+ <Value index="6" YPlacement="85"/>
+ <Value index="7" YPlacement="146"/>
+ </SinglePos>
+ <SinglePos index="1" Format="1">
+ <Coverage>
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </Coverage>
+ <ValueFormat value="5"/>
+ <Value XPlacement="-244" XAdvance="-244"/>
+ </SinglePos>
+ <SinglePos index="2" Format="2">
+ <Coverage>
+ <Glyph value="alef-ar.fina.lam"/>
+ <Glyph value="ain-ar.init"/>
+ <Glyph value="fehDotless-ar.init"/>
+ </Coverage>
+ <ValueFormat value="5"/>
+ <!-- ValueCount=3 -->
+ <Value index="0" XPlacement="-98" XAdvance="-98"/>
+ <Value index="1" XPlacement="59" XAdvance="59"/>
+ <Value index="2" XPlacement="59" XAdvance="59"/>
+ </SinglePos>
+ </Lookup>
+ <Lookup index="15">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=2 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </Coverage>
+ <ValueFormat value="5"/>
+ <Value XPlacement="-146" XAdvance="-146"/>
+ </SinglePos>
+ <SinglePos index="1" Format="1">
+ <Coverage>
+ <Glyph value="alef-ar"/>
+ <Glyph value="alef-ar.fina"/>
+ </Coverage>
+ <ValueFormat value="5"/>
+ <Value XPlacement="98" XAdvance="98"/>
+ </SinglePos>
+ </Lookup>
+ <Lookup index="16">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=2 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </Coverage>
+ <ValueFormat value="5"/>
+ <Value XPlacement="-264" XAdvance="-264"/>
+ </SinglePos>
+ <SinglePos index="1" Format="1">
+ <Coverage>
+ <Glyph value="alef-ar"/>
+ <Glyph value="alef-ar.fina"/>
+ </Coverage>
+ <ValueFormat value="5"/>
+ <Value XPlacement="49" XAdvance="49"/>
+ </SinglePos>
+ </Lookup>
+ <Lookup index="17">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </Coverage>
+ <ValueFormat value="5"/>
+ <Value XPlacement="-134" XAdvance="-134"/>
+ </SinglePos>
+ </Lookup>
+ <Lookup index="18">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </Coverage>
+ <ValueFormat value="5"/>
+ <Value XPlacement="-37" XAdvance="-37"/>
+ </SinglePos>
+ </Lookup>
+ <Lookup index="19">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </Coverage>
+ <ValueFormat value="5"/>
+ <Value XPlacement="-49" XAdvance="-49"/>
+ </SinglePos>
+ </Lookup>
+ <Lookup index="20">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </Coverage>
+ <ValueFormat value="5"/>
+ <Value XPlacement="-195" XAdvance="-195"/>
+ </SinglePos>
+ </Lookup>
+ <Lookup index="21">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </Coverage>
+ <ValueFormat value="5"/>
+ <Value XPlacement="-73" XAdvance="-73"/>
+ </SinglePos>
+ </Lookup>
+ <Lookup index="22">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=2 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </Coverage>
+ <ValueFormat value="5"/>
+ <Value XPlacement="-122" XAdvance="-122"/>
+ </SinglePos>
+ <SinglePos index="1" Format="1">
+ <Coverage>
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ </Coverage>
+ <ValueFormat value="5"/>
+ <Value XPlacement="-98" XAdvance="-98"/>
+ </SinglePos>
+ </Lookup>
+ <Lookup index="23">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ </Coverage>
+ <ValueFormat value="5"/>
+ <Value XPlacement="-98" XAdvance="-98"/>
+ </SinglePos>
+ </Lookup>
+ <Lookup index="24">
+ <LookupType value="2"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <PairPos index="0" Format="1">
+ <Coverage>
+ <Glyph value="r"/>
+ </Coverage>
+ <ValueFormat1 value="4"/>
+ <ValueFormat2 value="0"/>
+ <!-- PairSetCount=1 -->
+ <PairSet index="0">
+ <!-- PairValueCount=26 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="a"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="aacute"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="acircumflex"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="adieresis"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="agrave"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="aring"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="atilde"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="ae"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="c"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="ccedilla"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="d"/>
+ <Value1 XAdvance="-26"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="e"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="eacute"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="13">
+ <SecondGlyph value="ecircumflex"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="14">
+ <SecondGlyph value="edieresis"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="15">
+ <SecondGlyph value="egrave"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="16">
+ <SecondGlyph value="g"/>
+ <Value1 XAdvance="-26"/>
+ </PairValueRecord>
+ <PairValueRecord index="17">
+ <SecondGlyph value="o"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="18">
+ <SecondGlyph value="oacute"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="19">
+ <SecondGlyph value="ocircumflex"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="20">
+ <SecondGlyph value="odieresis"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="21">
+ <SecondGlyph value="ograve"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="22">
+ <SecondGlyph value="oslash"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="23">
+ <SecondGlyph value="otilde"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="24">
+ <SecondGlyph value="oe"/>
+ <Value1 XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="25">
+ <SecondGlyph value="q"/>
+ <Value1 XAdvance="-26"/>
+ </PairValueRecord>
+ </PairSet>
+ </PairPos>
+ </Lookup>
+ <Lookup index="25">
+ <LookupType value="4"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <MarkBasePos index="0" Format="1">
+ <MarkCoverage>
+ <Glyph value="dieresiscomb"/>
+ <Glyph value="gravecomb"/>
+ <Glyph value="acutecomb"/>
+ <Glyph value="circumflexcomb"/>
+ <Glyph value="ringcomb"/>
+ <Glyph value="tildecomb"/>
+ <Glyph value="macroncomb"/>
+ <Glyph value="cedillacomb"/>
+ </MarkCoverage>
+ <BaseCoverage>
+ <Glyph value="A"/>
+ <Glyph value="Aacute"/>
+ <Glyph value="Acircumflex"/>
+ <Glyph value="Adieresis"/>
+ <Glyph value="Agrave"/>
+ <Glyph value="Aring"/>
+ <Glyph value="Atilde"/>
+ <Glyph value="C"/>
+ <Glyph value="Ccedilla"/>
+ <Glyph value="E"/>
+ <Glyph value="Eacute"/>
+ <Glyph value="Ecircumflex"/>
+ <Glyph value="Edieresis"/>
+ <Glyph value="Egrave"/>
+ <Glyph value="I"/>
+ <Glyph value="Iacute"/>
+ <Glyph value="Icircumflex"/>
+ <Glyph value="Idieresis"/>
+ <Glyph value="Igrave"/>
+ <Glyph value="N"/>
+ <Glyph value="Ntilde"/>
+ <Glyph value="O"/>
+ <Glyph value="Oacute"/>
+ <Glyph value="Ocircumflex"/>
+ <Glyph value="Odieresis"/>
+ <Glyph value="Ograve"/>
+ <Glyph value="Oslash"/>
+ <Glyph value="Otilde"/>
+ <Glyph value="U"/>
+ <Glyph value="Uacute"/>
+ <Glyph value="Ucircumflex"/>
+ <Glyph value="Udieresis"/>
+ <Glyph value="Ugrave"/>
+ <Glyph value="Y"/>
+ <Glyph value="Yacute"/>
+ <Glyph value="a"/>
+ <Glyph value="aacute"/>
+ <Glyph value="acircumflex"/>
+ <Glyph value="adieresis"/>
+ <Glyph value="agrave"/>
+ <Glyph value="aring"/>
+ <Glyph value="atilde"/>
+ <Glyph value="c"/>
+ <Glyph value="ccedilla"/>
+ <Glyph value="e"/>
+ <Glyph value="eacute"/>
+ <Glyph value="ecircumflex"/>
+ <Glyph value="edieresis"/>
+ <Glyph value="egrave"/>
+ <Glyph value="dotlessi"/>
+ <Glyph value="iacute"/>
+ <Glyph value="icircumflex"/>
+ <Glyph value="idieresis"/>
+ <Glyph value="igrave"/>
+ <Glyph value="n"/>
+ <Glyph value="ntilde"/>
+ <Glyph value="o"/>
+ <Glyph value="oacute"/>
+ <Glyph value="ocircumflex"/>
+ <Glyph value="odieresis"/>
+ <Glyph value="ograve"/>
+ <Glyph value="oslash"/>
+ <Glyph value="otilde"/>
+ <Glyph value="u"/>
+ <Glyph value="uacute"/>
+ <Glyph value="ucircumflex"/>
+ <Glyph value="udieresis"/>
+ <Glyph value="ugrave"/>
+ <Glyph value="y"/>
+ <Glyph value="yacute"/>
+ <Glyph value="ydieresis"/>
+ </BaseCoverage>
+ <!-- ClassCount=2 -->
+ <MarkArray>
+ <!-- MarkCount=8 -->
+ <MarkRecord index="0">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="462"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="1">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="462"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="2">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="462"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="3">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="462"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="4">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="462"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="5">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="462"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="6">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="462"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="7">
+ <Class value="1"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ </MarkArray>
+ <BaseArray>
+ <!-- BaseCount=71 -->
+ <BaseRecord index="0">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="352"/>
+ <YCoordinate value="680"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="331"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="1">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="402"/>
+ <YCoordinate value="918"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="331"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="2">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="352"/>
+ <YCoordinate value="910"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="331"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="3">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="352"/>
+ <YCoordinate value="680"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="331"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="4">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="352"/>
+ <YCoordinate value="919"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="331"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="5">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="372"/>
+ <YCoordinate value="850"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="331"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="6">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="352"/>
+ <YCoordinate value="860"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="331"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="7">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="317"/>
+ <YCoordinate value="683"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="357"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="8">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="317"/>
+ <YCoordinate value="683"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="357"/>
+ <YCoordinate value="-259"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="9">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="270"/>
+ <YCoordinate value="683"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="259"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="10">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="270"/>
+ <YCoordinate value="921"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="259"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="11">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="270"/>
+ <YCoordinate value="913"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="259"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="12">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="270"/>
+ <YCoordinate value="683"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="259"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="13">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="270"/>
+ <YCoordinate value="922"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="259"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="14">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="137"/>
+ <YCoordinate value="683"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="141"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="15">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="137"/>
+ <YCoordinate value="921"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="141"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="16">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="137"/>
+ <YCoordinate value="913"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="141"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="17">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="137"/>
+ <YCoordinate value="874"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="141"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="18">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="137"/>
+ <YCoordinate value="922"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="141"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="19">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="395"/>
+ <YCoordinate value="683"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="366"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="20">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="395"/>
+ <YCoordinate value="863"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="366"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="21">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="381"/>
+ <YCoordinate value="693"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="369"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="22">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="442"/>
+ <YCoordinate value="954"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="369"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="23">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="381"/>
+ <YCoordinate value="923"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="369"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="24">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="381"/>
+ <YCoordinate value="693"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="369"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="25">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="381"/>
+ <YCoordinate value="932"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="369"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="26">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="381"/>
+ <YCoordinate value="693"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="369"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="27">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="381"/>
+ <YCoordinate value="873"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="369"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="28">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="367"/>
+ <YCoordinate value="683"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="29">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="367"/>
+ <YCoordinate value="921"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="30">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="367"/>
+ <YCoordinate value="913"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="31">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="367"/>
+ <YCoordinate value="683"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="32">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="367"/>
+ <YCoordinate value="922"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="33">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="336"/>
+ <YCoordinate value="683"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="296"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="34">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="336"/>
+ <YCoordinate value="921"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="296"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="35">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="274"/>
+ <YCoordinate value="500"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="274"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="36">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="274"/>
+ <YCoordinate value="738"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="274"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="37">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="274"/>
+ <YCoordinate value="730"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="274"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="38">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="274"/>
+ <YCoordinate value="500"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="274"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="39">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="274"/>
+ <YCoordinate value="739"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="274"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="40">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="274"/>
+ <YCoordinate value="710"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="274"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="41">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="274"/>
+ <YCoordinate value="680"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="274"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="42">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="232"/>
+ <YCoordinate value="462"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="252"/>
+ <YCoordinate value="-10"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="43">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="232"/>
+ <YCoordinate value="462"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="252"/>
+ <YCoordinate value="-269"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="44">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="256"/>
+ <YCoordinate value="462"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="236"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="45">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="239"/>
+ <YCoordinate value="750"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="236"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="46">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="239"/>
+ <YCoordinate value="742"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="236"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="47">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="256"/>
+ <YCoordinate value="462"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="236"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="48">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="239"/>
+ <YCoordinate value="752"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="236"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="49">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="130"/>
+ <YCoordinate value="462"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="165"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="50">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="164"/>
+ <YCoordinate value="743"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="165"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="51">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="112"/>
+ <YCoordinate value="743"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="165"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="52">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="130"/>
+ <YCoordinate value="462"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="165"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="53">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="60"/>
+ <YCoordinate value="744"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="165"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="54">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="317"/>
+ <YCoordinate value="462"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="317"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="55">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="317"/>
+ <YCoordinate value="642"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="317"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="56">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="269"/>
+ <YCoordinate value="462"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="269"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="57">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="251"/>
+ <YCoordinate value="730"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="269"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="58">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="251"/>
+ <YCoordinate value="736"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="269"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="59">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="269"/>
+ <YCoordinate value="462"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="269"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="60">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="251"/>
+ <YCoordinate value="731"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="269"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="61">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="269"/>
+ <YCoordinate value="462"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="269"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="62">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="269"/>
+ <YCoordinate value="642"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="269"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="63">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="319"/>
+ <YCoordinate value="462"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="319"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="64">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="327"/>
+ <YCoordinate value="740"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="319"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="65">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="317"/>
+ <YCoordinate value="742"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="319"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="66">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="319"/>
+ <YCoordinate value="462"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="319"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="67">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="317"/>
+ <YCoordinate value="741"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="319"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="68">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="277"/>
+ <YCoordinate value="462"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="277"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="69">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="326"/>
+ <YCoordinate value="735"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="277"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="70">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="277"/>
+ <YCoordinate value="462"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="277"/>
+ <YCoordinate value="0"/>
+ </BaseAnchor>
+ </BaseRecord>
+ </BaseArray>
+ </MarkBasePos>
+ </Lookup>
+ <Lookup index="26">
+ <LookupType value="6"/>
+ <LookupFlag value="16"/><!-- useMarkFilteringSet -->
+ <!-- SubTableCount=1 -->
+ <MarkMarkPos index="0" Format="1">
+ <Mark1Coverage>
+ <Glyph value="cedillacomb"/>
+ </Mark1Coverage>
+ <Mark2Coverage>
+ <Glyph value="cedillacomb"/>
+ </Mark2Coverage>
+ <!-- ClassCount=1 -->
+ <Mark1Array>
+ <!-- MarkCount=1 -->
+ <MarkRecord index="0">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ </Mark1Array>
+ <Mark2Array>
+ <!-- Mark2Count=1 -->
+ <Mark2Record index="0">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="-259"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ </Mark2Array>
+ </MarkMarkPos>
+ <MarkFilteringSet value="3"/>
+ </Lookup>
+ <Lookup index="27">
+ <LookupType value="6"/>
+ <LookupFlag value="16"/><!-- useMarkFilteringSet -->
+ <!-- SubTableCount=1 -->
+ <MarkMarkPos index="0" Format="1">
+ <Mark1Coverage>
+ <Glyph value="dieresiscomb"/>
+ <Glyph value="gravecomb"/>
+ <Glyph value="acutecomb"/>
+ <Glyph value="circumflexcomb"/>
+ <Glyph value="ringcomb"/>
+ <Glyph value="tildecomb"/>
+ <Glyph value="macroncomb"/>
+ </Mark1Coverage>
+ <Mark2Coverage>
+ <Glyph value="dieresiscomb"/>
+ <Glyph value="gravecomb"/>
+ <Glyph value="acutecomb"/>
+ <Glyph value="circumflexcomb"/>
+ <Glyph value="ringcomb"/>
+ <Glyph value="tildecomb"/>
+ <Glyph value="macroncomb"/>
+ </Mark2Coverage>
+ <!-- ClassCount=1 -->
+ <Mark1Array>
+ <!-- MarkCount=7 -->
+ <MarkRecord index="0">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="462"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="1">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="462"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="2">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="462"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="3">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="462"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="4">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="462"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="5">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="462"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="6">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="462"/>
+ </MarkAnchor>
+ </MarkRecord>
+ </Mark1Array>
+ <Mark2Array>
+ <!-- Mark2Count=7 -->
+ <Mark2Record index="0">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="653"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ <Mark2Record index="1">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="701"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ <Mark2Record index="2">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="700"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ <Mark2Record index="3">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="692"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ <Mark2Record index="4">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="672"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ <Mark2Record index="5">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="642"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ <Mark2Record index="6">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="595"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ </Mark2Array>
+ </MarkMarkPos>
+ <MarkFilteringSet value="4"/>
+ </Lookup>
+ </LookupList>
+ </GPOS>
+
+ <GSUB>
+ <Version value="0x00010000"/>
+ <ScriptList>
+ <!-- ScriptCount=4 -->
+ <ScriptRecord index="0">
+ <ScriptTag value="DFLT"/>
+ <Script>
+ <DefaultLangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=4 -->
+ <FeatureIndex index="0" value="1"/>
+ <FeatureIndex index="1" value="4"/>
+ <FeatureIndex index="2" value="13"/>
+ <FeatureIndex index="3" value="16"/>
+ </DefaultLangSys>
+ <!-- LangSysCount=0 -->
+ </Script>
+ </ScriptRecord>
+ <ScriptRecord index="1">
+ <ScriptTag value="arab"/>
+ <Script>
+ <DefaultLangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=18 -->
+ <FeatureIndex index="0" value="0"/>
+ <FeatureIndex index="1" value="2"/>
+ <FeatureIndex index="2" value="3"/>
+ <FeatureIndex index="3" value="5"/>
+ <FeatureIndex index="4" value="6"/>
+ <FeatureIndex index="5" value="7"/>
+ <FeatureIndex index="6" value="8"/>
+ <FeatureIndex index="7" value="14"/>
+ <FeatureIndex index="8" value="15"/>
+ <FeatureIndex index="9" value="17"/>
+ <FeatureIndex index="10" value="18"/>
+ <FeatureIndex index="11" value="19"/>
+ <FeatureIndex index="12" value="20"/>
+ <FeatureIndex index="13" value="21"/>
+ <FeatureIndex index="14" value="22"/>
+ <FeatureIndex index="15" value="23"/>
+ <FeatureIndex index="16" value="24"/>
+ <FeatureIndex index="17" value="25"/>
+ </DefaultLangSys>
+ <!-- LangSysCount=4 -->
+ <LangSysRecord index="0">
+ <LangSysTag value="KSH "/>
+ <LangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=19 -->
+ <FeatureIndex index="0" value="0"/>
+ <FeatureIndex index="1" value="2"/>
+ <FeatureIndex index="2" value="3"/>
+ <FeatureIndex index="3" value="5"/>
+ <FeatureIndex index="4" value="6"/>
+ <FeatureIndex index="5" value="7"/>
+ <FeatureIndex index="6" value="8"/>
+ <FeatureIndex index="7" value="9"/>
+ <FeatureIndex index="8" value="14"/>
+ <FeatureIndex index="9" value="15"/>
+ <FeatureIndex index="10" value="17"/>
+ <FeatureIndex index="11" value="18"/>
+ <FeatureIndex index="12" value="19"/>
+ <FeatureIndex index="13" value="20"/>
+ <FeatureIndex index="14" value="21"/>
+ <FeatureIndex index="15" value="22"/>
+ <FeatureIndex index="16" value="23"/>
+ <FeatureIndex index="17" value="24"/>
+ <FeatureIndex index="18" value="25"/>
+ </LangSys>
+ </LangSysRecord>
+ <LangSysRecord index="1">
+ <LangSysTag value="MLY "/>
+ <LangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=19 -->
+ <FeatureIndex index="0" value="0"/>
+ <FeatureIndex index="1" value="2"/>
+ <FeatureIndex index="2" value="3"/>
+ <FeatureIndex index="3" value="5"/>
+ <FeatureIndex index="4" value="6"/>
+ <FeatureIndex index="5" value="7"/>
+ <FeatureIndex index="6" value="8"/>
+ <FeatureIndex index="7" value="10"/>
+ <FeatureIndex index="8" value="14"/>
+ <FeatureIndex index="9" value="15"/>
+ <FeatureIndex index="10" value="17"/>
+ <FeatureIndex index="11" value="18"/>
+ <FeatureIndex index="12" value="19"/>
+ <FeatureIndex index="13" value="20"/>
+ <FeatureIndex index="14" value="21"/>
+ <FeatureIndex index="15" value="22"/>
+ <FeatureIndex index="16" value="23"/>
+ <FeatureIndex index="17" value="24"/>
+ <FeatureIndex index="18" value="25"/>
+ </LangSys>
+ </LangSysRecord>
+ <LangSysRecord index="2">
+ <LangSysTag value="SND "/>
+ <LangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=19 -->
+ <FeatureIndex index="0" value="0"/>
+ <FeatureIndex index="1" value="2"/>
+ <FeatureIndex index="2" value="3"/>
+ <FeatureIndex index="3" value="5"/>
+ <FeatureIndex index="4" value="6"/>
+ <FeatureIndex index="5" value="7"/>
+ <FeatureIndex index="6" value="8"/>
+ <FeatureIndex index="7" value="11"/>
+ <FeatureIndex index="8" value="14"/>
+ <FeatureIndex index="9" value="15"/>
+ <FeatureIndex index="10" value="17"/>
+ <FeatureIndex index="11" value="18"/>
+ <FeatureIndex index="12" value="19"/>
+ <FeatureIndex index="13" value="20"/>
+ <FeatureIndex index="14" value="21"/>
+ <FeatureIndex index="15" value="22"/>
+ <FeatureIndex index="16" value="23"/>
+ <FeatureIndex index="17" value="24"/>
+ <FeatureIndex index="18" value="25"/>
+ </LangSys>
+ </LangSysRecord>
+ <LangSysRecord index="3">
+ <LangSysTag value="URD "/>
+ <LangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=19 -->
+ <FeatureIndex index="0" value="0"/>
+ <FeatureIndex index="1" value="2"/>
+ <FeatureIndex index="2" value="3"/>
+ <FeatureIndex index="3" value="5"/>
+ <FeatureIndex index="4" value="6"/>
+ <FeatureIndex index="5" value="7"/>
+ <FeatureIndex index="6" value="8"/>
+ <FeatureIndex index="7" value="12"/>
+ <FeatureIndex index="8" value="14"/>
+ <FeatureIndex index="9" value="15"/>
+ <FeatureIndex index="10" value="17"/>
+ <FeatureIndex index="11" value="18"/>
+ <FeatureIndex index="12" value="19"/>
+ <FeatureIndex index="13" value="20"/>
+ <FeatureIndex index="14" value="21"/>
+ <FeatureIndex index="15" value="22"/>
+ <FeatureIndex index="16" value="23"/>
+ <FeatureIndex index="17" value="24"/>
+ <FeatureIndex index="18" value="25"/>
+ </LangSys>
+ </LangSysRecord>
+ </Script>
+ </ScriptRecord>
+ <ScriptRecord index="2">
+ <ScriptTag value="grek"/>
+ <Script>
+ <DefaultLangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=4 -->
+ <FeatureIndex index="0" value="1"/>
+ <FeatureIndex index="1" value="4"/>
+ <FeatureIndex index="2" value="13"/>
+ <FeatureIndex index="3" value="16"/>
+ </DefaultLangSys>
+ <!-- LangSysCount=0 -->
+ </Script>
+ </ScriptRecord>
+ <ScriptRecord index="3">
+ <ScriptTag value="latn"/>
+ <Script>
+ <DefaultLangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=4 -->
+ <FeatureIndex index="0" value="1"/>
+ <FeatureIndex index="1" value="4"/>
+ <FeatureIndex index="2" value="13"/>
+ <FeatureIndex index="3" value="16"/>
+ </DefaultLangSys>
+ <!-- LangSysCount=0 -->
+ </Script>
+ </ScriptRecord>
+ </ScriptList>
+ <FeatureList>
+ <!-- FeatureCount=26 -->
+ <FeatureRecord index="0">
+ <FeatureTag value="calt"/>
+ <Feature>
+ <!-- LookupCount=33 -->
+ <LookupListIndex index="0" value="11"/>
+ <LookupListIndex index="1" value="13"/>
+ <LookupListIndex index="2" value="15"/>
+ <LookupListIndex index="3" value="17"/>
+ <LookupListIndex index="4" value="19"/>
+ <LookupListIndex index="5" value="21"/>
+ <LookupListIndex index="6" value="26"/>
+ <LookupListIndex index="7" value="28"/>
+ <LookupListIndex index="8" value="23"/>
+ <LookupListIndex index="9" value="30"/>
+ <LookupListIndex index="10" value="33"/>
+ <LookupListIndex index="11" value="35"/>
+ <LookupListIndex index="12" value="37"/>
+ <LookupListIndex index="13" value="39"/>
+ <LookupListIndex index="14" value="41"/>
+ <LookupListIndex index="15" value="43"/>
+ <LookupListIndex index="16" value="45"/>
+ <LookupListIndex index="17" value="47"/>
+ <LookupListIndex index="18" value="49"/>
+ <LookupListIndex index="19" value="51"/>
+ <LookupListIndex index="20" value="53"/>
+ <LookupListIndex index="21" value="55"/>
+ <LookupListIndex index="22" value="58"/>
+ <LookupListIndex index="23" value="59"/>
+ <LookupListIndex index="24" value="60"/>
+ <LookupListIndex index="25" value="63"/>
+ <LookupListIndex index="26" value="64"/>
+ <LookupListIndex index="27" value="66"/>
+ <LookupListIndex index="28" value="68"/>
+ <LookupListIndex index="29" value="70"/>
+ <LookupListIndex index="30" value="73"/>
+ <LookupListIndex index="31" value="75"/>
+ <LookupListIndex index="32" value="77"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="1">
+ <FeatureTag value="calt"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="91"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="2">
+ <FeatureTag value="ccmp"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="0"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="3">
+ <FeatureTag value="dnom"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="90"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="4">
+ <FeatureTag value="dnom"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="94"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="5">
+ <FeatureTag value="fina"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="4"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="6">
+ <FeatureTag value="init"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="2"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="7">
+ <FeatureTag value="isol"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="1"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="8">
+ <FeatureTag value="jalt"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="80"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="9">
+ <FeatureTag value="locl"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="6"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="10">
+ <FeatureTag value="locl"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="8"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="11">
+ <FeatureTag value="locl"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="7"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="12">
+ <FeatureTag value="locl"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="5"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="13">
+ <FeatureTag value="locl"/>
+ <Feature>
+ <!-- LookupCount=2 -->
+ <LookupListIndex index="0" value="96"/>
+ <LookupListIndex index="1" value="95"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="14">
+ <FeatureTag value="medi"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="3"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="15">
+ <FeatureTag value="numr"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="89"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="16">
+ <FeatureTag value="numr"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="93"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="17">
+ <FeatureTag value="rlig"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="9"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="18">
+ <FeatureTag value="ss01"/>
+ <Feature>
+ <FeatureParamsStylisticSet>
+ <Version value="0"/>
+ <UINameID value="256"/> <!-- Looped Haa -->
+ </FeatureParamsStylisticSet>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="81"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="19">
+ <FeatureTag value="ss02"/>
+ <Feature>
+ <FeatureParamsStylisticSet>
+ <Version value="0"/>
+ <UINameID value="257"/> <!-- Open final Haa -->
+ </FeatureParamsStylisticSet>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="82"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="20">
+ <FeatureTag value="ss03"/>
+ <Feature>
+ <FeatureParamsStylisticSet>
+ <Version value="0"/>
+ <UINameID value="258"/> <!-- Tailed Noon -->
+ </FeatureParamsStylisticSet>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="83"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="21">
+ <FeatureTag value="ss04"/>
+ <Feature>
+ <FeatureParamsStylisticSet>
+ <Version value="0"/>
+ <UINameID value="259"/> <!-- Looped initial Kaf -->
+ </FeatureParamsStylisticSet>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="84"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="22">
+ <FeatureTag value="ss05"/>
+ <Feature>
+ <FeatureParamsStylisticSet>
+ <Version value="0"/>
+ <UINameID value="260"/> <!-- Alternate Arabic digit two -->
+ </FeatureParamsStylisticSet>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="85"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="23">
+ <FeatureTag value="ss06"/>
+ <Feature>
+ <FeatureParamsStylisticSet>
+ <Version value="0"/>
+ <UINameID value="261"/> <!-- Tailed Sheen -->
+ </FeatureParamsStylisticSet>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="86"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="24">
+ <FeatureTag value="ss07"/>
+ <Feature>
+ <FeatureParamsStylisticSet>
+ <Version value="0"/>
+ <UINameID value="262"/> <!-- Alternate Sad-Tah/Tah-Sad -->
+ </FeatureParamsStylisticSet>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="87"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="25">
+ <FeatureTag value="ss08"/>
+ <Feature>
+ <FeatureParamsStylisticSet>
+ <Version value="0"/>
+ <UINameID value="263"/> <!-- Alternate Sukun -->
+ </FeatureParamsStylisticSet>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="88"/>
+ </Feature>
+ </FeatureRecord>
+ </FeatureList>
+ <LookupList>
+ <!-- LookupCount=97 -->
+ <Lookup index="0">
+ <LookupType value="2"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <MultipleSubst index="0">
+ <Substitution in="ainThreedots-ar" out="ain-ar,threedotsupabove-ar"/>
+ <Substitution in="alefHamzaabove-ar" out="alef-ar,hamzaabove-ar"/>
+ <Substitution in="alefHamzabelow-ar" out="alef-ar,hamzabelow-ar"/>
+ <Substitution in="alefMadda-ar" out="alef-ar,madda-ar"/>
+ <Substitution in="alefWasla-ar" out="alef-ar,wasla-ar"/>
+ <Substitution in="beh-ar" out="behDotless-ar,dotbelow-ar"/>
+ <Substitution in="dad-ar" out="sad-ar,dotabove-ar"/>
+ <Substitution in="ddal-ar" out="dal-ar,tahabove-ar"/>
+ <Substitution in="dul-ar" out="dal-ar,threedotsupabove-ar"/>
+ <Substitution in="feh-ar" out="fehDotless-ar,dotabove-ar"/>
+ <Substitution in="gaf-ar" out="keheh-ar,gafsarkashabove-ar"/>
+ <Substitution in="ghain-ar" out="ain-ar,dotabove-ar"/>
+ <Substitution in="hehHamzaabove-ar" out="heh-ar,hamzaabove-ar"/>
+ <Substitution in="jeem-ar" out="hah-ar,dotbelow-ar"/>
+ <Substitution in="jeh-ar" out="reh-ar,threedotsupabove-ar"/>
+ <Substitution in="kafDotabove-ar" out="kaf-ar,dotabove-ar"/>
+ <Substitution in="kehehDotabove-ar" out="keheh-ar,dotabove-ar"/>
+ <Substitution in="khah-ar" out="hah-ar,dotabove-ar"/>
+ <Substitution in="lamVabove-ar" out="lam-ar,vabove-ar"/>
+ <Substitution in="oe-ar" out="waw-ar,vabove-ar"/>
+ <Substitution in="peh-ar" out="behDotless-ar,threedotsdownbelow-ar"/>
+ <Substitution in="rehVbelow-ar" out="reh-ar,vbelow-ar"/>
+ <Substitution in="rnoon-ar" out="noonghunna-ar,tahabove-ar"/>
+ <Substitution in="rreh-ar" out="reh-ar,tahabove-ar"/>
+ <Substitution in="sheen-ar" out="seen-ar,threedotsupabove-ar"/>
+ <Substitution in="tcheh-ar" out="hah-ar,threedotsdownbelow-ar"/>
+ <Substitution in="teh-ar" out="behDotless-ar,twodotshorizontalabove-ar"/>
+ <Substitution in="tehMarbuta-ar" out="ae-ar,twodotshorizontalabove-ar"/>
+ <Substitution in="thal-ar" out="dal-ar,dotabove-ar"/>
+ <Substitution in="theh-ar" out="behDotless-ar,threedotsupabove-ar"/>
+ <Substitution in="tteh-ar" out="behDotless-ar,tahabove-ar"/>
+ <Substitution in="veh-ar" out="fehDotless-ar,threedotsupabove-ar"/>
+ <Substitution in="wawDotabove-ar" out="waw-ar,dotabove-ar"/>
+ <Substitution in="wawHamzaabove-ar" out="waw-ar,hamzaabove-ar"/>
+ <Substitution in="yeh-ar" out="alefMaksura-ar,twodotshorizontalbelow-ar"/>
+ <Substitution in="yehHamzaabove-ar" out="alefMaksura-ar,hamzaabove-ar"/>
+ <Substitution in="yehVabove-ar" out="yeh-farsi,vabove-ar"/>
+ <Substitution in="yehbarreeHamzaabove-ar" out="yehbarree-ar,hamzaabove-ar"/>
+ <Substitution in="zah-ar" out="tah-ar,dotabove-ar"/>
+ <Substitution in="zain-ar" out="reh-ar,dotabove-ar"/>
+ </MultipleSubst>
+ </Lookup>
+ <Lookup index="1">
+ <LookupType value="2"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <MultipleSubst index="0">
+ <Substitution in="hehgoal-ar" out="heh-ar"/>
+ <Substitution in="noonThreedotsabove-ar" out="noonghunna-ar,threedotsupabove-ar"/>
+ <Substitution in="yeh-farsi" out="alefMaksura-ar"/>
+ </MultipleSubst>
+ </Lookup>
+ <Lookup index="2">
+ <LookupType value="2"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <MultipleSubst index="0">
+ <Substitution in="ain-ar" out="ain-ar.init"/>
+ <Substitution in="alefMaksura-ar" out="behDotless-ar.init"/>
+ <Substitution in="behDotless-ar" out="behDotless-ar.init"/>
+ <Substitution in="fehDotless-ar" out="fehDotless-ar.init"/>
+ <Substitution in="hah-ar" out="hah-ar.init"/>
+ <Substitution in="heh-ar" out="heh-ar.init"/>
+ <Substitution in="hehDoachashmee-ar" out="heh-ar.init"/>
+ <Substitution in="hehgoal-ar" out="hehgoal-ar.init"/>
+ <Substitution in="kaf-ar" out="kaf-ar.init"/>
+ <Substitution in="keheh-ar" out="kaf-ar.init"/>
+ <Substitution in="lam-ar" out="lam-ar.init"/>
+ <Substitution in="meem-ar" out="meem-ar.init"/>
+ <Substitution in="noon-ar" out="behDotless-ar.init,dotabove-ar"/>
+ <Substitution in="noonThreedotsabove-ar" out="behDotless-ar.init,threedotsdownbelow-ar"/>
+ <Substitution in="noonghunna-ar" out="behDotless-ar.init"/>
+ <Substitution in="qaf-ar" out="fehDotless-ar.init,twodotshorizontalabove-ar"/>
+ <Substitution in="qafDotless-ar" out="fehDotless-ar.init"/>
+ <Substitution in="sad-ar" out="sad-ar.init"/>
+ <Substitution in="seen-ar" out="seen-ar.init"/>
+ <Substitution in="tah-ar" out="tah-ar.init"/>
+ <Substitution in="yeh-farsi" out="behDotless-ar.init,twodotshorizontalbelow-ar"/>
+ </MultipleSubst>
+ </Lookup>
+ <Lookup index="3">
+ <LookupType value="2"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <MultipleSubst index="0">
+ <Substitution in="ain-ar" out="ain-ar.medi"/>
+ <Substitution in="alefMaksura-ar" out="behDotless-ar.medi"/>
+ <Substitution in="behDotless-ar" out="behDotless-ar.medi"/>
+ <Substitution in="fehDotless-ar" out="fehDotless-ar.medi"/>
+ <Substitution in="hah-ar" out="hah-ar.medi"/>
+ <Substitution in="heh-ar" out="heh-ar.medi"/>
+ <Substitution in="hehDoachashmee-ar" out="hehDoachashmee-ar.medi"/>
+ <Substitution in="hehgoal-ar" out="heh-ar.medi"/>
+ <Substitution in="kaf-ar" out="kaf-ar.medi"/>
+ <Substitution in="keheh-ar" out="kaf-ar.medi"/>
+ <Substitution in="lam-ar" out="lam-ar.medi"/>
+ <Substitution in="meem-ar" out="meem-ar.medi"/>
+ <Substitution in="noon-ar" out="behDotless-ar.medi,dotabove-ar"/>
+ <Substitution in="noonThreedotsabove-ar" out="behDotless-ar.medi,threedotsdownbelow-ar"/>
+ <Substitution in="noonghunna-ar" out="behDotless-ar.medi"/>
+ <Substitution in="qaf-ar" out="fehDotless-ar.medi,twodotshorizontalabove-ar"/>
+ <Substitution in="qafDotless-ar" out="fehDotless-ar.medi"/>
+ <Substitution in="sad-ar" out="sad-ar.medi"/>
+ <Substitution in="seen-ar" out="seen-ar.medi"/>
+ <Substitution in="tah-ar" out="tah-ar.medi"/>
+ <Substitution in="yeh-farsi" out="behDotless-ar.medi,twodotshorizontalbelow-ar"/>
+ </MultipleSubst>
+ </Lookup>
+ <Lookup index="4">
+ <LookupType value="2"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <MultipleSubst index="0">
+ <Substitution in="ae-ar" out="heh-ar.fina"/>
+ <Substitution in="ain-ar" out="ain-ar.fina"/>
+ <Substitution in="alef-ar" out="alef-ar.fina"/>
+ <Substitution in="alefMaksura-ar" out="alefMaksura-ar.fina"/>
+ <Substitution in="behDotless-ar" out="behDotless-ar.fina"/>
+ <Substitution in="dal-ar" out="dal-ar.fina"/>
+ <Substitution in="fehDotless-ar" out="fehDotless-ar.fina"/>
+ <Substitution in="hah-ar" out="hah-ar.fina"/>
+ <Substitution in="heh-ar" out="heh-ar.fina"/>
+ <Substitution in="hehDoachashmee-ar" out="hehDoachashmee-ar.fina"/>
+ <Substitution in="hehgoal-ar" out="hehgoal-ar.fina"/>
+ <Substitution in="kaf-ar" out="kaf-ar.fina"/>
+ <Substitution in="keheh-ar" out="keheh-ar.fina"/>
+ <Substitution in="lam-ar" out="lam-ar.fina"/>
+ <Substitution in="meem-ar" out="meem-ar.fina"/>
+ <Substitution in="noon-ar" out="noon-ar.fina"/>
+ <Substitution in="noonThreedotsabove-ar" out="noonghunna-ar.fina,threedotsupabove-ar"/>
+ <Substitution in="noonghunna-ar" out="noonghunna-ar.fina"/>
+ <Substitution in="qaf-ar" out="qaf-ar.fina"/>
+ <Substitution in="qafDotless-ar" out="qafDotless-ar.fina"/>
+ <Substitution in="reh-ar" out="reh-ar.fina"/>
+ <Substitution in="sad-ar" out="sad-ar.fina"/>
+ <Substitution in="seen-ar" out="seen-ar.fina"/>
+ <Substitution in="tah-ar" out="tah-ar.fina"/>
+ <Substitution in="waw-ar" out="waw-ar.fina"/>
+ <Substitution in="yeh-farsi" out="alefMaksura-ar.fina"/>
+ <Substitution in="yehbarree-ar" out="yehbarree-ar.fina"/>
+ </MultipleSubst>
+ </Lookup>
+ <Lookup index="5">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="dammainverted-ar" out="dammainverted-ar.urd"/>
+ <Substitution in="four-persian" out="four-persian.urd"/>
+ <Substitution in="seven-persian" out="seven-persian.urd"/>
+ <Substitution in="six-persian" out="six-ar"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="6">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="four-persian" out="four-persian.urd"/>
+ <Substitution in="seven-persian" out="seven-persian.urd"/>
+ <Substitution in="six-persian" out="six-ar"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="7">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="seven-persian" out="seven-persian.urd"/>
+ <Substitution in="six-persian" out="six-ar"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="8">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="comma-ar" out="comma-ar.alt"/>
+ <Substitution in="semicolon-ar" out="semicolon-ar.alt"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="9">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=2 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="hamza-ar"/>
+ <Glyph value="highhamza-ar"/>
+ <Glyph value="alef-ar"/>
+ <Glyph value="alef-ar.fina"/>
+ <Glyph value="alef-ar.fina.lam"/>
+ <Glyph value="alefHamzaabove-ar"/>
+ <Glyph value="alefHamzabelow-ar"/>
+ <Glyph value="alefMadda-ar"/>
+ <Glyph value="alefWasla-ar"/>
+ <Glyph value="behDotless-ar"/>
+ <Glyph value="behDotless-ar.jalt"/>
+ <Glyph value="behDotless-ar.fina"/>
+ <Glyph value="behDotless-ar.fina.jalt"/>
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.medi.ain"/>
+ <Glyph value="behDotless-ar.medi.dal"/>
+ <Glyph value="behDotless-ar.medi.feh"/>
+ <Glyph value="behDotless-ar.medi.hah"/>
+ <Glyph value="behDotless-ar.medi.heh"/>
+ <Glyph value="behDotless-ar.medi.high"/>
+ <Glyph value="behDotless-ar.medi.high2"/>
+ <Glyph value="behDotless-ar.medi.meem"/>
+ <Glyph value="behDotless-ar.medi.noon"/>
+ <Glyph value="behDotless-ar.medi.ragaa"/>
+ <Glyph value="behDotless-ar.medi.reh"/>
+ <Glyph value="behDotless-ar.medi.sad"/>
+ <Glyph value="behDotless-ar.medi.yeh"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="behDotless-ar.init.ain"/>
+ <Glyph value="behDotless-ar.init.ascend"/>
+ <Glyph value="behDotless-ar.init.dal"/>
+ <Glyph value="behDotless-ar.init.feh"/>
+ <Glyph value="behDotless-ar.init.hah"/>
+ <Glyph value="behDotless-ar.init.heh"/>
+ <Glyph value="behDotless-ar.init.meem"/>
+ <Glyph value="behDotless-ar.init.ragaa"/>
+ <Glyph value="behDotless-ar.init.reh"/>
+ <Glyph value="behDotless-ar.init.sad"/>
+ <Glyph value="behDotless-ar.init.yeh"/>
+ <Glyph value="beh-ar"/>
+ <Glyph value="peh-ar"/>
+ <Glyph value="teh-ar"/>
+ <Glyph value="theh-ar"/>
+ <Glyph value="tteh-ar"/>
+ <Glyph value="jeem-ar"/>
+ <Glyph value="tcheh-ar"/>
+ <Glyph value="hah-ar"/>
+ <Glyph value="hah-ar.fina"/>
+ <Glyph value="hah-ar.medi"/>
+ <Glyph value="hah-ar.medi.ain"/>
+ <Glyph value="hah-ar.medi.dal"/>
+ <Glyph value="hah-ar.medi.feh"/>
+ <Glyph value="hah-ar.medi.hah"/>
+ <Glyph value="hah-ar.medi.heh"/>
+ <Glyph value="hah-ar.medi.heh.ragaa"/>
+ <Glyph value="hah-ar.medi.meem"/>
+ <Glyph value="hah-ar.medi.ragaa"/>
+ <Glyph value="hah-ar.medi.reh"/>
+ <Glyph value="hah-ar.medi.sad"/>
+ <Glyph value="hah-ar.medi.yeh"/>
+ <Glyph value="hah-ar.init"/>
+ <Glyph value="hah-ar.init.ain"/>
+ <Glyph value="hah-ar.init.dal"/>
+ <Glyph value="hah-ar.init.feh"/>
+ <Glyph value="hah-ar.init.hah"/>
+ <Glyph value="hah-ar.init.heh"/>
+ <Glyph value="hah-ar.init.heh.ragaa"/>
+ <Glyph value="hah-ar.init.meem"/>
+ <Glyph value="hah-ar.init.ragaa"/>
+ <Glyph value="hah-ar.init.reh"/>
+ <Glyph value="hah-ar.init.sad"/>
+ <Glyph value="hah-ar.init.yeh"/>
+ <Glyph value="khah-ar"/>
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="thal-ar"/>
+ <Glyph value="ddal-ar"/>
+ <Glyph value="dul-ar"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="zain-ar"/>
+ <Glyph value="rreh-ar"/>
+ <Glyph value="rehVbelow-ar"/>
+ <Glyph value="jeh-ar"/>
+ <Glyph value="seen-ar"/>
+ <Glyph value="seen-ar.jalt"/>
+ <Glyph value="seen-ar.fina"/>
+ <Glyph value="seen-ar.fina.jalt"/>
+ <Glyph value="seen-ar.medi"/>
+ <Glyph value="seen-ar.medi.ain"/>
+ <Glyph value="seen-ar.medi.dal"/>
+ <Glyph value="seen-ar.medi.feh"/>
+ <Glyph value="seen-ar.medi.hah"/>
+ <Glyph value="seen-ar.medi.heh"/>
+ <Glyph value="seen-ar.medi.meem"/>
+ <Glyph value="seen-ar.medi.ragaa"/>
+ <Glyph value="seen-ar.medi.reh"/>
+ <Glyph value="seen-ar.medi.sad"/>
+ <Glyph value="seen-ar.medi.yeh"/>
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="seen-ar.init.ain"/>
+ <Glyph value="seen-ar.init.dal"/>
+ <Glyph value="seen-ar.init.feh"/>
+ <Glyph value="seen-ar.init.hah"/>
+ <Glyph value="seen-ar.init.heh"/>
+ <Glyph value="seen-ar.init.meem"/>
+ <Glyph value="seen-ar.init.ragaa"/>
+ <Glyph value="seen-ar.init.reh"/>
+ <Glyph value="seen-ar.init.sad"/>
+ <Glyph value="seen-ar.init.yeh"/>
+ <Glyph value="sheen-ar"/>
+ <Glyph value="sad-ar"/>
+ <Glyph value="sad-ar.jalt"/>
+ <Glyph value="sad-ar.fina"/>
+ <Glyph value="sad-ar.fina.jalt"/>
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="sad-ar.medi.ain"/>
+ <Glyph value="sad-ar.medi.dal"/>
+ <Glyph value="sad-ar.medi.feh"/>
+ <Glyph value="sad-ar.medi.hah"/>
+ <Glyph value="sad-ar.medi.heh"/>
+ <Glyph value="sad-ar.medi.meem"/>
+ <Glyph value="sad-ar.medi.postsad"/>
+ <Glyph value="sad-ar.medi.qantara"/>
+ <Glyph value="sad-ar.medi.ragaa"/>
+ <Glyph value="sad-ar.medi.reh"/>
+ <Glyph value="sad-ar.medi.sad"/>
+ <Glyph value="sad-ar.medi.yeh"/>
+ <Glyph value="sad-ar.init"/>
+ <Glyph value="sad-ar.init.ain"/>
+ <Glyph value="sad-ar.init.dal"/>
+ <Glyph value="sad-ar.init.feh"/>
+ <Glyph value="sad-ar.init.hah"/>
+ <Glyph value="sad-ar.init.heh"/>
+ <Glyph value="sad-ar.init.meem"/>
+ <Glyph value="sad-ar.init.qantara"/>
+ <Glyph value="sad-ar.init.ragaa"/>
+ <Glyph value="sad-ar.init.reh"/>
+ <Glyph value="sad-ar.init.sad"/>
+ <Glyph value="sad-ar.init.yeh"/>
+ <Glyph value="dad-ar"/>
+ <Glyph value="tah-ar"/>
+ <Glyph value="tah-ar.fina"/>
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.medi.ain"/>
+ <Glyph value="tah-ar.medi.dal"/>
+ <Glyph value="tah-ar.medi.feh"/>
+ <Glyph value="tah-ar.medi.hah"/>
+ <Glyph value="tah-ar.medi.heh"/>
+ <Glyph value="tah-ar.medi.kaf"/>
+ <Glyph value="tah-ar.medi.meem"/>
+ <Glyph value="tah-ar.medi.postsad"/>
+ <Glyph value="tah-ar.medi.qantara"/>
+ <Glyph value="tah-ar.medi.ragaa"/>
+ <Glyph value="tah-ar.medi.reh"/>
+ <Glyph value="tah-ar.medi.sad"/>
+ <Glyph value="tah-ar.medi.yeh"/>
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="tah-ar.init.ain"/>
+ <Glyph value="tah-ar.init.dal"/>
+ <Glyph value="tah-ar.init.feh"/>
+ <Glyph value="tah-ar.init.hah"/>
+ <Glyph value="tah-ar.init.heh"/>
+ <Glyph value="tah-ar.init.kaf"/>
+ <Glyph value="tah-ar.init.meem"/>
+ <Glyph value="tah-ar.init.qantara"/>
+ <Glyph value="tah-ar.init.ragaa"/>
+ <Glyph value="tah-ar.init.reh"/>
+ <Glyph value="tah-ar.init.sad"/>
+ <Glyph value="tah-ar.init.yeh"/>
+ <Glyph value="zah-ar"/>
+ <Glyph value="ain-ar"/>
+ <Glyph value="ain-ar.fina"/>
+ <Glyph value="ain-ar.medi"/>
+ <Glyph value="ain-ar.medi.ain"/>
+ <Glyph value="ain-ar.medi.dal"/>
+ <Glyph value="ain-ar.medi.feh"/>
+ <Glyph value="ain-ar.medi.hah"/>
+ <Glyph value="ain-ar.medi.heh"/>
+ <Glyph value="ain-ar.medi.meem"/>
+ <Glyph value="ain-ar.medi.ragaa"/>
+ <Glyph value="ain-ar.medi.reh"/>
+ <Glyph value="ain-ar.medi.sad"/>
+ <Glyph value="ain-ar.medi.yeh"/>
+ <Glyph value="ain-ar.init"/>
+ <Glyph value="ain-ar.init.ain"/>
+ <Glyph value="ain-ar.init.dal"/>
+ <Glyph value="ain-ar.init.feh"/>
+ <Glyph value="ain-ar.init.hah"/>
+ <Glyph value="ain-ar.init.heh"/>
+ <Glyph value="ain-ar.init.meem"/>
+ <Glyph value="ain-ar.init.ragaa"/>
+ <Glyph value="ain-ar.init.reh"/>
+ <Glyph value="ain-ar.init.sad"/>
+ <Glyph value="ain-ar.init.yeh"/>
+ <Glyph value="ainThreedots-ar"/>
+ <Glyph value="ghain-ar"/>
+ <Glyph value="feh-ar"/>
+ <Glyph value="veh-ar"/>
+ <Glyph value="fehDotless-ar"/>
+ <Glyph value="fehDotless-ar.jalt"/>
+ <Glyph value="fehDotless-ar.fina"/>
+ <Glyph value="fehDotless-ar.fina.jalt"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.medi.ain"/>
+ <Glyph value="fehDotless-ar.medi.dal"/>
+ <Glyph value="fehDotless-ar.medi.feh"/>
+ <Glyph value="fehDotless-ar.medi.hah"/>
+ <Glyph value="fehDotless-ar.medi.heh"/>
+ <Glyph value="fehDotless-ar.medi.meem"/>
+ <Glyph value="fehDotless-ar.medi.ragaa"/>
+ <Glyph value="fehDotless-ar.medi.reh"/>
+ <Glyph value="fehDotless-ar.medi.sad"/>
+ <Glyph value="fehDotless-ar.medi.yeh"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="fehDotless-ar.init.ain"/>
+ <Glyph value="fehDotless-ar.init.dal"/>
+ <Glyph value="fehDotless-ar.init.feh"/>
+ <Glyph value="fehDotless-ar.init.hah"/>
+ <Glyph value="fehDotless-ar.init.heh"/>
+ <Glyph value="fehDotless-ar.init.meem"/>
+ <Glyph value="fehDotless-ar.init.ragaa"/>
+ <Glyph value="fehDotless-ar.init.reh"/>
+ <Glyph value="fehDotless-ar.init.sad"/>
+ <Glyph value="fehDotless-ar.init.yeh"/>
+ <Glyph value="qafDotless-ar"/>
+ <Glyph value="qafDotless-ar.jalt"/>
+ <Glyph value="qafDotless-ar.fina"/>
+ <Glyph value="qafDotless-ar.fina.jalt"/>
+ <Glyph value="qaf-ar"/>
+ <Glyph value="qaf-ar.fina"/>
+ <Glyph value="kaf-ar"/>
+ <Glyph value="kaf-ar.jalt"/>
+ <Glyph value="kaf-ar.fina"/>
+ <Glyph value="kaf-ar.fina.jalt"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.medi.ain"/>
+ <Glyph value="kaf-ar.medi.dal"/>
+ <Glyph value="kaf-ar.medi.feh"/>
+ <Glyph value="kaf-ar.medi.hah"/>
+ <Glyph value="kaf-ar.medi.heh"/>
+ <Glyph value="kaf-ar.medi.kaf"/>
+ <Glyph value="kaf-ar.medi.meem"/>
+ <Glyph value="kaf-ar.medi.ragaa"/>
+ <Glyph value="kaf-ar.medi.reh"/>
+ <Glyph value="kaf-ar.medi.sad"/>
+ <Glyph value="kaf-ar.medi.yeh"/>
+ <Glyph value="kaf-ar.init"/>
+ <Glyph value="kaf-ar.init.ain"/>
+ <Glyph value="kaf-ar.init.alef"/>
+ <Glyph value="kaf-ar.init.alef.loop"/>
+ <Glyph value="kaf-ar.init.dal"/>
+ <Glyph value="kaf-ar.init.feh"/>
+ <Glyph value="kaf-ar.init.hah"/>
+ <Glyph value="kaf-ar.init.heh"/>
+ <Glyph value="kaf-ar.init.meem"/>
+ <Glyph value="kaf-ar.init.ragaa"/>
+ <Glyph value="kaf-ar.init.reh"/>
+ <Glyph value="kaf-ar.init.sad"/>
+ <Glyph value="kaf-ar.init.yeh"/>
+ <Glyph value="keheh-ar"/>
+ <Glyph value="keheh-ar.jalt"/>
+ <Glyph value="keheh-ar.fina"/>
+ <Glyph value="keheh-ar.fina.jalt"/>
+ <Glyph value="kehehDotabove-ar"/>
+ <Glyph value="gaf-ar"/>
+ <Glyph value="kafDotabove-ar"/>
+ <Glyph value="lam-ar"/>
+ <Glyph value="lam-ar.jalt"/>
+ <Glyph value="lam-ar.fina"/>
+ <Glyph value="lam-ar.fina.jalt"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.medi.ain"/>
+ <Glyph value="lam-ar.medi.alef"/>
+ <Glyph value="lam-ar.medi.dal"/>
+ <Glyph value="lam-ar.medi.feh"/>
+ <Glyph value="lam-ar.medi.hah"/>
+ <Glyph value="lam-ar.medi.heh"/>
+ <Glyph value="lam-ar.medi.kaf"/>
+ <Glyph value="lam-ar.medi.meem"/>
+ <Glyph value="lam-ar.medi.ragaa"/>
+ <Glyph value="lam-ar.medi.reh"/>
+ <Glyph value="lam-ar.medi.sad"/>
+ <Glyph value="lam-ar.medi.yeh"/>
+ <Glyph value="lam-ar.init"/>
+ <Glyph value="lam-ar.init.ain"/>
+ <Glyph value="lam-ar.init.alef"/>
+ <Glyph value="lam-ar.init.dal"/>
+ <Glyph value="lam-ar.init.feh"/>
+ <Glyph value="lam-ar.init.hah"/>
+ <Glyph value="lam-ar.init.heh"/>
+ <Glyph value="lam-ar.init.kaf"/>
+ <Glyph value="lam-ar.init.meem"/>
+ <Glyph value="lam-ar.init.ragaa"/>
+ <Glyph value="lam-ar.init.reh"/>
+ <Glyph value="lam-ar.init.sad"/>
+ <Glyph value="lam-ar.init.yeh"/>
+ <Glyph value="lamVabove-ar"/>
+ <Glyph value="meem-ar"/>
+ <Glyph value="meem-ar.fina"/>
+ <Glyph value="meem-ar.medi"/>
+ <Glyph value="meem-ar.medi.ain"/>
+ <Glyph value="meem-ar.medi.dal"/>
+ <Glyph value="meem-ar.medi.feh"/>
+ <Glyph value="meem-ar.medi.hah"/>
+ <Glyph value="meem-ar.medi.heh"/>
+ <Glyph value="meem-ar.medi.meem"/>
+ <Glyph value="meem-ar.medi.ragaa"/>
+ <Glyph value="meem-ar.medi.reh"/>
+ <Glyph value="meem-ar.medi.sad"/>
+ <Glyph value="meem-ar.medi.yeh"/>
+ <Glyph value="meem-ar.init"/>
+ <Glyph value="meem-ar.init.ain"/>
+ <Glyph value="meem-ar.init.dal"/>
+ <Glyph value="meem-ar.init.feh"/>
+ <Glyph value="meem-ar.init.hah"/>
+ <Glyph value="meem-ar.init.heh"/>
+ <Glyph value="meem-ar.init.meem"/>
+ <Glyph value="meem-ar.init.ragaa"/>
+ <Glyph value="meem-ar.init.reh"/>
+ <Glyph value="meem-ar.init.sad"/>
+ <Glyph value="meem-ar.init.yeh"/>
+ <Glyph value="noon-ar"/>
+ <Glyph value="noon-ar.tail"/>
+ <Glyph value="noon-ar.fina"/>
+ <Glyph value="noon-ar.fina.tail"/>
+ <Glyph value="noonghunna-ar"/>
+ <Glyph value="noonghunna-ar.jalt"/>
+ <Glyph value="noonghunna-ar.fina"/>
+ <Glyph value="rnoon-ar"/>
+ <Glyph value="noonThreedotsabove-ar"/>
+ <Glyph value="heh-ar"/>
+ <Glyph value="heh-ar.fina"/>
+ <Glyph value="heh-ar.medi"/>
+ <Glyph value="heh-ar.medi.ain"/>
+ <Glyph value="heh-ar.medi.dal"/>
+ <Glyph value="heh-ar.medi.feh"/>
+ <Glyph value="heh-ar.medi.hah"/>
+ <Glyph value="heh-ar.medi.heh"/>
+ <Glyph value="heh-ar.medi.meem"/>
+ <Glyph value="heh-ar.medi.ragaa"/>
+ <Glyph value="heh-ar.medi.reh"/>
+ <Glyph value="heh-ar.medi.sad"/>
+ <Glyph value="heh-ar.medi.yeh"/>
+ <Glyph value="heh-ar.init"/>
+ <Glyph value="heh-ar.init.ain"/>
+ <Glyph value="heh-ar.init.dal"/>
+ <Glyph value="heh-ar.init.feh"/>
+ <Glyph value="heh-ar.init.hah"/>
+ <Glyph value="heh-ar.init.heh"/>
+ <Glyph value="heh-ar.init.meem"/>
+ <Glyph value="heh-ar.init.ragaa"/>
+ <Glyph value="heh-ar.init.reh"/>
+ <Glyph value="heh-ar.init.sad"/>
+ <Glyph value="heh-ar.init.yeh"/>
+ <Glyph value="hehHamzaabove-ar"/>
+ <Glyph value="hehgoal-ar"/>
+ <Glyph value="hehgoal-ar.fina"/>
+ <Glyph value="hehgoal-ar.init"/>
+ <Glyph value="hehgoal-ar.init.ain"/>
+ <Glyph value="hehgoal-ar.init.dal"/>
+ <Glyph value="hehgoal-ar.init.feh"/>
+ <Glyph value="hehgoal-ar.init.hah"/>
+ <Glyph value="hehgoal-ar.init.heh"/>
+ <Glyph value="hehgoal-ar.init.meem"/>
+ <Glyph value="hehgoal-ar.init.ragaa"/>
+ <Glyph value="hehgoal-ar.init.reh"/>
+ <Glyph value="hehgoal-ar.init.sad"/>
+ <Glyph value="hehgoal-ar.init.yeh"/>
+ <Glyph value="hehDoachashmee-ar"/>
+ <Glyph value="hehDoachashmee-ar.fina"/>
+ <Glyph value="hehDoachashmee-ar.medi"/>
+ <Glyph value="hehDoachashmee-ar.medi.ain"/>
+ <Glyph value="hehDoachashmee-ar.medi.dal"/>
+ <Glyph value="hehDoachashmee-ar.medi.feh"/>
+ <Glyph value="hehDoachashmee-ar.medi.hah"/>
+ <Glyph value="hehDoachashmee-ar.medi.heh"/>
+ <Glyph value="hehDoachashmee-ar.medi.meem"/>
+ <Glyph value="hehDoachashmee-ar.medi.ragaa"/>
+ <Glyph value="hehDoachashmee-ar.medi.reh"/>
+ <Glyph value="hehDoachashmee-ar.medi.sad"/>
+ <Glyph value="hehDoachashmee-ar.medi.yeh"/>
+ <Glyph value="tehMarbuta-ar"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.fina"/>
+ <Glyph value="wawDotabove-ar"/>
+ <Glyph value="wawHamzaabove-ar"/>
+ <Glyph value="oe-ar"/>
+ <Glyph value="alefMaksura-ar"/>
+ <Glyph value="alefMaksura-ar.jalt"/>
+ <Glyph value="alefMaksura-ar.fina"/>
+ <Glyph value="alefMaksura-ar.fina.jalt"/>
+ <Glyph value="alefMaksura-ar.fina.yeh"/>
+ <Glyph value="alefMaksura-ar.fina.yeh.jalt"/>
+ <Glyph value="yeh-ar"/>
+ <Glyph value="yehHamzaabove-ar"/>
+ <Glyph value="yehVabove-ar"/>
+ <Glyph value="yeh-farsi"/>
+ <Glyph value="yehbarree-ar"/>
+ <Glyph value="yehbarree-ar.fina"/>
+ <Glyph value="yehbarreeHamzaabove-ar"/>
+ <Glyph value="ae-ar"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="heh-ar"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=0 -->
+ </ChainContextSubst>
+ <ChainContextSubst index="1" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="heh-ar"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="10"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="10">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="heh-ar" out="hehDoachashmee-ar"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="11">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="hah-ar.medi"/>
+ <Glyph value="hah-ar.init"/>
+ <Glyph value="seen-ar.medi"/>
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="sad-ar.init"/>
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="ain-ar.medi"/>
+ <Glyph value="ain-ar.init"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.init"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.init"/>
+ <Glyph value="meem-ar.medi"/>
+ <Glyph value="meem-ar.init"/>
+ <Glyph value="heh-ar.medi"/>
+ <Glyph value="heh-ar.init"/>
+ <Glyph value="hehgoal-ar.init"/>
+ <Glyph value="hehDoachashmee-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="hah-ar.fina"/>
+ <Glyph value="hah-ar.medi"/>
+ <Glyph value="hah-ar.medi.ain"/>
+ <Glyph value="hah-ar.medi.dal"/>
+ <Glyph value="hah-ar.medi.feh"/>
+ <Glyph value="hah-ar.medi.hah"/>
+ <Glyph value="hah-ar.medi.heh"/>
+ <Glyph value="hah-ar.medi.meem"/>
+ <Glyph value="hah-ar.medi.ragaa"/>
+ <Glyph value="hah-ar.medi.reh"/>
+ <Glyph value="hah-ar.medi.sad"/>
+ <Glyph value="hah-ar.medi.yeh"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="12"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="12">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="ain-ar.init" out="ain-ar.init.hah"/>
+ <Substitution in="ain-ar.medi" out="ain-ar.medi.hah"/>
+ <Substitution in="behDotless-ar.init" out="behDotless-ar.init.hah"/>
+ <Substitution in="behDotless-ar.medi" out="behDotless-ar.medi.hah"/>
+ <Substitution in="fehDotless-ar.init" out="fehDotless-ar.init.hah"/>
+ <Substitution in="fehDotless-ar.medi" out="fehDotless-ar.medi.hah"/>
+ <Substitution in="hah-ar.init" out="hah-ar.init.hah"/>
+ <Substitution in="hah-ar.medi" out="hah-ar.medi.hah"/>
+ <Substitution in="heh-ar.init" out="heh-ar.init.hah"/>
+ <Substitution in="heh-ar.medi" out="heh-ar.medi.hah"/>
+ <Substitution in="hehDoachashmee-ar.medi" out="hehDoachashmee-ar.medi.hah"/>
+ <Substitution in="hehgoal-ar.init" out="hehgoal-ar.init.hah"/>
+ <Substitution in="kaf-ar.init" out="kaf-ar.init.hah"/>
+ <Substitution in="kaf-ar.medi" out="kaf-ar.medi.hah"/>
+ <Substitution in="lam-ar.init" out="lam-ar.init.hah"/>
+ <Substitution in="lam-ar.medi" out="lam-ar.medi.hah"/>
+ <Substitution in="meem-ar.init" out="meem-ar.init.hah"/>
+ <Substitution in="meem-ar.medi" out="meem-ar.medi.hah"/>
+ <Substitution in="sad-ar.init" out="sad-ar.init.hah"/>
+ <Substitution in="sad-ar.medi" out="sad-ar.medi.hah"/>
+ <Substitution in="seen-ar.init" out="seen-ar.init.hah"/>
+ <Substitution in="seen-ar.medi" out="seen-ar.medi.hah"/>
+ <Substitution in="tah-ar.init" out="tah-ar.init.hah"/>
+ <Substitution in="tah-ar.medi" out="tah-ar.medi.hah"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="13">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="hah-ar.medi"/>
+ <Glyph value="hah-ar.init"/>
+ <Glyph value="seen-ar.medi"/>
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="sad-ar.init"/>
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="ain-ar.medi"/>
+ <Glyph value="ain-ar.init"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.init"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.init"/>
+ <Glyph value="meem-ar.medi"/>
+ <Glyph value="meem-ar.init"/>
+ <Glyph value="heh-ar.medi"/>
+ <Glyph value="heh-ar.init"/>
+ <Glyph value="hehgoal-ar.init"/>
+ <Glyph value="hehDoachashmee-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="dal-ar.fina"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="14"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="14">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="ain-ar.init" out="ain-ar.init.dal"/>
+ <Substitution in="ain-ar.medi" out="ain-ar.medi.dal"/>
+ <Substitution in="behDotless-ar.init" out="behDotless-ar.init.dal"/>
+ <Substitution in="behDotless-ar.medi" out="behDotless-ar.medi.dal"/>
+ <Substitution in="fehDotless-ar.init" out="fehDotless-ar.init.dal"/>
+ <Substitution in="fehDotless-ar.medi" out="fehDotless-ar.medi.dal"/>
+ <Substitution in="hah-ar.init" out="hah-ar.init.dal"/>
+ <Substitution in="hah-ar.medi" out="hah-ar.medi.dal"/>
+ <Substitution in="heh-ar.init" out="heh-ar.init.dal"/>
+ <Substitution in="heh-ar.medi" out="heh-ar.medi.dal"/>
+ <Substitution in="hehDoachashmee-ar.medi" out="hehDoachashmee-ar.medi.dal"/>
+ <Substitution in="hehgoal-ar.init" out="hehgoal-ar.init.dal"/>
+ <Substitution in="kaf-ar.init" out="kaf-ar.init.dal"/>
+ <Substitution in="kaf-ar.medi" out="kaf-ar.medi.dal"/>
+ <Substitution in="lam-ar.init" out="lam-ar.init.dal"/>
+ <Substitution in="lam-ar.medi" out="lam-ar.medi.dal"/>
+ <Substitution in="meem-ar.init" out="meem-ar.init.dal"/>
+ <Substitution in="meem-ar.medi" out="meem-ar.medi.dal"/>
+ <Substitution in="sad-ar.init" out="sad-ar.init.dal"/>
+ <Substitution in="sad-ar.medi" out="sad-ar.medi.dal"/>
+ <Substitution in="seen-ar.init" out="seen-ar.init.dal"/>
+ <Substitution in="seen-ar.medi" out="seen-ar.medi.dal"/>
+ <Substitution in="tah-ar.init" out="tah-ar.init.dal"/>
+ <Substitution in="tah-ar.medi" out="tah-ar.medi.dal"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="15">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="hah-ar.medi"/>
+ <Glyph value="hah-ar.init"/>
+ <Glyph value="seen-ar.medi"/>
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="sad-ar.init"/>
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="ain-ar.medi"/>
+ <Glyph value="ain-ar.init"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.init"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.init"/>
+ <Glyph value="meem-ar.medi"/>
+ <Glyph value="meem-ar.init"/>
+ <Glyph value="heh-ar.medi"/>
+ <Glyph value="heh-ar.init"/>
+ <Glyph value="hehgoal-ar.init"/>
+ <Glyph value="hehDoachashmee-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="reh-ar.fina"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="16"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="16">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="ain-ar.init" out="ain-ar.init.reh"/>
+ <Substitution in="ain-ar.medi" out="ain-ar.medi.reh"/>
+ <Substitution in="behDotless-ar.init" out="behDotless-ar.init.reh"/>
+ <Substitution in="behDotless-ar.medi" out="behDotless-ar.medi.reh"/>
+ <Substitution in="fehDotless-ar.init" out="fehDotless-ar.init.reh"/>
+ <Substitution in="fehDotless-ar.medi" out="fehDotless-ar.medi.reh"/>
+ <Substitution in="hah-ar.init" out="hah-ar.init.reh"/>
+ <Substitution in="hah-ar.medi" out="hah-ar.medi.reh"/>
+ <Substitution in="heh-ar.init" out="heh-ar.init.reh"/>
+ <Substitution in="heh-ar.medi" out="heh-ar.medi.reh"/>
+ <Substitution in="hehDoachashmee-ar.medi" out="hehDoachashmee-ar.medi.reh"/>
+ <Substitution in="hehgoal-ar.init" out="hehgoal-ar.init.reh"/>
+ <Substitution in="kaf-ar.init" out="kaf-ar.init.reh"/>
+ <Substitution in="kaf-ar.medi" out="kaf-ar.medi.reh"/>
+ <Substitution in="lam-ar.init" out="lam-ar.init.reh"/>
+ <Substitution in="lam-ar.medi" out="lam-ar.medi.reh"/>
+ <Substitution in="meem-ar.init" out="meem-ar.init.reh"/>
+ <Substitution in="meem-ar.medi" out="meem-ar.medi.reh"/>
+ <Substitution in="sad-ar.init" out="sad-ar.init.reh"/>
+ <Substitution in="sad-ar.medi" out="sad-ar.medi.reh"/>
+ <Substitution in="seen-ar.init" out="seen-ar.init.reh"/>
+ <Substitution in="seen-ar.medi" out="seen-ar.medi.reh"/>
+ <Substitution in="tah-ar.init" out="tah-ar.init.reh"/>
+ <Substitution in="tah-ar.medi" out="tah-ar.medi.reh"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="17">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="hah-ar.medi"/>
+ <Glyph value="hah-ar.init"/>
+ <Glyph value="seen-ar.medi"/>
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="sad-ar.init"/>
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="ain-ar.medi"/>
+ <Glyph value="ain-ar.init"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.init"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.init"/>
+ <Glyph value="meem-ar.medi"/>
+ <Glyph value="meem-ar.init"/>
+ <Glyph value="heh-ar.medi"/>
+ <Glyph value="heh-ar.init"/>
+ <Glyph value="hehgoal-ar.init"/>
+ <Glyph value="hehDoachashmee-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="sad-ar.fina"/>
+ <Glyph value="sad-ar.fina.jalt"/>
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="sad-ar.medi.ain"/>
+ <Glyph value="sad-ar.medi.dal"/>
+ <Glyph value="sad-ar.medi.feh"/>
+ <Glyph value="sad-ar.medi.hah"/>
+ <Glyph value="sad-ar.medi.heh"/>
+ <Glyph value="sad-ar.medi.meem"/>
+ <Glyph value="sad-ar.medi.qantara"/>
+ <Glyph value="sad-ar.medi.reh"/>
+ <Glyph value="sad-ar.medi.yeh"/>
+ <Glyph value="tah-ar.fina"/>
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.medi.ain"/>
+ <Glyph value="tah-ar.medi.dal"/>
+ <Glyph value="tah-ar.medi.feh"/>
+ <Glyph value="tah-ar.medi.hah"/>
+ <Glyph value="tah-ar.medi.heh"/>
+ <Glyph value="tah-ar.medi.kaf"/>
+ <Glyph value="tah-ar.medi.meem"/>
+ <Glyph value="tah-ar.medi.qantara"/>
+ <Glyph value="tah-ar.medi.reh"/>
+ <Glyph value="tah-ar.medi.yeh"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="18"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="18">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="ain-ar.init" out="ain-ar.init.sad"/>
+ <Substitution in="ain-ar.medi" out="ain-ar.medi.sad"/>
+ <Substitution in="behDotless-ar.init" out="behDotless-ar.init.sad"/>
+ <Substitution in="behDotless-ar.medi" out="behDotless-ar.medi.sad"/>
+ <Substitution in="fehDotless-ar.init" out="fehDotless-ar.init.sad"/>
+ <Substitution in="fehDotless-ar.medi" out="fehDotless-ar.medi.sad"/>
+ <Substitution in="hah-ar.init" out="hah-ar.init.sad"/>
+ <Substitution in="hah-ar.medi" out="hah-ar.medi.sad"/>
+ <Substitution in="heh-ar.init" out="heh-ar.init.sad"/>
+ <Substitution in="heh-ar.medi" out="heh-ar.medi.sad"/>
+ <Substitution in="hehDoachashmee-ar.medi" out="hehDoachashmee-ar.medi.sad"/>
+ <Substitution in="hehgoal-ar.init" out="hehgoal-ar.init.sad"/>
+ <Substitution in="kaf-ar.init" out="kaf-ar.init.sad"/>
+ <Substitution in="kaf-ar.medi" out="kaf-ar.medi.sad"/>
+ <Substitution in="lam-ar.init" out="lam-ar.init.sad"/>
+ <Substitution in="lam-ar.medi" out="lam-ar.medi.sad"/>
+ <Substitution in="meem-ar.init" out="meem-ar.init.sad"/>
+ <Substitution in="meem-ar.medi" out="meem-ar.medi.sad"/>
+ <Substitution in="sad-ar.init" out="sad-ar.init.qantara"/>
+ <Substitution in="sad-ar.medi" out="sad-ar.medi.qantara"/>
+ <Substitution in="seen-ar.init" out="seen-ar.init.sad"/>
+ <Substitution in="seen-ar.medi" out="seen-ar.medi.sad"/>
+ <Substitution in="tah-ar.init" out="tah-ar.init.qantara"/>
+ <Substitution in="tah-ar.medi" out="tah-ar.medi.qantara"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="19">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="hah-ar.medi"/>
+ <Glyph value="hah-ar.init"/>
+ <Glyph value="seen-ar.medi"/>
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="sad-ar.init"/>
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="ain-ar.medi"/>
+ <Glyph value="ain-ar.init"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.init"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.init"/>
+ <Glyph value="meem-ar.medi"/>
+ <Glyph value="meem-ar.init"/>
+ <Glyph value="heh-ar.medi"/>
+ <Glyph value="heh-ar.init"/>
+ <Glyph value="hehgoal-ar.init"/>
+ <Glyph value="hehDoachashmee-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="ain-ar.fina"/>
+ <Glyph value="ain-ar.medi"/>
+ <Glyph value="ain-ar.medi.ain"/>
+ <Glyph value="ain-ar.medi.dal"/>
+ <Glyph value="ain-ar.medi.feh"/>
+ <Glyph value="ain-ar.medi.hah"/>
+ <Glyph value="ain-ar.medi.heh"/>
+ <Glyph value="ain-ar.medi.meem"/>
+ <Glyph value="ain-ar.medi.ragaa"/>
+ <Glyph value="ain-ar.medi.reh"/>
+ <Glyph value="ain-ar.medi.sad"/>
+ <Glyph value="ain-ar.medi.yeh"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="20"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="20">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="ain-ar.init" out="ain-ar.init.ain"/>
+ <Substitution in="ain-ar.medi" out="ain-ar.medi.ain"/>
+ <Substitution in="behDotless-ar.init" out="behDotless-ar.init.ain"/>
+ <Substitution in="behDotless-ar.medi" out="behDotless-ar.medi.ain"/>
+ <Substitution in="fehDotless-ar.init" out="fehDotless-ar.init.ain"/>
+ <Substitution in="fehDotless-ar.medi" out="fehDotless-ar.medi.ain"/>
+ <Substitution in="hah-ar.init" out="hah-ar.init.ain"/>
+ <Substitution in="hah-ar.medi" out="hah-ar.medi.ain"/>
+ <Substitution in="heh-ar.init" out="heh-ar.init.ain"/>
+ <Substitution in="heh-ar.medi" out="heh-ar.medi.ain"/>
+ <Substitution in="hehDoachashmee-ar.medi" out="hehDoachashmee-ar.medi.ain"/>
+ <Substitution in="hehgoal-ar.init" out="hehgoal-ar.init.ain"/>
+ <Substitution in="kaf-ar.init" out="kaf-ar.init.ain"/>
+ <Substitution in="kaf-ar.medi" out="kaf-ar.medi.ain"/>
+ <Substitution in="lam-ar.init" out="lam-ar.init.ain"/>
+ <Substitution in="lam-ar.medi" out="lam-ar.medi.ain"/>
+ <Substitution in="meem-ar.init" out="meem-ar.init.ain"/>
+ <Substitution in="meem-ar.medi" out="meem-ar.medi.ain"/>
+ <Substitution in="sad-ar.init" out="sad-ar.init.ain"/>
+ <Substitution in="sad-ar.medi" out="sad-ar.medi.ain"/>
+ <Substitution in="seen-ar.init" out="seen-ar.init.ain"/>
+ <Substitution in="seen-ar.medi" out="seen-ar.medi.ain"/>
+ <Substitution in="tah-ar.init" out="tah-ar.init.ain"/>
+ <Substitution in="tah-ar.medi" out="tah-ar.medi.ain"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="21">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="hah-ar.medi"/>
+ <Glyph value="hah-ar.init"/>
+ <Glyph value="seen-ar.medi"/>
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="sad-ar.init"/>
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="ain-ar.medi"/>
+ <Glyph value="ain-ar.init"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.init"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.init"/>
+ <Glyph value="meem-ar.medi"/>
+ <Glyph value="meem-ar.init"/>
+ <Glyph value="heh-ar.medi"/>
+ <Glyph value="heh-ar.init"/>
+ <Glyph value="hehgoal-ar.init"/>
+ <Glyph value="hehDoachashmee-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="fehDotless-ar.fina"/>
+ <Glyph value="fehDotless-ar.fina.jalt"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.medi.ain"/>
+ <Glyph value="fehDotless-ar.medi.dal"/>
+ <Glyph value="fehDotless-ar.medi.feh"/>
+ <Glyph value="fehDotless-ar.medi.hah"/>
+ <Glyph value="fehDotless-ar.medi.heh"/>
+ <Glyph value="fehDotless-ar.medi.meem"/>
+ <Glyph value="fehDotless-ar.medi.ragaa"/>
+ <Glyph value="fehDotless-ar.medi.reh"/>
+ <Glyph value="fehDotless-ar.medi.sad"/>
+ <Glyph value="fehDotless-ar.medi.yeh"/>
+ <Glyph value="qafDotless-ar.fina.jalt"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="22"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="22">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="ain-ar.init" out="ain-ar.init.feh"/>
+ <Substitution in="ain-ar.medi" out="ain-ar.medi.feh"/>
+ <Substitution in="behDotless-ar.init" out="behDotless-ar.init.feh"/>
+ <Substitution in="behDotless-ar.medi" out="behDotless-ar.medi.feh"/>
+ <Substitution in="fehDotless-ar.init" out="fehDotless-ar.init.feh"/>
+ <Substitution in="fehDotless-ar.medi" out="fehDotless-ar.medi.feh"/>
+ <Substitution in="hah-ar.init" out="hah-ar.init.feh"/>
+ <Substitution in="hah-ar.medi" out="hah-ar.medi.feh"/>
+ <Substitution in="heh-ar.init" out="heh-ar.init.feh"/>
+ <Substitution in="heh-ar.medi" out="heh-ar.medi.feh"/>
+ <Substitution in="hehDoachashmee-ar.medi" out="hehDoachashmee-ar.medi.feh"/>
+ <Substitution in="hehgoal-ar.init" out="hehgoal-ar.init.feh"/>
+ <Substitution in="kaf-ar.init" out="kaf-ar.init.feh"/>
+ <Substitution in="kaf-ar.medi" out="kaf-ar.medi.feh"/>
+ <Substitution in="lam-ar.init" out="lam-ar.init.feh"/>
+ <Substitution in="lam-ar.medi" out="lam-ar.medi.feh"/>
+ <Substitution in="meem-ar.init" out="meem-ar.init.feh"/>
+ <Substitution in="meem-ar.medi" out="meem-ar.medi.feh"/>
+ <Substitution in="sad-ar.init" out="sad-ar.init.feh"/>
+ <Substitution in="sad-ar.medi" out="sad-ar.medi.feh"/>
+ <Substitution in="seen-ar.init" out="seen-ar.init.feh"/>
+ <Substitution in="seen-ar.medi" out="seen-ar.medi.feh"/>
+ <Substitution in="tah-ar.init" out="tah-ar.init.feh"/>
+ <Substitution in="tah-ar.medi" out="tah-ar.medi.feh"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="23">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="1">
+ <Coverage>
+ <Glyph value="heh-ar.medi"/>
+ </Coverage>
+ <!-- ChainSubRuleSetCount=1 -->
+ <ChainSubRuleSet index="0">
+ <!-- ChainSubRuleCount=2 -->
+ <ChainSubRule index="0">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="heh-ar.medi"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="heh-ar.medi"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="24"/>
+ </SubstLookupRecord>
+ </ChainSubRule>
+ <ChainSubRule index="1">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=2 -->
+ <LookAhead index="0" value="heh-ar.medi"/>
+ <LookAhead index="1" value="heh-ar.fina"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="25"/>
+ </SubstLookupRecord>
+ </ChainSubRule>
+ </ChainSubRuleSet>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="24">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="heh-ar.medi" out="hehDoachashmee-ar.medi"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="25">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="heh-ar.medi" out="hehDoachashmee-ar.medi"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="26">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="hah-ar.medi"/>
+ <Glyph value="hah-ar.init"/>
+ <Glyph value="seen-ar.medi"/>
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="sad-ar.init"/>
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="ain-ar.medi"/>
+ <Glyph value="ain-ar.init"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.init"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.init"/>
+ <Glyph value="meem-ar.medi"/>
+ <Glyph value="meem-ar.init"/>
+ <Glyph value="heh-ar.medi"/>
+ <Glyph value="heh-ar.init"/>
+ <Glyph value="hehgoal-ar.init"/>
+ <Glyph value="hehDoachashmee-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="meem-ar.fina"/>
+ <Glyph value="meem-ar.medi"/>
+ <Glyph value="meem-ar.medi.ain"/>
+ <Glyph value="meem-ar.medi.dal"/>
+ <Glyph value="meem-ar.medi.feh"/>
+ <Glyph value="meem-ar.medi.hah"/>
+ <Glyph value="meem-ar.medi.heh"/>
+ <Glyph value="meem-ar.medi.meem"/>
+ <Glyph value="meem-ar.medi.ragaa"/>
+ <Glyph value="meem-ar.medi.reh"/>
+ <Glyph value="meem-ar.medi.sad"/>
+ <Glyph value="meem-ar.medi.yeh"/>
+ <Glyph value="hehDoachashmee-ar.fina"/>
+ <Glyph value="hehDoachashmee-ar.medi"/>
+ <Glyph value="hehDoachashmee-ar.medi.ain"/>
+ <Glyph value="hehDoachashmee-ar.medi.dal"/>
+ <Glyph value="hehDoachashmee-ar.medi.feh"/>
+ <Glyph value="hehDoachashmee-ar.medi.hah"/>
+ <Glyph value="hehDoachashmee-ar.medi.heh"/>
+ <Glyph value="hehDoachashmee-ar.medi.meem"/>
+ <Glyph value="hehDoachashmee-ar.medi.ragaa"/>
+ <Glyph value="hehDoachashmee-ar.medi.reh"/>
+ <Glyph value="hehDoachashmee-ar.medi.sad"/>
+ <Glyph value="hehDoachashmee-ar.medi.yeh"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="27"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="27">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="ain-ar.init" out="ain-ar.init.meem"/>
+ <Substitution in="ain-ar.medi" out="ain-ar.medi.meem"/>
+ <Substitution in="behDotless-ar.init" out="behDotless-ar.init.meem"/>
+ <Substitution in="behDotless-ar.medi" out="behDotless-ar.medi.meem"/>
+ <Substitution in="fehDotless-ar.init" out="fehDotless-ar.init.meem"/>
+ <Substitution in="fehDotless-ar.medi" out="fehDotless-ar.medi.meem"/>
+ <Substitution in="hah-ar.init" out="hah-ar.init.meem"/>
+ <Substitution in="hah-ar.medi" out="hah-ar.medi.meem"/>
+ <Substitution in="heh-ar.init" out="heh-ar.init.meem"/>
+ <Substitution in="heh-ar.medi" out="heh-ar.medi.meem"/>
+ <Substitution in="hehDoachashmee-ar.medi" out="hehDoachashmee-ar.medi.meem"/>
+ <Substitution in="hehgoal-ar.init" out="hehgoal-ar.init.meem"/>
+ <Substitution in="kaf-ar.init" out="kaf-ar.init.meem"/>
+ <Substitution in="kaf-ar.medi" out="kaf-ar.medi.meem"/>
+ <Substitution in="lam-ar.init" out="lam-ar.init.meem"/>
+ <Substitution in="lam-ar.medi" out="lam-ar.medi.meem"/>
+ <Substitution in="meem-ar.init" out="meem-ar.init.meem"/>
+ <Substitution in="meem-ar.medi" out="meem-ar.medi.meem"/>
+ <Substitution in="sad-ar.init" out="sad-ar.init.meem"/>
+ <Substitution in="sad-ar.medi" out="sad-ar.medi.meem"/>
+ <Substitution in="seen-ar.init" out="seen-ar.init.meem"/>
+ <Substitution in="seen-ar.medi" out="seen-ar.medi.meem"/>
+ <Substitution in="tah-ar.init" out="tah-ar.init.meem"/>
+ <Substitution in="tah-ar.medi" out="tah-ar.medi.meem"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="28">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="2">
+ <Coverage>
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="hah-ar.medi"/>
+ <Glyph value="hah-ar.init"/>
+ <Glyph value="seen-ar.medi"/>
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="sad-ar.init"/>
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="ain-ar.medi"/>
+ <Glyph value="ain-ar.init"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.init"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.init"/>
+ <Glyph value="meem-ar.medi"/>
+ <Glyph value="meem-ar.init"/>
+ <Glyph value="heh-ar.medi"/>
+ <Glyph value="heh-ar.init"/>
+ <Glyph value="hehgoal-ar.init"/>
+ <Glyph value="hehDoachashmee-ar.medi"/>
+ </Coverage>
+ <BacktrackClassDef>
+ </BacktrackClassDef>
+ <InputClassDef>
+ <ClassDef glyph="ain-ar.init" class="24"/>
+ <ClassDef glyph="ain-ar.medi" class="23"/>
+ <ClassDef glyph="behDotless-ar.init" class="22"/>
+ <ClassDef glyph="behDotless-ar.medi" class="21"/>
+ <ClassDef glyph="fehDotless-ar.init" class="20"/>
+ <ClassDef glyph="fehDotless-ar.medi" class="19"/>
+ <ClassDef glyph="hah-ar.init" class="18"/>
+ <ClassDef glyph="hah-ar.medi" class="17"/>
+ <ClassDef glyph="heh-ar.init" class="16"/>
+ <ClassDef glyph="heh-ar.medi" class="15"/>
+ <ClassDef glyph="hehDoachashmee-ar.medi" class="14"/>
+ <ClassDef glyph="hehgoal-ar.init" class="13"/>
+ <ClassDef glyph="kaf-ar.init" class="12"/>
+ <ClassDef glyph="kaf-ar.medi" class="11"/>
+ <ClassDef glyph="lam-ar.init" class="10"/>
+ <ClassDef glyph="lam-ar.medi" class="9"/>
+ <ClassDef glyph="meem-ar.init" class="8"/>
+ <ClassDef glyph="meem-ar.medi" class="7"/>
+ <ClassDef glyph="sad-ar.init" class="6"/>
+ <ClassDef glyph="sad-ar.medi" class="5"/>
+ <ClassDef glyph="seen-ar.init" class="4"/>
+ <ClassDef glyph="seen-ar.medi" class="3"/>
+ <ClassDef glyph="tah-ar.init" class="2"/>
+ <ClassDef glyph="tah-ar.medi" class="1"/>
+ </InputClassDef>
+ <LookAheadClassDef>
+ <ClassDef glyph="heh-ar.medi" class="1"/>
+ <ClassDef glyph="heh-ar.medi.ain" class="1"/>
+ <ClassDef glyph="heh-ar.medi.dal" class="1"/>
+ <ClassDef glyph="heh-ar.medi.feh" class="1"/>
+ <ClassDef glyph="heh-ar.medi.hah" class="1"/>
+ <ClassDef glyph="heh-ar.medi.heh" class="1"/>
+ <ClassDef glyph="heh-ar.medi.meem" class="1"/>
+ <ClassDef glyph="heh-ar.medi.reh" class="1"/>
+ <ClassDef glyph="heh-ar.medi.sad" class="1"/>
+ <ClassDef glyph="heh-ar.medi.yeh" class="1"/>
+ </LookAheadClassDef>
+ <!-- ChainSubClassSetCount=25 -->
+ <ChainSubClassSet index="0">
+ <!-- ChainSubClassRuleCount=0 -->
+ </ChainSubClassSet>
+ <ChainSubClassSet index="1">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="2">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="3">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="4">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="5">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="6">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="7">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="8">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="9">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="10">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="11">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="12">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="13">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="14">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="15">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="16">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="17">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="18">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="19">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="20">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="21">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="22">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="23">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ <ChainSubClassSet index="24">
+ <!-- ChainSubClassRuleCount=1 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="29"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="29">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="ain-ar.init" out="ain-ar.init.heh"/>
+ <Substitution in="ain-ar.medi" out="ain-ar.medi.heh"/>
+ <Substitution in="behDotless-ar.init" out="behDotless-ar.init.heh"/>
+ <Substitution in="behDotless-ar.medi" out="behDotless-ar.medi.heh"/>
+ <Substitution in="fehDotless-ar.init" out="fehDotless-ar.init.heh"/>
+ <Substitution in="fehDotless-ar.medi" out="fehDotless-ar.medi.heh"/>
+ <Substitution in="hah-ar.init" out="hah-ar.init.heh"/>
+ <Substitution in="hah-ar.medi" out="hah-ar.medi.heh"/>
+ <Substitution in="heh-ar.init" out="heh-ar.init.heh"/>
+ <Substitution in="heh-ar.medi" out="heh-ar.medi.heh"/>
+ <Substitution in="hehDoachashmee-ar.medi" out="hehDoachashmee-ar.medi.heh"/>
+ <Substitution in="hehgoal-ar.init" out="hehgoal-ar.init.heh"/>
+ <Substitution in="kaf-ar.init" out="kaf-ar.init.heh"/>
+ <Substitution in="kaf-ar.medi" out="kaf-ar.medi.heh"/>
+ <Substitution in="lam-ar.init" out="lam-ar.init.heh"/>
+ <Substitution in="lam-ar.medi" out="lam-ar.medi.heh"/>
+ <Substitution in="meem-ar.init" out="meem-ar.init.heh"/>
+ <Substitution in="meem-ar.medi" out="meem-ar.medi.heh"/>
+ <Substitution in="sad-ar.init" out="sad-ar.init.heh"/>
+ <Substitution in="sad-ar.medi" out="sad-ar.medi.heh"/>
+ <Substitution in="seen-ar.init" out="seen-ar.init.heh"/>
+ <Substitution in="seen-ar.medi" out="seen-ar.medi.heh"/>
+ <Substitution in="tah-ar.init" out="tah-ar.init.heh"/>
+ <Substitution in="tah-ar.medi" out="tah-ar.medi.heh"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="30">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="1">
+ <Coverage>
+ <Glyph value="heh-ar.medi.heh"/>
+ <Glyph value="heh-ar.init.heh"/>
+ <Glyph value="hehDoachashmee-ar.medi.meem"/>
+ </Coverage>
+ <!-- ChainSubRuleSetCount=3 -->
+ <ChainSubRuleSet index="0">
+ <!-- ChainSubRuleCount=2 -->
+ <ChainSubRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="hehDoachashmee-ar.medi.heh"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="31"/>
+ </SubstLookupRecord>
+ </ChainSubRule>
+ <ChainSubRule index="1">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="hehDoachashmee-ar.medi.heh"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="hehDoachashmee-ar.medi"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="32"/>
+ </SubstLookupRecord>
+ </ChainSubRule>
+ </ChainSubRuleSet>
+ <ChainSubRuleSet index="1">
+ <!-- ChainSubRuleCount=2 -->
+ <ChainSubRule index="0">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="hehDoachashmee-ar.medi.heh"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="31"/>
+ </SubstLookupRecord>
+ </ChainSubRule>
+ <ChainSubRule index="1">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="hehDoachashmee-ar.medi.heh"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="hehDoachashmee-ar.medi"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="32"/>
+ </SubstLookupRecord>
+ </ChainSubRule>
+ </ChainSubRuleSet>
+ <ChainSubRuleSet index="2">
+ <!-- ChainSubRuleCount=1 -->
+ <ChainSubRule index="0">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="heh-ar.medi.meem"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="31"/>
+ </SubstLookupRecord>
+ </ChainSubRule>
+ </ChainSubRuleSet>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="31">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="heh-ar.init.heh" out="heh-ar.init.hah"/>
+ <Substitution in="heh-ar.medi.heh" out="heh-ar.medi.meem"/>
+ <Substitution in="hehDoachashmee-ar.medi.meem" out="hehDoachashmee-ar.medi.heh"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="32">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="heh-ar.init.heh" out="heh-ar.init.hah"/>
+ <Substitution in="heh-ar.medi.heh" out="heh-ar.medi.meem"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="33">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=2 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="hehDoachashmee-ar.medi.heh"/>
+ </BacktrackCoverage>
+ <BacktrackCoverage index="1">
+ <Glyph value="hehDoachashmee-ar.medi.heh"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="heh-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="34"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="34">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="heh-ar.medi" out="hehDoachashmee-ar.medi"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="35">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="hehDoachashmee-ar.medi.heh"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="hehDoachashmee-ar.medi.heh"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="hehDoachashmee-ar.medi"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="36"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="36">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="hehDoachashmee-ar.medi.heh" out="heh-ar.medi.meem"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="37">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="hah-ar.medi"/>
+ <Glyph value="hah-ar.init"/>
+ <Glyph value="seen-ar.medi"/>
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="sad-ar.init"/>
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="ain-ar.medi"/>
+ <Glyph value="ain-ar.init"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.init"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.init"/>
+ <Glyph value="meem-ar.medi"/>
+ <Glyph value="meem-ar.init"/>
+ <Glyph value="heh-ar.medi"/>
+ <Glyph value="heh-ar.init"/>
+ <Glyph value="hehgoal-ar.init"/>
+ <Glyph value="hehDoachashmee-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="alefMaksura-ar.fina"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="38"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="38">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="ain-ar.init" out="ain-ar.init.yeh"/>
+ <Substitution in="ain-ar.medi" out="ain-ar.medi.yeh"/>
+ <Substitution in="behDotless-ar.init" out="behDotless-ar.init.yeh"/>
+ <Substitution in="behDotless-ar.medi" out="behDotless-ar.medi.yeh"/>
+ <Substitution in="fehDotless-ar.init" out="fehDotless-ar.init.yeh"/>
+ <Substitution in="fehDotless-ar.medi" out="fehDotless-ar.medi.yeh"/>
+ <Substitution in="hah-ar.init" out="hah-ar.init.yeh"/>
+ <Substitution in="hah-ar.medi" out="hah-ar.medi.yeh"/>
+ <Substitution in="heh-ar.init" out="heh-ar.init.yeh"/>
+ <Substitution in="heh-ar.medi" out="heh-ar.medi.yeh"/>
+ <Substitution in="hehDoachashmee-ar.medi" out="hehDoachashmee-ar.medi.yeh"/>
+ <Substitution in="hehgoal-ar.init" out="hehgoal-ar.init.yeh"/>
+ <Substitution in="kaf-ar.init" out="kaf-ar.init.yeh"/>
+ <Substitution in="kaf-ar.medi" out="kaf-ar.medi.yeh"/>
+ <Substitution in="lam-ar.init" out="lam-ar.init.yeh"/>
+ <Substitution in="lam-ar.medi" out="lam-ar.medi.yeh"/>
+ <Substitution in="meem-ar.init" out="meem-ar.init.yeh"/>
+ <Substitution in="meem-ar.medi" out="meem-ar.medi.yeh"/>
+ <Substitution in="sad-ar.init" out="sad-ar.init.yeh"/>
+ <Substitution in="sad-ar.medi" out="sad-ar.medi.yeh"/>
+ <Substitution in="seen-ar.init" out="seen-ar.init.yeh"/>
+ <Substitution in="seen-ar.medi" out="seen-ar.medi.yeh"/>
+ <Substitution in="tah-ar.init" out="tah-ar.init.yeh"/>
+ <Substitution in="tah-ar.medi" out="tah-ar.medi.yeh"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="39">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="behDotless-ar.init.yeh"/>
+ <Glyph value="fehDotless-ar.init.yeh"/>
+ <Glyph value="kaf-ar.init.yeh"/>
+ <Glyph value="lam-ar.init.yeh"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="alefMaksura-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="40"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="40">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="alefMaksura-ar.fina" out="alefMaksura-ar.fina.yeh"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="41">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="kaf-ar.init"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="alef-ar.fina"/>
+ <Glyph value="kaf-ar.fina"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.medi.ain"/>
+ <Glyph value="kaf-ar.medi.dal"/>
+ <Glyph value="kaf-ar.medi.feh"/>
+ <Glyph value="kaf-ar.medi.hah"/>
+ <Glyph value="kaf-ar.medi.heh"/>
+ <Glyph value="kaf-ar.medi.meem"/>
+ <Glyph value="kaf-ar.medi.ragaa"/>
+ <Glyph value="kaf-ar.medi.reh"/>
+ <Glyph value="kaf-ar.medi.sad"/>
+ <Glyph value="kaf-ar.medi.yeh"/>
+ <Glyph value="keheh-ar.fina"/>
+ <Glyph value="keheh-ar.fina.jalt"/>
+ <Glyph value="lam-ar.fina"/>
+ <Glyph value="lam-ar.fina.jalt"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.medi.ain"/>
+ <Glyph value="lam-ar.medi.alef"/>
+ <Glyph value="lam-ar.medi.dal"/>
+ <Glyph value="lam-ar.medi.feh"/>
+ <Glyph value="lam-ar.medi.hah"/>
+ <Glyph value="lam-ar.medi.heh"/>
+ <Glyph value="lam-ar.medi.meem"/>
+ <Glyph value="lam-ar.medi.ragaa"/>
+ <Glyph value="lam-ar.medi.reh"/>
+ <Glyph value="lam-ar.medi.sad"/>
+ <Glyph value="lam-ar.medi.yeh"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="42"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="42">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="kaf-ar.init" out="kaf-ar.init.alef"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="43">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="kaf-ar.init.alef"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="kaf-ar.init.alef"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="alef-ar.fina"/>
+ <Glyph value="kaf-ar.fina"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.medi.ain"/>
+ <Glyph value="kaf-ar.medi.dal"/>
+ <Glyph value="kaf-ar.medi.feh"/>
+ <Glyph value="kaf-ar.medi.hah"/>
+ <Glyph value="kaf-ar.medi.heh"/>
+ <Glyph value="kaf-ar.medi.meem"/>
+ <Glyph value="kaf-ar.medi.ragaa"/>
+ <Glyph value="kaf-ar.medi.reh"/>
+ <Glyph value="kaf-ar.medi.sad"/>
+ <Glyph value="kaf-ar.medi.yeh"/>
+ <Glyph value="keheh-ar.fina"/>
+ <Glyph value="keheh-ar.fina.jalt"/>
+ <Glyph value="lam-ar.fina"/>
+ <Glyph value="lam-ar.fina.jalt"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.medi.ain"/>
+ <Glyph value="lam-ar.medi.alef"/>
+ <Glyph value="lam-ar.medi.dal"/>
+ <Glyph value="lam-ar.medi.feh"/>
+ <Glyph value="lam-ar.medi.hah"/>
+ <Glyph value="lam-ar.medi.heh"/>
+ <Glyph value="lam-ar.medi.meem"/>
+ <Glyph value="lam-ar.medi.ragaa"/>
+ <Glyph value="lam-ar.medi.reh"/>
+ <Glyph value="lam-ar.medi.sad"/>
+ <Glyph value="lam-ar.medi.yeh"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="44"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="44">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="kaf-ar.init.alef" out="kaf-ar.medi"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="45">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="hah-ar.medi"/>
+ <Glyph value="hah-ar.init"/>
+ <Glyph value="seen-ar.medi"/>
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="sad-ar.init"/>
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="ain-ar.medi"/>
+ <Glyph value="ain-ar.init"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.init"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.init"/>
+ <Glyph value="meem-ar.medi"/>
+ <Glyph value="meem-ar.init"/>
+ <Glyph value="heh-ar.init"/>
+ <Glyph value="hehDoachashmee-ar.medi"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="kaf-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="alef-ar.fina"/>
+ <Glyph value="kaf-ar.fina"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.medi.ain"/>
+ <Glyph value="kaf-ar.medi.dal"/>
+ <Glyph value="kaf-ar.medi.feh"/>
+ <Glyph value="kaf-ar.medi.hah"/>
+ <Glyph value="kaf-ar.medi.heh"/>
+ <Glyph value="kaf-ar.medi.meem"/>
+ <Glyph value="kaf-ar.medi.ragaa"/>
+ <Glyph value="kaf-ar.medi.reh"/>
+ <Glyph value="kaf-ar.medi.sad"/>
+ <Glyph value="kaf-ar.medi.yeh"/>
+ <Glyph value="keheh-ar.fina"/>
+ <Glyph value="keheh-ar.fina.jalt"/>
+ <Glyph value="lam-ar.fina"/>
+ <Glyph value="lam-ar.fina.jalt"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.medi.ain"/>
+ <Glyph value="lam-ar.medi.alef"/>
+ <Glyph value="lam-ar.medi.dal"/>
+ <Glyph value="lam-ar.medi.feh"/>
+ <Glyph value="lam-ar.medi.hah"/>
+ <Glyph value="lam-ar.medi.heh"/>
+ <Glyph value="lam-ar.medi.meem"/>
+ <Glyph value="lam-ar.medi.ragaa"/>
+ <Glyph value="lam-ar.medi.reh"/>
+ <Glyph value="lam-ar.medi.sad"/>
+ <Glyph value="lam-ar.medi.yeh"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="46"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="46">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="kaf-ar.medi" out="kaf-ar.init.alef"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="47">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.init"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="alef-ar.fina"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="48"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="48">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="lam-ar.init" out="lam-ar.init.alef"/>
+ <Substitution in="lam-ar.medi" out="lam-ar.medi.alef"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="49">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="lam-ar.medi.alef"/>
+ <Glyph value="lam-ar.init.alef"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="alef-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="50"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="50">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="alef-ar.fina" out="alef-ar.fina.lam"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="51">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="noon-ar.fina"/>
+ <Glyph value="noonghunna-ar.jalt"/>
+ <Glyph value="noonghunna-ar.fina"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="52"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="52">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="behDotless-ar.medi" out="behDotless-ar.medi.noon"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="53">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.init"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="alef-ar.fina"/>
+ <Glyph value="behDotless-ar.fina"/>
+ <Glyph value="behDotless-ar.fina.jalt"/>
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.medi.ain"/>
+ <Glyph value="behDotless-ar.medi.dal"/>
+ <Glyph value="behDotless-ar.medi.feh"/>
+ <Glyph value="behDotless-ar.medi.hah"/>
+ <Glyph value="behDotless-ar.medi.heh"/>
+ <Glyph value="behDotless-ar.medi.meem"/>
+ <Glyph value="behDotless-ar.medi.reh"/>
+ <Glyph value="behDotless-ar.medi.sad"/>
+ <Glyph value="behDotless-ar.medi.yeh"/>
+ <Glyph value="kaf-ar.fina"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.medi.ain"/>
+ <Glyph value="kaf-ar.medi.dal"/>
+ <Glyph value="kaf-ar.medi.feh"/>
+ <Glyph value="kaf-ar.medi.hah"/>
+ <Glyph value="kaf-ar.medi.heh"/>
+ <Glyph value="kaf-ar.medi.meem"/>
+ <Glyph value="kaf-ar.medi.reh"/>
+ <Glyph value="kaf-ar.medi.sad"/>
+ <Glyph value="kaf-ar.medi.yeh"/>
+ <Glyph value="kaf-ar.init.alef"/>
+ <Glyph value="keheh-ar.fina"/>
+ <Glyph value="keheh-ar.fina.jalt"/>
+ <Glyph value="lam-ar.fina"/>
+ <Glyph value="lam-ar.fina.jalt"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.medi.ain"/>
+ <Glyph value="lam-ar.medi.alef"/>
+ <Glyph value="lam-ar.medi.dal"/>
+ <Glyph value="lam-ar.medi.feh"/>
+ <Glyph value="lam-ar.medi.hah"/>
+ <Glyph value="lam-ar.medi.heh"/>
+ <Glyph value="lam-ar.medi.meem"/>
+ <Glyph value="lam-ar.medi.reh"/>
+ <Glyph value="lam-ar.medi.sad"/>
+ <Glyph value="lam-ar.medi.yeh"/>
+ <Glyph value="noon-ar.fina"/>
+ <Glyph value="noonghunna-ar.fina"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="54"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="54">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="behDotless-ar.init" out="behDotless-ar.init.ascend"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="55">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="behDotless-ar.init.ascend"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="behDotless-ar.fina"/>
+ <Glyph value="behDotless-ar.fina.jalt"/>
+ <Glyph value="behDotless-ar.medi"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="56"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="56">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="behDotless-ar.medi" out="behDotless-ar.medi.high"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="57">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="behDotless-ar.medi" out="behDotless-ar.medi.high2"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="58">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="2">
+ <Coverage>
+ <Glyph value="behDotless-ar.medi"/>
+ </Coverage>
+ <BacktrackClassDef>
+ <ClassDef glyph="behDotless-ar.init.ascend" class="6"/>
+ <ClassDef glyph="behDotless-ar.medi" class="5"/>
+ <ClassDef glyph="behDotless-ar.medi.high" class="4"/>
+ <ClassDef glyph="sad-ar.init" class="3"/>
+ <ClassDef glyph="sad-ar.medi" class="2"/>
+ <ClassDef glyph="seen-ar.medi" class="1"/>
+ </BacktrackClassDef>
+ <InputClassDef>
+ <ClassDef glyph="behDotless-ar.medi" class="1"/>
+ </InputClassDef>
+ <LookAheadClassDef>
+ <ClassDef glyph="behDotless-ar.fina" class="5"/>
+ <ClassDef glyph="behDotless-ar.medi" class="4"/>
+ <ClassDef glyph="behDotless-ar.medi.ain" class="2"/>
+ <ClassDef glyph="behDotless-ar.medi.dal" class="3"/>
+ <ClassDef glyph="behDotless-ar.medi.feh" class="2"/>
+ <ClassDef glyph="behDotless-ar.medi.hah" class="2"/>
+ <ClassDef glyph="behDotless-ar.medi.heh" class="2"/>
+ <ClassDef glyph="behDotless-ar.medi.meem" class="2"/>
+ <ClassDef glyph="behDotless-ar.medi.reh" class="2"/>
+ <ClassDef glyph="behDotless-ar.medi.sad" class="2"/>
+ <ClassDef glyph="behDotless-ar.medi.yeh" class="2"/>
+ <ClassDef glyph="seen-ar.fina" class="1"/>
+ <ClassDef glyph="seen-ar.fina.jalt" class="1"/>
+ <ClassDef glyph="seen-ar.medi" class="1"/>
+ <ClassDef glyph="seen-ar.medi.ain" class="1"/>
+ <ClassDef glyph="seen-ar.medi.dal" class="1"/>
+ <ClassDef glyph="seen-ar.medi.feh" class="1"/>
+ <ClassDef glyph="seen-ar.medi.hah" class="1"/>
+ <ClassDef glyph="seen-ar.medi.heh" class="1"/>
+ <ClassDef glyph="seen-ar.medi.meem" class="1"/>
+ <ClassDef glyph="seen-ar.medi.ragaa" class="1"/>
+ <ClassDef glyph="seen-ar.medi.reh" class="1"/>
+ <ClassDef glyph="seen-ar.medi.sad" class="1"/>
+ <ClassDef glyph="seen-ar.medi.yeh" class="1"/>
+ </LookAheadClassDef>
+ <!-- ChainSubClassSetCount=2 -->
+ <ChainSubClassSet index="0">
+ <!-- ChainSubClassRuleCount=0 -->
+ </ChainSubClassSet>
+ <ChainSubClassSet index="1">
+ <!-- ChainSubClassRuleCount=10 -->
+ <ChainSubClassRule index="0">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="5"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="4"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ <ChainSubClassRule index="1">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="5"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="3"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ <ChainSubClassRule index="2">
+ <!-- BacktrackGlyphCount=3 -->
+ <Backtrack index="0" value="5"/>
+ <Backtrack index="1" value="4"/>
+ <Backtrack index="2" value="6"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ <ChainSubClassRule index="3">
+ <!-- BacktrackGlyphCount=4 -->
+ <Backtrack index="0" value="5"/>
+ <Backtrack index="1" value="5"/>
+ <Backtrack index="2" value="4"/>
+ <Backtrack index="3" value="6"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ <ChainSubClassRule index="4">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ <ChainSubClassRule index="5">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="6"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="2"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ <ChainSubClassRule index="6">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="5"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="2"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ <ChainSubClassRule index="7">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="1"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="5"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ <ChainSubClassRule index="8">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="3"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="4"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ <ChainSubClassRule index="9">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="2"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="4"/>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainSubClassRule>
+ </ChainSubClassSet>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="59">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=10 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ <ChainContextSubst index="1" Format="3">
+ <!-- BacktrackGlyphCount=3 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </BacktrackCoverage>
+ <BacktrackCoverage index="1">
+ <Glyph value="behDotless-ar.medi.high"/>
+ </BacktrackCoverage>
+ <BacktrackCoverage index="2">
+ <Glyph value="behDotless-ar.init.ascend"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ <ChainContextSubst index="2" Format="3">
+ <!-- BacktrackGlyphCount=4 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </BacktrackCoverage>
+ <BacktrackCoverage index="1">
+ <Glyph value="behDotless-ar.medi"/>
+ </BacktrackCoverage>
+ <BacktrackCoverage index="2">
+ <Glyph value="behDotless-ar.medi.high"/>
+ </BacktrackCoverage>
+ <BacktrackCoverage index="3">
+ <Glyph value="behDotless-ar.init.ascend"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ <ChainContextSubst index="3" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="seen-ar.fina"/>
+ <Glyph value="seen-ar.fina.jalt"/>
+ <Glyph value="seen-ar.medi"/>
+ <Glyph value="seen-ar.medi.ain"/>
+ <Glyph value="seen-ar.medi.dal"/>
+ <Glyph value="seen-ar.medi.feh"/>
+ <Glyph value="seen-ar.medi.hah"/>
+ <Glyph value="seen-ar.medi.heh"/>
+ <Glyph value="seen-ar.medi.meem"/>
+ <Glyph value="seen-ar.medi.ragaa"/>
+ <Glyph value="seen-ar.medi.reh"/>
+ <Glyph value="seen-ar.medi.sad"/>
+ <Glyph value="seen-ar.medi.yeh"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ <ChainContextSubst index="4" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="behDotless-ar.init.ascend"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="behDotless-ar.medi.ain"/>
+ <Glyph value="behDotless-ar.medi.feh"/>
+ <Glyph value="behDotless-ar.medi.hah"/>
+ <Glyph value="behDotless-ar.medi.heh"/>
+ <Glyph value="behDotless-ar.medi.meem"/>
+ <Glyph value="behDotless-ar.medi.reh"/>
+ <Glyph value="behDotless-ar.medi.sad"/>
+ <Glyph value="behDotless-ar.medi.yeh"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ <ChainContextSubst index="5" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="behDotless-ar.medi.ain"/>
+ <Glyph value="behDotless-ar.medi.feh"/>
+ <Glyph value="behDotless-ar.medi.hah"/>
+ <Glyph value="behDotless-ar.medi.heh"/>
+ <Glyph value="behDotless-ar.medi.meem"/>
+ <Glyph value="behDotless-ar.medi.reh"/>
+ <Glyph value="behDotless-ar.medi.sad"/>
+ <Glyph value="behDotless-ar.medi.yeh"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ <ChainContextSubst index="6" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="seen-ar.medi"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="behDotless-ar.fina"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ <ChainContextSubst index="7" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="sad-ar.init"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ <ChainContextSubst index="8" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="sad-ar.medi"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ <ChainContextSubst index="9" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="seen-ar.medi"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="behDotless-ar.medi.sad"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="57"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="60">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="behDotless-ar.medi.high2"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi.high2"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="61"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="61">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="behDotless-ar.medi.high2" out="behDotless-ar.medi"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="62">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="kaf-ar.medi" out="kaf-ar.medi.kaf"/>
+ <Substitution in="lam-ar.init" out="lam-ar.init.kaf"/>
+ <Substitution in="lam-ar.medi" out="lam-ar.medi.kaf"/>
+ <Substitution in="tah-ar.init" out="tah-ar.init.kaf"/>
+ <Substitution in="tah-ar.medi" out="tah-ar.medi.kaf"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="63">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=2 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.init"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="kaf-ar.init.alef"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="62"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ <ChainContextSubst index="1" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="kaf-ar.init.alef"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.init"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="kaf-ar.init.alef"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="62"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="64">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=2 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="hah-ar.medi"/>
+ <Glyph value="hah-ar.init"/>
+ <Glyph value="seen-ar.medi"/>
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="sad-ar.init"/>
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="ain-ar.medi"/>
+ <Glyph value="ain-ar.init"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.init"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.init"/>
+ <Glyph value="meem-ar.medi"/>
+ <Glyph value="meem-ar.init"/>
+ <Glyph value="heh-ar.medi"/>
+ <Glyph value="heh-ar.init"/>
+ <Glyph value="hehgoal-ar.init"/>
+ <Glyph value="hehDoachashmee-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="yehbarree-ar.fina"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="65"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ <ChainContextSubst index="1" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi.high2"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="yehbarree-ar.fina"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="65"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="65">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="ain-ar.init" out="ain-ar.init.ragaa"/>
+ <Substitution in="ain-ar.medi" out="ain-ar.medi.ragaa"/>
+ <Substitution in="behDotless-ar.init" out="behDotless-ar.init.ragaa"/>
+ <Substitution in="behDotless-ar.medi" out="behDotless-ar.medi.ragaa"/>
+ <Substitution in="behDotless-ar.medi.high2" out="behDotless-ar.medi.ragaa"/>
+ <Substitution in="fehDotless-ar.init" out="fehDotless-ar.init.ragaa"/>
+ <Substitution in="fehDotless-ar.medi" out="fehDotless-ar.medi.ragaa"/>
+ <Substitution in="hah-ar.init" out="hah-ar.init.ragaa"/>
+ <Substitution in="hah-ar.medi" out="hah-ar.medi.ragaa"/>
+ <Substitution in="heh-ar.init" out="heh-ar.init.ragaa"/>
+ <Substitution in="heh-ar.medi" out="heh-ar.medi.ragaa"/>
+ <Substitution in="hehDoachashmee-ar.medi" out="hehDoachashmee-ar.medi.ragaa"/>
+ <Substitution in="hehgoal-ar.init" out="hehgoal-ar.init.ragaa"/>
+ <Substitution in="kaf-ar.init" out="kaf-ar.init.ragaa"/>
+ <Substitution in="kaf-ar.medi" out="kaf-ar.medi.ragaa"/>
+ <Substitution in="lam-ar.init" out="lam-ar.init.ragaa"/>
+ <Substitution in="lam-ar.medi" out="lam-ar.medi.ragaa"/>
+ <Substitution in="meem-ar.init" out="meem-ar.init.ragaa"/>
+ <Substitution in="meem-ar.medi" out="meem-ar.medi.ragaa"/>
+ <Substitution in="sad-ar.init" out="sad-ar.init.ragaa"/>
+ <Substitution in="sad-ar.medi" out="sad-ar.medi.ragaa"/>
+ <Substitution in="seen-ar.init" out="seen-ar.init.ragaa"/>
+ <Substitution in="seen-ar.medi" out="seen-ar.medi.ragaa"/>
+ <Substitution in="tah-ar.init" out="tah-ar.init.ragaa"/>
+ <Substitution in="tah-ar.medi" out="tah-ar.medi.ragaa"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="66">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="hah-ar.medi.heh"/>
+ <Glyph value="hah-ar.init.heh"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="heh-ar.medi.ragaa"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="67"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="67">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="hah-ar.init.heh" out="hah-ar.init.heh.ragaa"/>
+ <Substitution in="hah-ar.medi.heh" out="hah-ar.medi.heh.ragaa"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="68">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi.sad"/>
+ <Glyph value="behDotless-ar.init.sad"/>
+ <Glyph value="hah-ar.medi.sad"/>
+ <Glyph value="hah-ar.init.sad"/>
+ <Glyph value="seen-ar.medi.sad"/>
+ <Glyph value="seen-ar.init.sad"/>
+ <Glyph value="sad-ar.medi.qantara"/>
+ <Glyph value="sad-ar.init.qantara"/>
+ <Glyph value="tah-ar.medi.qantara"/>
+ <Glyph value="tah-ar.init.qantara"/>
+ <Glyph value="ain-ar.medi.sad"/>
+ <Glyph value="ain-ar.init.sad"/>
+ <Glyph value="fehDotless-ar.medi.sad"/>
+ <Glyph value="fehDotless-ar.init.sad"/>
+ <Glyph value="kaf-ar.medi.sad"/>
+ <Glyph value="kaf-ar.init.sad"/>
+ <Glyph value="lam-ar.medi.sad"/>
+ <Glyph value="lam-ar.init.sad"/>
+ <Glyph value="meem-ar.medi.sad"/>
+ <Glyph value="meem-ar.init.sad"/>
+ <Glyph value="heh-ar.medi.sad"/>
+ <Glyph value="heh-ar.init.sad"/>
+ <Glyph value="hehgoal-ar.init.sad"/>
+ <Glyph value="hehDoachashmee-ar.medi.sad"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="sad-ar.medi.ragaa"/>
+ <Glyph value="tah-ar.medi.ragaa"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="69"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="69">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="ain-ar.init.sad" out="ain-ar.init"/>
+ <Substitution in="ain-ar.medi.sad" out="ain-ar.medi"/>
+ <Substitution in="behDotless-ar.init.sad" out="behDotless-ar.init"/>
+ <Substitution in="behDotless-ar.medi.sad" out="behDotless-ar.medi"/>
+ <Substitution in="fehDotless-ar.init.sad" out="fehDotless-ar.init"/>
+ <Substitution in="fehDotless-ar.medi.sad" out="fehDotless-ar.medi"/>
+ <Substitution in="hah-ar.init.sad" out="hah-ar.init"/>
+ <Substitution in="hah-ar.medi.sad" out="hah-ar.medi"/>
+ <Substitution in="heh-ar.init.sad" out="heh-ar.init"/>
+ <Substitution in="heh-ar.medi.sad" out="heh-ar.medi"/>
+ <Substitution in="hehDoachashmee-ar.medi.sad" out="hehDoachashmee-ar.medi"/>
+ <Substitution in="hehgoal-ar.init.sad" out="hehgoal-ar.init"/>
+ <Substitution in="kaf-ar.init.sad" out="kaf-ar.init"/>
+ <Substitution in="kaf-ar.medi.sad" out="kaf-ar.medi"/>
+ <Substitution in="lam-ar.init.sad" out="lam-ar.init"/>
+ <Substitution in="lam-ar.medi.sad" out="lam-ar.medi"/>
+ <Substitution in="meem-ar.init.sad" out="meem-ar.init"/>
+ <Substitution in="meem-ar.medi.sad" out="meem-ar.medi"/>
+ <Substitution in="sad-ar.init.qantara" out="sad-ar.init"/>
+ <Substitution in="sad-ar.medi.qantara" out="sad-ar.medi"/>
+ <Substitution in="seen-ar.init.sad" out="seen-ar.init"/>
+ <Substitution in="seen-ar.medi.sad" out="seen-ar.medi"/>
+ <Substitution in="tah-ar.init.qantara" out="tah-ar.init"/>
+ <Substitution in="tah-ar.medi.qantara" out="tah-ar.medi"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="70">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="1">
+ <Coverage>
+ <Glyph value="kaf-ar.init.alef"/>
+ </Coverage>
+ <!-- ChainSubRuleSetCount=1 -->
+ <ChainSubRuleSet index="0">
+ <!-- ChainSubRuleCount=2 -->
+ <ChainSubRule index="0">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="fehDotless-ar.init"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="71"/>
+ </SubstLookupRecord>
+ </ChainSubRule>
+ <ChainSubRule index="1">
+ <!-- BacktrackGlyphCount=2 -->
+ <Backtrack index="0" value="meem-ar.medi"/>
+ <Backtrack index="1" value="lam-ar.init.meem"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="72"/>
+ </SubstLookupRecord>
+ </ChainSubRule>
+ </ChainSubRuleSet>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="71">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="kaf-ar.init.alef" out="kaf-ar.init.alef.loop"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="72">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="kaf-ar.init.alef" out="kaf-ar.init.alef.loop"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="73">
+ <LookupType value="6"/>
+ <LookupFlag value="16"/><!-- useMarkFilteringSet -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=2 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="dotabove-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="threedotsupabove-ar"/>
+ </BacktrackCoverage>
+ <BacktrackCoverage index="1">
+ <Glyph value="ain-ar.init"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="kaf-ar.init.alef"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="74"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ <MarkFilteringSet value="0"/>
+ </Lookup>
+ <Lookup index="74">
+ <LookupType value="1"/>
+ <LookupFlag value="16"/><!-- useMarkFilteringSet -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="kaf-ar.init.alef" out="kaf-ar.init.alef.loop"/>
+ </SingleSubst>
+ <MarkFilteringSet value="0"/>
+ </Lookup>
+ <Lookup index="75">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="behDotless-ar.medi.sad"/>
+ <Glyph value="behDotless-ar.init.sad"/>
+ <Glyph value="hah-ar.medi.sad"/>
+ <Glyph value="hah-ar.init.sad"/>
+ <Glyph value="seen-ar.medi.sad"/>
+ <Glyph value="seen-ar.init.sad"/>
+ <Glyph value="sad-ar.medi.qantara"/>
+ <Glyph value="sad-ar.init.qantara"/>
+ <Glyph value="tah-ar.medi.qantara"/>
+ <Glyph value="tah-ar.init.qantara"/>
+ <Glyph value="ain-ar.medi.sad"/>
+ <Glyph value="ain-ar.init.sad"/>
+ <Glyph value="fehDotless-ar.medi.sad"/>
+ <Glyph value="fehDotless-ar.init.sad"/>
+ <Glyph value="kaf-ar.medi.sad"/>
+ <Glyph value="kaf-ar.init.sad"/>
+ <Glyph value="lam-ar.medi.sad"/>
+ <Glyph value="lam-ar.init.sad"/>
+ <Glyph value="meem-ar.medi.sad"/>
+ <Glyph value="meem-ar.init.sad"/>
+ <Glyph value="heh-ar.medi.sad"/>
+ <Glyph value="heh-ar.init.sad"/>
+ <Glyph value="hehgoal-ar.init.sad"/>
+ <Glyph value="hehDoachashmee-ar.medi.sad"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="tah-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="76"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="76">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="sad-ar.medi" out="sad-ar.medi.postsad"/>
+ <Substitution in="tah-ar.medi" out="tah-ar.medi.postsad"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="77">
+ <LookupType value="5"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <ContextSubst index="0" Format="1">
+ <Coverage>
+ <Glyph value="space"/>
+ <Glyph value="kashida-ar"/>
+ </Coverage>
+ <!-- SubRuleSetCount=2 -->
+ <SubRuleSet index="0">
+ <!-- SubRuleCount=1 -->
+ <SubRule index="0">
+ <!-- GlyphCount=2 -->
+ <!-- SubstCount=1 -->
+ <Input index="0" value="alefabove-ar"/>
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="78"/>
+ </SubstLookupRecord>
+ </SubRule>
+ </SubRuleSet>
+ <SubRuleSet index="1">
+ <!-- SubRuleCount=1 -->
+ <SubRule index="0">
+ <!-- GlyphCount=2 -->
+ <!-- SubstCount=1 -->
+ <Input index="0" value="alefabove-ar"/>
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="79"/>
+ </SubstLookupRecord>
+ </SubRule>
+ </SubRuleSet>
+ </ContextSubst>
+ </Lookup>
+ <Lookup index="78">
+ <LookupType value="4"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <LigatureSubst index="0">
+ <LigatureSet glyph="space">
+ <Ligature components="alefabove-ar" glyph="alefabove-ar.isol"/>
+ </LigatureSet>
+ </LigatureSubst>
+ </Lookup>
+ <Lookup index="79">
+ <LookupType value="4"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <LigatureSubst index="0">
+ <LigatureSet glyph="kashida-ar">
+ <Ligature components="alefabove-ar" glyph="alefabove-ar.medi"/>
+ </LigatureSet>
+ </LigatureSubst>
+ </Lookup>
+ <Lookup index="80">
+ <LookupType value="2"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <MultipleSubst index="0">
+ <Substitution in="alefMaksura-ar" out="alefMaksura-ar.jalt"/>
+ <Substitution in="alefMaksura-ar.fina" out="alefMaksura-ar.fina.jalt"/>
+ <Substitution in="alefMaksura-ar.fina.yeh" out="alefMaksura-ar.fina.yeh.jalt"/>
+ <Substitution in="behDotless-ar" out="behDotless-ar.jalt"/>
+ <Substitution in="behDotless-ar.fina" out="behDotless-ar.fina.jalt"/>
+ <Substitution in="fehDotless-ar" out="fehDotless-ar.jalt"/>
+ <Substitution in="fehDotless-ar.fina" out="fehDotless-ar.fina.jalt"/>
+ <Substitution in="kaf-ar" out="kaf-ar.jalt"/>
+ <Substitution in="kaf-ar.fina" out="kaf-ar.fina.jalt"/>
+ <Substitution in="keheh-ar" out="keheh-ar.jalt"/>
+ <Substitution in="keheh-ar.fina" out="keheh-ar.fina.jalt"/>
+ <Substitution in="lam-ar" out="lam-ar.jalt"/>
+ <Substitution in="lam-ar.fina" out="lam-ar.fina.jalt"/>
+ <Substitution in="noon-ar" out="noonghunna-ar.jalt,dotabove-ar"/>
+ <Substitution in="noon-ar.fina" out="noonghunna-ar.jalt,dotabove-ar"/>
+ <Substitution in="noonghunna-ar" out="noonghunna-ar.jalt"/>
+ <Substitution in="noonghunna-ar.fina" out="noonghunna-ar.jalt"/>
+ <Substitution in="qaf-ar" out="qafDotless-ar.jalt,twodotshorizontalabove-ar"/>
+ <Substitution in="qaf-ar.fina" out="qafDotless-ar.fina.jalt,twodotshorizontalabove-ar"/>
+ <Substitution in="qafDotless-ar" out="qafDotless-ar.jalt"/>
+ <Substitution in="qafDotless-ar.fina" out="qafDotless-ar.fina.jalt"/>
+ <Substitution in="sad-ar" out="sad-ar.jalt"/>
+ <Substitution in="sad-ar.fina" out="sad-ar.fina.jalt"/>
+ <Substitution in="seen-ar" out="seen-ar.jalt"/>
+ <Substitution in="seen-ar.fina" out="seen-ar.fina.jalt"/>
+ </MultipleSubst>
+ </Lookup>
+ <Lookup index="81">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="ain-ar.init.heh" out="ain-ar.init.meem"/>
+ <Substitution in="ain-ar.medi.heh" out="ain-ar.medi.meem"/>
+ <Substitution in="behDotless-ar.init.heh" out="behDotless-ar.init.meem"/>
+ <Substitution in="behDotless-ar.medi.heh" out="behDotless-ar.medi.meem"/>
+ <Substitution in="fehDotless-ar.init.heh" out="fehDotless-ar.init.meem"/>
+ <Substitution in="fehDotless-ar.medi.heh" out="fehDotless-ar.medi.meem"/>
+ <Substitution in="hah-ar.init.heh" out="hah-ar.init.meem"/>
+ <Substitution in="hah-ar.medi.heh" out="hah-ar.medi.meem"/>
+ <Substitution in="heh-ar.init.heh" out="heh-ar.init.meem"/>
+ <Substitution in="heh-ar.medi" out="hehDoachashmee-ar.medi"/>
+ <Substitution in="heh-ar.medi.ain" out="hehDoachashmee-ar.medi.ain"/>
+ <Substitution in="heh-ar.medi.dal" out="hehDoachashmee-ar.medi.dal"/>
+ <Substitution in="heh-ar.medi.feh" out="hehDoachashmee-ar.medi.feh"/>
+ <Substitution in="heh-ar.medi.hah" out="hehDoachashmee-ar.medi.hah"/>
+ <Substitution in="heh-ar.medi.heh" out="hehDoachashmee-ar.medi.heh"/>
+ <Substitution in="heh-ar.medi.meem" out="hehDoachashmee-ar.medi.meem"/>
+ <Substitution in="heh-ar.medi.reh" out="hehDoachashmee-ar.medi.reh"/>
+ <Substitution in="heh-ar.medi.sad" out="hehDoachashmee-ar.medi.sad"/>
+ <Substitution in="heh-ar.medi.yeh" out="hehDoachashmee-ar.medi.yeh"/>
+ <Substitution in="hehDoachashmee-ar.medi.heh" out="hehDoachashmee-ar.medi.meem"/>
+ <Substitution in="hehgoal-ar.init.heh" out="hehgoal-ar.init.meem"/>
+ <Substitution in="kaf-ar.init.heh" out="kaf-ar.init.meem"/>
+ <Substitution in="kaf-ar.medi.heh" out="kaf-ar.medi.meem"/>
+ <Substitution in="lam-ar.init.heh" out="lam-ar.init.meem"/>
+ <Substitution in="lam-ar.medi.heh" out="lam-ar.medi.meem"/>
+ <Substitution in="meem-ar.init.heh" out="meem-ar.init.meem"/>
+ <Substitution in="meem-ar.medi.heh" out="meem-ar.medi.meem"/>
+ <Substitution in="sad-ar.init.heh" out="sad-ar.init.meem"/>
+ <Substitution in="sad-ar.medi.heh" out="sad-ar.medi.meem"/>
+ <Substitution in="seen-ar.init" out="seen-ar.medi"/>
+ <Substitution in="seen-ar.init.heh" out="seen-ar.init.meem"/>
+ <Substitution in="seen-ar.medi.heh" out="seen-ar.medi.meem"/>
+ <Substitution in="tah-ar.init.heh" out="tah-ar.init.meem"/>
+ <Substitution in="tah-ar.medi.heh" out="tah-ar.medi.meem"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="82">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="heh-ar.fina" out="hehgoal-ar.fina"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="83">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="noon-ar" out="noon-ar.tail"/>
+ <Substitution in="noon-ar.fina" out="noon-ar.fina.tail"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="84">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="kaf-ar.init.alef" out="kaf-ar.init.alef.loop"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="85">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="two-ar" out="two-persian"/>
+ <Substitution in="two-persian" out="two-ar"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="86">
+ <LookupType value="4"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <LigatureSubst index="0">
+ <LigatureSet glyph="seen-ar">
+ <Ligature components="threedotsupabove-ar" glyph="sheen-ar"/>
+ </LigatureSet>
+ </LigatureSubst>
+ </Lookup>
+ <Lookup index="87">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="sad-ar.init.qantara" out="sad-ar.init.sad"/>
+ <Substitution in="sad-ar.medi.qantara" out="sad-ar.medi.sad"/>
+ <Substitution in="tah-ar.init.qantara" out="tah-ar.init.sad"/>
+ <Substitution in="tah-ar.medi.qantara" out="tah-ar.medi.sad"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="88">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="sukun-ar" out="sukun-ar.alt"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="89">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="eight-ar" out="eight-ar.numr"/>
+ <Substitution in="five-ar" out="five-ar.numr"/>
+ <Substitution in="five-persian" out="five-persian.numr"/>
+ <Substitution in="four-ar" out="four-ar.numr"/>
+ <Substitution in="four-persian" out="four-persian.numr"/>
+ <Substitution in="four-persian.urd" out="four-persian.urd.numr"/>
+ <Substitution in="nine-ar" out="nine-ar.numr"/>
+ <Substitution in="one-ar" out="one-ar.numr"/>
+ <Substitution in="seven-ar" out="seven-ar.numr"/>
+ <Substitution in="seven-persian" out="seven-ar.numr"/>
+ <Substitution in="seven-persian.urd" out="seven-persian.urd.numr"/>
+ <Substitution in="six-ar" out="six-ar.numr"/>
+ <Substitution in="six-persian" out="six-persian.numr"/>
+ <Substitution in="three-ar" out="three-ar.numr"/>
+ <Substitution in="two-ar" out="two-ar.numr"/>
+ <Substitution in="two-persian" out="two-persian.numr"/>
+ <Substitution in="zero-ar" out="zero-ar.numr"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="90">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="eight-ar" out="eight-ar.dnom"/>
+ <Substitution in="five-ar" out="five-ar.dnom"/>
+ <Substitution in="five-persian" out="five-persian.dnom"/>
+ <Substitution in="four-ar" out="four-ar.dnom"/>
+ <Substitution in="four-persian" out="four-persian.dnom"/>
+ <Substitution in="four-persian.urd" out="four-persian.urd.dnom"/>
+ <Substitution in="nine-ar" out="nine-ar.dnom"/>
+ <Substitution in="one-ar" out="one-ar.dnom"/>
+ <Substitution in="seven-ar" out="seven-ar.dnom"/>
+ <Substitution in="seven-persian" out="seven-ar.dnom"/>
+ <Substitution in="seven-persian.urd" out="seven-persian.urd.dnom"/>
+ <Substitution in="six-ar" out="six-ar.dnom"/>
+ <Substitution in="six-persian" out="six-persian.dnom"/>
+ <Substitution in="three-ar" out="three-ar.dnom"/>
+ <Substitution in="two-ar" out="two-ar.dnom"/>
+ <Substitution in="two-persian" out="two-persian.dnom"/>
+ <Substitution in="zero-ar" out="zero-ar.dnom"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="91">
+ <LookupType value="6"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="f"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="b"/>
+ <Glyph value="h"/>
+ <Glyph value="k"/>
+ <Glyph value="l"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="92"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="92">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="f" out="f.alt"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="93">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="eight" out="eight.numr"/>
+ <Substitution in="five" out="five.numr"/>
+ <Substitution in="four" out="four.numr"/>
+ <Substitution in="nine" out="nine.numr"/>
+ <Substitution in="one" out="one.numr"/>
+ <Substitution in="seven" out="seven.numr"/>
+ <Substitution in="six" out="six.numr"/>
+ <Substitution in="three" out="three.numr"/>
+ <Substitution in="two" out="two.numr"/>
+ <Substitution in="zero" out="zero.numr"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="94">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="eight" out="eight.dnom"/>
+ <Substitution in="five" out="five.dnom"/>
+ <Substitution in="four" out="four.dnom"/>
+ <Substitution in="nine" out="nine.dnom"/>
+ <Substitution in="one" out="one.dnom"/>
+ <Substitution in="seven" out="seven.dnom"/>
+ <Substitution in="six" out="six.dnom"/>
+ <Substitution in="three" out="three.dnom"/>
+ <Substitution in="two" out="two.dnom"/>
+ <Substitution in="zero" out="zero.dnom"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="95">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="space#1" out="space#1"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="96">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="exclam" out="exclam#1"/>
+ <Substitution in="quoteleft" out="quoteleft#1"/>
+ <Substitution in="quoteright" out="quoteright#1"/>
+ <Substitution in="space" out="space#1"/>
+ </SingleSubst>
+ </Lookup>
+ </LookupList>
+ </GSUB>
+
+ <hmtx>
+ <mtx name=".notdef" width="500" lsb="50"/>
+ <mtx name=".notdef#1" width="500" lsb="50"/>
+ <mtx name="A" width="722" lsb="3"/>
+ <mtx name="AE" width="797" lsb="3"/>
+ <mtx name="Aacute" width="722" lsb="3"/>
+ <mtx name="Acircumflex" width="722" lsb="3"/>
+ <mtx name="Adieresis" width="722" lsb="3"/>
+ <mtx name="Agrave" width="722" lsb="3"/>
+ <mtx name="Aring" width="722" lsb="3"/>
+ <mtx name="Atilde" width="722" lsb="3"/>
+ <mtx name="B" width="559" lsb="4"/>
+ <mtx name="C" width="633" lsb="39"/>
+ <mtx name="Ccedilla" width="633" lsb="39"/>
+ <mtx name="D" width="737" lsb="9"/>
+ <mtx name="Delta" width="751" lsb="46"/>
+ <mtx name="E" width="518" lsb="1"/>
+ <mtx name="Eacute" width="518" lsb="1"/>
+ <mtx name="Ecircumflex" width="518" lsb="1"/>
+ <mtx name="Edieresis" width="518" lsb="1"/>
+ <mtx name="Egrave" width="518" lsb="1"/>
+ <mtx name="Eth" width="746" lsb="18"/>
+ <mtx name="F" width="441" lsb="1"/>
+ <mtx name="G" width="661" lsb="39"/>
+ <mtx name="Gamma" width="492" lsb="42"/>
+ <mtx name="H" width="706" lsb="8"/>
+ <mtx name="I" width="280" lsb="5"/>
+ <mtx name="Iacute" width="280" lsb="5"/>
+ <mtx name="Icircumflex" width="280" lsb="-26"/>
+ <mtx name="Idieresis" width="280" lsb="-23"/>
+ <mtx name="Igrave" width="280" lsb="5"/>
+ <mtx name="J" width="265" lsb="-35"/>
+ <mtx name="K" width="593" lsb="6"/>
+ <mtx name="L" width="494" lsb="8"/>
+ <mtx name="Lambda" width="748" lsb="3"/>
+ <mtx name="M" width="962" lsb="30"/>
+ <mtx name="N" width="732" lsb="2"/>
+ <mtx name="Ntilde" width="732" lsb="2"/>
+ <mtx name="O" width="737" lsb="41"/>
+ <mtx name="OE" width="997" lsb="41"/>
+ <mtx name="Oacute" width="754" lsb="41"/>
+ <mtx name="Ocircumflex" width="737" lsb="41"/>
+ <mtx name="Odieresis" width="737" lsb="41"/>
+ <mtx name="Ograve" width="737" lsb="41"/>
+ <mtx name="Omega" width="905" lsb="43"/>
+ <mtx name="Oslash" width="737" lsb="41"/>
+ <mtx name="Otilde" width="737" lsb="41"/>
+ <mtx name="P" width="527" lsb="10"/>
+ <mtx name="Phi" width="732" lsb="28"/>
+ <mtx name="Pi" width="668" lsb="1"/>
+ <mtx name="Psi" width="736" lsb="0"/>
+ <mtx name="Q" width="740" lsb="41"/>
+ <mtx name="R" width="548" lsb="8"/>
+ <mtx name="S" width="484" lsb="16"/>
+ <mtx name="Sigma" width="571" lsb="8"/>
+ <mtx name="T" width="551" lsb="2"/>
+ <mtx name="Theta" width="778" lsb="41"/>
+ <mtx name="Thorn" width="527" lsb="10"/>
+ <mtx name="U" width="712" lsb="-1"/>
+ <mtx name="Uacute" width="712" lsb="-1"/>
+ <mtx name="Ucircumflex" width="712" lsb="-1"/>
+ <mtx name="Udieresis" width="712" lsb="-1"/>
+ <mtx name="Ugrave" width="712" lsb="-1"/>
+ <mtx name="Upsilon" width="682" lsb="7"/>
+ <mtx name="V" width="707" lsb="0"/>
+ <mtx name="W" width="1050" lsb="-1"/>
+ <mtx name="X" width="624" lsb="7"/>
+ <mtx name="Xi" width="613" lsb="36"/>
+ <mtx name="Y" width="592" lsb="-1"/>
+ <mtx name="Yacute" width="592" lsb="-1"/>
+ <mtx name="Z" width="603" lsb="3"/>
+ <mtx name="a" width="548" lsb="40"/>
+ <mtx name="aacute" width="548" lsb="40"/>
+ <mtx name="acircumflex" width="548" lsb="40"/>
+ <mtx name="acute" width="520" lsb="225"/>
+ <mtx name="acutecomb" width="0" lsb="-65"/>
+ <mtx name="adieresis" width="548" lsb="40"/>
+ <mtx name="ae" width="752" lsb="40"/>
+ <mtx name="ae-ar" width="247" lsb="0"/>
+ <mtx name="agrave" width="548" lsb="40"/>
+ <mtx name="ain-ar" width="683" lsb="0"/>
+ <mtx name="ain-ar.fina" width="341" lsb="0"/>
+ <mtx name="ain-ar.init" width="520" lsb="0"/>
+ <mtx name="ain-ar.init.ain" width="716" lsb="0"/>
+ <mtx name="ain-ar.init.dal" width="552" lsb="0"/>
+ <mtx name="ain-ar.init.feh" width="756" lsb="0"/>
+ <mtx name="ain-ar.init.hah" width="486" lsb="0"/>
+ <mtx name="ain-ar.init.heh" width="643" lsb="0"/>
+ <mtx name="ain-ar.init.meem" width="515" lsb="0"/>
+ <mtx name="ain-ar.init.ragaa" width="678" lsb="0"/>
+ <mtx name="ain-ar.init.reh" width="536" lsb="-1"/>
+ <mtx name="ain-ar.init.sad" width="781" lsb="1"/>
+ <mtx name="ain-ar.init.yeh" width="487" lsb="0"/>
+ <mtx name="ain-ar.medi" width="286" lsb="0"/>
+ <mtx name="ain-ar.medi.ain" width="406" lsb="0"/>
+ <mtx name="ain-ar.medi.dal" width="286" lsb="0"/>
+ <mtx name="ain-ar.medi.feh" width="467" lsb="0"/>
+ <mtx name="ain-ar.medi.hah" width="334" lsb="0"/>
+ <mtx name="ain-ar.medi.heh" width="509" lsb="0"/>
+ <mtx name="ain-ar.medi.meem" width="374" lsb="0"/>
+ <mtx name="ain-ar.medi.ragaa" width="294" lsb="0"/>
+ <mtx name="ain-ar.medi.reh" width="287" lsb="-1"/>
+ <mtx name="ain-ar.medi.sad" width="524" lsb="1"/>
+ <mtx name="ain-ar.medi.yeh" width="366" lsb="0"/>
+ <mtx name="ainThreedots-ar" width="683" lsb="0"/>
+ <mtx name="alef-ar" width="248" lsb="73"/>
+ <mtx name="alef-ar.fina" width="112" lsb="73"/>
+ <mtx name="alef-ar.fina.lam" width="394" lsb="289"/>
+ <mtx name="alefHamzaabove-ar" width="248" lsb="29"/>
+ <mtx name="alefHamzabelow-ar" width="248" lsb="36"/>
+ <mtx name="alefMadda-ar" width="248" lsb="-44"/>
+ <mtx name="alefMaksura-ar" width="615" lsb="0"/>
+ <mtx name="alefMaksura-ar.fina" width="414" lsb="1"/>
+ <mtx name="alefMaksura-ar.fina.jalt" width="796" lsb="1"/>
+ <mtx name="alefMaksura-ar.fina.yeh" width="640" lsb="1"/>
+ <mtx name="alefMaksura-ar.fina.yeh.jalt" width="793" lsb="1"/>
+ <mtx name="alefMaksura-ar.jalt" width="1083" lsb="1"/>
+ <mtx name="alefWasla-ar" width="248" lsb="20"/>
+ <mtx name="alefabove-ar" width="0" lsb="-40"/>
+ <mtx name="alefabove-ar.isol" width="121" lsb="50"/>
+ <mtx name="alefabove-ar.medi" width="0" lsb="50"/>
+ <mtx name="alefbelow-ar" width="0" lsb="-40"/>
+ <mtx name="alpha" width="609" lsb="30"/>
+ <mtx name="ampersand" width="738" lsb="29"/>
+ <mtx name="aring" width="548" lsb="40"/>
+ <mtx name="asciitilde" width="672" lsb="83"/>
+ <mtx name="asterisk" width="301" lsb="46"/>
+ <mtx name="at" width="728" lsb="39"/>
+ <mtx name="atilde" width="548" lsb="40"/>
+ <mtx name="b" width="522" lsb="-14"/>
+ <mtx name="backslash" width="390" lsb="-17"/>
+ <mtx name="bar" width="216" lsb="88"/>
+ <mtx name="beh-ar" width="801" lsb="86"/>
+ <mtx name="behDotless-ar" width="801" lsb="86"/>
+ <mtx name="behDotless-ar.fina" width="490" lsb="0"/>
+ <mtx name="behDotless-ar.fina.jalt" width="849" lsb="1"/>
+ <mtx name="behDotless-ar.init" width="294" lsb="0"/>
+ <mtx name="behDotless-ar.init.ain" width="492" lsb="0"/>
+ <mtx name="behDotless-ar.init.ascend" width="313" lsb="0"/>
+ <mtx name="behDotless-ar.init.dal" width="373" lsb="0"/>
+ <mtx name="behDotless-ar.init.feh" width="559" lsb="0"/>
+ <mtx name="behDotless-ar.init.hah" width="423" lsb="1"/>
+ <mtx name="behDotless-ar.init.heh" width="559" lsb="0"/>
+ <mtx name="behDotless-ar.init.meem" width="367" lsb="0"/>
+ <mtx name="behDotless-ar.init.ragaa" width="678" lsb="0"/>
+ <mtx name="behDotless-ar.init.reh" width="323" lsb="-1"/>
+ <mtx name="behDotless-ar.init.sad" width="643" lsb="1"/>
+ <mtx name="behDotless-ar.init.yeh" width="177" lsb="0"/>
+ <mtx name="behDotless-ar.jalt" width="1038" lsb="1"/>
+ <mtx name="behDotless-ar.medi" width="206" lsb="0"/>
+ <mtx name="behDotless-ar.medi.ain" width="347" lsb="0"/>
+ <mtx name="behDotless-ar.medi.dal" width="228" lsb="0"/>
+ <mtx name="behDotless-ar.medi.feh" width="395" lsb="0"/>
+ <mtx name="behDotless-ar.medi.hah" width="452" lsb="0"/>
+ <mtx name="behDotless-ar.medi.heh" width="572" lsb="0"/>
+ <mtx name="behDotless-ar.medi.high" width="326" lsb="0"/>
+ <mtx name="behDotless-ar.medi.high2" width="236" lsb="0"/>
+ <mtx name="behDotless-ar.medi.meem" width="287" lsb="0"/>
+ <mtx name="behDotless-ar.medi.noon" width="241" lsb="0"/>
+ <mtx name="behDotless-ar.medi.ragaa" width="259" lsb="0"/>
+ <mtx name="behDotless-ar.medi.reh" width="324" lsb="0"/>
+ <mtx name="behDotless-ar.medi.sad" width="488" lsb="1"/>
+ <mtx name="behDotless-ar.medi.yeh" width="258" lsb="0"/>
+ <mtx name="beta" width="530" lsb="56"/>
+ <mtx name="braceleft" width="313" lsb="8"/>
+ <mtx name="braceright" width="313" lsb="10"/>
+ <mtx name="bracketleft" width="258" lsb="88"/>
+ <mtx name="bracketright" width="258" lsb="11"/>
+ <mtx name="brokenbar" width="208" lsb="84"/>
+ <mtx name="bullet" width="332" lsb="69"/>
+ <mtx name="c" width="455" lsb="48"/>
+ <mtx name="ccedilla" width="455" lsb="48"/>
+ <mtx name="cedilla" width="520" lsb="170"/>
+ <mtx name="cedillacomb" width="0" lsb="-90"/>
+ <mtx name="cent" width="461" lsb="41"/>
+ <mtx name="chi" width="525" lsb="-12"/>
+ <mtx name="circumflex" width="500" lsb="103"/>
+ <mtx name="circumflexcomb" width="0" lsb="-163"/>
+ <mtx name="colon" width="184" lsb="35"/>
+ <mtx name="comma" width="233" lsb="34"/>
+ <mtx name="comma-ar" width="278" lsb="61"/>
+ <mtx name="comma-ar.alt" width="278" lsb="61"/>
+ <mtx name="copyright" width="632" lsb="45"/>
+ <mtx name="currency" width="590" lsb="75"/>
+ <mtx name="d" width="551" lsb="40"/>
+ <mtx name="dad-ar" width="881" lsb="-1"/>
+ <mtx name="dal-ar" width="367" lsb="0"/>
+ <mtx name="dal-ar.fina" width="390" lsb="0"/>
+ <mtx name="damma-ar" width="0" lsb="-127"/>
+ <mtx name="dammainverted-ar" width="0" lsb="-48"/>
+ <mtx name="dammainverted-ar.urd" width="0" lsb="-53"/>
+ <mtx name="dammatan-ar" width="0" lsb="-145"/>
+ <mtx name="ddal-ar" width="367" lsb="0"/>
+ <mtx name="degree" width="332" lsb="69"/>
+ <mtx name="delta" width="423" lsb="21"/>
+ <mtx name="dieresis" width="520" lsb="100"/>
+ <mtx name="dieresiscomb" width="0" lsb="-160"/>
+ <mtx name="divide" width="824" lsb="80"/>
+ <mtx name="dollar" width="476" lsb="25"/>
+ <mtx name="dotabove-ar" width="0" lsb="-74"/>
+ <mtx name="dotbelow-ar" width="0" lsb="-74"/>
+ <mtx name="dotlessi" width="323" lsb="-10"/>
+ <mtx name="dotlessj" width="288" lsb="-10"/>
+ <mtx name="dul-ar" width="367" lsb="0"/>
+ <mtx name="e" width="462" lsb="48"/>
+ <mtx name="eacute" width="438" lsb="48"/>
+ <mtx name="ecircumflex" width="438" lsb="48"/>
+ <mtx name="edieresis" width="438" lsb="48"/>
+ <mtx name="egrave" width="438" lsb="48"/>
+ <mtx name="eight" width="500" lsb="40"/>
+ <mtx name="eight-ar" width="376" lsb="24"/>
+ <mtx name="eight-ar.dnom" width="265" lsb="18"/>
+ <mtx name="eight-ar.numr" width="265" lsb="18"/>
+ <mtx name="eight.dnom" width="376" lsb="46"/>
+ <mtx name="eight.numr" width="376" lsb="46"/>
+ <mtx name="ellipsis" width="1000" lsb="63"/>
+ <mtx name="emdash" width="1000" lsb="0"/>
+ <mtx name="endash" width="541" lsb="27"/>
+ <mtx name="epsilon" width="370" lsb="21"/>
+ <mtx name="epsilon1" width="420" lsb="22"/>
+ <mtx name="equal" width="823" lsb="77"/>
+ <mtx name="eta" width="540" lsb="-13"/>
+ <mtx name="eth" width="461" lsb="28"/>
+ <mtx name="euro" width="638" lsb="25"/>
+ <mtx name="exclam" width="253" lsb="26"/>
+ <mtx name="exclam#1" width="216" lsb="54"/>
+ <mtx name="exclamdown" width="216" lsb="54"/>
+ <mtx name="f" width="329" lsb="-1"/>
+ <mtx name="f.alt" width="317" lsb="-1"/>
+ <mtx name="fatha-ar" width="0" lsb="-132"/>
+ <mtx name="fathatan-ar" width="0" lsb="-132"/>
+ <mtx name="feh-ar" width="679" lsb="34"/>
+ <mtx name="fehDotless-ar" width="679" lsb="34"/>
+ <mtx name="fehDotless-ar.fina" width="567" lsb="-1"/>
+ <mtx name="fehDotless-ar.fina.jalt" width="803" lsb="1"/>
+ <mtx name="fehDotless-ar.init" width="390" lsb="0"/>
+ <mtx name="fehDotless-ar.init.ain" width="553" lsb="0"/>
+ <mtx name="fehDotless-ar.init.dal" width="429" lsb="0"/>
+ <mtx name="fehDotless-ar.init.feh" width="621" lsb="0"/>
+ <mtx name="fehDotless-ar.init.hah" width="212" lsb="0"/>
+ <mtx name="fehDotless-ar.init.heh" width="599" lsb="0"/>
+ <mtx name="fehDotless-ar.init.meem" width="415" lsb="0"/>
+ <mtx name="fehDotless-ar.init.ragaa" width="678" lsb="0"/>
+ <mtx name="fehDotless-ar.init.reh" width="382" lsb="-1"/>
+ <mtx name="fehDotless-ar.init.sad" width="720" lsb="1"/>
+ <mtx name="fehDotless-ar.init.yeh" width="212" lsb="0"/>
+ <mtx name="fehDotless-ar.jalt" width="1035" lsb="1"/>
+ <mtx name="fehDotless-ar.medi" width="283" lsb="0"/>
+ <mtx name="fehDotless-ar.medi.ain" width="375" lsb="0"/>
+ <mtx name="fehDotless-ar.medi.dal" width="289" lsb="-1"/>
+ <mtx name="fehDotless-ar.medi.feh" width="491" lsb="0"/>
+ <mtx name="fehDotless-ar.medi.hah" width="319" lsb="0"/>
+ <mtx name="fehDotless-ar.medi.heh" width="511" lsb="0"/>
+ <mtx name="fehDotless-ar.medi.meem" width="345" lsb="0"/>
+ <mtx name="fehDotless-ar.medi.ragaa" width="270" lsb="0"/>
+ <mtx name="fehDotless-ar.medi.reh" width="314" lsb="-1"/>
+ <mtx name="fehDotless-ar.medi.sad" width="540" lsb="1"/>
+ <mtx name="fehDotless-ar.medi.yeh" width="345" lsb="0"/>
+ <mtx name="five" width="500" lsb="12"/>
+ <mtx name="five-ar" width="338" lsb="28"/>
+ <mtx name="five-ar.dnom" width="265" lsb="36"/>
+ <mtx name="five-ar.numr" width="265" lsb="36"/>
+ <mtx name="five-persian" width="444" lsb="30"/>
+ <mtx name="five-persian.dnom" width="265" lsb="-2"/>
+ <mtx name="five-persian.numr" width="265" lsb="-2"/>
+ <mtx name="five.dnom" width="376" lsb="27"/>
+ <mtx name="five.numr" width="376" lsb="27"/>
+ <mtx name="four" width="500" lsb="-1"/>
+ <mtx name="four-ar" width="358" lsb="27"/>
+ <mtx name="four-ar.dnom" width="265" lsb="25"/>
+ <mtx name="four-ar.numr" width="265" lsb="25"/>
+ <mtx name="four-persian" width="414" lsb="25"/>
+ <mtx name="four-persian.dnom" width="265" lsb="6"/>
+ <mtx name="four-persian.numr" width="265" lsb="6"/>
+ <mtx name="four-persian.urd" width="398" lsb="28"/>
+ <mtx name="four-persian.urd.dnom" width="265" lsb="12"/>
+ <mtx name="four-persian.urd.numr" width="265" lsb="12"/>
+ <mtx name="four.dnom" width="376" lsb="18"/>
+ <mtx name="four.numr" width="376" lsb="18"/>
+ <mtx name="foursuperior" width="476" lsb="18"/>
+ <mtx name="fraction" width="70" lsb="-199"/>
+ <mtx name="fullstop-ar" width="253" lsb="22"/>
+ <mtx name="g" width="511" lsb="40"/>
+ <mtx name="gaf-ar" width="944" lsb="2"/>
+ <mtx name="gafsarkashabove-ar" width="0" lsb="-163"/>
+ <mtx name="gamma" width="589" lsb="-9"/>
+ <mtx name="germandbls" width="453" lsb="-1"/>
+ <mtx name="ghain-ar" width="683" lsb="0"/>
+ <mtx name="grave" width="520" lsb="70"/>
+ <mtx name="gravecomb" width="0" lsb="-130"/>
+ <mtx name="greater" width="711" lsb="48"/>
+ <mtx name="guillemotleft" width="416" lsb="12"/>
+ <mtx name="guillemotright" width="416" lsb="28"/>
+ <mtx name="guilsinglleft" width="264" lsb="12"/>
+ <mtx name="guilsinglright" width="264" lsb="28"/>
+ <mtx name="h" width="592" lsb="-8"/>
+ <mtx name="hah-ar" width="683" lsb="-1"/>
+ <mtx name="hah-ar.fina" width="188" lsb="-1"/>
+ <mtx name="hah-ar.init" width="558" lsb="0"/>
+ <mtx name="hah-ar.init.ain" width="625" lsb="0"/>
+ <mtx name="hah-ar.init.dal" width="636" lsb="-2"/>
+ <mtx name="hah-ar.init.feh" width="791" lsb="0"/>
+ <mtx name="hah-ar.init.hah" width="514" lsb="0"/>
+ <mtx name="hah-ar.init.heh" width="632" lsb="0"/>
+ <mtx name="hah-ar.init.heh.ragaa" width="551" lsb="0"/>
+ <mtx name="hah-ar.init.meem" width="567" lsb="0"/>
+ <mtx name="hah-ar.init.ragaa" width="678" lsb="0"/>
+ <mtx name="hah-ar.init.reh" width="544" lsb="0"/>
+ <mtx name="hah-ar.init.sad" width="797" lsb="1"/>
+ <mtx name="hah-ar.init.yeh" width="514" lsb="0"/>
+ <mtx name="hah-ar.medi" width="281" lsb="0"/>
+ <mtx name="hah-ar.medi.ain" width="395" lsb="0"/>
+ <mtx name="hah-ar.medi.dal" width="291" lsb="11"/>
+ <mtx name="hah-ar.medi.feh" width="438" lsb="0"/>
+ <mtx name="hah-ar.medi.hah" width="268" lsb="0"/>
+ <mtx name="hah-ar.medi.heh" width="453" lsb="0"/>
+ <mtx name="hah-ar.medi.heh.ragaa" width="391" lsb="-1"/>
+ <mtx name="hah-ar.medi.meem" width="306" lsb="0"/>
+ <mtx name="hah-ar.medi.ragaa" width="198" lsb="0"/>
+ <mtx name="hah-ar.medi.reh" width="279" lsb="-1"/>
+ <mtx name="hah-ar.medi.sad" width="541" lsb="6"/>
+ <mtx name="hah-ar.medi.yeh" width="287" lsb="0"/>
+ <mtx name="hamza-ar" width="431" lsb="49"/>
+ <mtx name="hamzaabove-ar" width="0" lsb="-92"/>
+ <mtx name="hamzabelow-ar" width="0" lsb="-92"/>
+ <mtx name="heh-ar" width="247" lsb="0"/>
+ <mtx name="heh-ar.fina" width="196" lsb="0"/>
+ <mtx name="heh-ar.init" width="585" lsb="0"/>
+ <mtx name="heh-ar.init.ain" width="702" lsb="0"/>
+ <mtx name="heh-ar.init.dal" width="601" lsb="-1"/>
+ <mtx name="heh-ar.init.feh" width="817" lsb="0"/>
+ <mtx name="heh-ar.init.hah" width="627" lsb="0"/>
+ <mtx name="heh-ar.init.heh" width="780" lsb="0"/>
+ <mtx name="heh-ar.init.meem" width="641" lsb="0"/>
+ <mtx name="heh-ar.init.ragaa" width="678" lsb="0"/>
+ <mtx name="heh-ar.init.reh" width="588" lsb="-1"/>
+ <mtx name="heh-ar.init.sad" width="907" lsb="1"/>
+ <mtx name="heh-ar.init.yeh" width="630" lsb="0"/>
+ <mtx name="heh-ar.medi" width="212" lsb="0"/>
+ <mtx name="heh-ar.medi.ain" width="386" lsb="0"/>
+ <mtx name="heh-ar.medi.dal" width="257" lsb="0"/>
+ <mtx name="heh-ar.medi.feh" width="469" lsb="0"/>
+ <mtx name="heh-ar.medi.hah" width="399" lsb="0"/>
+ <mtx name="heh-ar.medi.heh" width="583" lsb="0"/>
+ <mtx name="heh-ar.medi.meem" width="363" lsb="3"/>
+ <mtx name="heh-ar.medi.ragaa" width="335" lsb="0"/>
+ <mtx name="heh-ar.medi.reh" width="313" lsb="-1"/>
+ <mtx name="heh-ar.medi.sad" width="580" lsb="1"/>
+ <mtx name="heh-ar.medi.yeh" width="329" lsb="1"/>
+ <mtx name="hehDoachashmee-ar" width="741" lsb="-1"/>
+ <mtx name="hehDoachashmee-ar.fina" width="501" lsb="-1"/>
+ <mtx name="hehDoachashmee-ar.medi" width="314" lsb="0"/>
+ <mtx name="hehDoachashmee-ar.medi.ain" width="492" lsb="0"/>
+ <mtx name="hehDoachashmee-ar.medi.dal" width="385" lsb="0"/>
+ <mtx name="hehDoachashmee-ar.medi.feh" width="561" lsb="0"/>
+ <mtx name="hehDoachashmee-ar.medi.hah" width="367" lsb="0"/>
+ <mtx name="hehDoachashmee-ar.medi.heh" width="598" lsb="0"/>
+ <mtx name="hehDoachashmee-ar.medi.meem" width="428" lsb="4"/>
+ <mtx name="hehDoachashmee-ar.medi.ragaa" width="397" lsb="0"/>
+ <mtx name="hehDoachashmee-ar.medi.reh" width="404" lsb="-1"/>
+ <mtx name="hehDoachashmee-ar.medi.sad" width="571" lsb="1"/>
+ <mtx name="hehDoachashmee-ar.medi.yeh" width="394" lsb="0"/>
+ <mtx name="hehHamzaabove-ar" width="247" lsb="0"/>
+ <mtx name="hehgoal-ar" width="247" lsb="0"/>
+ <mtx name="hehgoal-ar.fina" width="176" lsb="0"/>
+ <mtx name="hehgoal-ar.init" width="396" lsb="0"/>
+ <mtx name="hehgoal-ar.init.ain" width="495" lsb="0"/>
+ <mtx name="hehgoal-ar.init.dal" width="468" lsb="-1"/>
+ <mtx name="hehgoal-ar.init.feh" width="482" lsb="0"/>
+ <mtx name="hehgoal-ar.init.hah" width="548" lsb="3"/>
+ <mtx name="hehgoal-ar.init.heh" width="621" lsb="0"/>
+ <mtx name="hehgoal-ar.init.meem" width="444" lsb="0"/>
+ <mtx name="hehgoal-ar.init.ragaa" width="689" lsb="0"/>
+ <mtx name="hehgoal-ar.init.reh" width="434" lsb="-1"/>
+ <mtx name="hehgoal-ar.init.sad" width="706" lsb="1"/>
+ <mtx name="hehgoal-ar.init.yeh" width="466" lsb="0"/>
+ <mtx name="highhamza-ar" width="431" lsb="49"/>
+ <mtx name="hyphen" width="353" lsb="55"/>
+ <mtx name="i" width="323" lsb="-10"/>
+ <mtx name="iacute" width="258" lsb="-10"/>
+ <mtx name="icircumflex" width="258" lsb="-51"/>
+ <mtx name="idieresis" width="258" lsb="-48"/>
+ <mtx name="igrave" width="258" lsb="-70"/>
+ <mtx name="iota" width="278" lsb="57"/>
+ <mtx name="j" width="291" lsb="-10"/>
+ <mtx name="jeem-ar" width="683" lsb="-1"/>
+ <mtx name="jeh-ar" width="469" lsb="0"/>
+ <mtx name="k" width="516" lsb="-8"/>
+ <mtx name="kaf-ar" width="568" lsb="-1"/>
+ <mtx name="kaf-ar.fina" width="511" lsb="-1"/>
+ <mtx name="kaf-ar.fina.jalt" width="925" lsb="1"/>
+ <mtx name="kaf-ar.init" width="498" lsb="0"/>
+ <mtx name="kaf-ar.init.ain" width="585" lsb="0"/>
+ <mtx name="kaf-ar.init.alef" width="566" lsb="0"/>
+ <mtx name="kaf-ar.init.alef.loop" width="333" lsb="-3"/>
+ <mtx name="kaf-ar.init.dal" width="519" lsb="-1"/>
+ <mtx name="kaf-ar.init.feh" width="670" lsb="0"/>
+ <mtx name="kaf-ar.init.hah" width="329" lsb="0"/>
+ <mtx name="kaf-ar.init.heh" width="576" lsb="0"/>
+ <mtx name="kaf-ar.init.meem" width="91" lsb="0"/>
+ <mtx name="kaf-ar.init.ragaa" width="678" lsb="0"/>
+ <mtx name="kaf-ar.init.reh" width="513" lsb="-1"/>
+ <mtx name="kaf-ar.init.sad" width="734" lsb="1"/>
+ <mtx name="kaf-ar.init.yeh" width="511" lsb="0"/>
+ <mtx name="kaf-ar.jalt" width="1030" lsb="1"/>
+ <mtx name="kaf-ar.medi" width="259" lsb="0"/>
+ <mtx name="kaf-ar.medi.ain" width="440" lsb="0"/>
+ <mtx name="kaf-ar.medi.dal" width="286" lsb="0"/>
+ <mtx name="kaf-ar.medi.feh" width="463" lsb="0"/>
+ <mtx name="kaf-ar.medi.hah" width="358" lsb="0"/>
+ <mtx name="kaf-ar.medi.heh" width="482" lsb="0"/>
+ <mtx name="kaf-ar.medi.kaf" width="342" lsb="0"/>
+ <mtx name="kaf-ar.medi.meem" width="320" lsb="0"/>
+ <mtx name="kaf-ar.medi.ragaa" width="250" lsb="0"/>
+ <mtx name="kaf-ar.medi.reh" width="312" lsb="-6"/>
+ <mtx name="kaf-ar.medi.sad" width="574" lsb="1"/>
+ <mtx name="kaf-ar.medi.yeh" width="320" lsb="0"/>
+ <mtx name="kafDotabove-ar" width="568" lsb="-1"/>
+ <mtx name="kappa" width="459" lsb="58"/>
+ <mtx name="kashida-ar" width="0" lsb="0"/>
+ <mtx name="kasra-ar" width="0" lsb="-132"/>
+ <mtx name="kasratan-ar" width="0" lsb="-132"/>
+ <mtx name="keheh-ar" width="944" lsb="2"/>
+ <mtx name="keheh-ar.fina" width="511" lsb="0"/>
+ <mtx name="keheh-ar.fina.jalt" width="926" lsb="1"/>
+ <mtx name="keheh-ar.jalt" width="1383" lsb="1"/>
+ <mtx name="kehehDotabove-ar" width="944" lsb="2"/>
+ <mtx name="khah-ar" width="683" lsb="-1"/>
+ <mtx name="l" width="301" lsb="-8"/>
+ <mtx name="lam-ar" width="445" lsb="-1"/>
+ <mtx name="lam-ar.fina" width="428" lsb="-1"/>
+ <mtx name="lam-ar.fina.jalt" width="1030" lsb="1"/>
+ <mtx name="lam-ar.init" width="333" lsb="0"/>
+ <mtx name="lam-ar.init.ain" width="454" lsb="0"/>
+ <mtx name="lam-ar.init.alef" width="674" lsb="0"/>
+ <mtx name="lam-ar.init.dal" width="351" lsb="-1"/>
+ <mtx name="lam-ar.init.feh" width="562" lsb="0"/>
+ <mtx name="lam-ar.init.hah" width="176" lsb="0"/>
+ <mtx name="lam-ar.init.heh" width="443" lsb="0"/>
+ <mtx name="lam-ar.init.kaf" width="371" lsb="0"/>
+ <mtx name="lam-ar.init.meem" width="134" lsb="0"/>
+ <mtx name="lam-ar.init.ragaa" width="678" lsb="0"/>
+ <mtx name="lam-ar.init.reh" width="378" lsb="-1"/>
+ <mtx name="lam-ar.init.sad" width="612" lsb="1"/>
+ <mtx name="lam-ar.init.yeh" width="183" lsb="0"/>
+ <mtx name="lam-ar.jalt" width="1030" lsb="1"/>
+ <mtx name="lam-ar.medi" width="246" lsb="0"/>
+ <mtx name="lam-ar.medi.ain" width="441" lsb="0"/>
+ <mtx name="lam-ar.medi.alef" width="732" lsb="0"/>
+ <mtx name="lam-ar.medi.dal" width="285" lsb="0"/>
+ <mtx name="lam-ar.medi.feh" width="462" lsb="0"/>
+ <mtx name="lam-ar.medi.hah" width="355" lsb="0"/>
+ <mtx name="lam-ar.medi.heh" width="482" lsb="0"/>
+ <mtx name="lam-ar.medi.kaf" width="305" lsb="0"/>
+ <mtx name="lam-ar.medi.meem" width="320" lsb="0"/>
+ <mtx name="lam-ar.medi.ragaa" width="282" lsb="0"/>
+ <mtx name="lam-ar.medi.reh" width="312" lsb="-6"/>
+ <mtx name="lam-ar.medi.sad" width="574" lsb="1"/>
+ <mtx name="lam-ar.medi.yeh" width="320" lsb="0"/>
+ <mtx name="lamVabove-ar" width="445" lsb="-1"/>
+ <mtx name="lambda" width="481" lsb="-7"/>
+ <mtx name="less" width="710" lsb="41"/>
+ <mtx name="logicalnot" width="777" lsb="57"/>
+ <mtx name="lscript" width="380" lsb="20"/>
+ <mtx name="m" width="873" lsb="-10"/>
+ <mtx name="macron" width="520" lsb="139"/>
+ <mtx name="macroncomb" width="0" lsb="-121"/>
+ <mtx name="madda-ar" width="0" lsb="-165"/>
+ <mtx name="meem-ar" width="505" lsb="3"/>
+ <mtx name="meem-ar.fina" width="350" lsb="3"/>
+ <mtx name="meem-ar.init" width="405" lsb="0"/>
+ <mtx name="meem-ar.init.ain" width="562" lsb="0"/>
+ <mtx name="meem-ar.init.dal" width="469" lsb="-1"/>
+ <mtx name="meem-ar.init.feh" width="658" lsb="0"/>
+ <mtx name="meem-ar.init.hah" width="514" lsb="0"/>
+ <mtx name="meem-ar.init.heh" width="594" lsb="3"/>
+ <mtx name="meem-ar.init.meem" width="443" lsb="0"/>
+ <mtx name="meem-ar.init.ragaa" width="678" lsb="0"/>
+ <mtx name="meem-ar.init.reh" width="448" lsb="-1"/>
+ <mtx name="meem-ar.init.sad" width="721" lsb="3"/>
+ <mtx name="meem-ar.init.yeh" width="424" lsb="0"/>
+ <mtx name="meem-ar.medi" width="405" lsb="0"/>
+ <mtx name="meem-ar.medi.ain" width="400" lsb="0"/>
+ <mtx name="meem-ar.medi.dal" width="360" lsb="-1"/>
+ <mtx name="meem-ar.medi.feh" width="495" lsb="0"/>
+ <mtx name="meem-ar.medi.hah" width="358" lsb="0"/>
+ <mtx name="meem-ar.medi.heh" width="431" lsb="0"/>
+ <mtx name="meem-ar.medi.meem" width="329" lsb="0"/>
+ <mtx name="meem-ar.medi.ragaa" width="312" lsb="0"/>
+ <mtx name="meem-ar.medi.reh" width="295" lsb="8"/>
+ <mtx name="meem-ar.medi.sad" width="580" lsb="0"/>
+ <mtx name="meem-ar.medi.yeh" width="269" lsb="0"/>
+ <mtx name="minus" width="892" lsb="114"/>
+ <mtx name="mu" width="682" lsb="103"/>
+ <mtx name="multiply" width="603" lsb="57"/>
+ <mtx name="n" width="631" lsb="-10"/>
+ <mtx name="nine" width="500" lsb="40"/>
+ <mtx name="nine-ar" width="317" lsb="27"/>
+ <mtx name="nine-ar.dnom" width="265" lsb="39"/>
+ <mtx name="nine-ar.numr" width="265" lsb="39"/>
+ <mtx name="nine.dnom" width="376" lsb="46"/>
+ <mtx name="nine.numr" width="376" lsb="46"/>
+ <mtx name="noon-ar" width="463" lsb="0"/>
+ <mtx name="noon-ar.fina" width="428" lsb="0"/>
+ <mtx name="noon-ar.fina.tail" width="537" lsb="0"/>
+ <mtx name="noon-ar.tail" width="537" lsb="0"/>
+ <mtx name="noonThreedotsabove-ar" width="463" lsb="-1"/>
+ <mtx name="noonghunna-ar" width="463" lsb="-1"/>
+ <mtx name="noonghunna-ar.fina" width="463" lsb="-1"/>
+ <mtx name="noonghunna-ar.jalt" width="878" lsb="0"/>
+ <mtx name="noonghunnaabove-ar" width="0" lsb="-50"/>
+ <mtx name="ntilde" width="631" lsb="-10"/>
+ <mtx name="nu" width="529" lsb="-12"/>
+ <mtx name="numbersign" width="715" lsb="6"/>
+ <mtx name="o" width="537" lsb="48"/>
+ <mtx name="oacute" width="501" lsb="48"/>
+ <mtx name="ocircumflex" width="501" lsb="48"/>
+ <mtx name="odieresis" width="537" lsb="48"/>
+ <mtx name="oe" width="815" lsb="48"/>
+ <mtx name="oe-ar" width="491" lsb="0"/>
+ <mtx name="ograve" width="501" lsb="48"/>
+ <mtx name="omega" width="771" lsb="30"/>
+ <mtx name="one" width="500" lsb="92"/>
+ <mtx name="one-ar" width="188" lsb="25"/>
+ <mtx name="one-ar.dnom" width="265" lsb="86"/>
+ <mtx name="one-ar.numr" width="265" lsb="86"/>
+ <mtx name="one.dnom" width="376" lsb="81"/>
+ <mtx name="one.numr" width="376" lsb="81"/>
+ <mtx name="onehalf" width="790" lsb="23"/>
+ <mtx name="onequarter" width="790" lsb="23"/>
+ <mtx name="onesuperior" width="178" lsb="-28"/>
+ <mtx name="opendammatan-ar" width="0" lsb="-135"/>
+ <mtx name="ordfeminine" width="366" lsb="15"/>
+ <mtx name="ordmasculine" width="356" lsb="16"/>
+ <mtx name="oslash" width="520" lsb="48"/>
+ <mtx name="otilde" width="537" lsb="48"/>
+ <mtx name="p" width="562" lsb="-8"/>
+ <mtx name="paragraph" width="453" lsb="29"/>
+ <mtx name="parenleft" width="257" lsb="58"/>
+ <mtx name="parenleft-ar" width="485" lsb="39"/>
+ <mtx name="parenright" width="259" lsb="11"/>
+ <mtx name="parenright-ar" width="485" lsb="39"/>
+ <mtx name="partialdiff" width="567" lsb="78"/>
+ <mtx name="peh-ar" width="801" lsb="86"/>
+ <mtx name="percent" width="827" lsb="60"/>
+ <mtx name="percent-ar" width="440" lsb="24"/>
+ <mtx name="period" width="272" lsb="69"/>
+ <mtx name="periodcentered" width="272" lsb="69"/>
+ <mtx name="phi" width="644" lsb="26"/>
+ <mtx name="phi1" width="642" lsb="23"/>
+ <mtx name="pi" width="596" lsb="6"/>
+ <mtx name="pi1" width="775" lsb="33"/>
+ <mtx name="plus" width="747" lsb="42"/>
+ <mtx name="plusminus" width="763" lsb="49"/>
+ <mtx name="psi" width="704" lsb="-12"/>
+ <mtx name="q" width="508" lsb="40"/>
+ <mtx name="qaf-ar" width="634" lsb="6"/>
+ <mtx name="qaf-ar.fina" width="634" lsb="6"/>
+ <mtx name="qafDotless-ar" width="488" lsb="0"/>
+ <mtx name="qafDotless-ar.fina" width="488" lsb="0"/>
+ <mtx name="qafDotless-ar.fina.jalt" width="849" lsb="0"/>
+ <mtx name="qafDotless-ar.jalt" width="849" lsb="0"/>
+ <mtx name="question" width="353" lsb="21"/>
+ <mtx name="question-ar" width="345" lsb="36"/>
+ <mtx name="questiondown" width="353" lsb="19"/>
+ <mtx name="quotedbl" width="333" lsb="72"/>
+ <mtx name="quotedblbase" width="444" lsb="58"/>
+ <mtx name="quotedblleft" width="444" lsb="91"/>
+ <mtx name="quotedblright" width="444" lsb="58"/>
+ <mtx name="quoteleft" width="271" lsb="91"/>
+ <mtx name="quoteleft#1" width="200" lsb="41"/>
+ <mtx name="quoteright" width="271" lsb="58"/>
+ <mtx name="quoteright#1" width="197" lsb="36"/>
+ <mtx name="quotesinglbase" width="271" lsb="58"/>
+ <mtx name="quotesingle" width="210" lsb="74"/>
+ <mtx name="r" width="416" lsb="0"/>
+ <mtx name="registered" width="632" lsb="45"/>
+ <mtx name="reh-ar" width="469" lsb="0"/>
+ <mtx name="reh-ar.fina" width="410" lsb="5"/>
+ <mtx name="rehVbelow-ar" width="469" lsb="0"/>
+ <mtx name="rho" width="484" lsb="46"/>
+ <mtx name="ring" width="500" lsb="153"/>
+ <mtx name="ringcomb" width="0" lsb="-97"/>
+ <mtx name="rnoon-ar" width="463" lsb="-1"/>
+ <mtx name="rreh-ar" width="469" lsb="0"/>
+ <mtx name="s" width="379" lsb="18"/>
+ <mtx name="sad-ar" width="881" lsb="-1"/>
+ <mtx name="sad-ar.fina" width="563" lsb="-1"/>
+ <mtx name="sad-ar.fina.jalt" width="1099" lsb="6"/>
+ <mtx name="sad-ar.init" width="721" lsb="0"/>
+ <mtx name="sad-ar.init.ain" width="778" lsb="0"/>
+ <mtx name="sad-ar.init.dal" width="721" lsb="-1"/>
+ <mtx name="sad-ar.init.feh" width="849" lsb="0"/>
+ <mtx name="sad-ar.init.hah" width="833" lsb="0"/>
+ <mtx name="sad-ar.init.heh" width="975" lsb="0"/>
+ <mtx name="sad-ar.init.meem" width="781" lsb="0"/>
+ <mtx name="sad-ar.init.qantara" width="984" lsb="5"/>
+ <mtx name="sad-ar.init.ragaa" width="773" lsb="0"/>
+ <mtx name="sad-ar.init.reh" width="674" lsb="-1"/>
+ <mtx name="sad-ar.init.sad" width="885" lsb="-1"/>
+ <mtx name="sad-ar.init.yeh" width="747" lsb="8"/>
+ <mtx name="sad-ar.jalt" width="1390" lsb="1"/>
+ <mtx name="sad-ar.medi" width="331" lsb="0"/>
+ <mtx name="sad-ar.medi.ain" width="387" lsb="0"/>
+ <mtx name="sad-ar.medi.dal" width="333" lsb="-1"/>
+ <mtx name="sad-ar.medi.feh" width="455" lsb="0"/>
+ <mtx name="sad-ar.medi.hah" width="439" lsb="0"/>
+ <mtx name="sad-ar.medi.heh" width="574" lsb="0"/>
+ <mtx name="sad-ar.medi.meem" width="390" lsb="0"/>
+ <mtx name="sad-ar.medi.postsad" width="331" lsb="0"/>
+ <mtx name="sad-ar.medi.qantara" width="641" lsb="5"/>
+ <mtx name="sad-ar.medi.ragaa" width="385" lsb="0"/>
+ <mtx name="sad-ar.medi.reh" width="289" lsb="-1"/>
+ <mtx name="sad-ar.medi.sad" width="476" lsb="-1"/>
+ <mtx name="sad-ar.medi.yeh" width="357" lsb="8"/>
+ <mtx name="section" width="465" lsb="35"/>
+ <mtx name="seen-ar" width="933" lsb="-1"/>
+ <mtx name="seen-ar.fina" width="507" lsb="0"/>
+ <mtx name="seen-ar.fina.jalt" width="1042" lsb="1"/>
+ <mtx name="seen-ar.init" width="685" lsb="0"/>
+ <mtx name="seen-ar.init.ain" width="725" lsb="0"/>
+ <mtx name="seen-ar.init.dal" width="696" lsb="2"/>
+ <mtx name="seen-ar.init.feh" width="839" lsb="0"/>
+ <mtx name="seen-ar.init.hah" width="749" lsb="10"/>
+ <mtx name="seen-ar.init.heh" width="889" lsb="0"/>
+ <mtx name="seen-ar.init.meem" width="590" lsb="0"/>
+ <mtx name="seen-ar.init.ragaa" width="678" lsb="0"/>
+ <mtx name="seen-ar.init.reh" width="706" lsb="8"/>
+ <mtx name="seen-ar.init.sad" width="791" lsb="1"/>
+ <mtx name="seen-ar.init.yeh" width="545" lsb="0"/>
+ <mtx name="seen-ar.jalt" width="1531" lsb="1"/>
+ <mtx name="seen-ar.medi" width="318" lsb="0"/>
+ <mtx name="seen-ar.medi.ain" width="416" lsb="0"/>
+ <mtx name="seen-ar.medi.dal" width="333" lsb="0"/>
+ <mtx name="seen-ar.medi.feh" width="535" lsb="0"/>
+ <mtx name="seen-ar.medi.hah" width="447" lsb="0"/>
+ <mtx name="seen-ar.medi.heh" width="609" lsb="0"/>
+ <mtx name="seen-ar.medi.meem" width="413" lsb="0"/>
+ <mtx name="seen-ar.medi.ragaa" width="382" lsb="0"/>
+ <mtx name="seen-ar.medi.reh" width="330" lsb="0"/>
+ <mtx name="seen-ar.medi.sad" width="580" lsb="1"/>
+ <mtx name="seen-ar.medi.yeh" width="370" lsb="0"/>
+ <mtx name="semicolon" width="193" lsb="29"/>
+ <mtx name="semicolon-ar" width="278" lsb="54"/>
+ <mtx name="semicolon-ar.alt" width="278" lsb="54"/>
+ <mtx name="seven" width="500" lsb="49"/>
+ <mtx name="seven-ar" width="376" lsb="25"/>
+ <mtx name="seven-ar.dnom" width="265" lsb="19"/>
+ <mtx name="seven-ar.numr" width="265" lsb="19"/>
+ <mtx name="seven-persian" width="376" lsb="25"/>
+ <mtx name="seven-persian.urd" width="545" lsb="26"/>
+ <mtx name="seven-persian.urd.dnom" width="265" lsb="-39"/>
+ <mtx name="seven-persian.urd.numr" width="265" lsb="-39"/>
+ <mtx name="seven.dnom" width="376" lsb="52"/>
+ <mtx name="seven.numr" width="376" lsb="52"/>
+ <mtx name="shadda-ar" width="0" lsb="-115"/>
+ <mtx name="sheen-ar" width="1000" lsb="0"/>
+ <mtx name="sigma" width="543" lsb="31"/>
+ <mtx name="six" width="500" lsb="45"/>
+ <mtx name="six-ar" width="379" lsb="29"/>
+ <mtx name="six-ar.dnom" width="265" lsb="18"/>
+ <mtx name="six-ar.numr" width="265" lsb="18"/>
+ <mtx name="six-persian" width="476" lsb="24"/>
+ <mtx name="six-persian.dnom" width="265" lsb="-17"/>
+ <mtx name="six-persian.numr" width="265" lsb="-17"/>
+ <mtx name="six.dnom" width="376" lsb="49"/>
+ <mtx name="six.numr" width="376" lsb="49"/>
+ <mtx name="slash" width="390" lsb="-17"/>
+ <mtx name="softhyphen" width="0" lsb="0"/>
+ <mtx name="space" width="146" lsb="0"/>
+ <mtx name="space#1" width="333" lsb="0"/>
+ <mtx name="sterling" width="649" lsb="22"/>
+ <mtx name="sukun-ar" width="0" lsb="-98"/>
+ <mtx name="sukun-ar.alt" width="0" lsb="-53"/>
+ <mtx name="t" width="385" lsb="0"/>
+ <mtx name="tah-ar" width="681" lsb="1"/>
+ <mtx name="tah-ar.fina" width="320" lsb="0"/>
+ <mtx name="tah-ar.init" width="574" lsb="0"/>
+ <mtx name="tah-ar.init.ain" width="705" lsb="0"/>
+ <mtx name="tah-ar.init.dal" width="635" lsb="0"/>
+ <mtx name="tah-ar.init.feh" width="765" lsb="0"/>
+ <mtx name="tah-ar.init.hah" width="676" lsb="0"/>
+ <mtx name="tah-ar.init.heh" width="766" lsb="0"/>
+ <mtx name="tah-ar.init.kaf" width="618" lsb="0"/>
+ <mtx name="tah-ar.init.meem" width="585" lsb="0"/>
+ <mtx name="tah-ar.init.qantara" width="857" lsb="-1"/>
+ <mtx name="tah-ar.init.ragaa" width="678" lsb="0"/>
+ <mtx name="tah-ar.init.reh" width="586" lsb="-1"/>
+ <mtx name="tah-ar.init.sad" width="902" lsb="1"/>
+ <mtx name="tah-ar.init.yeh" width="561" lsb="0"/>
+ <mtx name="tah-ar.medi" width="206" lsb="0"/>
+ <mtx name="tah-ar.medi.ain" width="327" lsb="0"/>
+ <mtx name="tah-ar.medi.dal" width="260" lsb="0"/>
+ <mtx name="tah-ar.medi.feh" width="384" lsb="0"/>
+ <mtx name="tah-ar.medi.hah" width="299" lsb="0"/>
+ <mtx name="tah-ar.medi.heh" width="385" lsb="0"/>
+ <mtx name="tah-ar.medi.kaf" width="265" lsb="0"/>
+ <mtx name="tah-ar.medi.meem" width="326" lsb="0"/>
+ <mtx name="tah-ar.medi.postsad" width="206" lsb="0"/>
+ <mtx name="tah-ar.medi.qantara" width="489" lsb="-1"/>
+ <mtx name="tah-ar.medi.ragaa" width="219" lsb="0"/>
+ <mtx name="tah-ar.medi.reh" width="213" lsb="-1"/>
+ <mtx name="tah-ar.medi.sad" width="501" lsb="1"/>
+ <mtx name="tah-ar.medi.yeh" width="390" lsb="0"/>
+ <mtx name="tahabove-ar" width="0" lsb="-141"/>
+ <mtx name="tau" width="486" lsb="3"/>
+ <mtx name="tcheh-ar" width="683" lsb="-1"/>
+ <mtx name="teh-ar" width="801" lsb="86"/>
+ <mtx name="tehMarbuta-ar" width="247" lsb="0"/>
+ <mtx name="thal-ar" width="367" lsb="0"/>
+ <mtx name="theh-ar" width="801" lsb="86"/>
+ <mtx name="theta" width="500" lsb="42"/>
+ <mtx name="theta1" width="526" lsb="-10"/>
+ <mtx name="thorn" width="543" lsb="-12"/>
+ <mtx name="three" width="500" lsb="18"/>
+ <mtx name="three-ar" width="414" lsb="25"/>
+ <mtx name="three-ar.dnom" width="265" lsb="6"/>
+ <mtx name="three-ar.numr" width="265" lsb="6"/>
+ <mtx name="three.dnom" width="376" lsb="31"/>
+ <mtx name="three.numr" width="376" lsb="31"/>
+ <mtx name="threedotsdownbelow-ar" width="0" lsb="-121"/>
+ <mtx name="threedotsupabove-ar" width="0" lsb="-121"/>
+ <mtx name="threequarters" width="790" lsb="19"/>
+ <mtx name="threesuperior" width="299" lsb="-20"/>
+ <mtx name="tilde" width="500" lsb="104"/>
+ <mtx name="tildecomb" width="0" lsb="-147"/>
+ <mtx name="tteh-ar" width="801" lsb="86"/>
+ <mtx name="two" width="500" lsb="12"/>
+ <mtx name="two-ar" width="286" lsb="28"/>
+ <mtx name="two-ar.dnom" width="265" lsb="51"/>
+ <mtx name="two-ar.numr" width="265" lsb="51"/>
+ <mtx name="two-persian" width="392" lsb="24"/>
+ <mtx name="two-persian.dnom" width="265" lsb="12"/>
+ <mtx name="two-persian.numr" width="265" lsb="12"/>
+ <mtx name="two.dnom" width="376" lsb="27"/>
+ <mtx name="two.numr" width="376" lsb="27"/>
+ <mtx name="twodotshorizontalabove-ar" width="0" lsb="-127"/>
+ <mtx name="twodotshorizontalbelow-ar" width="0" lsb="-127"/>
+ <mtx name="twosuperior" width="304" lsb="-26"/>
+ <mtx name="u" width="638" lsb="-10"/>
+ <mtx name="uacute" width="633" lsb="-10"/>
+ <mtx name="ucircumflex" width="633" lsb="-10"/>
+ <mtx name="udieresis" width="633" lsb="-10"/>
+ <mtx name="ugrave" width="633" lsb="-10"/>
+ <mtx name="underscore" width="756" lsb="0"/>
+ <mtx name="upsilon" width="543" lsb="-12"/>
+ <mtx name="v" width="493" lsb="-20"/>
+ <mtx name="vabove-ar" width="0" lsb="-83"/>
+ <mtx name="vbelow-ar" width="0" lsb="-83"/>
+ <mtx name="veh-ar" width="679" lsb="34"/>
+ <mtx name="w" width="801" lsb="-20"/>
+ <mtx name="wasla-ar" width="0" lsb="-101"/>
+ <mtx name="waw-ar" width="491" lsb="0"/>
+ <mtx name="waw-ar.fina" width="491" lsb="0"/>
+ <mtx name="wawDotabove-ar" width="491" lsb="0"/>
+ <mtx name="wawHamzaabove-ar" width="491" lsb="0"/>
+ <mtx name="weierstrass" width="591" lsb="44"/>
+ <mtx name="x" width="490" lsb="-10"/>
+ <mtx name="xi" width="472" lsb="14"/>
+ <mtx name="y" width="572" lsb="-10"/>
+ <mtx name="yacute" width="552" lsb="-10"/>
+ <mtx name="ydieresis" width="552" lsb="-10"/>
+ <mtx name="yeh-ar" width="615" lsb="0"/>
+ <mtx name="yeh-farsi" width="615" lsb="0"/>
+ <mtx name="yehHamzaabove-ar" width="615" lsb="0"/>
+ <mtx name="yehVabove-ar" width="615" lsb="0"/>
+ <mtx name="yehbarree-ar" width="699" lsb="3"/>
+ <mtx name="yehbarree-ar.fina" width="699" lsb="2"/>
+ <mtx name="yehbarreeHamzaabove-ar" width="699" lsb="3"/>
+ <mtx name="yen" width="623" lsb="15"/>
+ <mtx name="z" width="463" lsb="6"/>
+ <mtx name="zah-ar" width="681" lsb="1"/>
+ <mtx name="zain-ar" width="469" lsb="0"/>
+ <mtx name="zero" width="500" lsb="34"/>
+ <mtx name="zero-ar" width="231" lsb="27"/>
+ <mtx name="zero-ar.dnom" width="265" lsb="70"/>
+ <mtx name="zero-ar.numr" width="265" lsb="70"/>
+ <mtx name="zero.dnom" width="376" lsb="41"/>
+ <mtx name="zero.numr" width="376" lsb="41"/>
+ <mtx name="zeta" width="421" lsb="28"/>
+ </hmtx>
+
+</ttFont>
diff --git a/Tests/merge_test.py b/Tests/merge/merge_test.py
index 015248dd..5ff12d1c 100644
--- a/Tests/merge_test.py
+++ b/Tests/merge/merge_test.py
@@ -3,14 +3,82 @@ import itertools
from fontTools import ttLib
from fontTools.ttLib.tables._g_l_y_f import Glyph
from fontTools.fontBuilder import FontBuilder
-from fontTools.merge import Merger
+from fontTools.merge import Merger, main as merge_main
+import difflib
+import os
+import re
+import shutil
+import sys
+import tempfile
import unittest
+import pathlib
import pytest
class MergeIntegrationTest(unittest.TestCase):
- # TODO
- pass
+ def setUp(self):
+ self.tempdir = None
+ self.num_tempfiles = 0
+
+ def tearDown(self):
+ if self.tempdir:
+ shutil.rmtree(self.tempdir)
+
+ @staticmethod
+ def getpath(testfile):
+ path, _ = os.path.split(__file__)
+ return os.path.join(path, "data", testfile)
+
+ def temp_path(self, suffix):
+ if not self.tempdir:
+ self.tempdir = tempfile.mkdtemp()
+ self.num_tempfiles += 1
+ return os.path.join(self.tempdir, "tmp%d%s" % (self.num_tempfiles, suffix))
+
+ IGNORED_LINES_RE = re.compile(
+ "^(<ttFont | <(checkSumAdjustment|created|modified) ).*"
+ )
+ def read_ttx(self, path):
+ lines = []
+ with open(path, "r", encoding="utf-8") as ttx:
+ for line in ttx.readlines():
+ # Elide lines with data that often change.
+ if self.IGNORED_LINES_RE.match(line):
+ lines.append("\n")
+ else:
+ lines.append(line.rstrip() + "\n")
+ return lines
+
+ def expect_ttx(self, font, expected_ttx, tables=None):
+ path = self.temp_path(suffix=".ttx")
+ font.saveXML(path, tables=tables)
+ actual = self.read_ttx(path)
+ expected = self.read_ttx(expected_ttx)
+ if actual != expected:
+ for line in difflib.unified_diff(
+ expected, actual, fromfile=expected_ttx, tofile=path):
+ sys.stdout.write(line)
+ self.fail("TTX output is different from expected")
+
+ def compile_font(self, path, suffix):
+ savepath = self.temp_path(suffix=suffix)
+ font = ttLib.TTFont(recalcBBoxes=False, recalcTimestamp=False)
+ font.importXML(path)
+ font.save(savepath, reorderTables=None)
+ return font, savepath
+
+# -----
+# Tests
+# -----
+
+ def test_merge_cff(self):
+ _, fontpath1 = self.compile_font(self.getpath("CFFFont1.ttx"), ".otf")
+ _, fontpath2 = self.compile_font(self.getpath("CFFFont2.ttx"), ".otf")
+ mergedpath = self.temp_path(".otf")
+ merge_main([fontpath1, fontpath2, "--output-file=%s" % mergedpath])
+ mergedfont = ttLib.TTFont(mergedpath)
+ self.expect_ttx(mergedfont, self.getpath("CFFFont_expected.ttx"))
+
class gaspMergeUnitTest(unittest.TestCase):
def setUp(self):
diff --git a/Tests/misc/bezierTools_test.py b/Tests/misc/bezierTools_test.py
index c5cd1b73..da73375d 100644
--- a/Tests/misc/bezierTools_test.py
+++ b/Tests/misc/bezierTools_test.py
@@ -1,6 +1,8 @@
+import fontTools.misc.bezierTools as bezierTools
from fontTools.misc.bezierTools import (
- calcQuadraticBounds, calcCubicBounds, segmentPointAtT, splitLine, splitQuadratic,
- splitCubic, splitQuadraticAtT, splitCubicAtT, solveCubic)
+ calcQuadraticBounds, calcCubicBounds, curveLineIntersections,
+ segmentPointAtT, splitLine, splitQuadratic, splitCubic, splitQuadraticAtT,
+ splitCubicAtT, solveCubic)
import pytest
@@ -148,3 +150,17 @@ _segmentPointAtT_testData = [
def test_segmentPointAtT(segment, t, expectedPoint):
point = segmentPointAtT(segment, t)
assert expectedPoint == point
+
+
+def test_intersections_straight_line():
+ curve = ((548, 183), (548, 289), (450, 366), (315, 366))
+ line1 = ((330, 376), (330, 286))
+ pt = curveLineIntersections(curve, line1)[0][0]
+ assert pt[0] == 330
+ line = (pt, (330, 286))
+ pt2 = (330.0001018806911, 295.5635754579425)
+ assert bezierTools._line_t_of_pt(*line, pt2) > 0
+ s = (19, 0)
+ e = (110, 0)
+ pt = (109.05194805194802, 0.0)
+ assert bezierTools._line_t_of_pt(s, e, pt) == pytest.approx(0.98958184)
diff --git a/Tests/misc/plistlib_test.py b/Tests/misc/plistlib_test.py
index b2ce408d..5659d690 100644
--- a/Tests/misc/plistlib_test.py
+++ b/Tests/misc/plistlib_test.py
@@ -5,9 +5,9 @@ import codecs
import collections
from io import BytesIO
from numbers import Integral
-from fontTools.misc.py23 import tostr
from fontTools.misc import etree
from fontTools.misc import plistlib
+from fontTools.misc.textTools import tostr
from fontTools.ufoLib.plistlib import (
readPlist, readPlistFromString, writePlist, writePlistToString,
)
diff --git a/Tests/misc/transform_test.py b/Tests/misc/transform_test.py
index 4efab81f..53d4a202 100644
--- a/Tests/misc/transform_test.py
+++ b/Tests/misc/transform_test.py
@@ -23,6 +23,14 @@ class TransformTest(object):
[(0, 0), (0, 100), (100, 100), (100, 0)]
) == [(0, 0), (0, 300), (200, 300), (200, 0)]
+ def test_transformVector(self):
+ t = Transform(2, 0, 0, 3, -10, 30)
+ assert t.transformVector((-4, 5)) == (-8, 15)
+
+ def test_transformVectors(self):
+ t = Transform(2, 0, 0, 3, -10, 30)
+ assert t.transformVectors([(-4, 5), (-6, 7)]) == [(-8, 15), (-12, 21)]
+
def test_translate(self):
t = Transform()
assert t.translate(20, 30) == Transform(1, 0, 0, 1, 20, 30)
diff --git a/Tests/misc/xmlReader_test.py b/Tests/misc/xmlReader_test.py
index f6775cbc..ec4aff57 100644
--- a/Tests/misc/xmlReader_test.py
+++ b/Tests/misc/xmlReader_test.py
@@ -1,8 +1,8 @@
-from fontTools.misc.py23 import strjoin
from io import BytesIO
import os
import unittest
from fontTools.ttLib import TTFont
+from fontTools.misc.textTools import strjoin
from fontTools.misc.xmlReader import XMLReader, ProgressPrinter, BUFSIZE
import tempfile
diff --git a/Tests/misc/xmlWriter_test.py b/Tests/misc/xmlWriter_test.py
index fd4f2408..69471543 100644
--- a/Tests/misc/xmlWriter_test.py
+++ b/Tests/misc/xmlWriter_test.py
@@ -1,11 +1,10 @@
-from fontTools.misc.py23 import bytesjoin, tobytes
from io import BytesIO
import os
import unittest
+from fontTools.misc.textTools import bytesjoin, tobytes
from fontTools.misc.xmlWriter import XMLWriter
-linesep = tobytes(os.linesep)
-HEADER = b'<?xml version="1.0" encoding="UTF-8"?>' + linesep
+HEADER = b'<?xml version="1.0" encoding="UTF-8"?>\n'
class TestXMLWriter(unittest.TestCase):
@@ -17,30 +16,30 @@ class TestXMLWriter(unittest.TestCase):
def test_comment_multiline(self):
writer = XMLWriter(BytesIO())
writer.comment("Hello world\nHow are you?")
- self.assertEqual(HEADER + b"<!-- Hello world" + linesep + b" How are you? -->",
+ self.assertEqual(HEADER + b"<!-- Hello world\n How are you? -->",
writer.file.getvalue())
def test_encoding_default(self):
writer = XMLWriter(BytesIO())
- self.assertEqual(b'<?xml version="1.0" encoding="UTF-8"?>' + linesep,
+ self.assertEqual(b'<?xml version="1.0" encoding="UTF-8"?>\n',
writer.file.getvalue())
def test_encoding_utf8(self):
# https://github.com/fonttools/fonttools/issues/246
writer = XMLWriter(BytesIO(), encoding="utf8")
- self.assertEqual(b'<?xml version="1.0" encoding="UTF-8"?>' + linesep,
+ self.assertEqual(b'<?xml version="1.0" encoding="UTF-8"?>\n',
writer.file.getvalue())
def test_encoding_UTF_8(self):
# https://github.com/fonttools/fonttools/issues/246
writer = XMLWriter(BytesIO(), encoding="UTF-8")
- self.assertEqual(b'<?xml version="1.0" encoding="UTF-8"?>' + linesep,
+ self.assertEqual(b'<?xml version="1.0" encoding="UTF-8"?>\n',
writer.file.getvalue())
def test_encoding_UTF8(self):
# https://github.com/fonttools/fonttools/issues/246
writer = XMLWriter(BytesIO(), encoding="UTF8")
- self.assertEqual(b'<?xml version="1.0" encoding="UTF-8"?>' + linesep,
+ self.assertEqual(b'<?xml version="1.0" encoding="UTF-8"?>\n',
writer.file.getvalue())
def test_encoding_other(self):
@@ -61,7 +60,7 @@ class TestXMLWriter(unittest.TestCase):
writer.newline()
writer.dedent()
writer.write("baz")
- self.assertEqual(HEADER + bytesjoin(["foo", " bar", "baz"], linesep),
+ self.assertEqual(HEADER + bytesjoin(["foo", " bar", "baz"], "\n"),
writer.file.getvalue())
def test_writecdata(self):
@@ -89,7 +88,7 @@ class TestXMLWriter(unittest.TestCase):
"66756c20 67726f75 70206f66 206c6574",
"74657273 2c206e6f 74206120 67726f75",
"70206f66 20626561 75746966 756c206c",
- "65747465 72732e ", ""], joiner=linesep), writer.file.getvalue())
+ "65747465 72732e ", ""], joiner="\n"), writer.file.getvalue())
def test_stringifyattrs(self):
writer = XMLWriter(BytesIO())
diff --git a/Tests/mtiLib/mti_test.py b/Tests/mtiLib/mti_test.py
index f0e7bdf3..8a80113c 100644
--- a/Tests/mtiLib/mti_test.py
+++ b/Tests/mtiLib/mti_test.py
@@ -182,14 +182,14 @@ class MtiTest(unittest.TestCase):
decompiled.decompile(blob, font)
# XML from built object.
- writer = XMLWriter(StringIO(), newlinestr='\n')
+ writer = XMLWriter(StringIO())
writer.begintag(tableTag); writer.newline()
table.toXML(writer, font)
writer.endtag(tableTag); writer.newline()
xml_built = writer.file.getvalue()
# XML from decompiled object.
- writer = XMLWriter(StringIO(), newlinestr='\n')
+ writer = XMLWriter(StringIO())
writer.begintag(tableTag); writer.newline()
decompiled.toXML(writer, font)
writer.endtag(tableTag); writer.newline()
@@ -208,7 +208,7 @@ class MtiTest(unittest.TestCase):
reader.read(rootless=True)
# XML from object read from XML.
- writer = XMLWriter(StringIO(), newlinestr='\n')
+ writer = XMLWriter(StringIO())
writer.begintag(tableTag); writer.newline()
font2[tableTag].toXML(writer, font)
writer.endtag(tableTag); writer.newline()
diff --git a/Tests/otlLib/builder_test.py b/Tests/otlLib/builder_test.py
index 1c2c324d..548a31e9 100644
--- a/Tests/otlLib/builder_test.py
+++ b/Tests/otlLib/builder_test.py
@@ -1,6 +1,6 @@
import io
import struct
-from fontTools.misc.fixedTools import floatToFixed
+from fontTools.misc.fixedTools import floatToFixed, fixedToFloat
from fontTools.misc.testTools import getXML
from fontTools.otlLib import builder, error
from fontTools import ttLib
@@ -204,7 +204,7 @@ class BuilderTest(object):
assert builder.buildComponentRecord(None) is None
def test_buildCoverage(self):
- cov = builder.buildCoverage({"two", "four"}, {"two": 2, "four": 4})
+ cov = builder.buildCoverage(("two", "four", "two"), {"two": 2, "four": 4})
assert getXML(cov.toXML) == [
"<Coverage>",
' <Glyph value="two"/>',
@@ -918,7 +918,6 @@ class BuilderTest(object):
("A", "zero"): (d0, d50),
("A", "one"): (None, d20),
("B", "five"): (d8020, d50),
-
},
self.GLYPHMAP,
)
@@ -1120,262 +1119,309 @@ class ClassDefBuilderTest(object):
buildStatTable_test_data = [
- ([
- dict(
- tag="wght",
- name="Weight",
- values=[
- dict(value=100, name='Thin'),
- dict(value=400, name='Regular', flags=0x2),
- dict(value=900, name='Black')])], None, "Regular", [
- ' <STAT>',
- ' <Version value="0x00010001"/>',
- ' <DesignAxisRecordSize value="8"/>',
- ' <!-- DesignAxisCount=1 -->',
- ' <DesignAxisRecord>',
- ' <Axis index="0">',
- ' <AxisTag value="wght"/>',
- ' <AxisNameID value="257"/> <!-- Weight -->',
- ' <AxisOrdering value="0"/>',
- ' </Axis>',
- ' </DesignAxisRecord>',
- ' <!-- AxisValueCount=3 -->',
- ' <AxisValueArray>',
- ' <AxisValue index="0" Format="1">',
- ' <AxisIndex value="0"/>',
- ' <Flags value="0"/>',
- ' <ValueNameID value="258"/> <!-- Thin -->',
- ' <Value value="100.0"/>',
- ' </AxisValue>',
- ' <AxisValue index="1" Format="1">',
- ' <AxisIndex value="0"/>',
- ' <Flags value="2"/> <!-- ElidableAxisValueName -->',
- ' <ValueNameID value="256"/> <!-- Regular -->',
- ' <Value value="400.0"/>',
- ' </AxisValue>',
- ' <AxisValue index="2" Format="1">',
- ' <AxisIndex value="0"/>',
- ' <Flags value="0"/>',
- ' <ValueNameID value="259"/> <!-- Black -->',
- ' <Value value="900.0"/>',
- ' </AxisValue>',
- ' </AxisValueArray>',
- ' <ElidedFallbackNameID value="256"/> <!-- Regular -->',
- ' </STAT>']),
- ([
- dict(
- tag="wght",
- name=dict(en="Weight", nl="Gewicht"),
- values=[
- dict(value=100, name=dict(en='Thin', nl='Dun')),
- dict(value=400, name='Regular', flags=0x2),
- dict(value=900, name='Black'),
- ]),
- dict(
- tag="wdth",
- name="Width",
- values=[
- dict(value=50, name='Condensed'),
- dict(value=100, name='Regular', flags=0x2),
- dict(value=200, name='Extended')])], None, 2, [
- ' <STAT>',
- ' <Version value="0x00010001"/>',
- ' <DesignAxisRecordSize value="8"/>',
- ' <!-- DesignAxisCount=2 -->',
- ' <DesignAxisRecord>',
- ' <Axis index="0">',
- ' <AxisTag value="wght"/>',
- ' <AxisNameID value="256"/> <!-- Weight -->',
- ' <AxisOrdering value="0"/>',
- ' </Axis>',
- ' <Axis index="1">',
- ' <AxisTag value="wdth"/>',
- ' <AxisNameID value="260"/> <!-- Width -->',
- ' <AxisOrdering value="1"/>',
- ' </Axis>',
- ' </DesignAxisRecord>',
- ' <!-- AxisValueCount=6 -->',
- ' <AxisValueArray>',
- ' <AxisValue index="0" Format="1">',
- ' <AxisIndex value="0"/>',
- ' <Flags value="0"/>',
- ' <ValueNameID value="257"/> <!-- Thin -->',
- ' <Value value="100.0"/>',
- ' </AxisValue>',
- ' <AxisValue index="1" Format="1">',
- ' <AxisIndex value="0"/>',
- ' <Flags value="2"/> <!-- ElidableAxisValueName -->',
- ' <ValueNameID value="258"/> <!-- Regular -->',
- ' <Value value="400.0"/>',
- ' </AxisValue>',
- ' <AxisValue index="2" Format="1">',
- ' <AxisIndex value="0"/>',
- ' <Flags value="0"/>',
- ' <ValueNameID value="259"/> <!-- Black -->',
- ' <Value value="900.0"/>',
- ' </AxisValue>',
- ' <AxisValue index="3" Format="1">',
- ' <AxisIndex value="1"/>',
- ' <Flags value="0"/>',
- ' <ValueNameID value="261"/> <!-- Condensed -->',
- ' <Value value="50.0"/>',
- ' </AxisValue>',
- ' <AxisValue index="4" Format="1">',
- ' <AxisIndex value="1"/>',
- ' <Flags value="2"/> <!-- ElidableAxisValueName -->',
- ' <ValueNameID value="258"/> <!-- Regular -->',
- ' <Value value="100.0"/>',
- ' </AxisValue>',
- ' <AxisValue index="5" Format="1">',
- ' <AxisIndex value="1"/>',
- ' <Flags value="0"/>',
- ' <ValueNameID value="262"/> <!-- Extended -->',
- ' <Value value="200.0"/>',
- ' </AxisValue>',
- ' </AxisValueArray>',
- ' <ElidedFallbackNameID value="2"/> <!-- missing from name table -->',
- ' </STAT>']),
- ([
- dict(
- tag="wght",
- name="Weight",
- values=[
- dict(value=400, name='Regular', flags=0x2),
- dict(value=600, linkedValue=650, name='Bold')])], None, 18, [
- ' <STAT>',
- ' <Version value="0x00010001"/>',
- ' <DesignAxisRecordSize value="8"/>',
- ' <!-- DesignAxisCount=1 -->',
- ' <DesignAxisRecord>',
- ' <Axis index="0">',
- ' <AxisTag value="wght"/>',
- ' <AxisNameID value="256"/> <!-- Weight -->',
- ' <AxisOrdering value="0"/>',
- ' </Axis>',
- ' </DesignAxisRecord>',
- ' <!-- AxisValueCount=2 -->',
- ' <AxisValueArray>',
- ' <AxisValue index="0" Format="1">',
- ' <AxisIndex value="0"/>',
- ' <Flags value="2"/> <!-- ElidableAxisValueName -->',
- ' <ValueNameID value="257"/> <!-- Regular -->',
- ' <Value value="400.0"/>',
- ' </AxisValue>',
- ' <AxisValue index="1" Format="3">',
- ' <AxisIndex value="0"/>',
- ' <Flags value="0"/>',
- ' <ValueNameID value="258"/> <!-- Bold -->',
- ' <Value value="600.0"/>',
- ' <LinkedValue value="650.0"/>',
- ' </AxisValue>',
- ' </AxisValueArray>',
- ' <ElidedFallbackNameID value="18"/> <!-- missing from name table -->',
- ' </STAT>']),
- ([
- dict(
- tag="opsz",
- name="Optical Size",
- values=[
- dict(nominalValue=6, rangeMaxValue=10, name='Small'),
- dict(rangeMinValue=10, nominalValue=14, rangeMaxValue=24, name='Text', flags=0x2),
- dict(rangeMinValue=24, nominalValue=600, name='Display')])], None, 2, [
- ' <STAT>',
- ' <Version value="0x00010001"/>',
- ' <DesignAxisRecordSize value="8"/>',
- ' <!-- DesignAxisCount=1 -->',
- ' <DesignAxisRecord>',
- ' <Axis index="0">',
- ' <AxisTag value="opsz"/>',
- ' <AxisNameID value="256"/> <!-- Optical Size -->',
- ' <AxisOrdering value="0"/>',
- ' </Axis>',
- ' </DesignAxisRecord>',
- ' <!-- AxisValueCount=3 -->',
- ' <AxisValueArray>',
- ' <AxisValue index="0" Format="2">',
- ' <AxisIndex value="0"/>',
- ' <Flags value="0"/>',
- ' <ValueNameID value="257"/> <!-- Small -->',
- ' <NominalValue value="6.0"/>',
- ' <RangeMinValue value="-32768.0"/>',
- ' <RangeMaxValue value="10.0"/>',
- ' </AxisValue>',
- ' <AxisValue index="1" Format="2">',
- ' <AxisIndex value="0"/>',
- ' <Flags value="2"/> <!-- ElidableAxisValueName -->',
- ' <ValueNameID value="258"/> <!-- Text -->',
- ' <NominalValue value="14.0"/>',
- ' <RangeMinValue value="10.0"/>',
- ' <RangeMaxValue value="24.0"/>',
- ' </AxisValue>',
- ' <AxisValue index="2" Format="2">',
- ' <AxisIndex value="0"/>',
- ' <Flags value="0"/>',
- ' <ValueNameID value="259"/> <!-- Display -->',
- ' <NominalValue value="600.0"/>',
- ' <RangeMinValue value="24.0"/>',
- ' <RangeMaxValue value="32767.99998"/>',
- ' </AxisValue>',
- ' </AxisValueArray>',
- ' <ElidedFallbackNameID value="2"/> <!-- missing from name table -->',
- ' </STAT>']),
- ([
- dict(
- tag="wght",
- name="Weight",
- ordering=1,
- values=[]),
- dict(
- tag="ABCD",
- name="ABCDTest",
- ordering=0,
- values=[
- dict(value=100, name="Regular", flags=0x2)])],
- [dict(location=dict(wght=300, ABCD=100), name='Regular ABCD')], 18, [
- ' <STAT>',
- ' <Version value="0x00010002"/>',
- ' <DesignAxisRecordSize value="8"/>',
- ' <!-- DesignAxisCount=2 -->',
- ' <DesignAxisRecord>',
- ' <Axis index="0">',
- ' <AxisTag value="wght"/>',
- ' <AxisNameID value="256"/> <!-- Weight -->',
- ' <AxisOrdering value="1"/>',
- ' </Axis>',
- ' <Axis index="1">',
- ' <AxisTag value="ABCD"/>',
- ' <AxisNameID value="257"/> <!-- ABCDTest -->',
- ' <AxisOrdering value="0"/>',
- ' </Axis>',
- ' </DesignAxisRecord>',
- ' <!-- AxisValueCount=2 -->',
- ' <AxisValueArray>',
- ' <AxisValue index="0" Format="4">',
- ' <!-- AxisCount=2 -->',
- ' <Flags value="0"/>',
- ' <ValueNameID value="259"/> <!-- Regular ABCD -->',
- ' <AxisValueRecord index="0">',
- ' <AxisIndex value="0"/>',
- ' <Value value="300.0"/>',
- ' </AxisValueRecord>',
- ' <AxisValueRecord index="1">',
- ' <AxisIndex value="1"/>',
- ' <Value value="100.0"/>',
- ' </AxisValueRecord>',
- ' </AxisValue>',
- ' <AxisValue index="1" Format="1">',
- ' <AxisIndex value="1"/>',
- ' <Flags value="2"/> <!-- ElidableAxisValueName -->',
- ' <ValueNameID value="258"/> <!-- Regular -->',
- ' <Value value="100.0"/>',
- ' </AxisValue>',
- ' </AxisValueArray>',
- ' <ElidedFallbackNameID value="18"/> <!-- missing from name table -->',
- ' </STAT>']),
+ (
+ [
+ dict(
+ tag="wght",
+ name="Weight",
+ values=[
+ dict(value=100, name="Thin"),
+ dict(value=400, name="Regular", flags=0x2),
+ dict(value=900, name="Black"),
+ ],
+ )
+ ],
+ None,
+ "Regular",
+ [
+ " <STAT>",
+ ' <Version value="0x00010001"/>',
+ ' <DesignAxisRecordSize value="8"/>',
+ " <!-- DesignAxisCount=1 -->",
+ " <DesignAxisRecord>",
+ ' <Axis index="0">',
+ ' <AxisTag value="wght"/>',
+ ' <AxisNameID value="257"/> <!-- Weight -->',
+ ' <AxisOrdering value="0"/>',
+ " </Axis>",
+ " </DesignAxisRecord>",
+ " <!-- AxisValueCount=3 -->",
+ " <AxisValueArray>",
+ ' <AxisValue index="0" Format="1">',
+ ' <AxisIndex value="0"/>',
+ ' <Flags value="0"/>',
+ ' <ValueNameID value="258"/> <!-- Thin -->',
+ ' <Value value="100.0"/>',
+ " </AxisValue>",
+ ' <AxisValue index="1" Format="1">',
+ ' <AxisIndex value="0"/>',
+ ' <Flags value="2"/> <!-- ElidableAxisValueName -->',
+ ' <ValueNameID value="256"/> <!-- Regular -->',
+ ' <Value value="400.0"/>',
+ " </AxisValue>",
+ ' <AxisValue index="2" Format="1">',
+ ' <AxisIndex value="0"/>',
+ ' <Flags value="0"/>',
+ ' <ValueNameID value="259"/> <!-- Black -->',
+ ' <Value value="900.0"/>',
+ " </AxisValue>",
+ " </AxisValueArray>",
+ ' <ElidedFallbackNameID value="256"/> <!-- Regular -->',
+ " </STAT>",
+ ],
+ ),
+ (
+ [
+ dict(
+ tag="wght",
+ name=dict(en="Weight", nl="Gewicht"),
+ values=[
+ dict(value=100, name=dict(en="Thin", nl="Dun")),
+ dict(value=400, name="Regular", flags=0x2),
+ dict(value=900, name="Black"),
+ ],
+ ),
+ dict(
+ tag="wdth",
+ name="Width",
+ values=[
+ dict(value=50, name="Condensed"),
+ dict(value=100, name="Regular", flags=0x2),
+ dict(value=200, name="Extended"),
+ ],
+ ),
+ ],
+ None,
+ 2,
+ [
+ " <STAT>",
+ ' <Version value="0x00010001"/>',
+ ' <DesignAxisRecordSize value="8"/>',
+ " <!-- DesignAxisCount=2 -->",
+ " <DesignAxisRecord>",
+ ' <Axis index="0">',
+ ' <AxisTag value="wght"/>',
+ ' <AxisNameID value="256"/> <!-- Weight -->',
+ ' <AxisOrdering value="0"/>',
+ " </Axis>",
+ ' <Axis index="1">',
+ ' <AxisTag value="wdth"/>',
+ ' <AxisNameID value="260"/> <!-- Width -->',
+ ' <AxisOrdering value="1"/>',
+ " </Axis>",
+ " </DesignAxisRecord>",
+ " <!-- AxisValueCount=6 -->",
+ " <AxisValueArray>",
+ ' <AxisValue index="0" Format="1">',
+ ' <AxisIndex value="0"/>',
+ ' <Flags value="0"/>',
+ ' <ValueNameID value="257"/> <!-- Thin -->',
+ ' <Value value="100.0"/>',
+ " </AxisValue>",
+ ' <AxisValue index="1" Format="1">',
+ ' <AxisIndex value="0"/>',
+ ' <Flags value="2"/> <!-- ElidableAxisValueName -->',
+ ' <ValueNameID value="258"/> <!-- Regular -->',
+ ' <Value value="400.0"/>',
+ " </AxisValue>",
+ ' <AxisValue index="2" Format="1">',
+ ' <AxisIndex value="0"/>',
+ ' <Flags value="0"/>',
+ ' <ValueNameID value="259"/> <!-- Black -->',
+ ' <Value value="900.0"/>',
+ " </AxisValue>",
+ ' <AxisValue index="3" Format="1">',
+ ' <AxisIndex value="1"/>',
+ ' <Flags value="0"/>',
+ ' <ValueNameID value="261"/> <!-- Condensed -->',
+ ' <Value value="50.0"/>',
+ " </AxisValue>",
+ ' <AxisValue index="4" Format="1">',
+ ' <AxisIndex value="1"/>',
+ ' <Flags value="2"/> <!-- ElidableAxisValueName -->',
+ ' <ValueNameID value="258"/> <!-- Regular -->',
+ ' <Value value="100.0"/>',
+ " </AxisValue>",
+ ' <AxisValue index="5" Format="1">',
+ ' <AxisIndex value="1"/>',
+ ' <Flags value="0"/>',
+ ' <ValueNameID value="262"/> <!-- Extended -->',
+ ' <Value value="200.0"/>',
+ " </AxisValue>",
+ " </AxisValueArray>",
+ ' <ElidedFallbackNameID value="2"/> <!-- missing from name table -->',
+ " </STAT>",
+ ],
+ ),
+ (
+ [
+ dict(
+ tag="wght",
+ name="Weight",
+ values=[
+ dict(value=400, name="Regular", flags=0x2),
+ dict(value=600, linkedValue=650, name="Bold"),
+ ],
+ )
+ ],
+ None,
+ 18,
+ [
+ " <STAT>",
+ ' <Version value="0x00010001"/>',
+ ' <DesignAxisRecordSize value="8"/>',
+ " <!-- DesignAxisCount=1 -->",
+ " <DesignAxisRecord>",
+ ' <Axis index="0">',
+ ' <AxisTag value="wght"/>',
+ ' <AxisNameID value="256"/> <!-- Weight -->',
+ ' <AxisOrdering value="0"/>',
+ " </Axis>",
+ " </DesignAxisRecord>",
+ " <!-- AxisValueCount=2 -->",
+ " <AxisValueArray>",
+ ' <AxisValue index="0" Format="1">',
+ ' <AxisIndex value="0"/>',
+ ' <Flags value="2"/> <!-- ElidableAxisValueName -->',
+ ' <ValueNameID value="257"/> <!-- Regular -->',
+ ' <Value value="400.0"/>',
+ " </AxisValue>",
+ ' <AxisValue index="1" Format="3">',
+ ' <AxisIndex value="0"/>',
+ ' <Flags value="0"/>',
+ ' <ValueNameID value="258"/> <!-- Bold -->',
+ ' <Value value="600.0"/>',
+ ' <LinkedValue value="650.0"/>',
+ " </AxisValue>",
+ " </AxisValueArray>",
+ ' <ElidedFallbackNameID value="18"/> <!-- missing from name table -->',
+ " </STAT>",
+ ],
+ ),
+ (
+ [
+ dict(
+ tag="opsz",
+ name="Optical Size",
+ values=[
+ dict(nominalValue=6, rangeMaxValue=10, name="Small"),
+ dict(
+ rangeMinValue=10,
+ nominalValue=14,
+ rangeMaxValue=24,
+ name="Text",
+ flags=0x2,
+ ),
+ dict(rangeMinValue=24, nominalValue=600, name="Display"),
+ ],
+ )
+ ],
+ None,
+ 2,
+ [
+ " <STAT>",
+ ' <Version value="0x00010001"/>',
+ ' <DesignAxisRecordSize value="8"/>',
+ " <!-- DesignAxisCount=1 -->",
+ " <DesignAxisRecord>",
+ ' <Axis index="0">',
+ ' <AxisTag value="opsz"/>',
+ ' <AxisNameID value="256"/> <!-- Optical Size -->',
+ ' <AxisOrdering value="0"/>',
+ " </Axis>",
+ " </DesignAxisRecord>",
+ " <!-- AxisValueCount=3 -->",
+ " <AxisValueArray>",
+ ' <AxisValue index="0" Format="2">',
+ ' <AxisIndex value="0"/>',
+ ' <Flags value="0"/>',
+ ' <ValueNameID value="257"/> <!-- Small -->',
+ ' <NominalValue value="6.0"/>',
+ ' <RangeMinValue value="-32768.0"/>',
+ ' <RangeMaxValue value="10.0"/>',
+ " </AxisValue>",
+ ' <AxisValue index="1" Format="2">',
+ ' <AxisIndex value="0"/>',
+ ' <Flags value="2"/> <!-- ElidableAxisValueName -->',
+ ' <ValueNameID value="258"/> <!-- Text -->',
+ ' <NominalValue value="14.0"/>',
+ ' <RangeMinValue value="10.0"/>',
+ ' <RangeMaxValue value="24.0"/>',
+ " </AxisValue>",
+ ' <AxisValue index="2" Format="2">',
+ ' <AxisIndex value="0"/>',
+ ' <Flags value="0"/>',
+ ' <ValueNameID value="259"/> <!-- Display -->',
+ ' <NominalValue value="600.0"/>',
+ ' <RangeMinValue value="24.0"/>',
+ ' <RangeMaxValue value="32767.99998"/>',
+ " </AxisValue>",
+ " </AxisValueArray>",
+ ' <ElidedFallbackNameID value="2"/> <!-- missing from name table -->',
+ " </STAT>",
+ ],
+ ),
+ (
+ [
+ dict(tag="wght", name="Weight", ordering=1, values=[]),
+ dict(
+ tag="ABCD",
+ name="ABCDTest",
+ ordering=0,
+ values=[dict(value=100, name="Regular", flags=0x2)],
+ ),
+ ],
+ [dict(location=dict(wght=300, ABCD=100), name="Regular ABCD")],
+ 18,
+ [
+ " <STAT>",
+ ' <Version value="0x00010002"/>',
+ ' <DesignAxisRecordSize value="8"/>',
+ " <!-- DesignAxisCount=2 -->",
+ " <DesignAxisRecord>",
+ ' <Axis index="0">',
+ ' <AxisTag value="wght"/>',
+ ' <AxisNameID value="256"/> <!-- Weight -->',
+ ' <AxisOrdering value="1"/>',
+ " </Axis>",
+ ' <Axis index="1">',
+ ' <AxisTag value="ABCD"/>',
+ ' <AxisNameID value="257"/> <!-- ABCDTest -->',
+ ' <AxisOrdering value="0"/>',
+ " </Axis>",
+ " </DesignAxisRecord>",
+ " <!-- AxisValueCount=2 -->",
+ " <AxisValueArray>",
+ ' <AxisValue index="0" Format="4">',
+ " <!-- AxisCount=2 -->",
+ ' <Flags value="0"/>',
+ ' <ValueNameID value="259"/> <!-- Regular ABCD -->',
+ ' <AxisValueRecord index="0">',
+ ' <AxisIndex value="0"/>',
+ ' <Value value="300.0"/>',
+ " </AxisValueRecord>",
+ ' <AxisValueRecord index="1">',
+ ' <AxisIndex value="1"/>',
+ ' <Value value="100.0"/>',
+ " </AxisValueRecord>",
+ " </AxisValue>",
+ ' <AxisValue index="1" Format="1">',
+ ' <AxisIndex value="1"/>',
+ ' <Flags value="2"/> <!-- ElidableAxisValueName -->',
+ ' <ValueNameID value="258"/> <!-- Regular -->',
+ ' <Value value="100.0"/>',
+ " </AxisValue>",
+ " </AxisValueArray>",
+ ' <ElidedFallbackNameID value="18"/> <!-- missing from name table -->',
+ " </STAT>",
+ ],
+ ),
]
-@pytest.mark.parametrize("axes, axisValues, elidedFallbackName, expected_ttx", buildStatTable_test_data)
+@pytest.mark.parametrize(
+ "axes, axisValues, elidedFallbackName, expected_ttx", buildStatTable_test_data
+)
def test_buildStatTable(axes, axisValues, elidedFallbackName, expected_ttx):
font = ttLib.TTFont()
font["name"] = ttLib.newTable("name")
@@ -1402,6 +1448,100 @@ def test_buildStatTable(axes, axisValues, elidedFallbackName, expected_ttx):
assert expected_ttx == ttx
+def test_buildStatTable_platform_specific_names():
+ # PR: https://github.com/fonttools/fonttools/pull/2528
+ # Introduce new 'platform' feature for creating a STAT table.
+ # Set windowsNames and or macNames to create name table entries
+ # in the specified platforms
+ font_obj = ttLib.TTFont()
+ font_obj["name"] = ttLib.newTable("name")
+ font_obj["name"].names = []
+
+ wght_values = [
+ dict(nominalValue=200, rangeMinValue=200, rangeMaxValue=250, name="ExtraLight"),
+ dict(nominalValue=300, rangeMinValue=250, rangeMaxValue=350, name="Light"),
+ dict(
+ nominalValue=400,
+ rangeMinValue=350,
+ rangeMaxValue=450,
+ name="Regular",
+ flags=0x2,
+ ),
+ dict(nominalValue=500, rangeMinValue=450, rangeMaxValue=650, name="Medium"),
+ dict(nominalValue=700, rangeMinValue=650, rangeMaxValue=750, name="Bold"),
+ dict(nominalValue=800, rangeMinValue=750, rangeMaxValue=850, name="ExtraBold"),
+ dict(nominalValue=900, rangeMinValue=850, rangeMaxValue=900, name="Black"),
+ ]
+
+ AXES = [
+ dict(
+ tag="wght",
+ name="Weight",
+ ordering=1,
+ values=wght_values,
+ ),
+ ]
+
+ font_obj["name"].setName("ExtraLight", 260, 3, 1, 0x409)
+ font_obj["name"].setName("Light", 261, 3, 1, 0x409)
+ font_obj["name"].setName("Regular", 262, 3, 1, 0x409)
+ font_obj["name"].setName("Medium", 263, 3, 1, 0x409)
+ font_obj["name"].setName("Bold", 264, 3, 1, 0x409)
+ font_obj["name"].setName("ExtraBold", 265, 3, 1, 0x409)
+ font_obj["name"].setName("Black", 266, 3, 1, 0x409)
+
+ font_obj["name"].setName("Weight", 270, 3, 1, 0x409)
+
+ expected_names = [x.string for x in font_obj["name"].names]
+
+ builder.buildStatTable(font_obj, AXES, windowsNames=True, macNames=False)
+ actual_names = [x.string for x in font_obj["name"].names]
+
+ # no new name records were added by buildStatTable
+ # because windows-only names with the same strings were already present
+ assert expected_names == actual_names
+
+ font_obj["name"].removeNames(nameID=270)
+ expected_names = [x.string for x in font_obj["name"].names] + ["Weight"]
+
+ builder.buildStatTable(font_obj, AXES, windowsNames=True, macNames=False)
+ actual_names = [x.string for x in font_obj["name"].names]
+ # One new name records 'Weight' were added by buildStatTable
+ assert expected_names == actual_names
+
+ builder.buildStatTable(font_obj, AXES, windowsNames=True, macNames=True)
+ actual_names = [x.string for x in font_obj["name"].names]
+ expected_names = [
+ "Weight",
+ "Weight",
+ "Weight",
+ "ExtraLight",
+ "ExtraLight",
+ "ExtraLight",
+ "Light",
+ "Light",
+ "Light",
+ "Regular",
+ "Regular",
+ "Regular",
+ "Medium",
+ "Medium",
+ "Medium",
+ "Bold",
+ "Bold",
+ "Bold",
+ "ExtraBold",
+ "ExtraBold",
+ "ExtraBold",
+ "Black",
+ "Black",
+ "Black",
+ ]
+ # Because there is an inconsistency in the names add new name IDs
+ # for each platform -> windowsNames=True, macNames=True
+ assert sorted(expected_names) == sorted(actual_names)
+
+
def test_stat_infinities():
negInf = floatToFixed(builder.AXIS_VALUE_NEGATIVE_INFINITY, 16)
assert struct.pack(">l", negInf) == b"\x80\x00\x00\x00"
@@ -1412,7 +1552,7 @@ def test_stat_infinities():
class ChainContextualRulesetTest(object):
def test_makeRulesets(self):
font = ttLib.TTFont()
- font.setGlyphOrder(["a","b","c","d","A","B","C","D","E"])
+ font.setGlyphOrder(["a", "b", "c", "d", "A", "B", "C", "D", "E"])
sb = builder.ChainContextSubstBuilder(font, None)
prefix, input_, suffix, lookups = [["a"], ["b"]], [["c"]], [], [None]
sb.rules.append(builder.ChainContextualRule(prefix, input_, suffix, lookups))
@@ -1425,7 +1565,7 @@ class ChainContextualRulesetTest(object):
# Second subtable has some glyph classes
prefix, input_, suffix, lookups = [["A"]], [["E"]], [], [None]
sb.rules.append(builder.ChainContextualRule(prefix, input_, suffix, lookups))
- prefix, input_, suffix, lookups = [["A"]], [["C","D"]], [], [None]
+ prefix, input_, suffix, lookups = [["A"]], [["C", "D"]], [], [None]
sb.rules.append(builder.ChainContextualRule(prefix, input_, suffix, lookups))
prefix, input_, suffix, lookups = [["A", "B"]], [["E"]], [], [None]
sb.rules.append(builder.ChainContextualRule(prefix, input_, suffix, lookups))
@@ -1435,7 +1575,7 @@ class ChainContextualRulesetTest(object):
# Third subtable has no pre/post context
prefix, input_, suffix, lookups = [], [["E"]], [], [None]
sb.rules.append(builder.ChainContextualRule(prefix, input_, suffix, lookups))
- prefix, input_, suffix, lookups = [], [["C","D"]], [], [None]
+ prefix, input_, suffix, lookups = [], [["C", "D"]], [], [None]
sb.rules.append(builder.ChainContextualRule(prefix, input_, suffix, lookups))
rulesets = sb.rulesets()
@@ -1443,7 +1583,7 @@ class ChainContextualRulesetTest(object):
assert rulesets[0].hasPrefixOrSuffix
assert not rulesets[0].hasAnyGlyphClasses
cd = rulesets[0].format2ClassDefs()
- assert set(cd[0].classes()[1:]) == set([("d",),("b",),("a",)])
+ assert set(cd[0].classes()[1:]) == set([("d",), ("b",), ("a",)])
assert set(cd[1].classes()[1:]) == set([("c",)])
assert set(cd[2].classes()[1:]) == set()
@@ -1456,7 +1596,7 @@ class ChainContextualRulesetTest(object):
assert rulesets[2].format2ClassDefs()
cd = rulesets[2].format2ClassDefs()
assert set(cd[0].classes()[1:]) == set()
- assert set(cd[1].classes()[1:]) == set([("C","D"), ("E",)])
+ assert set(cd[1].classes()[1:]) == set([("C", "D"), ("E",)])
assert set(cd[2].classes()[1:]) == set()
diff --git a/Tests/otlLib/optimize_test.py b/Tests/otlLib/optimize_test.py
new file mode 100644
index 00000000..40cf389e
--- /dev/null
+++ b/Tests/otlLib/optimize_test.py
@@ -0,0 +1,175 @@
+import logging
+from pathlib import Path
+from subprocess import run
+import contextlib
+import os
+from typing import List, Optional, Tuple
+from fontTools.ttLib import TTFont
+
+import pytest
+
+from fontTools.feaLib.builder import addOpenTypeFeaturesFromString
+from fontTools.fontBuilder import FontBuilder
+
+from fontTools.ttLib.tables.otBase import OTTableWriter, ValueRecord
+
+
+def test_main(tmpdir: Path):
+ """Check that calling the main function on an input TTF works."""
+ glyphs = ".notdef space A Aacute B D".split()
+ features = """
+ @A = [A Aacute];
+ @B = [B D];
+ feature kern {
+ pos @A @B -50;
+ } kern;
+ """
+ fb = FontBuilder(1000)
+ fb.setupGlyphOrder(glyphs)
+ addOpenTypeFeaturesFromString(fb.font, features)
+ input = tmpdir / "in.ttf"
+ fb.save(str(input))
+ output = tmpdir / "out.ttf"
+ run(
+ [
+ "fonttools",
+ "otlLib.optimize",
+ "--gpos-compact-mode",
+ "5",
+ str(input),
+ "-o",
+ str(output),
+ ],
+ check=True,
+ )
+ assert output.exists()
+
+
+# Copy-pasted from https://stackoverflow.com/questions/2059482/python-temporarily-modify-the-current-processs-environment
+# TODO: remove when moving to the Config class
+@contextlib.contextmanager
+def set_env(**environ):
+ """
+ Temporarily set the process environment variables.
+
+ >>> with set_env(PLUGINS_DIR=u'test/plugins'):
+ ... "PLUGINS_DIR" in os.environ
+ True
+
+ >>> "PLUGINS_DIR" in os.environ
+ False
+
+ :type environ: dict[str, unicode]
+ :param environ: Environment variables to set
+ """
+ old_environ = dict(os.environ)
+ os.environ.update(environ)
+ try:
+ yield
+ finally:
+ os.environ.clear()
+ os.environ.update(old_environ)
+
+
+def count_pairpos_subtables(font: TTFont) -> int:
+ subtables = 0
+ for lookup in font["GPOS"].table.LookupList.Lookup:
+ if lookup.LookupType == 2:
+ subtables += len(lookup.SubTable)
+ elif lookup.LookupType == 9:
+ for subtable in lookup.SubTable:
+ if subtable.ExtensionLookupType == 2:
+ subtables += 1
+ return subtables
+
+
+def count_pairpos_bytes(font: TTFont) -> int:
+ bytes = 0
+ gpos = font["GPOS"]
+ for lookup in font["GPOS"].table.LookupList.Lookup:
+ if lookup.LookupType == 2:
+ w = OTTableWriter(tableTag=gpos.tableTag)
+ lookup.compile(w, font)
+ bytes += len(w.getAllData())
+ elif lookup.LookupType == 9:
+ if any(subtable.ExtensionLookupType == 2 for subtable in lookup.SubTable):
+ w = OTTableWriter(tableTag=gpos.tableTag)
+ lookup.compile(w, font)
+ bytes += len(w.getAllData())
+ return bytes
+
+
+def get_kerning_by_blocks(blocks: List[Tuple[int, int]]) -> Tuple[List[str], str]:
+ """Generate a highly compressible font by generating a bunch of rectangular
+ blocks on the diagonal that can easily be sliced into subtables.
+
+ Returns the list of glyphs and feature code of the font.
+ """
+ value = 0
+ glyphs: List[str] = []
+ rules = []
+ # Each block is like a script in a multi-script font
+ for script, (width, height) in enumerate(blocks):
+ glyphs.extend(f"g_{script}_{i}" for i in range(max(width, height)))
+ for l in range(height):
+ for r in range(width):
+ value += 1
+ rules.append((f"g_{script}_{l}", f"g_{script}_{r}", value))
+ classes = "\n".join([f"@{g} = [{g}];" for g in glyphs])
+ statements = "\n".join([f"pos @{l} @{r} {v};" for (l, r, v) in rules])
+ features = f"""
+ {classes}
+ feature kern {{
+ {statements}
+ }} kern;
+ """
+ return glyphs, features
+
+
+@pytest.mark.parametrize(
+ ("blocks", "mode", "expected_subtables", "expected_bytes"),
+ [
+ # Mode = 0 = no optimization leads to 650 bytes of GPOS
+ ([(15, 3), (2, 10)], None, 1, 602),
+ # Optimization level 1 recognizes the 2 blocks and splits into 2
+ # subtables = adds 1 subtable leading to a size reduction of
+ # (602-298)/602 = 50%
+ ([(15, 3), (2, 10)], 1, 2, 298),
+ # On a bigger block configuration, we see that mode=5 doesn't create
+ # as many subtables as it could, because of the stop criteria
+ ([(4, 4) for _ in range(20)], 5, 14, 2042),
+ # while level=9 creates as many subtables as there were blocks on the
+ # diagonal and yields a better saving
+ ([(4, 4) for _ in range(20)], 9, 20, 1886),
+ # On a fully occupied kerning matrix, even the strategy 9 doesn't
+ # split anything.
+ ([(10, 10)], 9, 1, 304)
+ ],
+)
+def test_optimization_mode(
+ caplog,
+ blocks: List[Tuple[int, int]],
+ mode: Optional[int],
+ expected_subtables: int,
+ expected_bytes: int,
+):
+ """Check that the optimizations are off by default, and that increasing
+ the optimization level creates more subtables and a smaller byte size.
+ """
+ caplog.set_level(logging.DEBUG)
+
+ glyphs, features = get_kerning_by_blocks(blocks)
+ glyphs = [".notdef space"] + glyphs
+
+ env = {}
+ if mode is not None:
+ # NOTE: activating this optimization via the environment variable is
+ # experimental and may not be supported once an alternative mechanism
+ # is in place. See: https://github.com/fonttools/fonttools/issues/2349
+ env["FONTTOOLS_GPOS_COMPACT_MODE"] = str(mode)
+ with set_env(**env):
+ fb = FontBuilder(1000)
+ fb.setupGlyphOrder(glyphs)
+ addOpenTypeFeaturesFromString(fb.font, features)
+ assert expected_subtables == count_pairpos_subtables(fb.font)
+ assert expected_bytes == count_pairpos_bytes(fb.font)
diff --git a/Tests/pens/data/test_even_odd_fill.pgm b/Tests/pens/data/test_even_odd_fill.pgm
new file mode 100644
index 00000000..70130f33
--- /dev/null
+++ b/Tests/pens/data/test_even_odd_fill.pgm
Binary files differ
diff --git a/Tests/pens/data/test_non_zero_fill.pgm b/Tests/pens/data/test_non_zero_fill.pgm
new file mode 100644
index 00000000..698f6424
--- /dev/null
+++ b/Tests/pens/data/test_non_zero_fill.pgm
Binary files differ
diff --git a/Tests/pens/data/test_rotate.pgm b/Tests/pens/data/test_rotate.pgm
new file mode 100644
index 00000000..14edd9fc
--- /dev/null
+++ b/Tests/pens/data/test_rotate.pgm
Binary files differ
diff --git a/Tests/pens/data/test_skew.pgm b/Tests/pens/data/test_skew.pgm
new file mode 100644
index 00000000..5ba4a067
--- /dev/null
+++ b/Tests/pens/data/test_skew.pgm
Binary files differ
diff --git a/Tests/pens/freetypePen_test.py b/Tests/pens/freetypePen_test.py
new file mode 100644
index 00000000..b6edc8bb
--- /dev/null
+++ b/Tests/pens/freetypePen_test.py
@@ -0,0 +1,235 @@
+import unittest
+import os
+import math
+
+try:
+ from fontTools.pens.freetypePen import FreeTypePen
+
+ FREETYPE_PY_AVAILABLE = True
+except ImportError:
+ FREETYPE_PY_AVAILABLE = False
+
+from fontTools.misc.transform import Scale, Offset
+
+DATA_DIR = os.path.join(os.path.abspath(os.path.dirname(__file__)), "data")
+
+
+def box(pen, offset=(0, 0)):
+ pen.moveTo((0 + offset[0], 0 + offset[1]))
+ pen.lineTo((0 + offset[0], 500 + offset[1]))
+ pen.lineTo((500 + offset[0], 500 + offset[1]))
+ pen.lineTo((500 + offset[0], 0 + offset[1]))
+ pen.closePath()
+
+
+def draw_cubic(pen):
+ pen.moveTo((50, 0))
+ pen.lineTo((50, 500))
+ pen.lineTo((200, 500))
+ pen.curveTo((350, 500), (450, 400), (450, 250))
+ pen.curveTo((450, 100), (350, 0), (200, 0))
+ pen.closePath()
+
+
+def draw_quadratic(pen):
+ pen.moveTo((50, 0))
+ pen.lineTo((50, 500))
+ pen.lineTo((200, 500))
+ pen.qCurveTo((274, 500), (388, 438), (450, 324), (450, 250))
+ pen.qCurveTo((450, 176), (388, 62), (274, 0), (200, 0))
+ pen.closePath()
+
+
+def star(pen):
+ pen.moveTo((0, 420))
+ pen.lineTo((1000, 420))
+ pen.lineTo((200, -200))
+ pen.lineTo((500, 800))
+ pen.lineTo((800, -200))
+ pen.closePath()
+
+
+# For the PGM format, see the following resources:
+# https://en.wikipedia.org/wiki/Netpbm
+# http://netpbm.sourceforge.net/doc/pgm.html
+def load_pgm(filename):
+ with open(filename, "rb") as fp:
+ assert fp.readline() == "P5\n".encode()
+ w, h = (int(c) for c in fp.readline().decode().rstrip().split(" "))
+ assert fp.readline() == "255\n".encode()
+ return fp.read(), (w, h)
+
+
+def save_pgm(filename, buf, size):
+ with open(filename, "wb") as fp:
+ fp.write("P5\n".encode())
+ fp.write("{0:d} {1:d}\n".format(*size).encode())
+ fp.write("255\n".encode())
+ fp.write(buf)
+
+
+# Assume the buffers are equal when PSNR > 38dB. See also:
+# Peak signal-to-noise ratio
+# https://en.wikipedia.org/wiki/Peak_signal-to-noise_ratio
+PSNR_THRESHOLD = 38.0
+
+
+def psnr(b1, b2):
+ import math
+
+ mse = sum((c1 - c2) * (c1 - c2) for c1, c2 in zip(b1, b2)) / float(len(b1))
+ return 10.0 * math.log10((255.0**2) / float(mse)) if mse > 0 else math.inf
+
+
+@unittest.skipUnless(FREETYPE_PY_AVAILABLE, "freetype-py not installed")
+class FreeTypePenTest(unittest.TestCase):
+ def test_draw(self):
+ pen = FreeTypePen(None)
+ box(pen)
+ width, height = 500, 500
+ buf1, _ = pen.buffer(width=width, height=height)
+ buf2 = b"\xff" * width * height
+ self.assertEqual(buf1, buf2)
+
+ def test_empty(self):
+ pen = FreeTypePen(None)
+ width, height = 500, 500
+ buf, size = pen.buffer(width=width, height=height)
+ self.assertEqual(b"\0" * size[0] * size[1], buf)
+
+ def test_bbox_and_cbox(self):
+ pen = FreeTypePen(None)
+ draw_cubic(pen)
+ self.assertEqual(pen.bbox, (50.0, 0.0, 450.0, 500.0))
+ self.assertEqual(pen.cbox, (50.0, 0.0, 450.0, 500.0))
+
+ def test_non_zero_fill(self):
+ pen = FreeTypePen(None)
+ star(pen)
+ t = Scale(0.05, 0.05)
+ width, height = t.transformPoint((1000, 1000))
+ t = t.translate(0, 200)
+ buf1, size1 = pen.buffer(width=width, height=height, transform=t, evenOdd=False)
+ buf2, size2 = load_pgm(os.path.join(DATA_DIR, "test_non_zero_fill.pgm"))
+ self.assertEqual(len(buf1), len(buf2))
+ self.assertEqual(size1, size2)
+ self.assertGreater(psnr(buf1, buf2), PSNR_THRESHOLD)
+
+ def test_even_odd_fill(self):
+ pen = FreeTypePen(None)
+ star(pen)
+ t = Scale(0.05, 0.05)
+ width, height = t.transformPoint((1000, 1000))
+ t = t.translate(0, 200)
+ buf1, size1 = pen.buffer(width=width, height=height, transform=t, evenOdd=True)
+ buf2, size2 = load_pgm(os.path.join(DATA_DIR, "test_even_odd_fill.pgm"))
+ self.assertEqual(len(buf1), len(buf2))
+ self.assertEqual(size1, size2)
+ self.assertGreater(psnr(buf1, buf2), PSNR_THRESHOLD)
+
+ def test_cubic_vs_quadratic(self):
+ pen1, pen2 = FreeTypePen(None), FreeTypePen(None)
+ draw_cubic(pen1)
+ draw_quadratic(pen2)
+ width, height = 500, 500
+ buf1, _ = pen1.buffer(width=width, height=height)
+ buf2, _ = pen2.buffer(width=width, height=height)
+ self.assertEqual(len(buf1), len(buf2))
+ self.assertGreater(psnr(buf1, buf2), PSNR_THRESHOLD)
+
+ def test_contain(self):
+ pen = FreeTypePen(None)
+ star(pen)
+ t = Scale(0.05, 0.05)
+ width, height = 0, 0
+ buf1, size1 = pen.buffer(width=width, height=height, transform=t, contain=True)
+ buf2, size2 = load_pgm(os.path.join(DATA_DIR, "test_non_zero_fill.pgm"))
+ self.assertEqual(len(buf1), len(buf2))
+ self.assertEqual(size1, size2)
+ self.assertGreater(psnr(buf1, buf2), PSNR_THRESHOLD)
+
+ def test_rotate(self):
+ pen = FreeTypePen(None)
+ box(pen)
+ t = Scale(0.05, 0.05).rotate(math.pi / 4.0).translate(1234, 5678)
+ width, height = None, None
+ buf1, size1 = pen.buffer(width=width, height=height, transform=t)
+ buf2, size2 = load_pgm(os.path.join(DATA_DIR, "test_rotate.pgm"))
+ self.assertEqual(len(buf1), len(buf2))
+ self.assertEqual(size1, size2)
+ self.assertGreater(psnr(buf1, buf2), PSNR_THRESHOLD)
+
+ def test_skew(self):
+ pen = FreeTypePen(None)
+ box(pen)
+ t = Scale(0.05, 0.05).skew(math.pi / 4.0).translate(1234, 5678)
+ width, height = None, None
+ buf1, size1 = pen.buffer(width=width, height=height, transform=t)
+ buf2, size2 = load_pgm(os.path.join(DATA_DIR, "test_skew.pgm"))
+ self.assertEqual(len(buf1), len(buf2))
+ self.assertEqual(size1, size2)
+ self.assertGreater(psnr(buf1, buf2), PSNR_THRESHOLD)
+
+ def test_none_size(self):
+ pen = FreeTypePen(None)
+ star(pen)
+ width, height = None, None
+ buf1, size = pen.buffer(width=width, height=height, transform=Offset(0, 200))
+ buf2, _ = pen.buffer(width=1000, height=1000, transform=Offset(0, 200))
+ self.assertEqual(size, (1000, 1000))
+ self.assertEqual(buf1, buf2)
+
+ pen = FreeTypePen(None)
+ box(pen, offset=(250, 250))
+ width, height = None, None
+ buf1, size = pen.buffer(width=width, height=height)
+ buf2, _ = pen.buffer(width=500, height=500, transform=Offset(-250, -250))
+ self.assertEqual(size, (500, 500))
+ self.assertEqual(buf1, buf2)
+
+ pen = FreeTypePen(None)
+ box(pen, offset=(-1234, -5678))
+ width, height = None, None
+ buf1, size = pen.buffer(width=width, height=height)
+ buf2, _ = pen.buffer(width=500, height=500, transform=Offset(1234, 5678))
+ self.assertEqual(size, (500, 500))
+ self.assertEqual(buf1, buf2)
+
+ def test_zero_size(self):
+ pen = FreeTypePen(None)
+ star(pen)
+ width, height = 0, 0
+ buf1, size = pen.buffer(
+ width=width, height=height, transform=Offset(0, 200), contain=True
+ )
+ buf2, _ = pen.buffer(
+ width=1000, height=1000, transform=Offset(0, 200), contain=True
+ )
+ self.assertEqual(size, (1000, 1000))
+ self.assertEqual(buf1, buf2)
+
+ pen = FreeTypePen(None)
+ box(pen, offset=(250, 250))
+ width, height = 0, 0
+ buf1, size = pen.buffer(width=width, height=height, contain=True)
+ buf2, _ = pen.buffer(
+ width=500, height=500, transform=Offset(0, 0), contain=True
+ )
+ self.assertEqual(size, (750, 750))
+ self.assertEqual(buf1, buf2)
+
+ pen = FreeTypePen(None)
+ box(pen, offset=(-1234, -5678))
+ width, height = 0, 0
+ buf1, size = pen.buffer(width=width, height=height, contain=True)
+ buf2, _ = pen.buffer(
+ width=500, height=500, transform=Offset(1234, 5678), contain=True
+ )
+ self.assertEqual(size, (500, 500))
+ self.assertEqual(buf1, buf2)
+
+
+if __name__ == "__main__":
+ import sys
+
+ sys.exit(unittest.main())
diff --git a/Tests/pens/ttGlyphPen_test.py b/Tests/pens/ttGlyphPen_test.py
index 53db025c..96d75a19 100644
--- a/Tests/pens/ttGlyphPen_test.py
+++ b/Tests/pens/ttGlyphPen_test.py
@@ -1,56 +1,63 @@
import os
-import unittest
+import pytest
import struct
from fontTools import ttLib
-from fontTools.misc.testTools import TestCase
-from fontTools.pens.ttGlyphPen import TTGlyphPen, MAX_F2DOT14
+from fontTools.pens.basePen import PenError
+from fontTools.pens.ttGlyphPen import TTGlyphPen, TTGlyphPointPen, MAX_F2DOT14
-class TTGlyphPenTest(TestCase):
-
+class TTGlyphPenTestBase:
def runEndToEnd(self, filename):
font = ttLib.TTFont()
ttx_path = os.path.join(
os.path.abspath(os.path.dirname(os.path.realpath(__file__))),
- '..', 'ttLib', 'data', filename)
+ "..",
+ "ttLib",
+ "data",
+ filename,
+ )
font.importXML(ttx_path)
glyphSet = font.getGlyphSet()
- glyfTable = font['glyf']
- pen = TTGlyphPen(font.getGlyphSet())
+ glyfTable = font["glyf"]
+ pen = self.penClass(font.getGlyphSet())
for name in font.getGlyphOrder():
oldGlyph = glyphSet[name]
- oldGlyph.draw(pen)
+ getattr(oldGlyph, self.drawMethod)(pen)
oldGlyph = oldGlyph._glyph
newGlyph = pen.glyph()
- if hasattr(oldGlyph, 'program'):
+ if hasattr(oldGlyph, "program"):
newGlyph.program = oldGlyph.program
- self.assertEqual(
- oldGlyph.compile(glyfTable), newGlyph.compile(glyfTable))
+ assert oldGlyph.compile(glyfTable) == newGlyph.compile(glyfTable)
def test_e2e_linesAndSimpleComponents(self):
- self.runEndToEnd('TestTTF-Regular.ttx')
+ self.runEndToEnd("TestTTF-Regular.ttx")
def test_e2e_curvesAndComponentTransforms(self):
- self.runEndToEnd('TestTTFComplex-Regular.ttx')
+ self.runEndToEnd("TestTTFComplex-Regular.ttx")
+
+
+class TTGlyphPenTest(TTGlyphPenTestBase):
+ penClass = TTGlyphPen
+ drawMethod = "draw"
def test_moveTo_errorWithinContour(self):
pen = TTGlyphPen(None)
pen.moveTo((0, 0))
- with self.assertRaises(AssertionError):
+ with pytest.raises(PenError):
pen.moveTo((1, 0))
def test_closePath_ignoresAnchors(self):
pen = TTGlyphPen(None)
pen.moveTo((0, 0))
pen.closePath()
- self.assertFalse(pen.points)
- self.assertFalse(pen.types)
- self.assertFalse(pen.endPts)
+ assert not pen.points
+ assert not pen.types
+ assert not pen.endPts
def test_endPath_sameAsClosePath(self):
pen = TTGlyphPen(None)
@@ -67,16 +74,16 @@ class TTGlyphPenTest(TestCase):
pen.endPath()
endPathGlyph = pen.glyph()
- self.assertEqual(closePathGlyph, endPathGlyph)
+ assert closePathGlyph == endPathGlyph
def test_glyph_errorOnUnendedContour(self):
pen = TTGlyphPen(None)
pen.moveTo((0, 0))
- with self.assertRaises(AssertionError):
+ with pytest.raises(PenError):
pen.glyph()
def test_glyph_decomposes(self):
- componentName = 'a'
+ componentName = "a"
glyphSet = {}
pen = TTGlyphPen(glyphSet)
@@ -104,7 +111,7 @@ class TTGlyphPenTest(TestCase):
pen.closePath()
plainGlyph = pen.glyph()
- self.assertEqual(plainGlyph, compositeGlyph)
+ assert plainGlyph == compositeGlyph
def test_remove_extra_move_points(self):
pen = TTGlyphPen(None)
@@ -112,8 +119,8 @@ class TTGlyphPenTest(TestCase):
pen.lineTo((100, 0))
pen.qCurveTo((100, 50), (50, 100), (0, 0))
pen.closePath()
- self.assertEqual(len(pen.points), 4)
- self.assertEqual(pen.points[0], (0, 0))
+ assert len(pen.points) == 4
+ assert pen.points[0] == (0, 0)
def test_keep_move_point(self):
pen = TTGlyphPen(None)
@@ -122,8 +129,8 @@ class TTGlyphPenTest(TestCase):
pen.qCurveTo((100, 50), (50, 100), (30, 30))
# when last and move pts are different, closePath() implies a lineTo
pen.closePath()
- self.assertEqual(len(pen.points), 5)
- self.assertEqual(pen.points[0], (0, 0))
+ assert len(pen.points) == 5
+ assert pen.points[0] == (0, 0)
def test_keep_duplicate_end_point(self):
pen = TTGlyphPen(None)
@@ -132,11 +139,11 @@ class TTGlyphPenTest(TestCase):
pen.qCurveTo((100, 50), (50, 100), (0, 0))
pen.lineTo((0, 0)) # the duplicate point is not removed
pen.closePath()
- self.assertEqual(len(pen.points), 5)
- self.assertEqual(pen.points[0], (0, 0))
+ assert len(pen.points) == 5
+ assert pen.points[0] == (0, 0)
def test_within_range_component_transform(self):
- componentName = 'a'
+ componentName = "a"
glyphSet = {}
pen = TTGlyphPen(glyphSet)
@@ -154,10 +161,10 @@ class TTGlyphPenTest(TestCase):
pen.addComponent(componentName, (1, 0, 0, -1.5, 0, 0))
expectedGlyph = pen.glyph()
- self.assertEqual(expectedGlyph, compositeGlyph)
+ assert expectedGlyph == compositeGlyph
def test_clamp_to_almost_2_component_transform(self):
- componentName = 'a'
+ componentName = "a"
glyphSet = {}
pen = TTGlyphPen(glyphSet)
@@ -182,10 +189,10 @@ class TTGlyphPenTest(TestCase):
pen.addComponent(componentName, (-2, 0, 0, -2, 0, 0))
expectedGlyph = pen.glyph()
- self.assertEqual(expectedGlyph, compositeGlyph)
+ assert expectedGlyph == compositeGlyph
def test_out_of_range_transform_decomposed(self):
- componentName = 'a'
+ componentName = "a"
glyphSet = {}
pen = TTGlyphPen(glyphSet)
@@ -214,10 +221,10 @@ class TTGlyphPenTest(TestCase):
pen.closePath()
expectedGlyph = pen.glyph()
- self.assertEqual(expectedGlyph, compositeGlyph)
+ assert expectedGlyph == compositeGlyph
def test_no_handle_overflowing_transform(self):
- componentName = 'a'
+ componentName = "a"
glyphSet = {}
pen = TTGlyphPen(glyphSet, handleOverflowingTransforms=False)
@@ -231,14 +238,13 @@ class TTGlyphPenTest(TestCase):
pen.addComponent(componentName, (3, 0, 0, 1, 0, 0))
compositeGlyph = pen.glyph()
- self.assertEqual(compositeGlyph.components[0].transform,
- ((3, 0), (0, 1)))
+ assert compositeGlyph.components[0].transform == ((3, 0), (0, 1))
- with self.assertRaises(struct.error):
- compositeGlyph.compile({'a': baseGlyph})
+ with pytest.raises(struct.error):
+ compositeGlyph.compile({"a": baseGlyph})
def assertGlyphBoundsEqual(self, glyph, bounds):
- self.assertEqual((glyph.xMin, glyph.yMin, glyph.xMax, glyph.yMax), bounds)
+ assert (glyph.xMin, glyph.yMin, glyph.xMax, glyph.yMax) == bounds
def test_round_float_coordinates_and_component_offsets(self):
glyphSet = {}
@@ -253,7 +259,7 @@ class TTGlyphPenTest(TestCase):
simpleGlyph.recalcBounds(glyphSet)
self.assertGlyphBoundsEqual(simpleGlyph, (0, 0, 368, 1))
- componentName = 'a'
+ componentName = "a"
glyphSet[componentName] = simpleGlyph
pen.addComponent(componentName, (1, 0, 0, 1, -86.4, 0))
@@ -271,7 +277,7 @@ class TTGlyphPenTest(TestCase):
pen.lineTo((-55, 745))
pen.lineTo((-231, 745))
pen.closePath()
- glyphSet["gravecomb"] = gravecomb = pen.glyph()
+ glyphSet["gravecomb"] = pen.glyph()
pen = TTGlyphPen(glyphSet)
pen.moveTo((-278, 939))
@@ -279,7 +285,7 @@ class TTGlyphPenTest(TestCase):
pen.lineTo((8, 745))
pen.lineTo((-278, 745))
pen.closePath()
- glyphSet["circumflexcomb"] = circumflexcomb = pen.glyph()
+ glyphSet["circumflexcomb"] = pen.glyph()
pen = TTGlyphPen(glyphSet)
pen.addComponent("circumflexcomb", (1, 0, 0, 1, 0, 0))
@@ -290,6 +296,286 @@ class TTGlyphPenTest(TestCase):
self.assertGlyphBoundsEqual(uni0302_uni0300, (-278, 745, 148, 1025))
+class TTGlyphPointPenTest(TTGlyphPenTestBase):
+ penClass = TTGlyphPointPen
+ drawMethod = "drawPoints"
+
+ def test_glyph_simple(self):
+ pen = TTGlyphPointPen(None)
+ pen.beginPath()
+ pen.addPoint((50, 0), "line")
+ pen.addPoint((450, 0), "line")
+ pen.addPoint((450, 700), "line")
+ pen.addPoint((50, 700), "line")
+ pen.endPath()
+ glyph = pen.glyph()
+ assert glyph.numberOfContours == 1
+ assert glyph.endPtsOfContours == [3]
+
+ def test_addPoint_errorOnCurve(self):
+ pen = TTGlyphPointPen(None)
+ pen.beginPath()
+ with pytest.raises(NotImplementedError):
+ pen.addPoint((0, 0), "curve")
+
+ def test_beginPath_beginPathOnOpenPath(self):
+ pen = TTGlyphPointPen(None)
+ pen.beginPath()
+ pen.addPoint((0, 0))
+ with pytest.raises(PenError):
+ pen.beginPath()
+
+ def test_glyph_errorOnUnendedContour(self):
+ pen = TTGlyphPointPen(None)
+ pen.beginPath()
+ pen.addPoint((0, 0))
+ with pytest.raises(PenError):
+ pen.glyph()
+
+ def test_glyph_errorOnEmptyContour(self):
+ pen = TTGlyphPointPen(None)
+ pen.beginPath()
+ with pytest.raises(PenError):
+ pen.endPath()
+
+ def test_glyph_decomposes(self):
+ componentName = "a"
+ glyphSet = {}
+ pen = TTGlyphPointPen(glyphSet)
+
+ pen.beginPath()
+ pen.addPoint((0, 0), "line")
+ pen.addPoint((0, 1), "line")
+ pen.addPoint((1, 0), "line")
+ pen.endPath()
+ glyphSet[componentName] = _TestGlyph(pen.glyph())
+
+ pen.beginPath()
+ pen.addPoint((0, 0), "line")
+ pen.addPoint((0, 1), "line")
+ pen.addPoint((1, 0), "line")
+ pen.endPath()
+ pen.addComponent(componentName, (1, 0, 0, 1, 2, 0))
+ pen.addComponent("missing", (1, 0, 0, 1, 0, 0)) # skipped
+ compositeGlyph = pen.glyph()
+
+ pen.beginPath()
+ pen.addPoint((0, 0), "line")
+ pen.addPoint((0, 1), "line")
+ pen.addPoint((1, 0), "line")
+ pen.endPath()
+ pen.beginPath()
+ pen.addPoint((2, 0), "line")
+ pen.addPoint((2, 1), "line")
+ pen.addPoint((3, 0), "line")
+ pen.endPath()
+ plainGlyph = pen.glyph()
+
+ assert plainGlyph == compositeGlyph
+
+ def test_keep_duplicate_end_point(self):
+ pen = TTGlyphPointPen(None)
+ pen.beginPath()
+ pen.addPoint((0, 0), "line")
+ pen.addPoint((100, 0), "line")
+ pen.addPoint((100, 50))
+ pen.addPoint((50, 100))
+ pen.addPoint((0, 0), "qcurve")
+ pen.addPoint((0, 0), "line") # the duplicate point is not removed
+ pen.endPath()
+ assert len(pen.points) == 6
+ assert pen.points[0] == (0, 0)
+
+ def test_within_range_component_transform(self):
+ componentName = "a"
+ glyphSet = {}
+ pen = TTGlyphPointPen(glyphSet)
+
+ pen.beginPath()
+ pen.addPoint((0, 0), "line")
+ pen.addPoint((0, 1), "line")
+ pen.addPoint((1, 0), "line")
+ pen.endPath()
+ glyphSet[componentName] = _TestGlyph(pen.glyph())
+
+ pen.addComponent(componentName, (1.5, 0, 0, 1, 0, 0))
+ pen.addComponent(componentName, (1, 0, 0, -1.5, 0, 0))
+ compositeGlyph = pen.glyph()
+
+ pen.addComponent(componentName, (1.5, 0, 0, 1, 0, 0))
+ pen.addComponent(componentName, (1, 0, 0, -1.5, 0, 0))
+ expectedGlyph = pen.glyph()
+
+ assert expectedGlyph == compositeGlyph
+
+ def test_clamp_to_almost_2_component_transform(self):
+ componentName = "a"
+ glyphSet = {}
+ pen = TTGlyphPointPen(glyphSet)
+
+ pen.beginPath()
+ pen.addPoint((0, 0), "line")
+ pen.addPoint((0, 1), "line")
+ pen.addPoint((1, 0), "line")
+ pen.endPath()
+ glyphSet[componentName] = _TestGlyph(pen.glyph())
+
+ pen.addComponent(componentName, (1.99999, 0, 0, 1, 0, 0))
+ pen.addComponent(componentName, (1, 2, 0, 1, 0, 0))
+ pen.addComponent(componentName, (1, 0, 2, 1, 0, 0))
+ pen.addComponent(componentName, (1, 0, 0, 2, 0, 0))
+ pen.addComponent(componentName, (-2, 0, 0, -2, 0, 0))
+ compositeGlyph = pen.glyph()
+
+ almost2 = MAX_F2DOT14 # 0b1.11111111111111
+ pen.addComponent(componentName, (almost2, 0, 0, 1, 0, 0))
+ pen.addComponent(componentName, (1, almost2, 0, 1, 0, 0))
+ pen.addComponent(componentName, (1, 0, almost2, 1, 0, 0))
+ pen.addComponent(componentName, (1, 0, 0, almost2, 0, 0))
+ pen.addComponent(componentName, (-2, 0, 0, -2, 0, 0))
+ expectedGlyph = pen.glyph()
+
+ assert expectedGlyph == compositeGlyph
+
+ def test_out_of_range_transform_decomposed(self):
+ componentName = "a"
+ glyphSet = {}
+ pen = TTGlyphPointPen(glyphSet)
+
+ pen.beginPath()
+ pen.addPoint((0, 0), "line")
+ pen.addPoint((0, 1), "line")
+ pen.addPoint((1, 0), "line")
+ pen.endPath()
+ glyphSet[componentName] = _TestGlyph(pen.glyph())
+
+ pen.addComponent(componentName, (3, 0, 0, 2, 0, 0))
+ pen.addComponent(componentName, (1, 0, 0, 1, -1, 2))
+ pen.addComponent(componentName, (2, 0, 0, -3, 0, 0))
+ compositeGlyph = pen.glyph()
+
+ pen.beginPath()
+ pen.addPoint((0, 0), "line")
+ pen.addPoint((0, 2), "line")
+ pen.addPoint((3, 0), "line")
+ pen.endPath()
+ pen.beginPath()
+ pen.addPoint((-1, 2), "line")
+ pen.addPoint((-1, 3), "line")
+ pen.addPoint((0, 2), "line")
+ pen.endPath()
+ pen.beginPath()
+ pen.addPoint((0, 0), "line")
+ pen.addPoint((0, -3), "line")
+ pen.addPoint((2, 0), "line")
+ pen.endPath()
+ expectedGlyph = pen.glyph()
+
+ assert expectedGlyph == compositeGlyph
+
+ def test_no_handle_overflowing_transform(self):
+ componentName = "a"
+ glyphSet = {}
+ pen = TTGlyphPointPen(glyphSet, handleOverflowingTransforms=False)
+
+ pen.beginPath()
+ pen.addPoint((0, 0), "line")
+ pen.addPoint((0, 1), "line")
+ pen.addPoint((1, 0), "line")
+ pen.endPath()
+ baseGlyph = pen.glyph()
+ glyphSet[componentName] = _TestGlyph(baseGlyph)
+
+ pen.addComponent(componentName, (3, 0, 0, 1, 0, 0))
+ compositeGlyph = pen.glyph()
+
+ assert compositeGlyph.components[0].transform == ((3, 0), (0, 1))
+
+ with pytest.raises(struct.error):
+ compositeGlyph.compile({"a": baseGlyph})
+
+ def assertGlyphBoundsEqual(self, glyph, bounds):
+ assert (glyph.xMin, glyph.yMin, glyph.xMax, glyph.yMax) == bounds
+
+ def test_round_float_coordinates_and_component_offsets(self):
+ glyphSet = {}
+ pen = TTGlyphPointPen(glyphSet)
+
+ pen.beginPath()
+ pen.addPoint((0, 0), "line")
+ pen.addPoint((0, 1), "line")
+ pen.addPoint((367.6, 0), "line")
+ pen.endPath()
+ simpleGlyph = pen.glyph()
+
+ simpleGlyph.recalcBounds(glyphSet)
+ self.assertGlyphBoundsEqual(simpleGlyph, (0, 0, 368, 1))
+
+ componentName = "a"
+ glyphSet[componentName] = simpleGlyph
+
+ pen.addComponent(componentName, (1, 0, 0, 1, -86.4, 0))
+ compositeGlyph = pen.glyph()
+
+ compositeGlyph.recalcBounds(glyphSet)
+ self.assertGlyphBoundsEqual(compositeGlyph, (-86, 0, 282, 1))
+
+ def test_scaled_component_bounds(self):
+ glyphSet = {}
+
+ pen = TTGlyphPointPen(glyphSet)
+ pen.beginPath()
+ pen.addPoint((-231, 939), "line")
+ pen.addPoint((-55, 939), "line")
+ pen.addPoint((-55, 745), "line")
+ pen.addPoint((-231, 745), "line")
+ pen.endPath()
+ glyphSet["gravecomb"] = pen.glyph()
+
+ pen = TTGlyphPointPen(glyphSet)
+ pen.beginPath()
+ pen.addPoint((-278, 939), "line")
+ pen.addPoint((8, 939), "line")
+ pen.addPoint((8, 745), "line")
+ pen.addPoint((-278, 745), "line")
+ pen.endPath()
+ glyphSet["circumflexcomb"] = pen.glyph()
+
+ pen = TTGlyphPointPen(glyphSet)
+ pen.addComponent("circumflexcomb", (1, 0, 0, 1, 0, 0))
+ pen.addComponent("gravecomb", (0.9, 0, 0, 0.9, 198, 180))
+ glyphSet["uni0302_uni0300"] = uni0302_uni0300 = pen.glyph()
+
+ uni0302_uni0300.recalcBounds(glyphSet)
+ self.assertGlyphBoundsEqual(uni0302_uni0300, (-278, 745, 148, 1025))
+
+ def test_open_path_starting_with_move(self):
+ # when a contour starts with a 'move' point, it signifies the beginnig
+ # of an open contour.
+ # https://unifiedfontobject.org/versions/ufo3/glyphs/glif/#point-types
+ pen1 = TTGlyphPointPen(None)
+ pen1.beginPath()
+ pen1.addPoint((0, 0), "move") # contour is open
+ pen1.addPoint((10, 10), "line")
+ pen1.addPoint((20, 20))
+ pen1.addPoint((20, 0), "qcurve")
+ pen1.endPath()
+
+ pen2 = TTGlyphPointPen(None)
+ pen2.beginPath()
+ pen2.addPoint((0, 0), "line") # contour is closed
+ pen2.addPoint((10, 10), "line")
+ pen2.addPoint((20, 20))
+ pen2.addPoint((20, 0), "qcurve")
+ pen2.endPath()
+
+ # Since TrueType contours are always implicitly closed, the pen will
+ # interpret both these paths as equivalent
+ assert pen1.points == pen2.points == [(0, 0), (10, 10), (20, 20), (20, 0)]
+ assert pen1.types == pen2.types == [1, 1, 0, 1]
+
+
+
class _TestGlyph(object):
def __init__(self, glyph):
self.coordinates = glyph.coordinates
@@ -300,7 +586,8 @@ class _TestGlyph(object):
pen.lineTo(point)
pen.closePath()
-
-if __name__ == '__main__':
- import sys
- sys.exit(unittest.main())
+ def drawPoints(self, pen):
+ pen.beginPath()
+ for point in self.coordinates:
+ pen.addPoint(point, "line")
+ pen.endPath()
diff --git a/Tests/subset/data/BungeeColor-Regular.ttx b/Tests/subset/data/BungeeColor-Regular.ttx
new file mode 100644
index 00000000..d14c8922
--- /dev/null
+++ b/Tests/subset/data/BungeeColor-Regular.ttx
@@ -0,0 +1,438 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ttFont sfntVersion="\x00\x01\x00\x00" ttLibVersion="4.28">
+
+ <GlyphOrder>
+ <!-- The 'id' attribute is only for humans; it is ignored when parsed. -->
+ <GlyphID id="0" name=".notdef"/>
+ <GlyphID id="1" name="A"/>
+ <GlyphID id="2" name="grave"/>
+ <GlyphID id="3" name="Agrave"/>
+ <GlyphID id="4" name=".notdef.alt001"/>
+ <GlyphID id="5" name=".notdef.alt002"/>
+ <GlyphID id="6" name="A.alt001"/>
+ <GlyphID id="7" name="A.alt002"/>
+ <GlyphID id="8" name="Agrave.alt001"/>
+ <GlyphID id="9" name="Agrave.alt002"/>
+ <GlyphID id="10" name="grave.alt001"/>
+ <GlyphID id="11" name="grave.alt002"/>
+ </GlyphOrder>
+
+ <head>
+ <!-- Most of this table will be recalculated by the compiler -->
+ <tableVersion value="1.0"/>
+ <fontRevision value="1.0"/>
+ <checkSumAdjustment value="0x4ca1927f"/>
+ <magicNumber value="0x5f0f3cf5"/>
+ <flags value="00000000 00000001"/>
+ <unitsPerEm value="1000"/>
+ <created value="Tue Jun 7 11:21:57 2016"/>
+ <modified value="Thu Dec 2 17:48:03 2021"/>
+ <xMin value="0"/>
+ <yMin value="-20"/>
+ <xMax value="880"/>
+ <yMax value="963"/>
+ <macStyle value="00000000 00000000"/>
+ <lowestRecPPEM value="6"/>
+ <fontDirectionHint value="2"/>
+ <indexToLocFormat value="0"/>
+ <glyphDataFormat value="0"/>
+ </head>
+
+ <hhea>
+ <tableVersion value="0x00010000"/>
+ <ascent value="860"/>
+ <descent value="-140"/>
+ <lineGap value="200"/>
+ <advanceWidthMax value="1000"/>
+ <minLeftSideBearing value="40"/>
+ <minRightSideBearing value="41"/>
+ <xMaxExtent value="880"/>
+ <caretSlopeRise value="1"/>
+ <caretSlopeRun value="0"/>
+ <caretOffset value="0"/>
+ <reserved0 value="0"/>
+ <reserved1 value="0"/>
+ <reserved2 value="0"/>
+ <reserved3 value="0"/>
+ <metricDataFormat value="0"/>
+ <numberOfHMetrics value="11"/>
+ </hhea>
+
+ <maxp>
+ <!-- Most of this table will be recalculated by the compiler -->
+ <tableVersion value="0x10000"/>
+ <numGlyphs value="12"/>
+ <maxPoints value="44"/>
+ <maxContours value="2"/>
+ <maxCompositePoints value="60"/>
+ <maxCompositeContours value="3"/>
+ <maxZones value="1"/>
+ <maxTwilightPoints value="0"/>
+ <maxStorage value="0"/>
+ <maxFunctionDefs value="0"/>
+ <maxInstructionDefs value="0"/>
+ <maxStackElements value="512"/>
+ <maxSizeOfInstructions value="1023"/>
+ <maxComponentElements value="2"/>
+ <maxComponentDepth value="2"/>
+ </maxp>
+
+ <OS_2>
+ <!-- The fields 'usFirstCharIndex' and 'usLastCharIndex'
+ will be recalculated by the compiler -->
+ <version value="3"/>
+ <xAvgCharWidth value="667"/>
+ <usWeightClass value="400"/>
+ <usWidthClass value="5"/>
+ <fsType value="00000000 00000001"/>
+ <ySubscriptXSize value="650"/>
+ <ySubscriptYSize value="600"/>
+ <ySubscriptXOffset value="0"/>
+ <ySubscriptYOffset value="75"/>
+ <ySuperscriptXSize value="650"/>
+ <ySuperscriptYSize value="600"/>
+ <ySuperscriptXOffset value="0"/>
+ <ySuperscriptYOffset value="350"/>
+ <yStrikeoutSize value="0"/>
+ <yStrikeoutPosition value="300"/>
+ <sFamilyClass value="0"/>
+ <panose>
+ <bFamilyType value="0"/>
+ <bSerifStyle value="0"/>
+ <bWeight value="0"/>
+ <bProportion value="0"/>
+ <bContrast value="0"/>
+ <bStrokeVariation value="0"/>
+ <bArmStyle value="0"/>
+ <bLetterForm value="0"/>
+ <bMidline value="0"/>
+ <bXHeight value="0"/>
+ </panose>
+ <ulUnicodeRange1 value="00000000 00000000 00000000 00000010"/>
+ <ulUnicodeRange2 value="00000000 00000000 00000000 00000000"/>
+ <ulUnicodeRange3 value="00000000 00000000 00000000 00000000"/>
+ <ulUnicodeRange4 value="00000000 00000000 00000000 00000000"/>
+ <achVendID value="djr "/>
+ <fsSelection value="00000000 01000000"/>
+ <usFirstCharIndex value="192"/>
+ <usLastCharIndex value="224"/>
+ <sTypoAscender value="860"/>
+ <sTypoDescender value="-140"/>
+ <sTypoLineGap value="200"/>
+ <usWinAscent value="1138"/>
+ <usWinDescent value="362"/>
+ <ulCodePageRange1 value="00000000 00000000 00000000 00010010"/>
+ <ulCodePageRange2 value="00000000 00000000 00000000 00000000"/>
+ <sxHeight value="500"/>
+ <sCapHeight value="720"/>
+ <usDefaultChar value="0"/>
+ <usBreakChar value="32"/>
+ <usMaxContext value="3"/>
+ </OS_2>
+
+ <hmtx>
+ <mtx name=".notdef" width="1000" lsb="100"/>
+ <mtx name=".notdef.alt001" width="1000" lsb="100"/>
+ <mtx name=".notdef.alt002" width="1000" lsb="120"/>
+ <mtx name="A" width="730" lsb="54"/>
+ <mtx name="A.alt001" width="730" lsb="54"/>
+ <mtx name="A.alt002" width="730" lsb="160"/>
+ <mtx name="Agrave" width="730" lsb="54"/>
+ <mtx name="Agrave.alt001" width="730" lsb="54"/>
+ <mtx name="Agrave.alt002" width="730" lsb="160"/>
+ <mtx name="grave" width="500" lsb="40"/>
+ <mtx name="grave.alt001" width="500" lsb="40"/>
+ <mtx name="grave.alt002" width="500" lsb="130"/>
+ </hmtx>
+
+ <cmap>
+ <tableVersion version="0"/>
+ <cmap_format_4 platformID="0" platEncID="3" language="0">
+ <map code="0xc0" name="Agrave"/><!-- LATIN CAPITAL LETTER A WITH GRAVE -->
+ <map code="0xe0" name="Agrave"/><!-- LATIN SMALL LETTER A WITH GRAVE -->
+ </cmap_format_4>
+ <cmap_format_4 platformID="3" platEncID="1" language="0">
+ <map code="0xc0" name="Agrave"/><!-- LATIN CAPITAL LETTER A WITH GRAVE -->
+ <map code="0xe0" name="Agrave"/><!-- LATIN SMALL LETTER A WITH GRAVE -->
+ </cmap_format_4>
+ </cmap>
+
+ <loca>
+ <!-- The 'loca' table will be calculated by the compiler -->
+ </loca>
+
+ <glyf>
+
+ <!-- The xMin, yMin, xMax and yMax values
+ will be recalculated by the compiler. -->
+
+ <TTGlyph name=".notdef"/><!-- contains no outline data -->
+
+ <TTGlyph name=".notdef.alt001" xMin="0" yMin="0" xMax="0" yMax="0">
+ <component glyphName=".notdef" x="0" y="0" flags="0x204"/>
+ <instructions/>
+ </TTGlyph>
+
+ <TTGlyph name=".notdef.alt002" xMin="120" yMin="-20" xMax="880" yMax="740">
+ <contour>
+ <pt x="870" y="-10" on="1"/>
+ <pt x="870" y="730" on="1"/>
+ <pt x="130" y="730" on="1"/>
+ <pt x="130" y="-10" on="1"/>
+ </contour>
+ <contour>
+ <pt x="120" y="-20" on="1"/>
+ <pt x="120" y="740" on="1"/>
+ <pt x="880" y="740" on="1"/>
+ <pt x="880" y="-20" on="1"/>
+ </contour>
+ <instructions/>
+ </TTGlyph>
+
+ <TTGlyph name="A" xMin="54" yMin="0" xMax="676" yMax="720">
+ <contour>
+ <pt x="330" y="510" on="1"/>
+ <pt x="283" y="358" on="1"/>
+ <pt x="440" y="358" on="1"/>
+ <pt x="393" y="510" on="1"/>
+ <pt x="389" y="519" on="0"/>
+ <pt x="380" y="527" on="0"/>
+ <pt x="374" y="527" on="1"/>
+ <pt x="349" y="527" on="1"/>
+ <pt x="343" y="527" on="0"/>
+ <pt x="334" y="519" on="0"/>
+ </contour>
+ <contour>
+ <pt x="273" y="36" on="1"/>
+ <pt x="273" y="17" on="0"/>
+ <pt x="256" y="0" on="0"/>
+ <pt x="237" y="0" on="1"/>
+ <pt x="90" y="0" on="1"/>
+ <pt x="71" y="0" on="0"/>
+ <pt x="54" y="17" on="0"/>
+ <pt x="54" y="36" on="1"/>
+ <pt x="54" y="300" on="1"/>
+ <pt x="54" y="330" on="0"/>
+ <pt x="73" y="408" on="0"/>
+ <pt x="93" y="460" on="1"/>
+ <pt x="180" y="687" on="1"/>
+ <pt x="186" y="704" on="0"/>
+ <pt x="211" y="720" on="0"/>
+ <pt x="231" y="720" on="1"/>
+ <pt x="500" y="720" on="1"/>
+ <pt x="519" y="720" on="0"/>
+ <pt x="544" y="704" on="0"/>
+ <pt x="550" y="687" on="1"/>
+ <pt x="637" y="460" on="1"/>
+ <pt x="657" y="408" on="0"/>
+ <pt x="676" y="330" on="0"/>
+ <pt x="676" y="300" on="1"/>
+ <pt x="676" y="36" on="1"/>
+ <pt x="676" y="17" on="0"/>
+ <pt x="659" y="0" on="0"/>
+ <pt x="640" y="0" on="1"/>
+ <pt x="489" y="0" on="1"/>
+ <pt x="469" y="0" on="0"/>
+ <pt x="450" y="17" on="0"/>
+ <pt x="450" y="36" on="1"/>
+ <pt x="450" y="176" on="1"/>
+ <pt x="273" y="176" on="1"/>
+ </contour>
+ <instructions/>
+ </TTGlyph>
+
+ <TTGlyph name="A.alt001" xMin="54" yMin="0" xMax="676" yMax="720">
+ <component glyphName="A" x="0" y="0" flags="0x204"/>
+ <instructions/>
+ </TTGlyph>
+
+ <TTGlyph name="A.alt002" xMin="160" yMin="90" xMax="570" yMax="630">
+ <contour>
+ <pt x="165" y="272" on="1"/>
+ <pt x="567" y="272" on="1"/>
+ <pt x="567" y="262" on="1"/>
+ <pt x="165" y="262" on="1"/>
+ </contour>
+ <contour>
+ <pt x="570" y="90" on="1"/>
+ <pt x="560" y="90" on="1"/>
+ <pt x="560" y="303" on="1"/>
+ <pt x="560" y="330" on="0"/>
+ <pt x="551" y="376" on="0"/>
+ <pt x="544" y="396" on="1"/>
+ <pt x="475" y="559" on="1"/>
+ <pt x="464" y="585" on="0"/>
+ <pt x="440" y="620" on="0"/>
+ <pt x="412" y="620" on="1"/>
+ <pt x="314" y="620" on="1"/>
+ <pt x="284" y="620" on="0"/>
+ <pt x="260" y="585" on="0"/>
+ <pt x="250" y="560" on="1"/>
+ <pt x="186" y="396" on="1"/>
+ <pt x="179" y="376" on="0"/>
+ <pt x="170" y="330" on="0"/>
+ <pt x="170" y="303" on="1"/>
+ <pt x="170" y="90" on="1"/>
+ <pt x="160" y="90" on="1"/>
+ <pt x="160" y="303" on="1"/>
+ <pt x="160" y="331" on="0"/>
+ <pt x="169" y="378" on="0"/>
+ <pt x="177" y="400" on="1"/>
+ <pt x="241" y="564" on="1"/>
+ <pt x="252" y="592" on="0"/>
+ <pt x="280" y="630" on="0"/>
+ <pt x="314" y="630" on="1"/>
+ <pt x="412" y="630" on="1"/>
+ <pt x="445" y="630" on="0"/>
+ <pt x="472" y="592" on="0"/>
+ <pt x="484" y="563" on="1"/>
+ <pt x="553" y="400" on="1"/>
+ <pt x="561" y="378" on="0"/>
+ <pt x="570" y="331" on="0"/>
+ <pt x="570" y="303" on="1"/>
+ </contour>
+ <instructions/>
+ </TTGlyph>
+
+ <TTGlyph name="Agrave" xMin="54" yMin="0" xMax="676" yMax="963">
+ <component glyphName="A" x="0" y="0" flags="0x204"/>
+ <component glyphName="grave" x="115" y="0" flags="0x4"/>
+ <instructions/>
+ </TTGlyph>
+
+ <TTGlyph name="Agrave.alt001" xMin="54" yMin="0" xMax="676" yMax="963">
+ <component glyphName="Agrave" x="0" y="0" flags="0x204"/>
+ <instructions/>
+ </TTGlyph>
+
+ <TTGlyph name="Agrave.alt002" xMin="160" yMin="90" xMax="570" yMax="877">
+ <component glyphName="A.alt002" x="0" y="0" flags="0x204"/>
+ <component glyphName="grave.alt002" x="115" y="0" flags="0x4"/>
+ <instructions/>
+ </TTGlyph>
+
+ <TTGlyph name="grave" xMin="40" yMin="751" xMax="459" yMax="963">
+ <contour>
+ <pt x="425" y="753" on="1"/>
+ <pt x="76" y="796" on="1"/>
+ <pt x="57" y="798" on="0"/>
+ <pt x="40" y="813" on="0"/>
+ <pt x="40" y="832" on="1"/>
+ <pt x="40" y="928" on="1"/>
+ <pt x="40" y="945" on="0"/>
+ <pt x="57" y="963" on="0"/>
+ <pt x="74" y="961" on="1"/>
+ <pt x="423" y="918" on="1"/>
+ <pt x="442" y="916" on="0"/>
+ <pt x="459" y="901" on="0"/>
+ <pt x="459" y="882" on="1"/>
+ <pt x="459" y="786" on="1"/>
+ <pt x="459" y="769" on="0"/>
+ <pt x="442" y="751" on="0"/>
+ </contour>
+ <instructions/>
+ </TTGlyph>
+
+ <TTGlyph name="grave.alt001" xMin="40" yMin="751" xMax="459" yMax="963">
+ <component glyphName="grave" x="0" y="0" flags="0x204"/>
+ <instructions/>
+ </TTGlyph>
+
+ <TTGlyph name="grave.alt002" xMin="130" yMin="837" xMax="369" yMax="877">
+ <contour>
+ <pt x="130" y="877" on="1"/>
+ <pt x="130" y="867" on="1"/>
+ <pt x="369" y="837" on="1"/>
+ <pt x="369" y="847" on="1"/>
+ </contour>
+ <instructions/>
+ </TTGlyph>
+
+ </glyf>
+
+ <name>
+ <namerecord nameID="0" platformID="3" platEncID="1" langID="0x409">
+ Copyright 2008 The Bungee Project Authors (david@djr.com)
+ </namerecord>
+ <namerecord nameID="1" platformID="3" platEncID="1" langID="0x409">
+ Bungee Color Regular
+ </namerecord>
+ <namerecord nameID="2" platformID="3" platEncID="1" langID="0x409">
+ Regular
+ </namerecord>
+ <namerecord nameID="3" platformID="3" platEncID="1" langID="0x409">
+ 1.000;djr ;BungeeColor-Regular
+ </namerecord>
+ <namerecord nameID="4" platformID="3" platEncID="1" langID="0x409">
+ Bungee Color Regular Regular
+ </namerecord>
+ <namerecord nameID="5" platformID="3" platEncID="1" langID="0x409">
+ Version 1.000;PS 1.0;hotconv 1.0.72;makeotf.lib2.5.5900
+ </namerecord>
+ <namerecord nameID="6" platformID="3" platEncID="1" langID="0x409">
+ BungeeColor-Regular
+ </namerecord>
+ </name>
+
+ <post>
+ <formatType value="2.0"/>
+ <italicAngle value="0.0"/>
+ <underlinePosition value="0"/>
+ <underlineThickness value="0"/>
+ <isFixedPitch value="0"/>
+ <minMemType42 value="0"/>
+ <maxMemType42 value="0"/>
+ <minMemType1 value="0"/>
+ <maxMemType1 value="0"/>
+ <psNames>
+ <!-- This file uses unique glyph names based on the information
+ found in the 'post' table. Since these names might not be unique,
+ we have to invent artificial names in case of clashes. In order to
+ be able to retain the original information, we need a name to
+ ps name mapping for those cases where they differ. That's what
+ you see below.
+ -->
+ </psNames>
+ <extraNames>
+ <!-- following are the name that are not taken from the standard Mac glyph order -->
+ <psName name=".notdef.alt001"/>
+ <psName name=".notdef.alt002"/>
+ <psName name="A.alt001"/>
+ <psName name="A.alt002"/>
+ <psName name="Agrave.alt001"/>
+ <psName name="Agrave.alt002"/>
+ <psName name="grave.alt001"/>
+ <psName name="grave.alt002"/>
+ </extraNames>
+ </post>
+
+ <COLR>
+ <version value="0"/>
+ <ColorGlyph name=".notdef">
+ <layer colorID="0" name=".notdef.alt001"/>
+ <layer colorID="1" name=".notdef.alt002"/>
+ </ColorGlyph>
+ <ColorGlyph name="A">
+ <layer colorID="0" name="A.alt001"/>
+ <layer colorID="1" name="A.alt002"/>
+ </ColorGlyph>
+ <ColorGlyph name="grave">
+ <layer colorID="0" name="grave.alt001"/>
+ <layer colorID="1" name="grave.alt002"/>
+ </ColorGlyph>
+ <ColorGlyph name="Agrave">
+ <layer colorID="0" name="Agrave.alt001"/>
+ <layer colorID="1" name="Agrave.alt002"/>
+ </ColorGlyph>
+ </COLR>
+
+ <CPAL>
+ <version value="0"/>
+ <numPaletteEntries value="2"/>
+ <palette index="0">
+ <color index="0" value="#C90900FF"/>
+ <color index="1" value="#FF9580FF"/>
+ </palette>
+ </CPAL>
+
+</ttFont>
diff --git a/Tests/subset/data/GPOS_SinglePos_no_value_issue_2312.subset.ttx b/Tests/subset/data/GPOS_SinglePos_no_value_issue_2312.subset.ttx
new file mode 100644
index 00000000..7eee95fe
--- /dev/null
+++ b/Tests/subset/data/GPOS_SinglePos_no_value_issue_2312.subset.ttx
@@ -0,0 +1,234 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ttFont sfntVersion="\x00\x01\x00\x00" ttLibVersion="4.24">
+
+ <GlyphOrder>
+ <!-- The 'id' attribute is only for humans; it is ignored when parsed. -->
+ <GlyphID id="0" name=".notdef"/>
+ <GlyphID id="1" name="ra-sidd"/>
+ <GlyphID id="2" name="ra-sidd.ini"/>
+ <GlyphID id="3" name="ra-sidd.iniThird"/>
+ <GlyphID id="4" name="r-sidd.med.ra"/>
+ </GlyphOrder>
+
+ <GPOS>
+ <Version value="0x00010000"/>
+ <ScriptList>
+ <!-- ScriptCount=2 -->
+ <ScriptRecord index="0">
+ <ScriptTag value="DFLT"/>
+ <Script>
+ <DefaultLangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=3 -->
+ <FeatureIndex index="0" value="1"/>
+ <FeatureIndex index="1" value="3"/>
+ <FeatureIndex index="2" value="4"/>
+ </DefaultLangSys>
+ <!-- LangSysCount=0 -->
+ </Script>
+ </ScriptRecord>
+ <ScriptRecord index="1">
+ <ScriptTag value="sidd"/>
+ <Script>
+ <DefaultLangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=4 -->
+ <FeatureIndex index="0" value="0"/>
+ <FeatureIndex index="1" value="2"/>
+ <FeatureIndex index="2" value="3"/>
+ <FeatureIndex index="3" value="4"/>
+ </DefaultLangSys>
+ <!-- LangSysCount=0 -->
+ </Script>
+ </ScriptRecord>
+ </ScriptList>
+ <FeatureList>
+ <!-- FeatureCount=5 -->
+ <FeatureRecord index="0">
+ <FeatureTag value="dist"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="2"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="1">
+ <FeatureTag value="kern"/>
+ <Feature>
+ <!-- LookupCount=2 -->
+ <LookupListIndex index="0" value="0"/>
+ <LookupListIndex index="1" value="2"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="2">
+ <FeatureTag value="kern"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="0"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="3">
+ <FeatureTag value="mark"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="3"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="4">
+ <FeatureTag value="mkmk"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="4"/>
+ </Feature>
+ </FeatureRecord>
+ </FeatureList>
+ <LookupList>
+ <!-- LookupCount=5 -->
+ <Lookup index="0">
+ <LookupType value="8"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <ChainContextPos index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="ra-sidd.ini"/>
+ <Glyph value="ra-sidd.iniThird"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="r-sidd.med.ra"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="1"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ </Lookup>
+ <Lookup index="1">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="ra-sidd.ini"/>
+ <Glyph value="ra-sidd.iniThird"/>
+ </Coverage>
+ <ValueFormat value="0"/>
+ </SinglePos>
+ </Lookup>
+ <Lookup index="2">
+ <LookupType value="2"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <PairPos index="0" Format="2">
+ <Coverage>
+ <Glyph value="ra-sidd"/>
+ </Coverage>
+ <ValueFormat1 value="4"/>
+ <ValueFormat2 value="0"/>
+ <ClassDef1>
+ </ClassDef1>
+ <ClassDef2>
+ <ClassDef glyph="r-sidd.med.ra" class="1"/>
+ <ClassDef glyph="ra-sidd" class="1"/>
+ <ClassDef glyph="ra-sidd.ini" class="1"/>
+ <ClassDef glyph="ra-sidd.iniThird" class="1"/>
+ </ClassDef2>
+ <!-- Class1Count=1 -->
+ <!-- Class2Count=2 -->
+ <Class1Record index="0">
+ <Class2Record index="0">
+ <Value1 XAdvance="0"/>
+ </Class2Record>
+ <Class2Record index="1">
+ <Value1 XAdvance="0"/>
+ </Class2Record>
+ </Class1Record>
+ </PairPos>
+ </Lookup>
+ <Lookup index="3">
+ <LookupType value="4"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <MarkBasePos index="0" Format="1">
+ <MarkCoverage>
+ <Glyph value="r-sidd.med.ra"/>
+ </MarkCoverage>
+ <BaseCoverage>
+ <Glyph value="ra-sidd"/>
+ <Glyph value="ra-sidd.ini"/>
+ <Glyph value="ra-sidd.iniThird"/>
+ </BaseCoverage>
+ <!-- ClassCount=1 -->
+ <MarkArray>
+ <!-- MarkCount=1 -->
+ <MarkRecord index="0">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="258"/>
+ <YCoordinate value="435"/>
+ </MarkAnchor>
+ </MarkRecord>
+ </MarkArray>
+ <BaseArray>
+ <!-- BaseCount=3 -->
+ <BaseRecord index="0">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="257"/>
+ <YCoordinate value="-53"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="1">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="258"/>
+ <YCoordinate value="435"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="2">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="258"/>
+ <YCoordinate value="435"/>
+ </BaseAnchor>
+ </BaseRecord>
+ </BaseArray>
+ </MarkBasePos>
+ </Lookup>
+ <Lookup index="4">
+ <LookupType value="6"/>
+ <LookupFlag value="16"/><!-- useMarkFilteringSet -->
+ <!-- SubTableCount=1 -->
+ <MarkMarkPos index="0" Format="1">
+ <Mark1Coverage>
+ <Glyph value="r-sidd.med.ra"/>
+ </Mark1Coverage>
+ <Mark2Coverage>
+ <Glyph value="r-sidd.med.ra"/>
+ </Mark2Coverage>
+ <!-- ClassCount=1 -->
+ <Mark1Array>
+ <!-- MarkCount=1 -->
+ <MarkRecord index="0">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="258"/>
+ <YCoordinate value="435"/>
+ </MarkAnchor>
+ </MarkRecord>
+ </Mark1Array>
+ <Mark2Array>
+ <!-- Mark2Count=1 -->
+ <Mark2Record index="0">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="258"/>
+ <YCoordinate value="235"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ </Mark2Array>
+ </MarkMarkPos>
+ <MarkFilteringSet value="0"/>
+ </Lookup>
+ </LookupList>
+ </GPOS>
+
+</ttFont>
diff --git a/Tests/subset/data/GPOS_SinglePos_no_value_issue_2312.ttx b/Tests/subset/data/GPOS_SinglePos_no_value_issue_2312.ttx
new file mode 100644
index 00000000..91496372
--- /dev/null
+++ b/Tests/subset/data/GPOS_SinglePos_no_value_issue_2312.ttx
@@ -0,0 +1,689 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ttFont sfntVersion="\x00\x01\x00\x00" ttLibVersion="4.24">
+
+ <GlyphOrder>
+ <!-- The 'id' attribute is only for humans; it is ignored when parsed. -->
+ <GlyphID id="0" name=".notdef"/>
+ <GlyphID id="1" name="ra-sidd"/>
+ <GlyphID id="2" name="ra-sidd.ini"/>
+ <GlyphID id="3" name="ra-sidd.iniThird"/>
+ <GlyphID id="4" name="r-sidd.med.ra"/>
+ </GlyphOrder>
+
+ <head>
+ <!-- Most of this table will be recalculated by the compiler -->
+ <tableVersion value="1.0"/>
+ <fontRevision value="2.001"/>
+ <checkSumAdjustment value="0x78efacfb"/>
+ <magicNumber value="0x5f0f3cf5"/>
+ <flags value="00000000 00000011"/>
+ <unitsPerEm value="1000"/>
+ <created value="Mon Feb 11 05:00:43 2019"/>
+ <modified value="Fri Dec 25 13:11:40 2020"/>
+ <xMin value="-220"/>
+ <yMin value="-1025"/>
+ <xMax value="1053"/>
+ <yMax value="995"/>
+ <macStyle value="00000000 00000000"/>
+ <lowestRecPPEM value="6"/>
+ <fontDirectionHint value="2"/>
+ <indexToLocFormat value="0"/>
+ <glyphDataFormat value="0"/>
+ </head>
+
+ <hhea>
+ <tableVersion value="0x00010000"/>
+ <ascent value="1000"/>
+ <descent value="-1030"/>
+ <lineGap value="0"/>
+ <advanceWidthMax value="1083"/>
+ <minLeftSideBearing value="-220"/>
+ <minRightSideBearing value="-842"/>
+ <xMaxExtent value="1053"/>
+ <caretSlopeRise value="1"/>
+ <caretSlopeRun value="0"/>
+ <caretOffset value="0"/>
+ <reserved0 value="0"/>
+ <reserved1 value="0"/>
+ <reserved2 value="0"/>
+ <reserved3 value="0"/>
+ <metricDataFormat value="0"/>
+ <numberOfHMetrics value="5"/>
+ </hhea>
+
+ <maxp>
+ <!-- Most of this table will be recalculated by the compiler -->
+ <tableVersion value="0x10000"/>
+ <numGlyphs value="5"/>
+ <maxPoints value="288"/>
+ <maxContours value="22"/>
+ <maxCompositePoints value="0"/>
+ <maxCompositeContours value="0"/>
+ <maxZones value="1"/>
+ <maxTwilightPoints value="0"/>
+ <maxStorage value="0"/>
+ <maxFunctionDefs value="0"/>
+ <maxInstructionDefs value="0"/>
+ <maxStackElements value="0"/>
+ <maxSizeOfInstructions value="0"/>
+ <maxComponentElements value="0"/>
+ <maxComponentDepth value="0"/>
+ </maxp>
+
+ <OS_2>
+ <!-- The fields 'usFirstCharIndex' and 'usLastCharIndex'
+ will be recalculated by the compiler -->
+ <version value="4"/>
+ <xAvgCharWidth value="625"/>
+ <usWeightClass value="400"/>
+ <usWidthClass value="5"/>
+ <fsType value="00000000 00000000"/>
+ <ySubscriptXSize value="650"/>
+ <ySubscriptYSize value="600"/>
+ <ySubscriptXOffset value="0"/>
+ <ySubscriptYOffset value="75"/>
+ <ySuperscriptXSize value="650"/>
+ <ySuperscriptYSize value="600"/>
+ <ySuperscriptXOffset value="0"/>
+ <ySuperscriptYOffset value="350"/>
+ <yStrikeoutSize value="50"/>
+ <yStrikeoutPosition value="410"/>
+ <sFamilyClass value="0"/>
+ <panose>
+ <bFamilyType value="2"/>
+ <bSerifStyle value="11"/>
+ <bWeight value="5"/>
+ <bProportion value="2"/>
+ <bContrast value="4"/>
+ <bStrokeVariation value="5"/>
+ <bArmStyle value="4"/>
+ <bLetterForm value="2"/>
+ <bMidline value="2"/>
+ <bXHeight value="4"/>
+ </panose>
+ <ulUnicodeRange1 value="00000000 00000000 00000000 00000000"/>
+ <ulUnicodeRange2 value="00000010 00000000 00000000 00000000"/>
+ <ulUnicodeRange3 value="00000000 00000000 00000000 00000000"/>
+ <ulUnicodeRange4 value="00000000 00000000 00000000 00000000"/>
+ <achVendID value="GOOG"/>
+ <fsSelection value="00000001 01000000"/>
+ <usFirstCharIndex value="65535"/>
+ <usLastCharIndex value="65535"/>
+ <sTypoAscender value="1000"/>
+ <sTypoDescender value="-1030"/>
+ <sTypoLineGap value="0"/>
+ <usWinAscent value="1000"/>
+ <usWinDescent value="1030"/>
+ <ulCodePageRange1 value="00000000 00000000 00000000 00000001"/>
+ <ulCodePageRange2 value="00000000 00000000 00000000 00000000"/>
+ <sxHeight value="683"/>
+ <sCapHeight value="714"/>
+ <usDefaultChar value="0"/>
+ <usBreakChar value="32"/>
+ <usMaxContext value="9"/>
+ </OS_2>
+
+ <hmtx>
+ <mtx name=".notdef" width="600" lsb="94"/>
+ <mtx name="r-sidd.med.ra" width="0" lsb="41"/>
+ <mtx name="ra-sidd" width="501" lsb="38"/>
+ <mtx name="ra-sidd.ini" width="522" lsb="41"/>
+ <mtx name="ra-sidd.iniThird" width="522" lsb="41"/>
+ </hmtx>
+
+ <cmap>
+ <tableVersion version="0"/>
+ <cmap_format_12 platformID="0" platEncID="4" format="12" reserved="0" length="28" language="0" nGroups="1">
+ <map code="0x115a8" name="ra-sidd"/><!-- SIDDHAM LETTER RA -->
+ </cmap_format_12>
+ <cmap_format_12 platformID="3" platEncID="10" format="12" reserved="0" length="28" language="0" nGroups="1">
+ <map code="0x115a8" name="ra-sidd"/><!-- SIDDHAM LETTER RA -->
+ </cmap_format_12>
+ </cmap>
+
+ <loca>
+ <!-- The 'loca' table will be calculated by the compiler -->
+ </loca>
+
+ <glyf>
+
+ <!-- The xMin, yMin, xMax and yMax values
+ will be recalculated by the compiler. -->
+
+ <TTGlyph name=".notdef"/><!-- contains no outline data -->
+
+ <TTGlyph name="r-sidd.med.ra" xMin="41" yMin="205" xMax="482" yMax="483">
+ <contour>
+ <pt x="213" y="252" on="1"/>
+ <pt x="213" y="291" on="1"/>
+ <pt x="140" y="338" on="0"/>
+ <pt x="66" y="395" on="0"/>
+ <pt x="41" y="430" on="0"/>
+ <pt x="41" y="443" on="1"/>
+ <pt x="41" y="457" on="0"/>
+ <pt x="53" y="464" on="1"/>
+ <pt x="74" y="451" on="0"/>
+ <pt x="98" y="442" on="1"/>
+ <pt x="116" y="471" on="0"/>
+ <pt x="151" y="471" on="1"/>
+ <pt x="181" y="471" on="0"/>
+ <pt x="233" y="450" on="0"/>
+ <pt x="269" y="450" on="1"/>
+ <pt x="302" y="450" on="0"/>
+ <pt x="367" y="467" on="0"/>
+ <pt x="392" y="483" on="1"/>
+ <pt x="482" y="420" on="1"/>
+ <pt x="466" y="398" on="0"/>
+ <pt x="407" y="367" on="0"/>
+ <pt x="346" y="339" on="0"/>
+ <pt x="303" y="304" on="0"/>
+ <pt x="303" y="276" on="1"/>
+ <pt x="303" y="218" on="1"/>
+ <pt x="303" y="205" on="0"/>
+ <pt x="293" y="205" on="1"/>
+ <pt x="282" y="205" on="0"/>
+ <pt x="243" y="221" on="0"/>
+ <pt x="213" y="243" on="0"/>
+ </contour>
+ <instructions/>
+ </TTGlyph>
+
+ <TTGlyph name="ra-sidd" xMin="38" yMin="-103" xMax="481" yMax="683">
+ <contour>
+ <pt x="40" y="643" on="1"/>
+ <pt x="40" y="657" on="0"/>
+ <pt x="52" y="664" on="1"/>
+ <pt x="73" y="651" on="0"/>
+ <pt x="97" y="642" on="1"/>
+ <pt x="115" y="671" on="0"/>
+ <pt x="150" y="671" on="1"/>
+ <pt x="180" y="671" on="0"/>
+ <pt x="232" y="650" on="0"/>
+ <pt x="268" y="650" on="1"/>
+ <pt x="301" y="650" on="0"/>
+ <pt x="366" y="667" on="0"/>
+ <pt x="391" y="683" on="1"/>
+ <pt x="481" y="620" on="1"/>
+ <pt x="465" y="598" on="0"/>
+ <pt x="406" y="567" on="0"/>
+ <pt x="345" y="539" on="0"/>
+ <pt x="302" y="504" on="0"/>
+ <pt x="302" y="476" on="1"/>
+ <pt x="302" y="142" on="1"/>
+ <pt x="302" y="78" on="0"/>
+ <pt x="277" y="50" on="1"/>
+ <pt x="458" y="-74" on="1"/>
+ <pt x="439" y="-103" on="1"/>
+ <pt x="245" y="29" on="1"/>
+ <pt x="232" y="25" on="0"/>
+ <pt x="215" y="25" on="1"/>
+ <pt x="186" y="25" on="0"/>
+ <pt x="123" y="53" on="0"/>
+ <pt x="83" y="86" on="1"/>
+ <pt x="58" y="108" on="0"/>
+ <pt x="38" y="138" on="0"/>
+ <pt x="38" y="151" on="1"/>
+ <pt x="38" y="173" on="0"/>
+ <pt x="64" y="173" on="1"/>
+ <pt x="81" y="173" on="0"/>
+ <pt x="128" y="152" on="0"/>
+ <pt x="170" y="123" on="1"/>
+ <pt x="183" y="114" on="1"/>
+ <pt x="198" y="115" on="0"/>
+ <pt x="212" y="134" on="0"/>
+ <pt x="212" y="159" on="1"/>
+ <pt x="212" y="491" on="1"/>
+ <pt x="139" y="538" on="0"/>
+ <pt x="65" y="595" on="0"/>
+ <pt x="40" y="630" on="0"/>
+ </contour>
+ <instructions/>
+ </TTGlyph>
+
+ <TTGlyph name="ra-sidd.ini" xMin="41" yMin="405" xMax="482" yMax="683">
+ <contour>
+ <pt x="213" y="452" on="1"/>
+ <pt x="213" y="491" on="1"/>
+ <pt x="140" y="538" on="0"/>
+ <pt x="66" y="595" on="0"/>
+ <pt x="41" y="630" on="0"/>
+ <pt x="41" y="643" on="1"/>
+ <pt x="41" y="657" on="0"/>
+ <pt x="53" y="664" on="1"/>
+ <pt x="74" y="651" on="0"/>
+ <pt x="98" y="642" on="1"/>
+ <pt x="116" y="671" on="0"/>
+ <pt x="151" y="671" on="1"/>
+ <pt x="181" y="671" on="0"/>
+ <pt x="233" y="650" on="0"/>
+ <pt x="269" y="650" on="1"/>
+ <pt x="302" y="650" on="0"/>
+ <pt x="367" y="667" on="0"/>
+ <pt x="392" y="683" on="1"/>
+ <pt x="482" y="620" on="1"/>
+ <pt x="466" y="598" on="0"/>
+ <pt x="407" y="567" on="0"/>
+ <pt x="346" y="539" on="0"/>
+ <pt x="303" y="504" on="0"/>
+ <pt x="303" y="476" on="1"/>
+ <pt x="303" y="418" on="1"/>
+ <pt x="303" y="405" on="0"/>
+ <pt x="293" y="405" on="1"/>
+ <pt x="282" y="405" on="0"/>
+ <pt x="243" y="421" on="0"/>
+ <pt x="213" y="443" on="0"/>
+ </contour>
+ <instructions/>
+ </TTGlyph>
+
+ <TTGlyph name="ra-sidd.iniThird" xMin="41" yMin="405" xMax="482" yMax="683">
+ <contour>
+ <pt x="213" y="452" on="1"/>
+ <pt x="213" y="491" on="1"/>
+ <pt x="140" y="538" on="0"/>
+ <pt x="66" y="595" on="0"/>
+ <pt x="41" y="630" on="0"/>
+ <pt x="41" y="643" on="1"/>
+ <pt x="41" y="657" on="0"/>
+ <pt x="53" y="664" on="1"/>
+ <pt x="74" y="651" on="0"/>
+ <pt x="98" y="642" on="1"/>
+ <pt x="116" y="671" on="0"/>
+ <pt x="151" y="671" on="1"/>
+ <pt x="181" y="671" on="0"/>
+ <pt x="233" y="650" on="0"/>
+ <pt x="269" y="650" on="1"/>
+ <pt x="302" y="650" on="0"/>
+ <pt x="367" y="667" on="0"/>
+ <pt x="392" y="683" on="1"/>
+ <pt x="482" y="620" on="1"/>
+ <pt x="466" y="598" on="0"/>
+ <pt x="407" y="567" on="0"/>
+ <pt x="346" y="539" on="0"/>
+ <pt x="303" y="504" on="0"/>
+ <pt x="303" y="476" on="1"/>
+ <pt x="303" y="418" on="1"/>
+ <pt x="303" y="405" on="0"/>
+ <pt x="293" y="405" on="1"/>
+ <pt x="282" y="405" on="0"/>
+ <pt x="243" y="421" on="0"/>
+ <pt x="213" y="443" on="0"/>
+ </contour>
+ <instructions/>
+ </TTGlyph>
+
+ </glyf>
+
+ <name>
+ <namerecord nameID="0" platformID="3" platEncID="1" langID="0x409">
+ Copyright 2019 Google Inc. All Rights Reserved.
+ </namerecord>
+ <namerecord nameID="1" platformID="3" platEncID="1" langID="0x409">
+ Noto Sans Siddham
+ </namerecord>
+ <namerecord nameID="2" platformID="3" platEncID="1" langID="0x409">
+ Regular
+ </namerecord>
+ <namerecord nameID="3" platformID="3" platEncID="1" langID="0x409">
+ 2.001;GOOG;NotoSansSiddham-Regular
+ </namerecord>
+ <namerecord nameID="4" platformID="3" platEncID="1" langID="0x409">
+ Noto Sans Siddham Regular
+ </namerecord>
+ <namerecord nameID="5" platformID="3" platEncID="1" langID="0x409">
+ Version 2.001
+ </namerecord>
+ <namerecord nameID="6" platformID="3" platEncID="1" langID="0x409">
+ NotoSansSiddham-Regular
+ </namerecord>
+ </name>
+
+ <post>
+ <formatType value="2.0"/>
+ <italicAngle value="0.0"/>
+ <underlinePosition value="-100"/>
+ <underlineThickness value="50"/>
+ <isFixedPitch value="0"/>
+ <minMemType42 value="0"/>
+ <maxMemType42 value="0"/>
+ <minMemType1 value="0"/>
+ <maxMemType1 value="0"/>
+ <psNames>
+ <!-- This file uses unique glyph names based on the information
+ found in the 'post' table. Since these names might not be unique,
+ we have to invent artificial names in case of clashes. In order to
+ be able to retain the original information, we need a name to
+ ps name mapping for those cases where they differ. That's what
+ you see below.
+ -->
+ </psNames>
+ <extraNames>
+ <!-- following are the name that are not taken from the standard Mac glyph order -->
+ <psName name="ra-sidd"/>
+ <psName name="ra-sidd.ini"/>
+ <psName name="ra-sidd.iniThird"/>
+ <psName name="r-sidd.med.ra"/>
+ </extraNames>
+ </post>
+
+ <GDEF>
+ <Version value="0x00010002"/>
+ <GlyphClassDef>
+ <ClassDef glyph="r-sidd.med.ra" class="3"/>
+ <ClassDef glyph="ra-sidd" class="1"/>
+ <ClassDef glyph="ra-sidd.ini" class="1"/>
+ <ClassDef glyph="ra-sidd.iniThird" class="1"/>
+ </GlyphClassDef>
+ <MarkGlyphSetsDef>
+ <MarkSetTableFormat value="1"/>
+ <!-- MarkSetCount=3 -->
+ <Coverage index="0">
+ <Glyph value="r-sidd.med.ra"/>
+ </Coverage>
+ <Coverage index="1">
+ </Coverage>
+ <Coverage index="2">
+ <Glyph value="r-sidd.med.ra"/>
+ </Coverage>
+ </MarkGlyphSetsDef>
+ </GDEF>
+
+ <GPOS>
+ <Version value="0x00010000"/>
+ <ScriptList>
+ <!-- ScriptCount=2 -->
+ <ScriptRecord index="0">
+ <ScriptTag value="DFLT"/>
+ <Script>
+ <DefaultLangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=3 -->
+ <FeatureIndex index="0" value="1"/>
+ <FeatureIndex index="1" value="3"/>
+ <FeatureIndex index="2" value="4"/>
+ </DefaultLangSys>
+ <!-- LangSysCount=0 -->
+ </Script>
+ </ScriptRecord>
+ <ScriptRecord index="1">
+ <ScriptTag value="sidd"/>
+ <Script>
+ <DefaultLangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=4 -->
+ <FeatureIndex index="0" value="0"/>
+ <FeatureIndex index="1" value="2"/>
+ <FeatureIndex index="2" value="3"/>
+ <FeatureIndex index="3" value="4"/>
+ </DefaultLangSys>
+ <!-- LangSysCount=0 -->
+ </Script>
+ </ScriptRecord>
+ </ScriptList>
+ <FeatureList>
+ <!-- FeatureCount=5 -->
+ <FeatureRecord index="0">
+ <FeatureTag value="dist"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="2"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="1">
+ <FeatureTag value="kern"/>
+ <Feature>
+ <!-- LookupCount=2 -->
+ <LookupListIndex index="0" value="0"/>
+ <LookupListIndex index="1" value="2"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="2">
+ <FeatureTag value="kern"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="0"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="3">
+ <FeatureTag value="mark"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="3"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="4">
+ <FeatureTag value="mkmk"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="4"/>
+ </Feature>
+ </FeatureRecord>
+ </FeatureList>
+ <LookupList>
+ <!-- LookupCount=5 -->
+ <Lookup index="0">
+ <LookupType value="8"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <ChainContextPos index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="ra-sidd.ini"/>
+ <Glyph value="ra-sidd.iniThird"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="r-sidd.med.ra"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="1"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ </Lookup>
+ <Lookup index="1">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="ra-sidd.ini"/>
+ <Glyph value="ra-sidd.iniThird"/>
+ </Coverage>
+ <ValueFormat value="0"/>
+ </SinglePos>
+ </Lookup>
+ <Lookup index="2">
+ <LookupType value="2"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <PairPos index="0" Format="2">
+ <Coverage>
+ <Glyph value="ra-sidd"/>
+ </Coverage>
+ <ValueFormat1 value="4"/>
+ <ValueFormat2 value="0"/>
+ <ClassDef1>
+ </ClassDef1>
+ <ClassDef2>
+ <ClassDef glyph="r-sidd.med.ra" class="1"/>
+ <ClassDef glyph="ra-sidd" class="1"/>
+ <ClassDef glyph="ra-sidd.ini" class="1"/>
+ <ClassDef glyph="ra-sidd.iniThird" class="1"/>
+ </ClassDef2>
+ <!-- Class1Count=1 -->
+ <!-- Class2Count=2 -->
+ <Class1Record index="0">
+ <Class2Record index="0">
+ <Value1 XAdvance="0"/>
+ </Class2Record>
+ <Class2Record index="1">
+ <Value1 XAdvance="0"/>
+ </Class2Record>
+ </Class1Record>
+ </PairPos>
+ </Lookup>
+ <Lookup index="3">
+ <LookupType value="4"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <MarkBasePos index="0" Format="1">
+ <MarkCoverage>
+ <Glyph value="r-sidd.med.ra"/>
+ </MarkCoverage>
+ <BaseCoverage>
+ <Glyph value="ra-sidd"/>
+ <Glyph value="ra-sidd.ini"/>
+ <Glyph value="ra-sidd.iniThird"/>
+ </BaseCoverage>
+ <!-- ClassCount=1 -->
+ <MarkArray>
+ <!-- MarkCount=1 -->
+ <MarkRecord index="0">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="258"/>
+ <YCoordinate value="435"/>
+ </MarkAnchor>
+ </MarkRecord>
+ </MarkArray>
+ <BaseArray>
+ <!-- BaseCount=3 -->
+ <BaseRecord index="0">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="257"/>
+ <YCoordinate value="-53"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="1">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="258"/>
+ <YCoordinate value="435"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="2">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="258"/>
+ <YCoordinate value="435"/>
+ </BaseAnchor>
+ </BaseRecord>
+ </BaseArray>
+ </MarkBasePos>
+ </Lookup>
+ <Lookup index="4">
+ <LookupType value="6"/>
+ <LookupFlag value="16"/><!-- useMarkFilteringSet -->
+ <!-- SubTableCount=1 -->
+ <MarkMarkPos index="0" Format="1">
+ <Mark1Coverage>
+ <Glyph value="r-sidd.med.ra"/>
+ </Mark1Coverage>
+ <Mark2Coverage>
+ <Glyph value="r-sidd.med.ra"/>
+ </Mark2Coverage>
+ <!-- ClassCount=1 -->
+ <Mark1Array>
+ <!-- MarkCount=1 -->
+ <MarkRecord index="0">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="258"/>
+ <YCoordinate value="435"/>
+ </MarkAnchor>
+ </MarkRecord>
+ </Mark1Array>
+ <Mark2Array>
+ <!-- Mark2Count=1 -->
+ <Mark2Record index="0">
+ <Mark2Anchor index="0" Format="1">
+ <XCoordinate value="258"/>
+ <YCoordinate value="235"/>
+ </Mark2Anchor>
+ </Mark2Record>
+ </Mark2Array>
+ </MarkMarkPos>
+ <MarkFilteringSet value="0"/>
+ </Lookup>
+ </LookupList>
+ </GPOS>
+
+ <GSUB>
+ <Version value="0x00010000"/>
+ <ScriptList>
+ <!-- ScriptCount=2 -->
+ <ScriptRecord index="0">
+ <ScriptTag value="DFLT"/>
+ <Script>
+ <DefaultLangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=0 -->
+ </DefaultLangSys>
+ <!-- LangSysCount=0 -->
+ </Script>
+ </ScriptRecord>
+ <ScriptRecord index="1">
+ <ScriptTag value="sidd"/>
+ <Script>
+ <DefaultLangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=2 -->
+ <FeatureIndex index="0" value="0"/>
+ <FeatureIndex index="1" value="1"/>
+ </DefaultLangSys>
+ <!-- LangSysCount=0 -->
+ </Script>
+ </ScriptRecord>
+ </ScriptList>
+ <FeatureList>
+ <!-- FeatureCount=2 -->
+ <FeatureRecord index="0">
+ <FeatureTag value="pref"/>
+ <Feature>
+ <!-- LookupCount=0 -->
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="1">
+ <FeatureTag value="psts"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="0"/>
+ </Feature>
+ </FeatureRecord>
+ </FeatureList>
+ <LookupList>
+ <!-- LookupCount=2 -->
+ <Lookup index="0">
+ <LookupType value="6"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="ra-sidd.ini"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="r-sidd.med.ra"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="1"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="1">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="ra-sidd.ini" out="ra-sidd.iniThird"/>
+ </SingleSubst>
+ </Lookup>
+ </LookupList>
+ </GSUB>
+
+</ttFont>
diff --git a/Tests/subset/subset_test.py b/Tests/subset/subset_test.py
index 6fa1bf60..d195af0f 100644
--- a/Tests/subset/subset_test.py
+++ b/Tests/subset/subset_test.py
@@ -1,12 +1,13 @@
import io
-from fontTools.misc.py23 import tobytes, tostr
from fontTools.misc.testTools import getXML
+from fontTools.misc.textTools import tobytes, tostr
from fontTools import subset
from fontTools.fontBuilder import FontBuilder
from fontTools.pens.ttGlyphPen import TTGlyphPen
from fontTools.ttLib import TTFont, newTable
from fontTools.ttLib.tables import otTables as ot
from fontTools.misc.loggingTools import CapturingLogHandler
+from fontTools.subset.svg import etree
import difflib
import logging
import os
@@ -50,12 +51,11 @@ class SubsetTest(unittest.TestCase):
lines = []
with open(path, "r", encoding="utf-8") as ttx:
for line in ttx.readlines():
- # Elide ttFont attributes because ttLibVersion may change,
- # and use os-native line separators so we can run difflib.
+ # Elide ttFont attributes because ttLibVersion may change.
if line.startswith("<ttFont "):
- lines.append("<ttFont>" + os.linesep)
+ lines.append("<ttFont>\n")
else:
- lines.append(line.rstrip() + os.linesep)
+ lines.append(line.rstrip() + "\n")
return lines
def expect_ttx(self, font, expected_ttx, tables=None):
@@ -793,6 +793,19 @@ class SubsetTest(unittest.TestCase):
subsetfont = TTFont(subsetpath)
self.expect_ttx(subsetfont, expected_ttx, ["GPOS"])
+ def test_GPOS_SinglePos_prune_post_subset_no_value(self):
+ _, fontpath = self.compile_font(
+ self.getpath("GPOS_SinglePos_no_value_issue_2312.ttx"), ".ttf"
+ )
+ subsetpath = self.temp_path(".ttf")
+ subset.main([fontpath, "*", "--glyph-names", "--output-file=%s" % subsetpath])
+ subsetfont = TTFont(subsetpath)
+ self.expect_ttx(
+ subsetfont,
+ self.getpath("GPOS_SinglePos_no_value_issue_2312.subset.ttx"),
+ ["GlyphOrder", "GPOS"],
+ )
+
@pytest.fixture
def featureVarsTestFont():
@@ -1000,7 +1013,7 @@ def colrv1_path(tmp_path):
},
{
"Format": ot.PaintFormat.PaintGlyph,
- "Paint": (ot.PaintFormat.PaintSolid, (2, 0.3)),
+ "Paint": (ot.PaintFormat.PaintSolid, 2, 0.3),
"Glyph": "glyph00011",
},
],
@@ -1031,7 +1044,7 @@ def colrv1_path(tmp_path):
},
{
"Format": ot.PaintFormat.PaintGlyph,
- "Paint": (ot.PaintFormat.PaintSolid, (1, 0.5)),
+ "Paint": (ot.PaintFormat.PaintSolid, 1, 0.5),
"Glyph": "glyph00013",
},
],
@@ -1065,7 +1078,7 @@ def colrv1_path(tmp_path):
],
),
"uniE003": {
- "Format": ot.PaintFormat.PaintRotate,
+ "Format": ot.PaintFormat.PaintRotateAroundCenter,
"Paint": {
"Format": ot.PaintFormat.PaintColrGlyph,
"Glyph": "uniE001",
@@ -1076,9 +1089,16 @@ def colrv1_path(tmp_path):
},
"uniE004": [
("glyph00016", 1),
- ("glyph00017", 2),
+ ("glyph00017", 0xFFFF), # special palette index for foreground text
+ ("glyph00018", 2),
],
},
+ clipBoxes={
+ "uniE000": (0, 0, 200, 300),
+ "uniE001": (0, 0, 500, 500),
+ "uniE002": (100, 100, 400, 400),
+ "uniE003": (-50, -50, 350, 350),
+ },
)
fb.setupCPAL(
[
@@ -1130,31 +1150,36 @@ def test_subset_COLRv1_and_CPAL(colrv1_path):
assert "uniE004" in glyph_set
assert "glyph00016" in glyph_set
assert "glyph00017" in glyph_set
+ assert "glyph00018" in glyph_set
assert "COLR" in subset_font
colr = subset_font["COLR"].table
assert colr.Version == 1
assert len(colr.BaseGlyphRecordArray.BaseGlyphRecord) == 1
- assert len(colr.BaseGlyphV1List.BaseGlyphV1Record) == 3 # was 4
+ assert len(colr.BaseGlyphList.BaseGlyphPaintRecord) == 3 # was 4
- base = colr.BaseGlyphV1List.BaseGlyphV1Record[0]
+ base = colr.BaseGlyphList.BaseGlyphPaintRecord[0]
assert base.BaseGlyph == "uniE001"
- layers = colr.LayerV1List.Paint[
+ layers = colr.LayerList.Paint[
base.Paint.FirstLayerIndex: base.Paint.FirstLayerIndex + base.Paint.NumLayers
]
assert len(layers) == 2
# check v1 palette indices were remapped
- assert layers[0].Paint.Paint.ColorLine.ColorStop[0].Color.PaletteIndex == 0
- assert layers[0].Paint.Paint.ColorLine.ColorStop[1].Color.PaletteIndex == 1
- assert layers[1].Paint.Color.PaletteIndex == 0
+ assert layers[0].Paint.Paint.ColorLine.ColorStop[0].PaletteIndex == 0
+ assert layers[0].Paint.Paint.ColorLine.ColorStop[1].PaletteIndex == 1
+ assert layers[1].Paint.PaletteIndex == 0
baseRecV0 = colr.BaseGlyphRecordArray.BaseGlyphRecord[0]
assert baseRecV0.BaseGlyph == "uniE004"
layersV0 = colr.LayerRecordArray.LayerRecord
- assert len(layersV0) == 2
- # check v0 palette indices were remapped
+ assert len(layersV0) == 3
+ # check v0 palette indices were remapped (except for 0xFFFF)
assert layersV0[0].PaletteIndex == 0
- assert layersV0[1].PaletteIndex == 1
+ assert layersV0[1].PaletteIndex == 0xFFFF
+ assert layersV0[2].PaletteIndex == 1
+
+ clipBoxes = colr.ClipList.clips
+ assert {"uniE001", "uniE002", "uniE003"} == set(clipBoxes)
assert "CPAL" in subset_font
cpal = subset_font["CPAL"]
@@ -1208,11 +1233,173 @@ def test_subset_COLRv1_downgrade_version(colrv1_path):
"uniE004",
"glyph00016",
"glyph00017",
+ "glyph00018",
}
assert "COLR" in subset_font
assert subset_font["COLR"].version == 0
+def test_subset_COLRv1_drop_all_v0_glyphs(colrv1_path):
+ subset_path = colrv1_path.parent / (colrv1_path.name + ".subset")
+
+ subset.main(
+ [
+ str(colrv1_path),
+ "--glyph-names",
+ f"--output-file={subset_path}",
+ "--unicodes=E003",
+ ]
+ )
+ subset_font = TTFont(subset_path)
+
+ assert set(subset_font.getGlyphOrder()) == {
+ ".notdef",
+ "uniE001",
+ "uniE003",
+ "glyph00012",
+ "glyph00013",
+ }
+
+ assert "COLR" in subset_font
+ colr = subset_font["COLR"]
+ assert colr.version == 1
+ assert colr.table.BaseGlyphRecordCount == 0
+ assert colr.table.BaseGlyphRecordArray is None
+ assert colr.table.LayerRecordArray is None
+ assert colr.table.LayerRecordCount is 0
+
+
+def test_subset_COLRv1_no_ClipList(colrv1_path):
+ font = TTFont(colrv1_path)
+ font["COLR"].table.ClipList = None # empty ClipList
+ font.save(colrv1_path)
+
+ subset_path = colrv1_path.parent / (colrv1_path.name + ".subset")
+ subset.main(
+ [
+ str(colrv1_path),
+ f"--output-file={subset_path}",
+ "--unicodes=*",
+ ]
+ )
+ subset_font = TTFont(subset_path)
+ assert subset_font["COLR"].table.ClipList is None
+
+
+def test_subset_keep_size_drop_empty_stylistic_set():
+ fb = FontBuilder(unitsPerEm=1000, isTTF=True)
+ glyph_order = [".notdef", "a", "b", "b.ss01"]
+ fb.setupGlyphOrder(glyph_order)
+ fb.setupGlyf({g: TTGlyphPen(None).glyph() for g in glyph_order})
+ fb.setupCharacterMap({ord("a"): "a", ord("b"): "b"})
+ fb.setupHorizontalMetrics({g: (500, 0) for g in glyph_order})
+ fb.setupHorizontalHeader()
+ fb.setupOS2()
+ fb.setupPost()
+ fb.setupNameTable({"familyName": "TestKeepSizeFeature", "styleName": "Regular"})
+ fb.addOpenTypeFeatures("""
+ feature size {
+ parameters 10.0 0;
+ } size;
+ feature ss01 {
+ featureNames {
+ name "Alternate b";
+ };
+ sub b by b.ss01;
+ } ss01;
+ """)
+
+ buf = io.BytesIO()
+ fb.save(buf)
+ buf.seek(0)
+
+ font = TTFont(buf)
+
+ gpos_features = font["GPOS"].table.FeatureList.FeatureRecord
+ assert gpos_features[0].FeatureTag == "size"
+ assert isinstance(gpos_features[0].Feature.FeatureParams, ot.FeatureParamsSize)
+ assert gpos_features[0].Feature.LookupCount == 0
+ gsub_features = font["GSUB"].table.FeatureList.FeatureRecord
+ assert gsub_features[0].FeatureTag == "ss01"
+ assert isinstance(
+ gsub_features[0].Feature.FeatureParams, ot.FeatureParamsStylisticSet
+ )
+
+ options = subset.Options(layout_features=["*"])
+ subsetter = subset.Subsetter(options)
+ subsetter.populate(unicodes=[ord("a")])
+ subsetter.subset(font)
+
+ # empty size feature was kept
+ gpos_features = font["GPOS"].table.FeatureList.FeatureRecord
+ assert gpos_features[0].FeatureTag == "size"
+ assert isinstance(gpos_features[0].Feature.FeatureParams, ot.FeatureParamsSize)
+ assert gpos_features[0].Feature.LookupCount == 0
+ # empty ss01 feature was dropped
+ assert font["GSUB"].table.FeatureList.FeatureCount == 0
+
+
+@pytest.mark.skipif(etree is not None, reason="lxml is installed")
+def test_subset_svg_missing_lxml(ttf_path):
+ # add dummy SVG table and confirm we raise ImportError upon trying to subset it
+ font = TTFont(ttf_path)
+ font["SVG "] = newTable("SVG ")
+ font["SVG "].docList = [('<svg><g id="glyph1"/></svg>', 1, 1)]
+ font.save(ttf_path)
+
+ with pytest.raises(ModuleNotFoundError):
+ subset.main([str(ttf_path), "--gids=0,1"])
+
+
+def test_subset_COLR_glyph_closure(tmp_path):
+ # https://github.com/fonttools/fonttools/issues/2461
+ font = TTFont()
+ ttx = pathlib.Path(__file__).parent / "data" / "BungeeColor-Regular.ttx"
+ font.importXML(ttx)
+
+ color_layers = font["COLR"].ColorLayers
+ assert ".notdef" in color_layers
+ assert "Agrave" in color_layers
+ assert "grave" in color_layers
+
+ font_path = tmp_path / "BungeeColor-Regular.ttf"
+ subset_path = font_path.with_suffix(".subset.ttf)")
+ font.save(font_path)
+
+ subset.main(
+ [
+ str(font_path),
+ "--glyph-names",
+ f"--output-file={subset_path}",
+ "--glyphs=Agrave",
+ ]
+ )
+ subset_font = TTFont(subset_path)
+
+ glyph_order = subset_font.getGlyphOrder()
+
+ assert glyph_order == [
+ ".notdef", # '.notdef' is always included automatically
+ "A",
+ "grave",
+ "Agrave",
+ ".notdef.alt001",
+ ".notdef.alt002",
+ "A.alt002",
+ "Agrave.alt001",
+ "Agrave.alt002",
+ "grave.alt002",
+ ]
+
+ color_layers = subset_font["COLR"].ColorLayers
+ assert ".notdef" in color_layers
+ assert "Agrave" in color_layers
+ # Agrave 'glyf' uses grave. It should be retained in 'glyf' but NOT in
+ # COLR when we subset down to Agrave.
+ assert "grave" not in color_layers
+
+
+
if __name__ == "__main__":
sys.exit(unittest.main())
diff --git a/Tests/subset/svg_test.py b/Tests/subset/svg_test.py
new file mode 100644
index 00000000..d7471d5c
--- /dev/null
+++ b/Tests/subset/svg_test.py
@@ -0,0 +1,556 @@
+from string import ascii_letters
+import textwrap
+
+from fontTools.misc.testTools import getXML
+from fontTools import subset
+from fontTools.fontBuilder import FontBuilder
+from fontTools.pens.ttGlyphPen import TTGlyphPen
+from fontTools.ttLib import TTFont, newTable
+from fontTools.subset.svg import NAMESPACES, ranges
+
+import pytest
+
+etree = pytest.importorskip("lxml.etree")
+
+
+@pytest.fixture
+def empty_svg_font():
+ glyph_order = [".notdef"] + list(ascii_letters)
+
+ pen = TTGlyphPen(glyphSet=None)
+ pen.moveTo((0, 0))
+ pen.lineTo((0, 500))
+ pen.lineTo((500, 500))
+ pen.lineTo((500, 0))
+ pen.closePath()
+ glyph = pen.glyph()
+ glyphs = {g: glyph for g in glyph_order}
+
+ fb = FontBuilder(unitsPerEm=1024, isTTF=True)
+ fb.setupGlyphOrder(glyph_order)
+ fb.setupCharacterMap({ord(c): c for c in ascii_letters})
+ fb.setupGlyf(glyphs)
+ fb.setupHorizontalMetrics({g: (500, 0) for g in glyph_order})
+ fb.setupHorizontalHeader()
+ fb.setupOS2()
+ fb.setupPost()
+ fb.setupNameTable({"familyName": "TestSVG", "styleName": "Regular"})
+
+ svg_table = newTable("SVG ")
+ svg_table.docList = []
+ fb.font["SVG "] = svg_table
+
+ return fb.font
+
+
+# 'simple' here means one svg document per glyph. The required 'id' attribute
+# containing the 'glyphXXX' indices can be either on a child of the root <svg>
+# or on the <svg> root itself, so we test with both.
+# see https://github.com/fonttools/fonttools/issues/2548
+
+
+def simple_svg_table_glyph_ids_on_children(empty_svg_font):
+ font = empty_svg_font
+ svg_docs = font["SVG "].docList
+ for i in range(1, 11):
+ svg = new_svg()
+ etree.SubElement(svg, "path", {"id": f"glyph{i}", "d": f"M{i},{i}"})
+ svg_docs.append((etree.tostring(svg).decode(), i, i))
+ return font
+
+
+def simple_svg_table_glyph_ids_on_roots(empty_svg_font):
+ font = empty_svg_font
+ svg_docs = font["SVG "].docList
+ for i in range(1, 11):
+ svg = new_svg(id=f"glyph{i}")
+ etree.SubElement(svg, "path", {"d": f"M{i},{i}"})
+ svg_docs.append((etree.tostring(svg).decode(), i, i))
+ return font
+
+
+def new_svg(**attrs):
+ return etree.Element("svg", {"xmlns": NAMESPACES["svg"], **attrs})
+
+
+def _lines(s):
+ return textwrap.dedent(s).splitlines()
+
+
+@pytest.mark.parametrize(
+ "add_svg_table, gids, retain_gids, expected_xml",
+ [
+ # keep four glyphs in total, don't retain gids, which thus get remapped
+ (
+ simple_svg_table_glyph_ids_on_children,
+ "2,4-6",
+ False,
+ _lines(
+ """\
+ <svgDoc endGlyphID="1" startGlyphID="1">
+ <![CDATA[<svg xmlns="http://www.w3.org/2000/svg"><path id="glyph1" d="M2,2"/></svg>]]>
+ </svgDoc>
+ <svgDoc endGlyphID="2" startGlyphID="2">
+ <![CDATA[<svg xmlns="http://www.w3.org/2000/svg"><path id="glyph2" d="M4,4"/></svg>]]>
+ </svgDoc>
+ <svgDoc endGlyphID="3" startGlyphID="3">
+ <![CDATA[<svg xmlns="http://www.w3.org/2000/svg"><path id="glyph3" d="M5,5"/></svg>]]>
+ </svgDoc>
+ <svgDoc endGlyphID="4" startGlyphID="4">
+ <![CDATA[<svg xmlns="http://www.w3.org/2000/svg"><path id="glyph4" d="M6,6"/></svg>]]>
+ </svgDoc>
+ """
+ ),
+ ),
+ # same as above but with glyph id attribute in the root <svg> element itself
+ # https://github.com/fonttools/fonttools/issues/2548
+ (
+ simple_svg_table_glyph_ids_on_roots,
+ "2,4-6",
+ False,
+ _lines(
+ """\
+ <svgDoc endGlyphID="1" startGlyphID="1">
+ <![CDATA[<svg xmlns="http://www.w3.org/2000/svg" id="glyph1"><path d="M2,2"/></svg>]]>
+ </svgDoc>
+ <svgDoc endGlyphID="2" startGlyphID="2">
+ <![CDATA[<svg xmlns="http://www.w3.org/2000/svg" id="glyph2"><path d="M4,4"/></svg>]]>
+ </svgDoc>
+ <svgDoc endGlyphID="3" startGlyphID="3">
+ <![CDATA[<svg xmlns="http://www.w3.org/2000/svg" id="glyph3"><path d="M5,5"/></svg>]]>
+ </svgDoc>
+ <svgDoc endGlyphID="4" startGlyphID="4">
+ <![CDATA[<svg xmlns="http://www.w3.org/2000/svg" id="glyph4"><path d="M6,6"/></svg>]]>
+ </svgDoc>
+ """
+ ),
+ ),
+ # same four glyphs, but we now retain gids
+ (
+ simple_svg_table_glyph_ids_on_children,
+ "2,4-6",
+ True,
+ _lines(
+ """\
+ <svgDoc endGlyphID="2" startGlyphID="2">
+ <![CDATA[<svg xmlns="http://www.w3.org/2000/svg"><path id="glyph2" d="M2,2"/></svg>]]>
+ </svgDoc>
+ <svgDoc endGlyphID="4" startGlyphID="4">
+ <![CDATA[<svg xmlns="http://www.w3.org/2000/svg"><path id="glyph4" d="M4,4"/></svg>]]>
+ </svgDoc>
+ <svgDoc endGlyphID="5" startGlyphID="5">
+ <![CDATA[<svg xmlns="http://www.w3.org/2000/svg"><path id="glyph5" d="M5,5"/></svg>]]>
+ </svgDoc>
+ <svgDoc endGlyphID="6" startGlyphID="6">
+ <![CDATA[<svg xmlns="http://www.w3.org/2000/svg"><path id="glyph6" d="M6,6"/></svg>]]>
+ </svgDoc>
+ """
+ ),
+ ),
+ # retain gids like above but with glyph id attribute in the root <svg> element itself
+ # https://github.com/fonttools/fonttools/issues/2548
+ (
+ simple_svg_table_glyph_ids_on_roots,
+ "2,4-6",
+ True,
+ _lines(
+ """\
+ <svgDoc endGlyphID="2" startGlyphID="2">
+ <![CDATA[<svg xmlns="http://www.w3.org/2000/svg" id="glyph2"><path d="M2,2"/></svg>]]>
+ </svgDoc>
+ <svgDoc endGlyphID="4" startGlyphID="4">
+ <![CDATA[<svg xmlns="http://www.w3.org/2000/svg" id="glyph4"><path d="M4,4"/></svg>]]>
+ </svgDoc>
+ <svgDoc endGlyphID="5" startGlyphID="5">
+ <![CDATA[<svg xmlns="http://www.w3.org/2000/svg" id="glyph5"><path d="M5,5"/></svg>]]>
+ </svgDoc>
+ <svgDoc endGlyphID="6" startGlyphID="6">
+ <![CDATA[<svg xmlns="http://www.w3.org/2000/svg" id="glyph6"><path d="M6,6"/></svg>]]>
+ </svgDoc>
+ """
+ ),
+ ),
+ ],
+)
+def test_subset_single_glyph_per_svg(
+ empty_svg_font, add_svg_table, tmp_path, gids, retain_gids, expected_xml
+):
+ font = add_svg_table(empty_svg_font)
+
+ svg_font_path = tmp_path / "TestSVG.ttf"
+ font.save(svg_font_path)
+
+ subset_path = svg_font_path.with_suffix(".subset.ttf")
+
+ subset.main(
+ [
+ str(svg_font_path),
+ f"--output-file={subset_path}",
+ f"--gids={gids}",
+ "--retain_gids" if retain_gids else "--no-retain_gids",
+ ]
+ )
+ subset_font = TTFont(subset_path)
+
+ assert getXML(subset_font["SVG "].toXML, subset_font) == expected_xml
+
+
+# This contains a bunch of cross-references between glyphs, paths, gradients, etc.
+# Note the path coordinates are completely made up and not meant to be rendered.
+# We only care about the tree structure, not it's visual content.
+COMPLEX_SVG = """\
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient id="lg1" x1="50" x2="50" y1="80" y2="80" gradientUnits="userSpaceOnUse">
+ <stop stop-color="#A47B62" offset="0"/>
+ <stop stop-color="#AD8264" offset="1.0"/>
+ </linearGradient>
+ <radialGradient id="rg2" cx="50" cy="50" r="10" gradientUnits="userSpaceOnUse">
+ <stop stop-color="#A47B62" offset="0"/>
+ <stop stop-color="#AD8264" offset="1.0"/>
+ </radialGradient>
+ <radialGradient id="rg3" xlink:href="#rg2" r="20"/>
+ <radialGradient id="rg4" xlink:href="#rg3" cy="100"/>
+ <path id="p1" d="M3,3"/>
+ <clipPath id="c1">
+ <circle cx="10" cy="10" r="1"/>
+ </clipPath>
+ </defs>
+ <g id="glyph1">
+ <g id="glyph2">
+ <path d="M0,0"/>
+ </g>
+ <g>
+ <path d="M1,1" fill="url(#lg1)"/>
+ <path d="M2,2"/>
+ </g>
+ </g>
+ <g id="glyph3">
+ <use xlink:href="#p1"/>
+ </g>
+ <use id="glyph4" xlink:href="#glyph1" x="10"/>
+ <use id="glyph5" xlink:href="#glyph2" y="-10"/>
+ <g id="glyph6">
+ <use xlink:href="#p1" transform="scale(2, 1)"/>
+ </g>
+ <g id="group1">
+ <g id="glyph7">
+ <path id="p2" d="M4,4"/>
+ </g>
+ <g id=".glyph7">
+ <path d="M4,4"/>
+ </g>
+ <g id="glyph8">
+ <g id=".glyph8">
+ <path id="p3" d="M5,5"/>
+ <path id="M6,6"/>
+ </g>
+ <path d="M7,7"/>
+ </g>
+ <g id="glyph9">
+ <use xlink:href="#p2"/>
+ </g>
+ <g id="glyph10">
+ <use xlink:href="#p3"/>
+ </g>
+ </g>
+ <g id="glyph11">
+ <path d="M7,7" fill="url(#rg4)"/>
+ </g>
+ <g id="glyph12">
+ <path d="M7,7" style="fill:url(#lg1);stroke:red;clip-path:url(#c1)"/>
+ </g>
+</svg>
+"""
+
+
+@pytest.mark.parametrize(
+ "subset_gids, expected_xml",
+ [
+ # we only keep gid=2, with 'glyph2' defined inside 'glyph1': 'glyph2'
+ # is renamed 'glyph1' to match the new subset indices, and the old 'glyph1'
+ # is kept (as it contains 'glyph2') but renamed '.glyph1' to avoid clash
+ (
+ "2",
+ _lines(
+ """\
+ <svgDoc endGlyphID="1" startGlyphID="1">
+ <![CDATA[<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <g id=".glyph1">
+ <g id="glyph1">
+ <path d="M0,0"/>
+ </g>
+ </g>
+ </svg>
+ ]]>
+ </svgDoc>
+ """
+ ),
+ ),
+ # we keep both gid 1 and 2: the glyph elements' ids stay as they are (only the
+ # range endGlyphID change); a gradient is kept since it's referenced by glyph1
+ (
+ "1,2",
+ _lines(
+ """\
+ <svgDoc endGlyphID="2" startGlyphID="1">
+ <![CDATA[<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient id="lg1" x1="50" x2="50" y1="80" y2="80" gradientUnits="userSpaceOnUse">
+ <stop stop-color="#A47B62" offset="0"/>
+ <stop stop-color="#AD8264" offset="1.0"/>
+ </linearGradient>
+ </defs>
+ <g id="glyph1">
+ <g id="glyph2">
+ <path d="M0,0"/>
+ </g>
+ <g>
+ <path d="M1,1" fill="url(#lg1)"/>
+ <path d="M2,2"/>
+ </g>
+ </g>
+ </svg>
+ ]]>
+ </svgDoc>
+ """
+ ),
+ ),
+ (
+ # both gid 3 and 6 refer (via <use xlink:href="#...") to path 'p1', which
+ # is thus kept in <defs>; the glyph ids and range start/end are renumbered.
+ "3,6",
+ _lines(
+ """\
+ <svgDoc endGlyphID="2" startGlyphID="1">
+ <![CDATA[<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <path id="p1" d="M3,3"/>
+ </defs>
+ <g id="glyph1">
+ <use xlink:href="#p1"/>
+ </g>
+ <g id="glyph2">
+ <use xlink:href="#p1" transform="scale(2, 1)"/>
+ </g>
+ </svg>
+ ]]>
+ </svgDoc>
+ """
+ ),
+ ),
+ (
+ # 'glyph4' uses the whole 'glyph1' element (translated); we keep the latter
+ # renamed to avoid clashes with new gids
+ "3-4",
+ _lines(
+ """\
+ <svgDoc endGlyphID="2" startGlyphID="1">
+ <![CDATA[<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient id="lg1" x1="50" x2="50" y1="80" y2="80" gradientUnits="userSpaceOnUse">
+ <stop stop-color="#A47B62" offset="0"/>
+ <stop stop-color="#AD8264" offset="1.0"/>
+ </linearGradient>
+ <path id="p1" d="M3,3"/>
+ </defs>
+ <g id=".glyph1">
+ <g id=".glyph2">
+ <path d="M0,0"/>
+ </g>
+ <g>
+ <path d="M1,1" fill="url(#lg1)"/>
+ <path d="M2,2"/>
+ </g>
+ </g>
+ <g id="glyph1">
+ <use xlink:href="#p1"/>
+ </g>
+ <use id="glyph2" xlink:href="#.glyph1" x="10"/>
+ </svg>
+ ]]>
+ </svgDoc>
+ """
+ ),
+ ),
+ (
+ # 'glyph9' uses a path 'p2' defined inside 'glyph7', the latter is excluded
+ # from our subset, thus gets renamed '.glyph7'; an unrelated element with
+ # same id=".glyph7" doesn't clash because it was dropped.
+ # Similarly 'glyph10' uses path 'p3' defined inside 'glyph8', also excluded
+ # from subset and prefixed with '.'. But since an id=".glyph8" is already
+ # used in the doc, we append a .{digit} suffix to disambiguate.
+ "9,10",
+ _lines(
+ """\
+ <svgDoc endGlyphID="2" startGlyphID="1">
+ <![CDATA[<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <g id="group1">
+ <g id=".glyph7">
+ <path id="p2" d="M4,4"/>
+ </g>
+ <g id=".glyph8.1">
+ <g id=".glyph8">
+ <path id="p3" d="M5,5"/>
+ </g>
+ </g>
+ <g id="glyph1">
+ <use xlink:href="#p2"/>
+ </g>
+ <g id="glyph2">
+ <use xlink:href="#p3"/>
+ </g>
+ </g>
+ </svg>
+ ]]>
+ </svgDoc>
+ """
+ ),
+ ),
+ (
+ # 'glyph11' uses gradient 'rg4' which inherits from 'rg3', which inherits
+ # from 'rg2', etc.
+ "11",
+ _lines(
+ """\
+ <svgDoc endGlyphID="1" startGlyphID="1">
+ <![CDATA[<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <radialGradient id="rg2" cx="50" cy="50" r="10" gradientUnits="userSpaceOnUse">
+ <stop stop-color="#A47B62" offset="0"/>
+ <stop stop-color="#AD8264" offset="1.0"/>
+ </radialGradient>
+ <radialGradient id="rg3" xlink:href="#rg2" r="20"/>
+ <radialGradient id="rg4" xlink:href="#rg3" cy="100"/>
+ </defs>
+ <g id="glyph1">
+ <path d="M7,7" fill="url(#rg4)"/>
+ </g>
+ </svg>
+ ]]>
+ </svgDoc>
+ """
+ ),
+ ),
+ (
+ # 'glyph12' contains a style attribute with inline CSS declarations that
+ # contains references to a gradient fill and a clipPath: we keep those
+ "12",
+ _lines(
+ """\
+ <svgDoc endGlyphID="1" startGlyphID="1">
+ <![CDATA[<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient id="lg1" x1="50" x2="50" y1="80" y2="80" gradientUnits="userSpaceOnUse">
+ <stop stop-color="#A47B62" offset="0"/>
+ <stop stop-color="#AD8264" offset="1.0"/>
+ </linearGradient>
+ <clipPath id="c1">
+ <circle cx="10" cy="10" r="1"/>
+ </clipPath>
+ </defs>
+ <g id="glyph1">
+ <path d="M7,7" style="fill:url(#lg1);stroke:red;clip-path:url(#c1)"/>
+ </g>
+ </svg>
+ ]]>
+ </svgDoc>
+ """
+ ),
+ ),
+ ],
+)
+def test_subset_svg_with_references(
+ empty_svg_font, tmp_path, subset_gids, expected_xml
+):
+ font = empty_svg_font
+
+ font["SVG "].docList.append((COMPLEX_SVG, 1, 12))
+ svg_font_path = tmp_path / "TestSVG.ttf"
+ font.save(svg_font_path)
+ subset_path = svg_font_path.with_suffix(".subset.ttf")
+
+ subset.main(
+ [
+ str(svg_font_path),
+ f"--output-file={subset_path}",
+ f"--gids={subset_gids}",
+ "--pretty-svg",
+ ]
+ )
+ subset_font = TTFont(subset_path)
+
+ if expected_xml is not None:
+ assert getXML(subset_font["SVG "].toXML, subset_font) == expected_xml
+ else:
+ assert "SVG " not in subset_font
+
+
+def test_subset_svg_empty_table(empty_svg_font, tmp_path):
+ font = empty_svg_font
+
+ svg = new_svg()
+ etree.SubElement(svg, "rect", {"id": "glyph1", "x": "1", "y": "2"})
+ font["SVG "].docList.append((etree.tostring(svg).decode(), 1, 1))
+
+ svg_font_path = tmp_path / "TestSVG.ttf"
+ font.save(svg_font_path)
+ subset_path = svg_font_path.with_suffix(".subset.ttf")
+
+ # there's no gid=2 in SVG table, drop the empty table
+ subset.main([str(svg_font_path), f"--output-file={subset_path}", f"--gids=2"])
+
+ assert "SVG " not in TTFont(subset_path)
+
+
+def test_subset_svg_missing_glyph(empty_svg_font, tmp_path):
+ font = empty_svg_font
+
+ svg = new_svg()
+ etree.SubElement(svg, "rect", {"id": "glyph1", "x": "1", "y": "2"})
+ font["SVG "].docList.append(
+ (
+ etree.tostring(svg).decode(),
+ 1,
+ # the range endGlyphID=2 declares two glyphs however our svg contains
+ # only one glyph element with id="glyph1", the "glyph2" one is absent.
+ # Techically this would be invalid according to the OT-SVG spec.
+ 2,
+ )
+ )
+ svg_font_path = tmp_path / "TestSVG.ttf"
+ font.save(svg_font_path)
+ subset_path = svg_font_path.with_suffix(".subset.ttf")
+
+ # make sure we don't crash when we don't find the expected "glyph2" element
+ subset.main([str(svg_font_path), f"--output-file={subset_path}", f"--gids=1"])
+
+ subset_font = TTFont(subset_path)
+ assert getXML(subset_font["SVG "].toXML, subset_font) == [
+ '<svgDoc endGlyphID="1" startGlyphID="1">',
+ ' <![CDATA[<svg xmlns="http://www.w3.org/2000/svg"><rect id="glyph1" x="1" y="2"/></svg>]]>',
+ "</svgDoc>",
+ ]
+
+ # ignore the missing gid even if included in the subset; in this test case we
+ # end up with an empty svg document--which is dropped, along with the empty table
+ subset.main([str(svg_font_path), f"--output-file={subset_path}", f"--gids=2"])
+
+ assert "SVG " not in TTFont(subset_path)
+
+
+@pytest.mark.parametrize(
+ "ints, expected_ranges",
+ [
+ ((), []),
+ ((0,), [(0, 0)]),
+ ((0, 1), [(0, 1)]),
+ ((1, 1, 1, 1), [(1, 1)]),
+ ((1, 3), [(1, 1), (3, 3)]),
+ ((4, 2, 1, 3), [(1, 4)]),
+ ((1, 2, 4, 5, 6, 9, 13, 14, 15), [(1, 2), (4, 6), (9, 9), (13, 15)]),
+ ],
+)
+def test_ranges(ints, expected_ranges):
+ assert list(ranges(ints)) == expected_ranges
diff --git a/Tests/svgLib/path/path_test.py b/Tests/svgLib/path/path_test.py
index 8ee334a0..caf351d4 100644
--- a/Tests/svgLib/path/path_test.py
+++ b/Tests/svgLib/path/path_test.py
@@ -1,4 +1,4 @@
-from fontTools.misc.py23 import tobytes
+from fontTools.misc.textTools import tobytes
from fontTools.pens.recordingPen import RecordingPen
from fontTools.svgLib import SVGPath
diff --git a/Tests/t1Lib/data/TestT1-ellipsis-hinted.pfa b/Tests/t1Lib/data/TestT1-ellipsis-hinted.pfa
new file mode 100644
index 00000000..3fc6696d
--- /dev/null
+++ b/Tests/t1Lib/data/TestT1-ellipsis-hinted.pfa
@@ -0,0 +1,73 @@
+%!FontType1-1.1: TestT1-Regular 1.0
+%%BeginResource: font TestT1-Regular
+12 dict dup begin
+/FontType 1 def
+/FontName /TestT1-Regular def
+/FontInfo 14 dict dup begin
+/version (1.0) def
+/Notice (Test T1 is not a trademark of FontTools.) def
+/Copyright (Copyright c 2015 by FontTools. No rights reserved.) def
+/FullName (Test T1) def
+/FamilyName (Test T1) def
+/Weight (Regular) def
+/ItalicAngle 0.000000 def
+/isFixedPitch false def
+/UnderlinePosition -75.000000 def
+/UnderlineThickness 50.000000 def
+/FSType 0 def
+end def
+/PaintType 0 def
+/FontMatrix [0.001 0 0 0.001 0 0] def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+def
+/FontBBox {50.000000 0.000000 668.000000 750.000000} def
+end
+currentfile eexec a0b00ed5187d9c0f1ecdf51878c3aa5c80164785b2862e5e248314a0dd481e1d
+8115d1b5316c01657582d7e6cf3fa3e1aa00733eacc08e989313fc4f69225c12
+e1cce25e5f99b47841c1a01a3778ce0d2cd604a925e1a95952caddc379227509
+e885feae9bdf476bbc2a66a211f868f2cfc17055dcf167e621fd9f41a20f2647
+a3433004f074ba98472481205cebb34224112701c802754418c103b503fdcc51
+ff373f66fea5ab6b7578cc881c6c46de4327adf847412c9df1700b8402f28395
+fc36b2e8826ef268b1f4c0f79d3612e999d7a22412f8fcd4398cba1b4db9b0a1
+a050a7777e3b04617c75f9373f76b7a1daffd6423d0bd68c190f563fa54ff699
+bbe5e5ff80d2329a8f7c5f85d10fe3410cf665fb3e3271d7d92bdbeac0bd6a11
+a3726b6bbc45a143b60b22ae9f5cb25b595bfd3797d0aaca765516fa103b5d01
+e016ca279efa8c90b062ee151238c62dda8d109bea1814ab49ab93034196e785
+a7629fc297ddb0b5ba7bb1da4d9b69c35c4038082747cf0180fb387f1925640a
+239c91872b562233065484922f59063bd42241053bf69317d22dbcbfc869996a
+11f5f628930da9a2d48d327804add904de6bb0bd84b6584eacdbc2760af6d44f
+d4a765c1829b2b650773894ca9d7e303b8dfc43804e4b60a7eb1506139fa96b8
+0f70238f69a4ce6ad2a7e20f344e9f69930fe1cc30688775b2875de4f79039e0
+8c0dc7db7470d9773ad4345d50c1fbdb9089c91b6d170bc3e39b61b3d86e3a78
+1e31d872384c85a6241dc349d0af38785e1f37426ac0ca1b7369bf00c947953a
+191be897b89a84d903f590ee852b34433d892f9f60e6b2236e6dee1562d69c9d
+e80205d7aa49f9c7d01f8afb16babf9979d3dccf28b23160934d425f503d82d1
+d602bdbea6c0378fa6631f4dd3709dc6db7395663356df1eb3b6ee42d8006e0f
+9c1d0402f1bc9cf656bc0f75f51db76781f447139a4babad33af6309d271b472
+7607ca92ff947e561d94a66eda64788fd32c7427341bf5d365a0cb4bbf0a0534
+1a92824f0a80a678ffd6320d9feb538cde66cb65a5d3a7a53d601732fa83efaf
+05effa0938b101cfd2dac6a80631c10a7d0a2ea5950a2af3de5afbab29590986
+27fc0526581792c06db8374568e14023384584bba23ac87921af46943a23e0ea
+7aa4c0f6a57cbe7c91fac9d612e36f721f518945ce0f70cf3084cf1565480cd9
+f75e6183eefb58d4936a4c8ff76b80b3b9b12d876b3f0c8773a105cf2a24d87e
+99feed1ca9114d37698f07763c538a011672b1fc1aa9ed610134f7d7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+ 0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndResource
+%%EOF \ No newline at end of file
diff --git a/Tests/t1Lib/t1Lib_test.py b/Tests/t1Lib/t1Lib_test.py
index 92b3e9e1..3e639a58 100644
--- a/Tests/t1Lib/t1Lib_test.py
+++ b/Tests/t1Lib/t1Lib_test.py
@@ -3,6 +3,7 @@ import os
import sys
from fontTools import t1Lib
from fontTools.pens.basePen import NullPen
+from fontTools.misc.psCharStrings import T1CharString
import random
@@ -13,6 +14,8 @@ LWFN = os.path.join(DATADIR, 'TestT1-Regular.lwfn')
PFA = os.path.join(DATADIR, 'TestT1-Regular.pfa')
PFB = os.path.join(DATADIR, 'TestT1-Regular.pfb')
WEIRD_ZEROS = os.path.join(DATADIR, 'TestT1-weird-zeros.pfa')
+# ellipsis is hinted with 55 131 296 131 537 131 vstem3 0 122 hstem
+ELLIPSIS_HINTED = os.path.join(DATADIR, 'TestT1-ellipsis-hinted.pfa')
class FindEncryptedChunksTest(unittest.TestCase):
@@ -52,24 +55,40 @@ class ReadWriteTest(unittest.TestCase):
data = self.write(font, 'PFB')
self.assertEqual(font.getData(), data)
+ def test_read_and_parse_pfa_write_pfb(self):
+ font = t1Lib.T1Font(PFA)
+ font.parse()
+ saved_font = self.write(font, 'PFB', dohex=False, doparse=True)
+ self.assertTrue(same_dicts(font.font, saved_font))
+
def test_read_pfb_write_pfa(self):
font = t1Lib.T1Font(PFB)
# 'OTHER' == 'PFA'
data = self.write(font, 'OTHER', dohex=True)
self.assertEqual(font.getData(), data)
- @unittest.skipIf(sys.version_info[:2] < (3, 6), "pathlib is only tested on 3.6 and up")
+ def test_read_and_parse_pfb_write_pfa(self):
+ font = t1Lib.T1Font(PFB)
+ font.parse()
+ # 'OTHER' == 'PFA'
+ saved_font = self.write(font, 'OTHER', dohex=True, doparse=True)
+ self.assertTrue(same_dicts(font.font, saved_font))
+
def test_read_with_path(self):
import pathlib
font = t1Lib.T1Font(pathlib.Path(PFB))
@staticmethod
- def write(font, outtype, dohex=False):
+ def write(font, outtype, dohex=False, doparse=False):
temp = os.path.join(DATADIR, 'temp.' + outtype.lower())
try:
font.saveAs(temp, outtype, dohex=dohex)
newfont = t1Lib.T1Font(temp)
- data = newfont.getData()
+ if doparse:
+ newfont.parse()
+ data = newfont.font
+ else:
+ data = newfont.getData()
finally:
if os.path.exists(temp):
os.remove(temp)
@@ -108,6 +127,75 @@ class T1FontTest(unittest.TestCase):
self.assertTrue(hasattr(aglyph, 'width'))
+class EditTest(unittest.TestCase):
+
+ def test_edit_pfa(self):
+ font = t1Lib.T1Font(PFA)
+ ellipsis = font.getGlyphSet()["ellipsis"]
+ ellipsis.decompile()
+ program = []
+ for v in ellipsis.program:
+ try:
+ program.append(int(v))
+ except:
+ program.append(v)
+ if v == 'hsbw':
+ hints = [55, 131, 296, 131, 537, 131, 'vstem3', 0, 122, 'hstem']
+ program.extend(hints)
+ ellipsis.program = program
+ # 'OTHER' == 'PFA'
+ saved_font = self.write(font, 'OTHER', dohex=True, doparse=True)
+ hinted_font = t1Lib.T1Font(ELLIPSIS_HINTED)
+ hinted_font.parse()
+ self.assertTrue(same_dicts(hinted_font.font, saved_font))
+
+ @staticmethod
+ def write(font, outtype, dohex=False, doparse=False):
+ temp = os.path.join(DATADIR, 'temp.' + outtype.lower())
+ try:
+ font.saveAs(temp, outtype, dohex=dohex)
+ newfont = t1Lib.T1Font(temp)
+ if doparse:
+ newfont.parse()
+ data = newfont.font
+ else:
+ data = newfont.getData()
+ finally:
+ if os.path.exists(temp):
+ os.remove(temp)
+ return data
+
+
+def same_dicts(dict1, dict2):
+ if dict1.keys() != dict2.keys():
+ return False
+ for key, value in dict1.items():
+ if isinstance(value, dict):
+ if not same_dicts(value, dict2[key]):
+ return False
+ elif isinstance(value, list):
+ if len(value) != len(dict2[key]):
+ return False
+ for elem1, elem2 in zip(value, dict2[key]):
+ if isinstance(elem1, T1CharString):
+ elem1.compile()
+ elem2.compile()
+ if elem1.bytecode != elem2.bytecode:
+ return False
+ else:
+ if elem1 != elem2:
+ return False
+ elif isinstance(value, T1CharString):
+ value.compile()
+ dict2[key].compile()
+ if value.bytecode != dict2[key].bytecode:
+ return False
+ else:
+ if value != dict2[key]:
+ return False
+ return True
+
+
if __name__ == '__main__':
import sys
sys.exit(unittest.main())
diff --git a/Tests/tfmLib/data/cmex10.tfm b/Tests/tfmLib/data/cmex10.tfm
new file mode 100644
index 00000000..d5427ad3
--- /dev/null
+++ b/Tests/tfmLib/data/cmex10.tfm
Binary files differ
diff --git a/Tests/tfmLib/data/cmr10.tfm b/Tests/tfmLib/data/cmr10.tfm
new file mode 100644
index 00000000..6594c9c4
--- /dev/null
+++ b/Tests/tfmLib/data/cmr10.tfm
Binary files differ
diff --git a/Tests/tfmLib/data/cmsy10.tfm b/Tests/tfmLib/data/cmsy10.tfm
new file mode 100644
index 00000000..3e4488b0
--- /dev/null
+++ b/Tests/tfmLib/data/cmsy10.tfm
Binary files differ
diff --git a/Tests/tfmLib/data/dummy-space.tfm b/Tests/tfmLib/data/dummy-space.tfm
new file mode 100644
index 00000000..fc0719e1
--- /dev/null
+++ b/Tests/tfmLib/data/dummy-space.tfm
Binary files differ
diff --git a/Tests/tfmLib/tfmLib_test.py b/Tests/tfmLib/tfmLib_test.py
new file mode 100644
index 00000000..ad74ed7f
--- /dev/null
+++ b/Tests/tfmLib/tfmLib_test.py
@@ -0,0 +1,90 @@
+import glob
+import os
+
+import pytest
+
+from fontTools import tfmLib
+
+DATA_DIR = os.path.join(os.path.dirname(__file__), "data")
+
+
+@pytest.mark.parametrize("path", glob.glob(f"{DATA_DIR}/cm*.tfm"))
+def test_read(path):
+ tfm = tfmLib.TFM(path)
+ assert tfm.designsize == 10.0
+ assert tfm.fontdimens
+ assert len(tfm.fontdimens) >= 7
+ assert tfm.extraheader == {}
+ assert tfm.right_boundary_char is None
+ assert tfm.left_boundary_char is None
+ assert len(tfm.chars) == 128
+
+
+def test_read_boundary_char():
+ path = os.path.join(DATA_DIR, "dummy-space.tfm")
+ tfm = tfmLib.TFM(path)
+ assert tfm.right_boundary_char == 1
+ assert tfm.left_boundary_char == 256
+
+
+def test_read_fontdimens_vanilla():
+ path = os.path.join(DATA_DIR, "cmr10.tfm")
+ tfm = tfmLib.TFM(path)
+ assert tfm.fontdimens == {
+ "SLANT": 0.0,
+ "SPACE": 0.33333396911621094,
+ "STRETCH": 0.16666698455810547,
+ "SHRINK": 0.11111164093017578,
+ "XHEIGHT": 0.4305553436279297,
+ "QUAD": 1.0000028610229492,
+ "EXTRASPACE": 0.11111164093017578,
+ }
+
+
+def test_read_fontdimens_mathex():
+ path = os.path.join(DATA_DIR, "cmex10.tfm")
+ tfm = tfmLib.TFM(path)
+ assert tfm.fontdimens == {
+ "SLANT": 0.0,
+ "SPACE": 0.0,
+ "STRETCH": 0.0,
+ "SHRINK": 0.0,
+ "XHEIGHT": 0.4305553436279297,
+ "QUAD": 1.0000028610229492,
+ "EXTRASPACE": 0.0,
+ "DEFAULTRULETHICKNESS": 0.03999900817871094,
+ "BIGOPSPACING1": 0.11111164093017578,
+ "BIGOPSPACING2": 0.16666698455810547,
+ "BIGOPSPACING3": 0.19999980926513672,
+ "BIGOPSPACING4": 0.6000003814697266,
+ "BIGOPSPACING5": 0.10000038146972656,
+ }
+
+
+def test_read_fontdimens_mathsy():
+ path = os.path.join(DATA_DIR, "cmsy10.tfm")
+ tfm = tfmLib.TFM(path)
+ assert tfm.fontdimens == {
+ "SLANT": 0.25,
+ "SPACE": 0.0,
+ "STRETCH": 0.0,
+ "SHRINK": 0.0,
+ "XHEIGHT": 0.4305553436279297,
+ "QUAD": 1.0000028610229492,
+ "EXTRASPACE": 0.0,
+ "NUM1": 0.6765079498291016,
+ "NUM2": 0.39373207092285156,
+ "NUM3": 0.44373130798339844,
+ "DENOM1": 0.6859512329101562,
+ "DENOM2": 0.34484100341796875,
+ "SUP1": 0.41289234161376953,
+ "SUP2": 0.36289215087890625,
+ "SUP3": 0.28888893127441406,
+ "SUB1": 0.14999961853027344,
+ "SUB2": 0.24721717834472656,
+ "SUBDROP": 0.05000019073486328,
+ "SUPDROP": 0.3861083984375,
+ "DELIM1": 2.3899993896484375,
+ "DELIM2": 1.010000228881836,
+ "AXISHEIGHT": 0.25,
+ }
diff --git a/Tests/ttLib/data/TestVGID-Regular.otf b/Tests/ttLib/data/TestVGID-Regular.otf
new file mode 100644
index 00000000..635a3ac8
--- /dev/null
+++ b/Tests/ttLib/data/TestVGID-Regular.otf
Binary files differ
diff --git a/Tests/ttLib/data/TestVGID-Regular.ttx b/Tests/ttLib/data/TestVGID-Regular.ttx
new file mode 100644
index 00000000..6f4a1c5e
--- /dev/null
+++ b/Tests/ttLib/data/TestVGID-Regular.ttx
@@ -0,0 +1,18418 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ttFont sfntVersion="OTTO" ttLibVersion="4.26">
+
+ <GlyphOrder>
+ <!-- The 'id' attribute is only for humans; it is ignored when parsed. -->
+ <GlyphID id="0" name=".notdef"/>
+ <GlyphID id="1" name="a"/>
+ <GlyphID id="2" name="b"/>
+ <GlyphID id="3" name="c"/>
+ <GlyphID id="4" name="d"/>
+ <GlyphID id="5" name="e"/>
+ <GlyphID id="6" name="f"/>
+ <GlyphID id="7" name="g"/>
+ <GlyphID id="8" name="g.1"/>
+ <GlyphID id="9" name="h"/>
+ <GlyphID id="10" name="h.1"/>
+ <GlyphID id="11" name="i"/>
+ <GlyphID id="12" name="j"/>
+ <GlyphID id="13" name="k"/>
+ <GlyphID id="14" name="k.1"/>
+ <GlyphID id="15" name="l"/>
+ <GlyphID id="16" name="m"/>
+ <GlyphID id="17" name="m.1"/>
+ <GlyphID id="18" name="n"/>
+ <GlyphID id="19" name="n.1"/>
+ <GlyphID id="20" name="o"/>
+ <GlyphID id="21" name="p"/>
+ <GlyphID id="22" name="p.1"/>
+ <GlyphID id="23" name="q"/>
+ <GlyphID id="24" name="q.1"/>
+ <GlyphID id="25" name="r"/>
+ <GlyphID id="26" name="r.1"/>
+ <GlyphID id="27" name="r.2"/>
+ <GlyphID id="28" name="s"/>
+ <GlyphID id="29" name="t"/>
+ <GlyphID id="30" name="u"/>
+ <GlyphID id="31" name="u.1"/>
+ <GlyphID id="32" name="v"/>
+ <GlyphID id="33" name="w"/>
+ <GlyphID id="34" name="x"/>
+ <GlyphID id="35" name="y"/>
+ <GlyphID id="36" name="y.1"/>
+ <GlyphID id="37" name="z"/>
+ <GlyphID id="38" name="hamza-ar"/>
+ <GlyphID id="39" name="alef-ar"/>
+ <GlyphID id="40" name="alef-ar.1"/>
+ <GlyphID id="41" name="alef-ar.2"/>
+ <GlyphID id="42" name="alef-ar.3"/>
+ <GlyphID id="43" name="alef-ar.fina"/>
+ <GlyphID id="44" name="alefHamzaabove-ar"/>
+ <GlyphID id="45" name="alefHamzabelow-ar"/>
+ <GlyphID id="46" name="alefMadda-ar"/>
+ <GlyphID id="47" name="alefWasla-ar"/>
+ <GlyphID id="48" name="behDotless-ar"/>
+ <GlyphID id="49" name="behDotless-ar.fina"/>
+ <GlyphID id="50" name="behDotless-ar.fina.1"/>
+ <GlyphID id="51" name="behDotless-ar.medi"/>
+ <GlyphID id="52" name="behDotless-ar.medi.1"/>
+ <GlyphID id="53" name="behDotless-ar.medi.high"/>
+ <GlyphID id="54" name="behDotless-ar.medi.high.1"/>
+ <GlyphID id="55" name="behDotless-ar.medi.yeh"/>
+ <GlyphID id="56" name="behDotless-ar.init"/>
+ <GlyphID id="57" name="behDotless-ar.init.hah"/>
+ <GlyphID id="58" name="beh-ar"/>
+ <GlyphID id="59" name="peh-ar"/>
+ <GlyphID id="60" name="teh-ar"/>
+ <GlyphID id="61" name="theh-ar"/>
+ <GlyphID id="62" name="tteh-ar"/>
+ <GlyphID id="63" name="jeem-ar"/>
+ <GlyphID id="64" name="tcheh-ar"/>
+ <GlyphID id="65" name="hah-ar"/>
+ <GlyphID id="66" name="hah-ar.1"/>
+ <GlyphID id="67" name="hah-ar.2"/>
+ <GlyphID id="68" name="hah-ar.3"/>
+ <GlyphID id="69" name="hah-ar.4"/>
+ <GlyphID id="70" name="hah-ar.5"/>
+ <GlyphID id="71" name="hah-ar.fina"/>
+ <GlyphID id="72" name="hah-ar.fina.1"/>
+ <GlyphID id="73" name="hah-ar.medi"/>
+ <GlyphID id="74" name="hah-ar.medi.1"/>
+ <GlyphID id="75" name="hah-ar.medi.2"/>
+ <GlyphID id="76" name="hah-ar.medi.3"/>
+ <GlyphID id="77" name="hah-ar.init"/>
+ <GlyphID id="78" name="hah-ar.init.1"/>
+ <GlyphID id="79" name="hah-ar.init.2"/>
+ <GlyphID id="80" name="khah-ar"/>
+ <GlyphID id="81" name="dal-ar"/>
+ <GlyphID id="82" name="dal-ar.fina"/>
+ <GlyphID id="83" name="thal-ar"/>
+ <GlyphID id="84" name="ddal-ar"/>
+ <GlyphID id="85" name="reh-ar"/>
+ <GlyphID id="86" name="reh-ar.1"/>
+ <GlyphID id="87" name="reh-ar.2"/>
+ <GlyphID id="88" name="reh-ar.3"/>
+ <GlyphID id="89" name="reh-ar.fina"/>
+ <GlyphID id="90" name="reh-ar.fina.1"/>
+ <GlyphID id="91" name="zain-ar"/>
+ <GlyphID id="92" name="rreh-ar"/>
+ <GlyphID id="93" name="jeh-ar"/>
+ <GlyphID id="94" name="seen-ar"/>
+ <GlyphID id="95" name="seen-ar.1"/>
+ <GlyphID id="96" name="seen-ar.2"/>
+ <GlyphID id="97" name="seen-ar.3"/>
+ <GlyphID id="98" name="seen-ar.4"/>
+ <GlyphID id="99" name="seen-ar.5"/>
+ <GlyphID id="100" name="seen-ar.6"/>
+ <GlyphID id="101" name="seen-ar.fina"/>
+ <GlyphID id="102" name="seen-ar.fina.1"/>
+ <GlyphID id="103" name="seen-ar.fina.2"/>
+ <GlyphID id="104" name="seen-ar.fina.3"/>
+ <GlyphID id="105" name="seen-ar.fina.4"/>
+ <GlyphID id="106" name="seen-ar.fina.5"/>
+ <GlyphID id="107" name="seen-ar.medi"/>
+ <GlyphID id="108" name="seen-ar.medi.1"/>
+ <GlyphID id="109" name="seen-ar.medi.2"/>
+ <GlyphID id="110" name="seen-ar.medi.3"/>
+ <GlyphID id="111" name="seen-ar.medi.4"/>
+ <GlyphID id="112" name="seen-ar.medi.5"/>
+ <GlyphID id="113" name="seen-ar.medi.6"/>
+ <GlyphID id="114" name="seen-ar.init"/>
+ <GlyphID id="115" name="seen-ar.init.1"/>
+ <GlyphID id="116" name="seen-ar.init.2"/>
+ <GlyphID id="117" name="seen-ar.init.3"/>
+ <GlyphID id="118" name="seen-ar.init.4"/>
+ <GlyphID id="119" name="seen-ar.init.5"/>
+ <GlyphID id="120" name="seen-ar.init.6"/>
+ <GlyphID id="121" name="sheen-ar"/>
+ <GlyphID id="122" name="sad-ar"/>
+ <GlyphID id="123" name="sad-ar.1"/>
+ <GlyphID id="124" name="sad-ar.fina"/>
+ <GlyphID id="125" name="sad-ar.fina.1"/>
+ <GlyphID id="126" name="sad-ar.medi"/>
+ <GlyphID id="127" name="sad-ar.init"/>
+ <GlyphID id="128" name="dad-ar"/>
+ <GlyphID id="129" name="tah-ar"/>
+ <GlyphID id="130" name="tah-ar.fina"/>
+ <GlyphID id="131" name="tah-ar.medi"/>
+ <GlyphID id="132" name="tah-ar.medi.short"/>
+ <GlyphID id="133" name="tah-ar.medi.short2"/>
+ <GlyphID id="134" name="tah-ar.init"/>
+ <GlyphID id="135" name="tah-ar.init.short"/>
+ <GlyphID id="136" name="tah-ar.init.short2"/>
+ <GlyphID id="137" name="zah-ar"/>
+ <GlyphID id="138" name="ain-ar"/>
+ <GlyphID id="139" name="ain-ar.1"/>
+ <GlyphID id="140" name="ain-ar.2"/>
+ <GlyphID id="141" name="ain-ar.3"/>
+ <GlyphID id="142" name="ain-ar.fina"/>
+ <GlyphID id="143" name="ain-ar.medi"/>
+ <GlyphID id="144" name="ain-ar.init"/>
+ <GlyphID id="145" name="ain-ar.init.1"/>
+ <GlyphID id="146" name="ghain-ar"/>
+ <GlyphID id="147" name="feh-ar"/>
+ <GlyphID id="148" name="veh-ar"/>
+ <GlyphID id="149" name="fehDotless-ar"/>
+ <GlyphID id="150" name="fehDotless-ar.1"/>
+ <GlyphID id="151" name="fehDotless-ar.2"/>
+ <GlyphID id="152" name="fehDotless-ar.3"/>
+ <GlyphID id="153" name="fehDotless-ar.fina"/>
+ <GlyphID id="154" name="fehDotless-ar.fina.1"/>
+ <GlyphID id="155" name="fehDotless-ar.fina.2"/>
+ <GlyphID id="156" name="fehDotless-ar.fina.3"/>
+ <GlyphID id="157" name="fehDotless-ar.medi"/>
+ <GlyphID id="158" name="fehDotless-ar.medi.1"/>
+ <GlyphID id="159" name="fehDotless-ar.init"/>
+ <GlyphID id="160" name="fehDotless-ar.init.1"/>
+ <GlyphID id="161" name="fehDotmovedbelow-ar"/>
+ <GlyphID id="162" name="fehAfrican-ar"/>
+ <GlyphID id="163" name="qafDotless-ar"/>
+ <GlyphID id="164" name="qafDotless-ar.fina"/>
+ <GlyphID id="165" name="qaf-ar"/>
+ <GlyphID id="166" name="qafDotabove-ar"/>
+ <GlyphID id="167" name="qafAfrican-ar"/>
+ <GlyphID id="168" name="kaf-ar"/>
+ <GlyphID id="169" name="kaf-ar.1"/>
+ <GlyphID id="170" name="kaf-ar.2"/>
+ <GlyphID id="171" name="kaf-ar.fina"/>
+ <GlyphID id="172" name="kaf-ar.fina.1"/>
+ <GlyphID id="173" name="kaf-ar.fina.2"/>
+ <GlyphID id="174" name="kaf-ar.medi"/>
+ <GlyphID id="175" name="kaf-ar.medi.1"/>
+ <GlyphID id="176" name="kaf-ar.medi.2"/>
+ <GlyphID id="177" name="kaf-ar.init"/>
+ <GlyphID id="178" name="kaf-ar.init.1"/>
+ <GlyphID id="179" name="kaf-ar.init.2"/>
+ <GlyphID id="180" name="keheh-ar"/>
+ <GlyphID id="181" name="gaf-ar"/>
+ <GlyphID id="182" name="lam-ar"/>
+ <GlyphID id="183" name="lam-ar.fina"/>
+ <GlyphID id="184" name="lam-ar.medi"/>
+ <GlyphID id="185" name="lam-ar.medi.lellah"/>
+ <GlyphID id="186" name="lam-ar.medi.short"/>
+ <GlyphID id="187" name="lam-ar.medi.short2"/>
+ <GlyphID id="188" name="lam-ar.medi.yeh"/>
+ <GlyphID id="189" name="lam-ar.init"/>
+ <GlyphID id="190" name="lam-ar.init.hah"/>
+ <GlyphID id="191" name="lam-ar.init.hah2"/>
+ <GlyphID id="192" name="lam-ar.init.lellah"/>
+ <GlyphID id="193" name="lam-ar.init.short"/>
+ <GlyphID id="194" name="lam-ar.init.short2"/>
+ <GlyphID id="195" name="meem-ar"/>
+ <GlyphID id="196" name="meem-ar.1"/>
+ <GlyphID id="197" name="meem-ar.2"/>
+ <GlyphID id="198" name="meem-ar.fina"/>
+ <GlyphID id="199" name="meem-ar.fina.1"/>
+ <GlyphID id="200" name="meem-ar.fina.2"/>
+ <GlyphID id="201" name="meem-ar.medi"/>
+ <GlyphID id="202" name="meem-ar.medi.1"/>
+ <GlyphID id="203" name="meem-ar.init"/>
+ <GlyphID id="204" name="noon-ar"/>
+ <GlyphID id="205" name="noonghunna-ar"/>
+ <GlyphID id="206" name="noonghunna-ar.fina"/>
+ <GlyphID id="207" name="noonAfrican-ar"/>
+ <GlyphID id="208" name="heh-ar"/>
+ <GlyphID id="209" name="heh-ar.1"/>
+ <GlyphID id="210" name="heh-ar.2"/>
+ <GlyphID id="211" name="heh-ar.fina"/>
+ <GlyphID id="212" name="heh-ar.fina.1"/>
+ <GlyphID id="213" name="heh-ar.fina.2"/>
+ <GlyphID id="214" name="heh-ar.medi"/>
+ <GlyphID id="215" name="heh-ar.medi.1"/>
+ <GlyphID id="216" name="heh-ar.medi.2"/>
+ <GlyphID id="217" name="heh-ar.medi.3"/>
+ <GlyphID id="218" name="heh-ar.medi.4"/>
+ <GlyphID id="219" name="heh-ar.medi.5"/>
+ <GlyphID id="220" name="heh-ar.medi.6"/>
+ <GlyphID id="221" name="heh-ar.medi.7"/>
+ <GlyphID id="222" name="heh-ar.init"/>
+ <GlyphID id="223" name="heh-ar.init.1"/>
+ <GlyphID id="224" name="heh-ar.init.2"/>
+ <GlyphID id="225" name="heh-ar.init.3"/>
+ <GlyphID id="226" name="heh-ar.init.4"/>
+ <GlyphID id="227" name="heh-ar.init.5"/>
+ <GlyphID id="228" name="heh-ar.init.6"/>
+ <GlyphID id="229" name="heh-ar.init.7"/>
+ <GlyphID id="230" name="hehgoal-ar"/>
+ <GlyphID id="231" name="hehgoalHamzaabove-ar"/>
+ <GlyphID id="232" name="hehDoachashmee-ar"/>
+ <GlyphID id="233" name="tehMarbuta-ar"/>
+ <GlyphID id="234" name="tehMarbutagoal-ar"/>
+ <GlyphID id="235" name="waw-ar"/>
+ <GlyphID id="236" name="waw-ar.1"/>
+ <GlyphID id="237" name="waw-ar.2"/>
+ <GlyphID id="238" name="waw-ar.3"/>
+ <GlyphID id="239" name="waw-ar.fina"/>
+ <GlyphID id="240" name="waw-ar.fina.1"/>
+ <GlyphID id="241" name="wawHamzaabove-ar"/>
+ <GlyphID id="242" name="alefMaksura-ar"/>
+ <GlyphID id="243" name="alefMaksura-ar.1"/>
+ <GlyphID id="244" name="alefMaksura-ar.2"/>
+ <GlyphID id="245" name="alefMaksura-ar.3"/>
+ <GlyphID id="246" name="alefMaksura-ar.4"/>
+ <GlyphID id="247" name="alefMaksura-ar.5"/>
+ <GlyphID id="248" name="alefMaksura-ar.6"/>
+ <GlyphID id="249" name="alefMaksura-ar.fina"/>
+ <GlyphID id="250" name="alefMaksura-ar.fina.0"/>
+ <GlyphID id="251" name="alefMaksura-ar.fina.1"/>
+ <GlyphID id="252" name="alefMaksura-ar.fina.2"/>
+ <GlyphID id="253" name="alefMaksura-ar.fina.3"/>
+ <GlyphID id="254" name="alefMaksura-ar.fina.4"/>
+ <GlyphID id="255" name="alefMaksura-ar.fina.5"/>
+ <GlyphID id="256" name="alefMaksura-ar.fina.6"/>
+ <GlyphID id="257" name="alefMaksura-ar.fina.tooth"/>
+ <GlyphID id="258" name="yeh-ar"/>
+ <GlyphID id="259" name="yehHamzaabove-ar"/>
+ <GlyphID id="260" name="yeh-farsi"/>
+ <GlyphID id="261" name="yehbarree-ar"/>
+ <GlyphID id="262" name="yehbarreeHamzaabove-ar"/>
+ <GlyphID id="263" name="kashida-ar"/>
+ <GlyphID id="264" name="lam_alef-ar"/>
+ <GlyphID id="265" name="lam_alef-ar.fina"/>
+ <GlyphID id="266" name="lam_alef-ar.1"/>
+ <GlyphID id="267" name="lam_alef-ar.fina.1"/>
+ <GlyphID id="268" name="lam_alef-ar.fina.2"/>
+ <GlyphID id="269" name="lam_alef-ar.fina.3"/>
+ <GlyphID id="270" name="lam_alef-ar.fina.4"/>
+ <GlyphID id="271" name="lam_alef-ar.fina.5"/>
+ <GlyphID id="272" name="lam_alef-ar.2"/>
+ <GlyphID id="273" name="lam_alef-ar.3"/>
+ <GlyphID id="274" name="lam_alef-ar.4"/>
+ <GlyphID id="275" name="lam_alef-ar.5"/>
+ <GlyphID id="276" name="zero"/>
+ <GlyphID id="277" name="zero.numr"/>
+ <GlyphID id="278" name="zero.dnom"/>
+ <GlyphID id="279" name="one"/>
+ <GlyphID id="280" name="one.numr"/>
+ <GlyphID id="281" name="one.dnom"/>
+ <GlyphID id="282" name="two"/>
+ <GlyphID id="283" name="two.numr"/>
+ <GlyphID id="284" name="two.dnom"/>
+ <GlyphID id="285" name="three"/>
+ <GlyphID id="286" name="three.numr"/>
+ <GlyphID id="287" name="three.dnom"/>
+ <GlyphID id="288" name="four"/>
+ <GlyphID id="289" name="four.numr"/>
+ <GlyphID id="290" name="four.dnom"/>
+ <GlyphID id="291" name="five"/>
+ <GlyphID id="292" name="five.numr"/>
+ <GlyphID id="293" name="five.dnom"/>
+ <GlyphID id="294" name="six"/>
+ <GlyphID id="295" name="six.numr"/>
+ <GlyphID id="296" name="six.dnom"/>
+ <GlyphID id="297" name="seven"/>
+ <GlyphID id="298" name="seven.numr"/>
+ <GlyphID id="299" name="seven.dnom"/>
+ <GlyphID id="300" name="eight"/>
+ <GlyphID id="301" name="eight.numr"/>
+ <GlyphID id="302" name="eight.dnom"/>
+ <GlyphID id="303" name="nine"/>
+ <GlyphID id="304" name="nine.numr"/>
+ <GlyphID id="305" name="nine.dnom"/>
+ <GlyphID id="306" name="fraction"/>
+ <GlyphID id="307" name="zero-ar"/>
+ <GlyphID id="308" name="zero-ar.numr"/>
+ <GlyphID id="309" name="zero-ar.dnom"/>
+ <GlyphID id="310" name="one-ar"/>
+ <GlyphID id="311" name="one-ar.numr"/>
+ <GlyphID id="312" name="one-ar.dnom"/>
+ <GlyphID id="313" name="one-ar.osf"/>
+ <GlyphID id="314" name="two-ar"/>
+ <GlyphID id="315" name="two-ar.numr"/>
+ <GlyphID id="316" name="two-ar.dnom"/>
+ <GlyphID id="317" name="two-ar.1"/>
+ <GlyphID id="318" name="two-ar.osf"/>
+ <GlyphID id="319" name="two-ar.osf.1"/>
+ <GlyphID id="320" name="three-ar"/>
+ <GlyphID id="321" name="three-ar.numr"/>
+ <GlyphID id="322" name="three-ar.dnom"/>
+ <GlyphID id="323" name="three-ar.1"/>
+ <GlyphID id="324" name="three-ar.osf"/>
+ <GlyphID id="325" name="three-ar.osf.1"/>
+ <GlyphID id="326" name="four-ar"/>
+ <GlyphID id="327" name="four-ar.numr"/>
+ <GlyphID id="328" name="four-ar.dnom"/>
+ <GlyphID id="329" name="four-ar.1"/>
+ <GlyphID id="330" name="four-ar.2"/>
+ <GlyphID id="331" name="four-ar.osf"/>
+ <GlyphID id="332" name="four-ar.osf.1"/>
+ <GlyphID id="333" name="four-ar.osf.2"/>
+ <GlyphID id="334" name="five-ar"/>
+ <GlyphID id="335" name="five-ar.numr"/>
+ <GlyphID id="336" name="five-ar.dnom"/>
+ <GlyphID id="337" name="six-ar"/>
+ <GlyphID id="338" name="six-ar.numr"/>
+ <GlyphID id="339" name="six-ar.dnom"/>
+ <GlyphID id="340" name="six-ar.1"/>
+ <GlyphID id="341" name="six-ar.osf"/>
+ <GlyphID id="342" name="six-ar.osf.1"/>
+ <GlyphID id="343" name="seven-ar"/>
+ <GlyphID id="344" name="seven-ar.numr"/>
+ <GlyphID id="345" name="seven-ar.dnom"/>
+ <GlyphID id="346" name="seven-ar.1"/>
+ <GlyphID id="347" name="seven-ar.2"/>
+ <GlyphID id="348" name="eight-ar"/>
+ <GlyphID id="349" name="eight-ar.numr"/>
+ <GlyphID id="350" name="eight-ar.dnom"/>
+ <GlyphID id="351" name="eight-ar.1"/>
+ <GlyphID id="352" name="eight-ar.2"/>
+ <GlyphID id="353" name="nine-ar"/>
+ <GlyphID id="354" name="nine-ar.numr"/>
+ <GlyphID id="355" name="nine-ar.dnom"/>
+ <GlyphID id="356" name="nine-ar.osf"/>
+ <GlyphID id="357" name="zero-persian"/>
+ <GlyphID id="358" name="zero-persian.numr"/>
+ <GlyphID id="359" name="zero-persian.dnom"/>
+ <GlyphID id="360" name="one-persian"/>
+ <GlyphID id="361" name="one-persian.numr"/>
+ <GlyphID id="362" name="one-persian.dnom"/>
+ <GlyphID id="363" name="two-persian"/>
+ <GlyphID id="364" name="two-persian.numr"/>
+ <GlyphID id="365" name="two-persian.dnom"/>
+ <GlyphID id="366" name="three-persian"/>
+ <GlyphID id="367" name="three-persian.numr"/>
+ <GlyphID id="368" name="three-persian.dnom"/>
+ <GlyphID id="369" name="four-persian"/>
+ <GlyphID id="370" name="four-persian.numr"/>
+ <GlyphID id="371" name="four-persian.dnom"/>
+ <GlyphID id="372" name="four-persian.urdu"/>
+ <GlyphID id="373" name="five-persian"/>
+ <GlyphID id="374" name="five-persian.numr"/>
+ <GlyphID id="375" name="five-persian.dnom"/>
+ <GlyphID id="376" name="six-persian"/>
+ <GlyphID id="377" name="six-persian.numr"/>
+ <GlyphID id="378" name="six-persian.dnom"/>
+ <GlyphID id="379" name="seven-persian"/>
+ <GlyphID id="380" name="seven-persian.numr"/>
+ <GlyphID id="381" name="seven-persian.dnom"/>
+ <GlyphID id="382" name="seven-persian.urdu"/>
+ <GlyphID id="383" name="eight-persian"/>
+ <GlyphID id="384" name="eight-persian.numr"/>
+ <GlyphID id="385" name="eight-persian.dnom"/>
+ <GlyphID id="386" name="nine-persian"/>
+ <GlyphID id="387" name="nine-persian.numr"/>
+ <GlyphID id="388" name="nine-persian.dnom"/>
+ <GlyphID id="389" name="period"/>
+ <GlyphID id="390" name="comma"/>
+ <GlyphID id="391" name="colon"/>
+ <GlyphID id="392" name="semicolon"/>
+ <GlyphID id="393" name="ellipsis"/>
+ <GlyphID id="394" name="exclam"/>
+ <GlyphID id="395" name="exclamdown"/>
+ <GlyphID id="396" name="question"/>
+ <GlyphID id="397" name="questiondown"/>
+ <GlyphID id="398" name="periodcentered"/>
+ <GlyphID id="399" name="bullet"/>
+ <GlyphID id="400" name="slash"/>
+ <GlyphID id="401" name="backslash"/>
+ <GlyphID id="402" name="parenleft"/>
+ <GlyphID id="403" name="parenright"/>
+ <GlyphID id="404" name="braceleft"/>
+ <GlyphID id="405" name="braceright"/>
+ <GlyphID id="406" name="bracketleft"/>
+ <GlyphID id="407" name="bracketright"/>
+ <GlyphID id="408" name="hyphen"/>
+ <GlyphID id="409" name="endash"/>
+ <GlyphID id="410" name="emdash"/>
+ <GlyphID id="411" name="underscore"/>
+ <GlyphID id="412" name="quotesinglbase"/>
+ <GlyphID id="413" name="quotedblbase"/>
+ <GlyphID id="414" name="quotedblleft"/>
+ <GlyphID id="415" name="quotedblright"/>
+ <GlyphID id="416" name="quoteleft"/>
+ <GlyphID id="417" name="quoteright"/>
+ <GlyphID id="418" name="guillemetleft"/>
+ <GlyphID id="419" name="guillemetright"/>
+ <GlyphID id="420" name="guilsinglleft"/>
+ <GlyphID id="421" name="guilsinglright"/>
+ <GlyphID id="422" name="quotedbl"/>
+ <GlyphID id="423" name="quotesingle"/>
+ <GlyphID id="424" name="fullstop-ar"/>
+ <GlyphID id="425" name="comma-ar"/>
+ <GlyphID id="426" name="semicolon-ar"/>
+ <GlyphID id="427" name="question-ar"/>
+ <GlyphID id="428" name="space.alt"/>
+ <GlyphID id="429" name="space.latn"/>
+ <GlyphID id="430" name="percent"/>
+ <GlyphID id="431" name="percent-ar"/>
+ <GlyphID id="432" name="space"/>
+ <GlyphID id="433" name="tahabove-ar"/>
+ <GlyphID id="434" name="dotabove-ar"/>
+ <GlyphID id="435" name="dotabove-ar.alt1"/>
+ <GlyphID id="436" name="dotbelow-ar"/>
+ <GlyphID id="437" name="dotbelow-ar.alt1"/>
+ <GlyphID id="438" name="twodotsverticalabove-ar"/>
+ <GlyphID id="439" name="twodotsverticalabove-ar.alt1"/>
+ <GlyphID id="440" name="twodotsverticalbelow-ar"/>
+ <GlyphID id="441" name="twodotsverticalbelow-ar.alt1"/>
+ <GlyphID id="442" name="twodotshorizontalabove-ar"/>
+ <GlyphID id="443" name="twodotshorizontalabove-ar.alt1"/>
+ <GlyphID id="444" name="twodotshorizontalbelow-ar"/>
+ <GlyphID id="445" name="twodotshorizontalbelow-ar.alt1"/>
+ <GlyphID id="446" name="threedotsdownbelow-ar"/>
+ <GlyphID id="447" name="threedotsdownbelow-ar.alt1"/>
+ <GlyphID id="448" name="threedotsupabove-ar"/>
+ <GlyphID id="449" name="threedotsupabove-ar.alt1"/>
+ <GlyphID id="450" name="hamzaabove-ar"/>
+ <GlyphID id="451" name="hamzabelow-ar"/>
+ <GlyphID id="452" name="empty"/>
+ </GlyphOrder>
+
+ <head>
+ <!-- Most of this table will be recalculated by the compiler -->
+ <tableVersion value="1.0"/>
+ <fontRevision value="2.0"/>
+ <checkSumAdjustment value="0x6142072e"/>
+ <magicNumber value="0x5f0f3cf5"/>
+ <flags value="00000000 00000011"/>
+ <unitsPerEm value="750"/>
+ <created value="Tue Mar 17 02:09:41 2020"/>
+ <modified value="Thu Aug 19 18:39:56 2021"/>
+ <xMin value="-242"/>
+ <yMin value="-250"/>
+ <xMax value="750"/>
+ <yMax value="561"/>
+ <macStyle value="00000000 00000000"/>
+ <lowestRecPPEM value="3"/>
+ <fontDirectionHint value="2"/>
+ <indexToLocFormat value="0"/>
+ <glyphDataFormat value="0"/>
+ </head>
+
+ <hhea>
+ <tableVersion value="0x00010000"/>
+ <ascent value="600"/>
+ <descent value="-250"/>
+ <lineGap value="0"/>
+ <advanceWidthMax value="750"/>
+ <minLeftSideBearing value="-242"/>
+ <minRightSideBearing value="-525"/>
+ <xMaxExtent value="750"/>
+ <caretSlopeRise value="1"/>
+ <caretSlopeRun value="0"/>
+ <caretOffset value="0"/>
+ <reserved0 value="0"/>
+ <reserved1 value="0"/>
+ <reserved2 value="0"/>
+ <reserved3 value="0"/>
+ <metricDataFormat value="0"/>
+ <numberOfHMetrics value="433"/>
+ </hhea>
+
+ <maxp>
+ <tableVersion value="0x5000"/>
+ <numGlyphs value="453"/>
+ </maxp>
+
+ <OS_2>
+ <!-- The fields 'usFirstCharIndex' and 'usLastCharIndex'
+ will be recalculated by the compiler -->
+ <version value="4"/>
+ <xAvgCharWidth value="305"/>
+ <usWeightClass value="400"/>
+ <usWidthClass value="5"/>
+ <fsType value="00000000 00000000"/>
+ <ySubscriptXSize value="0"/>
+ <ySubscriptYSize value="0"/>
+ <ySubscriptXOffset value="0"/>
+ <ySubscriptYOffset value="0"/>
+ <ySuperscriptXSize value="0"/>
+ <ySuperscriptYSize value="0"/>
+ <ySuperscriptXOffset value="0"/>
+ <ySuperscriptYOffset value="0"/>
+ <yStrikeoutSize value="0"/>
+ <yStrikeoutPosition value="0"/>
+ <sFamilyClass value="0"/>
+ <panose>
+ <bFamilyType value="0"/>
+ <bSerifStyle value="0"/>
+ <bWeight value="0"/>
+ <bProportion value="0"/>
+ <bContrast value="0"/>
+ <bStrokeVariation value="0"/>
+ <bArmStyle value="0"/>
+ <bLetterForm value="0"/>
+ <bMidline value="0"/>
+ <bXHeight value="0"/>
+ </panose>
+ <ulUnicodeRange1 value="00000000 00000000 00100000 00000001"/>
+ <ulUnicodeRange2 value="00000000 00000000 00000000 00000000"/>
+ <ulUnicodeRange3 value="00000000 00000000 00000000 00000000"/>
+ <ulUnicodeRange4 value="00000000 00000000 00000000 00000000"/>
+ <achVendID value="ALIF"/>
+ <fsSelection value="00000000 01000000"/>
+ <usFirstCharIndex value="32"/>
+ <usLastCharIndex value="8260"/>
+ <sTypoAscender value="600"/>
+ <sTypoDescender value="-250"/>
+ <sTypoLineGap value="0"/>
+ <usWinAscent value="600"/>
+ <usWinDescent value="250"/>
+ <ulCodePageRange1 value="00000000 00000000 00000000 01000000"/>
+ <ulCodePageRange2 value="00000000 00000000 00000000 00000000"/>
+ <sxHeight value="230"/>
+ <sCapHeight value="560"/>
+ <usDefaultChar value="0"/>
+ <usBreakChar value="32"/>
+ <usMaxContext value="43"/>
+ </OS_2>
+
+ <name>
+ <namerecord nameID="0" platformID="3" platEncID="1" langID="0x409">
+ Copyright 2021 The Qahiri Project Authors (github.com/alif-type/qahiri).
+ </namerecord>
+ <namerecord nameID="1" platformID="3" platEncID="1" langID="0x409">
+ Qahiri
+ </namerecord>
+ <namerecord nameID="2" platformID="3" platEncID="1" langID="0x409">
+ Regular
+ </namerecord>
+ <namerecord nameID="3" platformID="3" platEncID="1" langID="0x409">
+ 2.00;ALIF;Qahiri-Regular
+ </namerecord>
+ <namerecord nameID="4" platformID="3" platEncID="1" langID="0x409">
+ Qahiri Regular
+ </namerecord>
+ <namerecord nameID="5" platformID="3" platEncID="1" langID="0x409">
+ Version 2.00
+ </namerecord>
+ <namerecord nameID="6" platformID="3" platEncID="1" langID="0x409">
+ Qahiri-Regular
+ </namerecord>
+ <namerecord nameID="8" platformID="3" platEncID="1" langID="0x409">
+ Alif Type
+ </namerecord>
+ <namerecord nameID="9" platformID="3" platEncID="1" langID="0x409">
+ Khaled Hosny
+ </namerecord>
+ <namerecord nameID="10" platformID="3" platEncID="1" langID="0x409">
+ Qahiri is a Kufic typeface based on the modernized and regularized old manuscript Kufic calligraphy style of the late master of Arabic calligraphy Mohammad Abdul Qadir.
+ </namerecord>
+ <namerecord nameID="11" platformID="3" platEncID="1" langID="0x409">
+ https://aliftype.com
+ </namerecord>
+ <namerecord nameID="12" platformID="3" platEncID="1" langID="0x409">
+ https://aliftype.com
+ </namerecord>
+ <namerecord nameID="13" platformID="3" platEncID="1" langID="0x409">
+ This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: https://scripts.sil.org/OFL
+ </namerecord>
+ <namerecord nameID="14" platformID="3" platEncID="1" langID="0x409">
+ https://scripts.sil.org/OFL
+ </namerecord>
+ <namerecord nameID="19" platformID="3" platEncID="1" langID="0x409">
+ صف خلق خود كمثل الشمس إذ بزغت يحظى الضجيع بها نجلاء معطار
+ </namerecord>
+ <namerecord nameID="256" platformID="3" platEncID="1" langID="0x409">
+ Dot-less Letter Forms
+ </namerecord>
+ <namerecord nameID="257" platformID="3" platEncID="1" langID="0x409">
+ Rounded Dots
+ </namerecord>
+ <namerecord nameID="256" platformID="3" platEncID="1" langID="0xc01">
+ حروف مهملة (بلا نقاط)
+ </namerecord>
+ <namerecord nameID="257" platformID="3" platEncID="1" langID="0xc01">
+ نقاط مستديرة
+ </namerecord>
+ </name>
+
+ <cmap>
+ <tableVersion version="0"/>
+ <cmap_format_4 platformID="0" platEncID="3" language="0">
+ <map code="0x20" name="space"/><!-- SPACE -->
+ <map code="0x21" name="exclam"/><!-- EXCLAMATION MARK -->
+ <map code="0x22" name="quotedbl"/><!-- QUOTATION MARK -->
+ <map code="0x25" name="percent"/><!-- PERCENT SIGN -->
+ <map code="0x27" name="quotesingle"/><!-- APOSTROPHE -->
+ <map code="0x28" name="parenleft"/><!-- LEFT PARENTHESIS -->
+ <map code="0x29" name="parenright"/><!-- RIGHT PARENTHESIS -->
+ <map code="0x2c" name="comma"/><!-- COMMA -->
+ <map code="0x2d" name="hyphen"/><!-- HYPHEN-MINUS -->
+ <map code="0x2e" name="period"/><!-- FULL STOP -->
+ <map code="0x2f" name="slash"/><!-- SOLIDUS -->
+ <map code="0x30" name="zero"/><!-- DIGIT ZERO -->
+ <map code="0x31" name="one"/><!-- DIGIT ONE -->
+ <map code="0x32" name="two"/><!-- DIGIT TWO -->
+ <map code="0x33" name="three"/><!-- DIGIT THREE -->
+ <map code="0x34" name="four"/><!-- DIGIT FOUR -->
+ <map code="0x35" name="five"/><!-- DIGIT FIVE -->
+ <map code="0x36" name="six"/><!-- DIGIT SIX -->
+ <map code="0x37" name="seven"/><!-- DIGIT SEVEN -->
+ <map code="0x38" name="eight"/><!-- DIGIT EIGHT -->
+ <map code="0x39" name="nine"/><!-- DIGIT NINE -->
+ <map code="0x3a" name="colon"/><!-- COLON -->
+ <map code="0x3b" name="semicolon"/><!-- SEMICOLON -->
+ <map code="0x3f" name="question"/><!-- QUESTION MARK -->
+ <map code="0x41" name="a"/><!-- LATIN CAPITAL LETTER A -->
+ <map code="0x42" name="b"/><!-- LATIN CAPITAL LETTER B -->
+ <map code="0x43" name="c"/><!-- LATIN CAPITAL LETTER C -->
+ <map code="0x44" name="d"/><!-- LATIN CAPITAL LETTER D -->
+ <map code="0x45" name="e"/><!-- LATIN CAPITAL LETTER E -->
+ <map code="0x46" name="f"/><!-- LATIN CAPITAL LETTER F -->
+ <map code="0x47" name="g"/><!-- LATIN CAPITAL LETTER G -->
+ <map code="0x48" name="h"/><!-- LATIN CAPITAL LETTER H -->
+ <map code="0x49" name="i"/><!-- LATIN CAPITAL LETTER I -->
+ <map code="0x4a" name="j"/><!-- LATIN CAPITAL LETTER J -->
+ <map code="0x4b" name="k"/><!-- LATIN CAPITAL LETTER K -->
+ <map code="0x4c" name="l"/><!-- LATIN CAPITAL LETTER L -->
+ <map code="0x4d" name="m"/><!-- LATIN CAPITAL LETTER M -->
+ <map code="0x4e" name="n"/><!-- LATIN CAPITAL LETTER N -->
+ <map code="0x4f" name="o"/><!-- LATIN CAPITAL LETTER O -->
+ <map code="0x50" name="p"/><!-- LATIN CAPITAL LETTER P -->
+ <map code="0x51" name="q"/><!-- LATIN CAPITAL LETTER Q -->
+ <map code="0x52" name="r"/><!-- LATIN CAPITAL LETTER R -->
+ <map code="0x53" name="s"/><!-- LATIN CAPITAL LETTER S -->
+ <map code="0x54" name="t"/><!-- LATIN CAPITAL LETTER T -->
+ <map code="0x55" name="u"/><!-- LATIN CAPITAL LETTER U -->
+ <map code="0x56" name="v"/><!-- LATIN CAPITAL LETTER V -->
+ <map code="0x57" name="w"/><!-- LATIN CAPITAL LETTER W -->
+ <map code="0x58" name="x"/><!-- LATIN CAPITAL LETTER X -->
+ <map code="0x59" name="y"/><!-- LATIN CAPITAL LETTER Y -->
+ <map code="0x5a" name="z"/><!-- LATIN CAPITAL LETTER Z -->
+ <map code="0x5b" name="bracketleft"/><!-- LEFT SQUARE BRACKET -->
+ <map code="0x5c" name="backslash"/><!-- REVERSE SOLIDUS -->
+ <map code="0x5d" name="bracketright"/><!-- RIGHT SQUARE BRACKET -->
+ <map code="0x5f" name="underscore"/><!-- LOW LINE -->
+ <map code="0x61" name="a"/><!-- LATIN SMALL LETTER A -->
+ <map code="0x62" name="b"/><!-- LATIN SMALL LETTER B -->
+ <map code="0x63" name="c"/><!-- LATIN SMALL LETTER C -->
+ <map code="0x64" name="d"/><!-- LATIN SMALL LETTER D -->
+ <map code="0x65" name="e"/><!-- LATIN SMALL LETTER E -->
+ <map code="0x66" name="f"/><!-- LATIN SMALL LETTER F -->
+ <map code="0x67" name="g"/><!-- LATIN SMALL LETTER G -->
+ <map code="0x68" name="h"/><!-- LATIN SMALL LETTER H -->
+ <map code="0x69" name="i"/><!-- LATIN SMALL LETTER I -->
+ <map code="0x6a" name="j"/><!-- LATIN SMALL LETTER J -->
+ <map code="0x6b" name="k"/><!-- LATIN SMALL LETTER K -->
+ <map code="0x6c" name="l"/><!-- LATIN SMALL LETTER L -->
+ <map code="0x6d" name="m"/><!-- LATIN SMALL LETTER M -->
+ <map code="0x6e" name="n"/><!-- LATIN SMALL LETTER N -->
+ <map code="0x6f" name="o"/><!-- LATIN SMALL LETTER O -->
+ <map code="0x70" name="p"/><!-- LATIN SMALL LETTER P -->
+ <map code="0x71" name="q"/><!-- LATIN SMALL LETTER Q -->
+ <map code="0x72" name="r"/><!-- LATIN SMALL LETTER R -->
+ <map code="0x73" name="s"/><!-- LATIN SMALL LETTER S -->
+ <map code="0x74" name="t"/><!-- LATIN SMALL LETTER T -->
+ <map code="0x75" name="u"/><!-- LATIN SMALL LETTER U -->
+ <map code="0x76" name="v"/><!-- LATIN SMALL LETTER V -->
+ <map code="0x77" name="w"/><!-- LATIN SMALL LETTER W -->
+ <map code="0x78" name="x"/><!-- LATIN SMALL LETTER X -->
+ <map code="0x79" name="y"/><!-- LATIN SMALL LETTER Y -->
+ <map code="0x7a" name="z"/><!-- LATIN SMALL LETTER Z -->
+ <map code="0x7b" name="braceleft"/><!-- LEFT CURLY BRACKET -->
+ <map code="0x7d" name="braceright"/><!-- RIGHT CURLY BRACKET -->
+ <map code="0xa0" name="space"/><!-- NO-BREAK SPACE -->
+ <map code="0xa1" name="exclamdown"/><!-- INVERTED EXCLAMATION MARK -->
+ <map code="0xab" name="guillemetleft"/><!-- LEFT-POINTING DOUBLE ANGLE QUOTATION MARK -->
+ <map code="0xad" name="hyphen"/><!-- SOFT HYPHEN -->
+ <map code="0xb7" name="periodcentered"/><!-- MIDDLE DOT -->
+ <map code="0xbb" name="guillemetright"/><!-- RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -->
+ <map code="0xbf" name="questiondown"/><!-- INVERTED QUESTION MARK -->
+ <map code="0x60c" name="comma-ar"/><!-- ARABIC COMMA -->
+ <map code="0x615" name="tahabove-ar"/><!-- ARABIC SMALL HIGH TAH -->
+ <map code="0x61b" name="semicolon-ar"/><!-- ARABIC SEMICOLON -->
+ <map code="0x61f" name="question-ar"/><!-- ARABIC QUESTION MARK -->
+ <map code="0x621" name="hamza-ar"/><!-- ARABIC LETTER HAMZA -->
+ <map code="0x622" name="alefMadda-ar"/><!-- ARABIC LETTER ALEF WITH MADDA ABOVE -->
+ <map code="0x623" name="alefHamzaabove-ar"/><!-- ARABIC LETTER ALEF WITH HAMZA ABOVE -->
+ <map code="0x624" name="wawHamzaabove-ar"/><!-- ARABIC LETTER WAW WITH HAMZA ABOVE -->
+ <map code="0x625" name="alefHamzabelow-ar"/><!-- ARABIC LETTER ALEF WITH HAMZA BELOW -->
+ <map code="0x626" name="yehHamzaabove-ar"/><!-- ARABIC LETTER YEH WITH HAMZA ABOVE -->
+ <map code="0x627" name="alef-ar"/><!-- ARABIC LETTER ALEF -->
+ <map code="0x628" name="beh-ar"/><!-- ARABIC LETTER BEH -->
+ <map code="0x629" name="tehMarbuta-ar"/><!-- ARABIC LETTER TEH MARBUTA -->
+ <map code="0x62a" name="teh-ar"/><!-- ARABIC LETTER TEH -->
+ <map code="0x62b" name="theh-ar"/><!-- ARABIC LETTER THEH -->
+ <map code="0x62c" name="jeem-ar"/><!-- ARABIC LETTER JEEM -->
+ <map code="0x62d" name="hah-ar"/><!-- ARABIC LETTER HAH -->
+ <map code="0x62e" name="khah-ar"/><!-- ARABIC LETTER KHAH -->
+ <map code="0x62f" name="dal-ar"/><!-- ARABIC LETTER DAL -->
+ <map code="0x630" name="thal-ar"/><!-- ARABIC LETTER THAL -->
+ <map code="0x631" name="reh-ar"/><!-- ARABIC LETTER REH -->
+ <map code="0x632" name="zain-ar"/><!-- ARABIC LETTER ZAIN -->
+ <map code="0x633" name="seen-ar"/><!-- ARABIC LETTER SEEN -->
+ <map code="0x634" name="sheen-ar"/><!-- ARABIC LETTER SHEEN -->
+ <map code="0x635" name="sad-ar"/><!-- ARABIC LETTER SAD -->
+ <map code="0x636" name="dad-ar"/><!-- ARABIC LETTER DAD -->
+ <map code="0x637" name="tah-ar"/><!-- ARABIC LETTER TAH -->
+ <map code="0x638" name="zah-ar"/><!-- ARABIC LETTER ZAH -->
+ <map code="0x639" name="ain-ar"/><!-- ARABIC LETTER AIN -->
+ <map code="0x63a" name="ghain-ar"/><!-- ARABIC LETTER GHAIN -->
+ <map code="0x640" name="kashida-ar"/><!-- ARABIC TATWEEL -->
+ <map code="0x641" name="feh-ar"/><!-- ARABIC LETTER FEH -->
+ <map code="0x642" name="qaf-ar"/><!-- ARABIC LETTER QAF -->
+ <map code="0x643" name="kaf-ar"/><!-- ARABIC LETTER KAF -->
+ <map code="0x644" name="lam-ar"/><!-- ARABIC LETTER LAM -->
+ <map code="0x645" name="meem-ar"/><!-- ARABIC LETTER MEEM -->
+ <map code="0x646" name="noon-ar"/><!-- ARABIC LETTER NOON -->
+ <map code="0x647" name="heh-ar"/><!-- ARABIC LETTER HEH -->
+ <map code="0x648" name="waw-ar"/><!-- ARABIC LETTER WAW -->
+ <map code="0x649" name="alefMaksura-ar"/><!-- ARABIC LETTER ALEF MAKSURA -->
+ <map code="0x64a" name="yeh-ar"/><!-- ARABIC LETTER YEH -->
+ <map code="0x654" name="hamzaabove-ar"/><!-- ARABIC HAMZA ABOVE -->
+ <map code="0x655" name="hamzabelow-ar"/><!-- ARABIC HAMZA BELOW -->
+ <map code="0x660" name="zero-ar"/><!-- ARABIC-INDIC DIGIT ZERO -->
+ <map code="0x661" name="one-ar"/><!-- ARABIC-INDIC DIGIT ONE -->
+ <map code="0x662" name="two-ar"/><!-- ARABIC-INDIC DIGIT TWO -->
+ <map code="0x663" name="three-ar"/><!-- ARABIC-INDIC DIGIT THREE -->
+ <map code="0x664" name="four-ar"/><!-- ARABIC-INDIC DIGIT FOUR -->
+ <map code="0x665" name="five-ar"/><!-- ARABIC-INDIC DIGIT FIVE -->
+ <map code="0x666" name="six-ar"/><!-- ARABIC-INDIC DIGIT SIX -->
+ <map code="0x667" name="seven-ar"/><!-- ARABIC-INDIC DIGIT SEVEN -->
+ <map code="0x668" name="eight-ar"/><!-- ARABIC-INDIC DIGIT EIGHT -->
+ <map code="0x669" name="nine-ar"/><!-- ARABIC-INDIC DIGIT NINE -->
+ <map code="0x66a" name="percent-ar"/><!-- ARABIC PERCENT SIGN -->
+ <map code="0x66e" name="behDotless-ar"/><!-- ARABIC LETTER DOTLESS BEH -->
+ <map code="0x66f" name="qafDotless-ar"/><!-- ARABIC LETTER DOTLESS QAF -->
+ <map code="0x671" name="alefWasla-ar"/><!-- ARABIC LETTER ALEF WASLA -->
+ <map code="0x679" name="tteh-ar"/><!-- ARABIC LETTER TTEH -->
+ <map code="0x67e" name="peh-ar"/><!-- ARABIC LETTER PEH -->
+ <map code="0x686" name="tcheh-ar"/><!-- ARABIC LETTER TCHEH -->
+ <map code="0x688" name="ddal-ar"/><!-- ARABIC LETTER DDAL -->
+ <map code="0x691" name="rreh-ar"/><!-- ARABIC LETTER RREH -->
+ <map code="0x698" name="jeh-ar"/><!-- ARABIC LETTER JEH -->
+ <map code="0x6a1" name="fehDotless-ar"/><!-- ARABIC LETTER DOTLESS FEH -->
+ <map code="0x6a2" name="fehDotmovedbelow-ar"/><!-- ARABIC LETTER FEH WITH DOT MOVED BELOW -->
+ <map code="0x6a4" name="veh-ar"/><!-- ARABIC LETTER VEH -->
+ <map code="0x6a7" name="qafDotabove-ar"/><!-- ARABIC LETTER QAF WITH DOT ABOVE -->
+ <map code="0x6a9" name="keheh-ar"/><!-- ARABIC LETTER KEHEH -->
+ <map code="0x6af" name="gaf-ar"/><!-- ARABIC LETTER GAF -->
+ <map code="0x6ba" name="noonghunna-ar"/><!-- ARABIC LETTER NOON GHUNNA -->
+ <map code="0x6be" name="hehDoachashmee-ar"/><!-- ARABIC LETTER HEH DOACHASHMEE -->
+ <map code="0x6c1" name="hehgoal-ar"/><!-- ARABIC LETTER HEH GOAL -->
+ <map code="0x6c2" name="hehgoalHamzaabove-ar"/><!-- ARABIC LETTER HEH GOAL WITH HAMZA ABOVE -->
+ <map code="0x6c3" name="tehMarbutagoal-ar"/><!-- ARABIC LETTER TEH MARBUTA GOAL -->
+ <map code="0x6cc" name="yeh-farsi"/><!-- ARABIC LETTER FARSI YEH -->
+ <map code="0x6d2" name="yehbarree-ar"/><!-- ARABIC LETTER YEH BARREE -->
+ <map code="0x6d3" name="yehbarreeHamzaabove-ar"/><!-- ARABIC LETTER YEH BARREE WITH HAMZA ABOVE -->
+ <map code="0x6d4" name="fullstop-ar"/><!-- ARABIC FULL STOP -->
+ <map code="0x6f0" name="zero-persian"/><!-- EXTENDED ARABIC-INDIC DIGIT ZERO -->
+ <map code="0x6f1" name="one-persian"/><!-- EXTENDED ARABIC-INDIC DIGIT ONE -->
+ <map code="0x6f2" name="two-persian"/><!-- EXTENDED ARABIC-INDIC DIGIT TWO -->
+ <map code="0x6f3" name="three-persian"/><!-- EXTENDED ARABIC-INDIC DIGIT THREE -->
+ <map code="0x6f4" name="four-persian"/><!-- EXTENDED ARABIC-INDIC DIGIT FOUR -->
+ <map code="0x6f5" name="five-persian"/><!-- EXTENDED ARABIC-INDIC DIGIT FIVE -->
+ <map code="0x6f6" name="six-persian"/><!-- EXTENDED ARABIC-INDIC DIGIT SIX -->
+ <map code="0x6f7" name="seven-persian"/><!-- EXTENDED ARABIC-INDIC DIGIT SEVEN -->
+ <map code="0x6f8" name="eight-persian"/><!-- EXTENDED ARABIC-INDIC DIGIT EIGHT -->
+ <map code="0x6f9" name="nine-persian"/><!-- EXTENDED ARABIC-INDIC DIGIT NINE -->
+ <map code="0x8bb" name="fehAfrican-ar"/><!-- ARABIC LETTER AFRICAN FEH -->
+ <map code="0x8bc" name="qafAfrican-ar"/><!-- ARABIC LETTER AFRICAN QAF -->
+ <map code="0x8bd" name="noonAfrican-ar"/><!-- ARABIC LETTER AFRICAN NOON -->
+ <map code="0x2010" name="hyphen"/><!-- HYPHEN -->
+ <map code="0x2011" name="hyphen"/><!-- NON-BREAKING HYPHEN -->
+ <map code="0x2013" name="endash"/><!-- EN DASH -->
+ <map code="0x2014" name="emdash"/><!-- EM DASH -->
+ <map code="0x2018" name="quoteleft"/><!-- LEFT SINGLE QUOTATION MARK -->
+ <map code="0x2019" name="quoteright"/><!-- RIGHT SINGLE QUOTATION MARK -->
+ <map code="0x201a" name="quotesinglbase"/><!-- SINGLE LOW-9 QUOTATION MARK -->
+ <map code="0x201c" name="quotedblleft"/><!-- LEFT DOUBLE QUOTATION MARK -->
+ <map code="0x201d" name="quotedblright"/><!-- RIGHT DOUBLE QUOTATION MARK -->
+ <map code="0x201e" name="quotedblbase"/><!-- DOUBLE LOW-9 QUOTATION MARK -->
+ <map code="0x2022" name="bullet"/><!-- BULLET -->
+ <map code="0x2026" name="ellipsis"/><!-- HORIZONTAL ELLIPSIS -->
+ <map code="0x2039" name="guilsinglleft"/><!-- SINGLE LEFT-POINTING ANGLE QUOTATION MARK -->
+ <map code="0x203a" name="guilsinglright"/><!-- SINGLE RIGHT-POINTING ANGLE QUOTATION MARK -->
+ <map code="0x2044" name="fraction"/><!-- FRACTION SLASH -->
+ </cmap_format_4>
+ <cmap_format_4 platformID="3" platEncID="1" language="0">
+ <map code="0x20" name="space"/><!-- SPACE -->
+ <map code="0x21" name="exclam"/><!-- EXCLAMATION MARK -->
+ <map code="0x22" name="quotedbl"/><!-- QUOTATION MARK -->
+ <map code="0x25" name="percent"/><!-- PERCENT SIGN -->
+ <map code="0x27" name="quotesingle"/><!-- APOSTROPHE -->
+ <map code="0x28" name="parenleft"/><!-- LEFT PARENTHESIS -->
+ <map code="0x29" name="parenright"/><!-- RIGHT PARENTHESIS -->
+ <map code="0x2c" name="comma"/><!-- COMMA -->
+ <map code="0x2d" name="hyphen"/><!-- HYPHEN-MINUS -->
+ <map code="0x2e" name="period"/><!-- FULL STOP -->
+ <map code="0x2f" name="slash"/><!-- SOLIDUS -->
+ <map code="0x30" name="zero"/><!-- DIGIT ZERO -->
+ <map code="0x31" name="one"/><!-- DIGIT ONE -->
+ <map code="0x32" name="two"/><!-- DIGIT TWO -->
+ <map code="0x33" name="three"/><!-- DIGIT THREE -->
+ <map code="0x34" name="four"/><!-- DIGIT FOUR -->
+ <map code="0x35" name="five"/><!-- DIGIT FIVE -->
+ <map code="0x36" name="six"/><!-- DIGIT SIX -->
+ <map code="0x37" name="seven"/><!-- DIGIT SEVEN -->
+ <map code="0x38" name="eight"/><!-- DIGIT EIGHT -->
+ <map code="0x39" name="nine"/><!-- DIGIT NINE -->
+ <map code="0x3a" name="colon"/><!-- COLON -->
+ <map code="0x3b" name="semicolon"/><!-- SEMICOLON -->
+ <map code="0x3f" name="question"/><!-- QUESTION MARK -->
+ <map code="0x41" name="a"/><!-- LATIN CAPITAL LETTER A -->
+ <map code="0x42" name="b"/><!-- LATIN CAPITAL LETTER B -->
+ <map code="0x43" name="c"/><!-- LATIN CAPITAL LETTER C -->
+ <map code="0x44" name="d"/><!-- LATIN CAPITAL LETTER D -->
+ <map code="0x45" name="e"/><!-- LATIN CAPITAL LETTER E -->
+ <map code="0x46" name="f"/><!-- LATIN CAPITAL LETTER F -->
+ <map code="0x47" name="g"/><!-- LATIN CAPITAL LETTER G -->
+ <map code="0x48" name="h"/><!-- LATIN CAPITAL LETTER H -->
+ <map code="0x49" name="i"/><!-- LATIN CAPITAL LETTER I -->
+ <map code="0x4a" name="j"/><!-- LATIN CAPITAL LETTER J -->
+ <map code="0x4b" name="k"/><!-- LATIN CAPITAL LETTER K -->
+ <map code="0x4c" name="l"/><!-- LATIN CAPITAL LETTER L -->
+ <map code="0x4d" name="m"/><!-- LATIN CAPITAL LETTER M -->
+ <map code="0x4e" name="n"/><!-- LATIN CAPITAL LETTER N -->
+ <map code="0x4f" name="o"/><!-- LATIN CAPITAL LETTER O -->
+ <map code="0x50" name="p"/><!-- LATIN CAPITAL LETTER P -->
+ <map code="0x51" name="q"/><!-- LATIN CAPITAL LETTER Q -->
+ <map code="0x52" name="r"/><!-- LATIN CAPITAL LETTER R -->
+ <map code="0x53" name="s"/><!-- LATIN CAPITAL LETTER S -->
+ <map code="0x54" name="t"/><!-- LATIN CAPITAL LETTER T -->
+ <map code="0x55" name="u"/><!-- LATIN CAPITAL LETTER U -->
+ <map code="0x56" name="v"/><!-- LATIN CAPITAL LETTER V -->
+ <map code="0x57" name="w"/><!-- LATIN CAPITAL LETTER W -->
+ <map code="0x58" name="x"/><!-- LATIN CAPITAL LETTER X -->
+ <map code="0x59" name="y"/><!-- LATIN CAPITAL LETTER Y -->
+ <map code="0x5a" name="z"/><!-- LATIN CAPITAL LETTER Z -->
+ <map code="0x5b" name="bracketleft"/><!-- LEFT SQUARE BRACKET -->
+ <map code="0x5c" name="backslash"/><!-- REVERSE SOLIDUS -->
+ <map code="0x5d" name="bracketright"/><!-- RIGHT SQUARE BRACKET -->
+ <map code="0x5f" name="underscore"/><!-- LOW LINE -->
+ <map code="0x61" name="a"/><!-- LATIN SMALL LETTER A -->
+ <map code="0x62" name="b"/><!-- LATIN SMALL LETTER B -->
+ <map code="0x63" name="c"/><!-- LATIN SMALL LETTER C -->
+ <map code="0x64" name="d"/><!-- LATIN SMALL LETTER D -->
+ <map code="0x65" name="e"/><!-- LATIN SMALL LETTER E -->
+ <map code="0x66" name="f"/><!-- LATIN SMALL LETTER F -->
+ <map code="0x67" name="g"/><!-- LATIN SMALL LETTER G -->
+ <map code="0x68" name="h"/><!-- LATIN SMALL LETTER H -->
+ <map code="0x69" name="i"/><!-- LATIN SMALL LETTER I -->
+ <map code="0x6a" name="j"/><!-- LATIN SMALL LETTER J -->
+ <map code="0x6b" name="k"/><!-- LATIN SMALL LETTER K -->
+ <map code="0x6c" name="l"/><!-- LATIN SMALL LETTER L -->
+ <map code="0x6d" name="m"/><!-- LATIN SMALL LETTER M -->
+ <map code="0x6e" name="n"/><!-- LATIN SMALL LETTER N -->
+ <map code="0x6f" name="o"/><!-- LATIN SMALL LETTER O -->
+ <map code="0x70" name="p"/><!-- LATIN SMALL LETTER P -->
+ <map code="0x71" name="q"/><!-- LATIN SMALL LETTER Q -->
+ <map code="0x72" name="r"/><!-- LATIN SMALL LETTER R -->
+ <map code="0x73" name="s"/><!-- LATIN SMALL LETTER S -->
+ <map code="0x74" name="t"/><!-- LATIN SMALL LETTER T -->
+ <map code="0x75" name="u"/><!-- LATIN SMALL LETTER U -->
+ <map code="0x76" name="v"/><!-- LATIN SMALL LETTER V -->
+ <map code="0x77" name="w"/><!-- LATIN SMALL LETTER W -->
+ <map code="0x78" name="x"/><!-- LATIN SMALL LETTER X -->
+ <map code="0x79" name="y"/><!-- LATIN SMALL LETTER Y -->
+ <map code="0x7a" name="z"/><!-- LATIN SMALL LETTER Z -->
+ <map code="0x7b" name="braceleft"/><!-- LEFT CURLY BRACKET -->
+ <map code="0x7d" name="braceright"/><!-- RIGHT CURLY BRACKET -->
+ <map code="0xa0" name="space"/><!-- NO-BREAK SPACE -->
+ <map code="0xa1" name="exclamdown"/><!-- INVERTED EXCLAMATION MARK -->
+ <map code="0xab" name="guillemetleft"/><!-- LEFT-POINTING DOUBLE ANGLE QUOTATION MARK -->
+ <map code="0xad" name="hyphen"/><!-- SOFT HYPHEN -->
+ <map code="0xb7" name="periodcentered"/><!-- MIDDLE DOT -->
+ <map code="0xbb" name="guillemetright"/><!-- RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK -->
+ <map code="0xbf" name="questiondown"/><!-- INVERTED QUESTION MARK -->
+ <map code="0x60c" name="comma-ar"/><!-- ARABIC COMMA -->
+ <map code="0x615" name="tahabove-ar"/><!-- ARABIC SMALL HIGH TAH -->
+ <map code="0x61b" name="semicolon-ar"/><!-- ARABIC SEMICOLON -->
+ <map code="0x61f" name="question-ar"/><!-- ARABIC QUESTION MARK -->
+ <map code="0x621" name="hamza-ar"/><!-- ARABIC LETTER HAMZA -->
+ <map code="0x622" name="alefMadda-ar"/><!-- ARABIC LETTER ALEF WITH MADDA ABOVE -->
+ <map code="0x623" name="alefHamzaabove-ar"/><!-- ARABIC LETTER ALEF WITH HAMZA ABOVE -->
+ <map code="0x624" name="wawHamzaabove-ar"/><!-- ARABIC LETTER WAW WITH HAMZA ABOVE -->
+ <map code="0x625" name="alefHamzabelow-ar"/><!-- ARABIC LETTER ALEF WITH HAMZA BELOW -->
+ <map code="0x626" name="yehHamzaabove-ar"/><!-- ARABIC LETTER YEH WITH HAMZA ABOVE -->
+ <map code="0x627" name="alef-ar"/><!-- ARABIC LETTER ALEF -->
+ <map code="0x628" name="beh-ar"/><!-- ARABIC LETTER BEH -->
+ <map code="0x629" name="tehMarbuta-ar"/><!-- ARABIC LETTER TEH MARBUTA -->
+ <map code="0x62a" name="teh-ar"/><!-- ARABIC LETTER TEH -->
+ <map code="0x62b" name="theh-ar"/><!-- ARABIC LETTER THEH -->
+ <map code="0x62c" name="jeem-ar"/><!-- ARABIC LETTER JEEM -->
+ <map code="0x62d" name="hah-ar"/><!-- ARABIC LETTER HAH -->
+ <map code="0x62e" name="khah-ar"/><!-- ARABIC LETTER KHAH -->
+ <map code="0x62f" name="dal-ar"/><!-- ARABIC LETTER DAL -->
+ <map code="0x630" name="thal-ar"/><!-- ARABIC LETTER THAL -->
+ <map code="0x631" name="reh-ar"/><!-- ARABIC LETTER REH -->
+ <map code="0x632" name="zain-ar"/><!-- ARABIC LETTER ZAIN -->
+ <map code="0x633" name="seen-ar"/><!-- ARABIC LETTER SEEN -->
+ <map code="0x634" name="sheen-ar"/><!-- ARABIC LETTER SHEEN -->
+ <map code="0x635" name="sad-ar"/><!-- ARABIC LETTER SAD -->
+ <map code="0x636" name="dad-ar"/><!-- ARABIC LETTER DAD -->
+ <map code="0x637" name="tah-ar"/><!-- ARABIC LETTER TAH -->
+ <map code="0x638" name="zah-ar"/><!-- ARABIC LETTER ZAH -->
+ <map code="0x639" name="ain-ar"/><!-- ARABIC LETTER AIN -->
+ <map code="0x63a" name="ghain-ar"/><!-- ARABIC LETTER GHAIN -->
+ <map code="0x640" name="kashida-ar"/><!-- ARABIC TATWEEL -->
+ <map code="0x641" name="feh-ar"/><!-- ARABIC LETTER FEH -->
+ <map code="0x642" name="qaf-ar"/><!-- ARABIC LETTER QAF -->
+ <map code="0x643" name="kaf-ar"/><!-- ARABIC LETTER KAF -->
+ <map code="0x644" name="lam-ar"/><!-- ARABIC LETTER LAM -->
+ <map code="0x645" name="meem-ar"/><!-- ARABIC LETTER MEEM -->
+ <map code="0x646" name="noon-ar"/><!-- ARABIC LETTER NOON -->
+ <map code="0x647" name="heh-ar"/><!-- ARABIC LETTER HEH -->
+ <map code="0x648" name="waw-ar"/><!-- ARABIC LETTER WAW -->
+ <map code="0x649" name="alefMaksura-ar"/><!-- ARABIC LETTER ALEF MAKSURA -->
+ <map code="0x64a" name="yeh-ar"/><!-- ARABIC LETTER YEH -->
+ <map code="0x654" name="hamzaabove-ar"/><!-- ARABIC HAMZA ABOVE -->
+ <map code="0x655" name="hamzabelow-ar"/><!-- ARABIC HAMZA BELOW -->
+ <map code="0x660" name="zero-ar"/><!-- ARABIC-INDIC DIGIT ZERO -->
+ <map code="0x661" name="one-ar"/><!-- ARABIC-INDIC DIGIT ONE -->
+ <map code="0x662" name="two-ar"/><!-- ARABIC-INDIC DIGIT TWO -->
+ <map code="0x663" name="three-ar"/><!-- ARABIC-INDIC DIGIT THREE -->
+ <map code="0x664" name="four-ar"/><!-- ARABIC-INDIC DIGIT FOUR -->
+ <map code="0x665" name="five-ar"/><!-- ARABIC-INDIC DIGIT FIVE -->
+ <map code="0x666" name="six-ar"/><!-- ARABIC-INDIC DIGIT SIX -->
+ <map code="0x667" name="seven-ar"/><!-- ARABIC-INDIC DIGIT SEVEN -->
+ <map code="0x668" name="eight-ar"/><!-- ARABIC-INDIC DIGIT EIGHT -->
+ <map code="0x669" name="nine-ar"/><!-- ARABIC-INDIC DIGIT NINE -->
+ <map code="0x66a" name="percent-ar"/><!-- ARABIC PERCENT SIGN -->
+ <map code="0x66e" name="behDotless-ar"/><!-- ARABIC LETTER DOTLESS BEH -->
+ <map code="0x66f" name="qafDotless-ar"/><!-- ARABIC LETTER DOTLESS QAF -->
+ <map code="0x671" name="alefWasla-ar"/><!-- ARABIC LETTER ALEF WASLA -->
+ <map code="0x679" name="tteh-ar"/><!-- ARABIC LETTER TTEH -->
+ <map code="0x67e" name="peh-ar"/><!-- ARABIC LETTER PEH -->
+ <map code="0x686" name="tcheh-ar"/><!-- ARABIC LETTER TCHEH -->
+ <map code="0x688" name="ddal-ar"/><!-- ARABIC LETTER DDAL -->
+ <map code="0x691" name="rreh-ar"/><!-- ARABIC LETTER RREH -->
+ <map code="0x698" name="jeh-ar"/><!-- ARABIC LETTER JEH -->
+ <map code="0x6a1" name="fehDotless-ar"/><!-- ARABIC LETTER DOTLESS FEH -->
+ <map code="0x6a2" name="fehDotmovedbelow-ar"/><!-- ARABIC LETTER FEH WITH DOT MOVED BELOW -->
+ <map code="0x6a4" name="veh-ar"/><!-- ARABIC LETTER VEH -->
+ <map code="0x6a7" name="qafDotabove-ar"/><!-- ARABIC LETTER QAF WITH DOT ABOVE -->
+ <map code="0x6a9" name="keheh-ar"/><!-- ARABIC LETTER KEHEH -->
+ <map code="0x6af" name="gaf-ar"/><!-- ARABIC LETTER GAF -->
+ <map code="0x6ba" name="noonghunna-ar"/><!-- ARABIC LETTER NOON GHUNNA -->
+ <map code="0x6be" name="hehDoachashmee-ar"/><!-- ARABIC LETTER HEH DOACHASHMEE -->
+ <map code="0x6c1" name="hehgoal-ar"/><!-- ARABIC LETTER HEH GOAL -->
+ <map code="0x6c2" name="hehgoalHamzaabove-ar"/><!-- ARABIC LETTER HEH GOAL WITH HAMZA ABOVE -->
+ <map code="0x6c3" name="tehMarbutagoal-ar"/><!-- ARABIC LETTER TEH MARBUTA GOAL -->
+ <map code="0x6cc" name="yeh-farsi"/><!-- ARABIC LETTER FARSI YEH -->
+ <map code="0x6d2" name="yehbarree-ar"/><!-- ARABIC LETTER YEH BARREE -->
+ <map code="0x6d3" name="yehbarreeHamzaabove-ar"/><!-- ARABIC LETTER YEH BARREE WITH HAMZA ABOVE -->
+ <map code="0x6d4" name="fullstop-ar"/><!-- ARABIC FULL STOP -->
+ <map code="0x6f0" name="zero-persian"/><!-- EXTENDED ARABIC-INDIC DIGIT ZERO -->
+ <map code="0x6f1" name="one-persian"/><!-- EXTENDED ARABIC-INDIC DIGIT ONE -->
+ <map code="0x6f2" name="two-persian"/><!-- EXTENDED ARABIC-INDIC DIGIT TWO -->
+ <map code="0x6f3" name="three-persian"/><!-- EXTENDED ARABIC-INDIC DIGIT THREE -->
+ <map code="0x6f4" name="four-persian"/><!-- EXTENDED ARABIC-INDIC DIGIT FOUR -->
+ <map code="0x6f5" name="five-persian"/><!-- EXTENDED ARABIC-INDIC DIGIT FIVE -->
+ <map code="0x6f6" name="six-persian"/><!-- EXTENDED ARABIC-INDIC DIGIT SIX -->
+ <map code="0x6f7" name="seven-persian"/><!-- EXTENDED ARABIC-INDIC DIGIT SEVEN -->
+ <map code="0x6f8" name="eight-persian"/><!-- EXTENDED ARABIC-INDIC DIGIT EIGHT -->
+ <map code="0x6f9" name="nine-persian"/><!-- EXTENDED ARABIC-INDIC DIGIT NINE -->
+ <map code="0x8bb" name="fehAfrican-ar"/><!-- ARABIC LETTER AFRICAN FEH -->
+ <map code="0x8bc" name="qafAfrican-ar"/><!-- ARABIC LETTER AFRICAN QAF -->
+ <map code="0x8bd" name="noonAfrican-ar"/><!-- ARABIC LETTER AFRICAN NOON -->
+ <map code="0x2010" name="hyphen"/><!-- HYPHEN -->
+ <map code="0x2011" name="hyphen"/><!-- NON-BREAKING HYPHEN -->
+ <map code="0x2013" name="endash"/><!-- EN DASH -->
+ <map code="0x2014" name="emdash"/><!-- EM DASH -->
+ <map code="0x2018" name="quoteleft"/><!-- LEFT SINGLE QUOTATION MARK -->
+ <map code="0x2019" name="quoteright"/><!-- RIGHT SINGLE QUOTATION MARK -->
+ <map code="0x201a" name="quotesinglbase"/><!-- SINGLE LOW-9 QUOTATION MARK -->
+ <map code="0x201c" name="quotedblleft"/><!-- LEFT DOUBLE QUOTATION MARK -->
+ <map code="0x201d" name="quotedblright"/><!-- RIGHT DOUBLE QUOTATION MARK -->
+ <map code="0x201e" name="quotedblbase"/><!-- DOUBLE LOW-9 QUOTATION MARK -->
+ <map code="0x2022" name="bullet"/><!-- BULLET -->
+ <map code="0x2026" name="ellipsis"/><!-- HORIZONTAL ELLIPSIS -->
+ <map code="0x2039" name="guilsinglleft"/><!-- SINGLE LEFT-POINTING ANGLE QUOTATION MARK -->
+ <map code="0x203a" name="guilsinglright"/><!-- SINGLE RIGHT-POINTING ANGLE QUOTATION MARK -->
+ <map code="0x2044" name="fraction"/><!-- FRACTION SLASH -->
+ </cmap_format_4>
+ </cmap>
+
+ <post>
+ <formatType value="3.0"/>
+ <italicAngle value="0.0"/>
+ <underlinePosition value="-325"/>
+ <underlineThickness value="50"/>
+ <isFixedPitch value="0"/>
+ <minMemType42 value="0"/>
+ <maxMemType42 value="0"/>
+ <minMemType1 value="0"/>
+ <maxMemType1 value="0"/>
+ </post>
+
+ <CFF>
+ <major value="1"/>
+ <minor value="0"/>
+ <CFFFont name="Qahiri-Regular">
+ <version value="2.00"/>
+ <Notice value="Copyright 2021 The Qahiri Project Authors (github.com/alif-type/qahiri)."/>
+ <FullName value="Qahiri Regular"/>
+ <Weight value="Regular"/>
+ <isFixedPitch value="0"/>
+ <ItalicAngle value="0"/>
+ <UnderlinePosition value="-100"/>
+ <UnderlineThickness value="50"/>
+ <PaintType value="0"/>
+ <CharstringType value="2"/>
+ <FontMatrix value="0.00133333 0 0 0.00133333 0 0"/>
+ <FontBBox value="-242 -250 750 561"/>
+ <StrokeWidth value="0"/>
+ <!-- charset is dumped separately as the 'GlyphOrder' element -->
+ <Encoding>
+ </Encoding>
+ <Private>
+ <BlueValues value="-15 0 230 245 560 575 600 615"/>
+ <OtherBlues value="-265 -250"/>
+ <BlueScale value="0.039625"/>
+ <BlueShift value="7"/>
+ <BlueFuzz value="1"/>
+ <StdHW value="70"/>
+ <StdVW value="80"/>
+ <ForceBold value="0"/>
+ <LanguageGroup value="0"/>
+ <ExpansionFactor value="0.06"/>
+ <initialRandomSeed value="0"/>
+ <defaultWidthX value="240"/>
+ <nominalWidthX value="264"/>
+ <Subrs>
+ <!-- The 'index' attribute is only for humans; it is ignored when parsed. -->
+ <CharString index="0">
+ vlineto
+ -101 callsubr
+ return
+ </CharString>
+ <CharString index="1">
+ hlineto
+ 41 70 rlineto
+ return
+ </CharString>
+ <CharString index="2">
+ -88 callgsubr
+ endchar
+ </CharString>
+ <CharString index="3">
+ rmoveto
+ -96 callsubr
+ return
+ </CharString>
+ <CharString index="4">
+ -110 rmoveto
+ return
+ </CharString>
+ <CharString index="5">
+ hmoveto
+ 140 70 return
+ </CharString>
+ <CharString index="6">
+ -80 -20 rlineto
+ return
+ </CharString>
+ <CharString index="7">
+ -63 callgsubr
+ endchar
+ </CharString>
+ <CharString index="8">
+ 0 vmoveto
+ 539 hlineto
+ -102 callgsubr
+ 219 -42 callgsubr
+ -380 vlineto
+ -93 callgsubr
+ return
+ </CharString>
+ <CharString index="9">
+ -58 callsubr
+ 210 return
+ </CharString>
+ <CharString index="10">
+ hlineto
+ -93 callgsubr
+ return
+ </CharString>
+ <CharString index="11">
+ 47 79 -17 10 -47 -79 rlineto
+ return
+ </CharString>
+ <CharString index="12">
+ -101 callsubr
+ -360 return
+ </CharString>
+ <CharString index="13">
+ hlineto
+ -32 -22 3 23 -23 hvcurveto
+ -11 callgsubr
+ -85 57 -19 74 -1 vhcurveto
+ endchar
+ </CharString>
+ <CharString index="14">
+ 70 -95 callgsubr
+ </CharString>
+ <CharString index="15">
+ -20 vlineto
+ 100 hmoveto
+ -59 callsubr
+ endchar
+ </CharString>
+ <CharString index="16">
+ 131 -103 callsubr
+ return
+ </CharString>
+ <CharString index="17">
+ -70 70 70 vlineto
+ endchar
+ </CharString>
+ <CharString index="18">
+ -107 callsubr
+ -220 vlineto
+ -107 callgsubr
+ 170 -107 callsubr
+ -190 vlineto
+ -107 callgsubr
+ 140 -107 callsubr
+ return
+ </CharString>
+ <CharString index="19">
+ -107 callsubr
+ -180 vlineto
+ -8 callgsubr
+ vlineto
+ -107 callgsubr
+ 160 -107 callsubr
+ return
+ </CharString>
+ <CharString index="20">
+ vlineto
+ -80 -20 rlineto
+ -180 vlineto
+ -107 callgsubr
+ 130 -107 callsubr
+ -150 vlineto
+ -107 callgsubr
+ 100 -107 callsubr
+ return
+ </CharString>
+ <CharString index="21">
+ hlineto
+ -58 -61 65 75 -61 hvcurveto
+ -43 -70 19 -28 28 -29 15 -13 rlinecurve
+ return
+ </CharString>
+ <CharString index="22">
+ 100 -110 rmoveto
+ 65 35 30 60 hvcurveto
+ return
+ </CharString>
+ <CharString index="23">
+ -37 callgsubr
+ -54 callsubr
+ endchar
+ </CharString>
+ <CharString index="24">
+ -20 -102 callsubr
+ hlineto
+ -107 callgsubr
+ return
+ </CharString>
+ <CharString index="25">
+ -50 -250 rmoveto
+ 212 -97 callgsubr
+ return
+ </CharString>
+ <CharString index="26">
+ -70 -69 callgsubr
+ return
+ </CharString>
+ <CharString index="27">
+ hlineto
+ -103 callgsubr
+ return
+ </CharString>
+ <CharString index="28">
+ 100 hmoveto
+ 65 35 30 60 return
+ </CharString>
+ <CharString index="29">
+ -40 -40 5 35 -20 return
+ </CharString>
+ <CharString index="30">
+ vlineto
+ -35 -20 -40 return
+ </CharString>
+ <CharString index="31">
+ -60 45 -30 55 return
+ </CharString>
+ <CharString index="32">
+ -48 callsubr
+ endchar
+ </CharString>
+ <CharString index="33">
+ hhcurveto
+ -96 callgsubr
+ -11 2 -10 4 -9 hvcurveto
+ -4 -9 -2 -10 -11 vvcurveto
+ -50 callsubr
+ vhcurveto
+ -22 hlineto
+ 120 60 rmoveto
+ -89 callgsubr
+ -60 -95 callgsubr
+ </CharString>
+ <CharString index="34">
+ 0 vmoveto
+ 536 -55 callgsubr
+ -390 -97 callsubr
+ return
+ </CharString>
+ <CharString index="35">
+ -71 callsubr
+ endchar
+ </CharString>
+ <CharString index="36">
+ 80 140 rmoveto
+ 420 vlineto
+ -101 callsubr
+ -410 vlineto
+ -88 5 74 -42 79 hhcurveto
+ 60 63 24 46 39 hvcurveto
+ -12 -28 -44 -10 -43 hhcurveto
+ -64 -61 22 70 hvcurveto
+ return
+ </CharString>
+ <CharString index="37">
+ rmoveto
+ 142 hlineto
+ 4 2 0 6 44 -21 9 -14 hvcurveto
+ -63 56 hlineto
+ -25 -6 rlineto
+ -88 -13 vlineto
+ 38 hmoveto
+ 14 59 vlineto
+ 8 6 -6 -8 hvcurveto
+ -73 hlineto
+ endchar
+ </CharString>
+ <CharString index="38">
+ 17 callgsubr
+ 210 -70 -67 callgsubr
+ vlineto
+ endchar
+ </CharString>
+ <CharString index="39">
+ 17 callgsubr
+ 70 -120 70 120 70 vlineto
+ endchar
+ </CharString>
+ <CharString index="40">
+ 77 -19 111 -93 -56 -45 -40 -50 -98 callgsubr
+ 10 10 1 3 10 return
+ </CharString>
+ <CharString index="41">
+ -366 -52 callsubr
+ -430 436 vlineto
+ -103 callgsubr
+ return
+ </CharString>
+ <CharString index="42">
+ 245 18 callgsubr
+ </CharString>
+ <CharString index="43">
+ hlineto
+ 27 70 rlineto
+ -3 hlineto
+ -80 -140 rlineto
+ return
+ </CharString>
+ <CharString index="44">
+ 25 callsubr
+ -189 70 350 -70 -91 -70 hlineto
+ endchar
+ </CharString>
+ <CharString index="45">
+ 49 545 rmoveto
+ -49 -113 98 -132 49 245 -49 -64 -49 hlineto
+ endchar
+ </CharString>
+ <CharString index="46">
+ 177 148 rmoveto
+ 19 -19 -27 13 -31 hhcurveto
+ -78 callsubr
+ hvcurveto
+ return
+ </CharString>
+ <CharString index="47">
+ -96 callsubr
+ 63 -10 -104 callsubr
+ return
+ </CharString>
+ <CharString index="48">
+ 40 426 vlineto
+ -103 callgsubr
+ -466 hlineto
+ return
+ </CharString>
+ <CharString index="49">
+ -130 -250 rmoveto
+ 242 -97 callgsubr
+ return
+ </CharString>
+ <CharString index="50">
+ -60 -69 callgsubr
+ endchar
+ </CharString>
+ <CharString index="51">
+ 11 -37 callgsubr
+ return
+ </CharString>
+ <CharString index="52">
+ 245 vmoveto
+ -245 49 245 vlineto
+ endchar
+ </CharString>
+ <CharString index="53">
+ -85 callgsubr
+ 11 9 9 11 hvcurveto
+ return
+ </CharString>
+ <CharString index="54">
+ 65 35 30 60 50 -45 40 -55 return
+ </CharString>
+ <CharString index="55">
+ 380 hlineto
+ -101 callsubr
+ return
+ </CharString>
+ <CharString index="56">
+ 210 350 rmoveto
+ -210 return
+ </CharString>
+ <CharString index="57">
+ -7 1 -7 1 -6 return
+ </CharString>
+ <CharString index="58">
+ -41 callsubr
+ 250 -106 callgsubr
+ </CharString>
+ <CharString index="59">
+ -33 -220 -73 callgsubr
+ 96 -40 callsubr
+ -40 -60 -69 callgsubr
+ return
+ </CharString>
+ <CharString index="60">
+ -85 callsubr
+ 235 -43 callsubr
+ </CharString>
+ <CharString index="61">
+ -33 -220 -73 callgsubr
+ 96 -22 callgsubr
+ -40 -57 callsubr
+ </CharString>
+ <CharString index="62">
+ 33 callgsubr
+ -7 -6 0 -7 -74 callsubr
+ </CharString>
+ <CharString index="63">
+ -33 callgsubr
+ endchar
+ </CharString>
+ <CharString index="64">
+ -77 callsubr
+ 0 -40 hhcurveto
+ -96 callgsubr
+ -50 callsubr
+ hvcurveto
+ -52 -70 52 hlineto
+ -1 -6 -1 -7 -7 vvcurveto
+ -76 callsubr
+ vhcurveto
+ 180 vmoveto
+ -89 callgsubr
+ -110 -95 callgsubr
+ </CharString>
+ <CharString index="65">
+ -36 callgsubr
+ 295 -107 callsubr
+ -275 vlineto
+ -18 16 -23 13 -13 vhcurveto
+ 41 -41 -42 -52 -62 -54 -46 -34 rlinecurve
+ 180 110 rmoveto
+ 40 -40 rlineto
+ -80 hlineto
+ 40 40 rlineto
+ endchar
+ </CharString>
+ <CharString index="66">
+ -24 callgsubr
+ 124 return
+ </CharString>
+ <CharString index="67">
+ vlineto
+ 25 -13 16 -35 -32 -22 6 23 -23 vhcurveto
+ -82 callgsubr
+ 16 36 10 80 10 hvcurveto
+ -15 -3 -14 -5 -9 hhcurveto
+ -90 callgsubr
+ -83 55 -20 72 -2 vhcurveto
+ return
+ </CharString>
+ <CharString index="68">
+ 243 hlineto
+ 31 9 14 24 5 hvcurveto
+ 4 17 1 22 26 vvcurveto
+ 36 -4 37 -6 25 vhcurveto
+ 56 -15 -38 33 -50 hhcurveto
+ -55 -58 callgsubr
+ -110 -97 callsubr
+ return
+ </CharString>
+ <CharString index="69">
+ 65 109 39 134 12 120 rlinecurve
+ -92 -40 -4 -101 -17 -84 -35 -81 rlinecurve
+ -154 266 -60 -57 169 -294 -33 -54 -42 -55 -54 -60 rlinecurve
+ 156 123 rmoveto
+ 31 -53 rlineto
+ -81 hlineto
+ 18 16 16 18 16 19 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="70">
+ 199 -250 rmoveto
+ 43 46 8 35 76 hvcurveto
+ -8 -49 -35 -4 -26 hhcurveto
+ -83 -91 36 90 67 50 26 40 hvcurveto
+ return
+ </CharString>
+ <CharString index="71">
+ rmoveto
+ -60 callsubr
+ return
+ </CharString>
+ <CharString index="72">
+ 130 vlineto
+ 110 -107 callsubr
+ -129 vlineto
+ -1 -7 -6 0 -7 -51 callgsubr
+ </CharString>
+ <CharString index="73">
+ 68 68 rlineto
+ 350 -107 callsubr
+ -330 vlineto
+ -20 -26 -20 26 rlineto
+ 320 -107 callsubr
+ -300 vlineto
+ 68 -68 rlineto
+ 32 -32 rmoveto
+ 40 -40 -17 -13 -46 0 -17 13 rlinecurve
+ 40 40 rlineto
+ endchar
+ </CharString>
+ <CharString index="74">
+ -79 callsubr
+ hvcurveto
+ -12 callgsubr
+ </CharString>
+ <CharString index="75">
+ -52 callgsubr
+ -430 -97 callsubr
+ 448 90 -106 callgsubr
+ </CharString>
+ <CharString index="76">
+ -86 callsubr
+ -93 hlineto
+ -90 callgsubr
+ -85 57 -19 74 -1 vhcurveto
+ endchar
+ </CharString>
+ <CharString index="77">
+ -28 callsubr
+ endchar
+ </CharString>
+ <CharString index="78">
+ 70 -40 130 hlineto
+ -23 callsubr
+ </CharString>
+ <CharString index="79">
+ -72 callgsubr
+ 82 -7 callgsubr
+ return
+ </CharString>
+ <CharString index="80">
+ -101 callsubr
+ -50 vlineto
+ -74 -46 -40 -63 -23 6 -20 6 -14 hvcurveto
+ -32 hlineto
+ 109 90 rmoveto
+ 31 -30 -40 -10 rlineto
+ 31 -50 rmoveto
+ -31 30 40 10 -9 -40 rlineto
+ endchar
+ </CharString>
+ <CharString index="81">
+ -436 70 hlineto
+ -101 callsubr
+ -410 -12 callsubr
+ </CharString>
+ <CharString index="82">
+ -22 callsubr
+ endchar
+ </CharString>
+ <CharString index="83">
+ -91 callsubr
+ 45 hlineto
+ 31 101 47 23 54 hvcurveto
+ return
+ </CharString>
+ <CharString index="84">
+ -100 callgsubr
+ -98 callgsubr
+ vhcurveto
+ -93 callsubr
+ </CharString>
+ <CharString index="85">
+ -58 callsubr
+ 270 vlineto
+ -80 80 39 callgsubr
+ return
+ </CharString>
+ <CharString index="86">
+ -360 hlineto
+ 41 74 22 88 101 vvcurveto
+ 37 -3 39 -6 41 vhcurveto
+ -80 -80 rlineto
+ 7 -40 4 -42 -43 vvcurveto
+ -83 -15 -85 -34 -77 vhcurveto
+ endchar
+ </CharString>
+ <CharString index="87">
+ 37 callgsubr
+ -68 46 -168 9 hvcurveto
+ -60 -105 rlineto
+ 172 -80 callsubr
+ -236 hlineto
+ endchar
+ </CharString>
+ <CharString index="88">
+ 17 hmoveto
+ -1 callgsubr
+ </CharString>
+ <CharString index="89">
+ -86 callsubr
+ -212 9 callsubr
+ endchar
+ </CharString>
+ <CharString index="90">
+ -20 hmoveto
+ 339 -106 callsubr
+ -137 -86 callsubr
+ -82 hlineto
+ endchar
+ </CharString>
+ <CharString index="91">
+ -20 hmoveto
+ 359 -106 callsubr
+ -157 -86 callsubr
+ -82 hlineto
+ endchar
+ </CharString>
+ <CharString index="92">
+ 19 callsubr
+ 116 hlineto
+ endchar
+ </CharString>
+ <CharString index="93">
+ -436 -52 callsubr
+ -470 -92 callsubr
+ </CharString>
+ <CharString index="94">
+ 84 245 11 callgsubr
+ </CharString>
+ <CharString index="95">
+ -88 callgsubr
+ 228 230 rmoveto
+ -59 callsubr
+ endchar
+ </CharString>
+ <CharString index="96">
+ -130 vlineto
+ -210 -99 callgsubr
+ 229 vlineto
+ 1 7 6 0 7 hhcurveto
+ 55 45 40 50 60 -45 30 -55 return
+ </CharString>
+ <CharString index="97">
+ 84 245 rmoveto
+ -98 -35 98 -49 -245 217 49 -168 49 168 49 -84 49 84 49 vlineto
+ endchar
+ </CharString>
+ <CharString index="98">
+ hlineto
+ -54 callsubr
+ return
+ </CharString>
+ <CharString index="99">
+ 460 52 callgsubr
+ -380 vlineto
+ 15 callsubr
+ return
+ </CharString>
+ <CharString index="100">
+ 147 545 22 callgsubr
+ </CharString>
+ <CharString index="101">
+ 350 vmoveto
+ -350 210 70 -140 70 140 70 -140 70 140 70 vlineto
+ endchar
+ </CharString>
+ <CharString index="102">
+ vlineto
+ -50 37 -30 40 30 31 16 34 22 vhcurveto
+ -4 -9 -12 -3 -12 hhcurveto
+ -24 -23 11 26 hvcurveto
+ return
+ </CharString>
+ <CharString index="103">
+ 70 -41 hlineto
+ 6 1 7 7 vvcurveto
+ -100 callgsubr
+ -50 callsubr
+ vhcurveto
+ return
+ </CharString>
+ <CharString index="104">
+ 75 560 rmoveto
+ -88 -42 -12 -114 75 -79 25 50 rcurveline
+ -57 54 5 82 52 49 rrcurveto
+ return
+ </CharString>
+ <CharString index="105">
+ 82 259 rmoveto
+ -97 -46 -13 -126 82 -87 28 56 rcurveline
+ -63 59 6 90 57 54 rrcurveto
+ return
+ </CharString>
+ <CharString index="106">
+ 55 callgsubr
+ -350 70 189 140 161 vlineto
+ endchar
+ </CharString>
+ <CharString index="107">
+ -160 rmoveto
+ 59 57 -59 103 rlineto
+ 59 70 -100 hlineto
+ -92 160 -59 -57 59 -103 rlineto
+ return
+ </CharString>
+ <CharString index="108">
+ rmoveto
+ 28 callsubr
+ -66 callgsubr
+ hvcurveto
+ endchar
+ </CharString>
+ <CharString index="109">
+ 140 350 rmoveto
+ -280 -70 280 -70 -350 210 350 vlineto
+ endchar
+ </CharString>
+ <CharString index="110">
+ 0 vmoveto
+ 97 46 13 126 -82 87 -28 -56 rcurveline
+ 63 -59 -6 -90 -57 -54 rrcurveto
+ return
+ </CharString>
+ <CharString index="111">
+ vmoveto
+ 147 147 -98 49 98 49 -38 callgsubr
+ -98 hlineto
+ endchar
+ </CharString>
+ <CharString index="112">
+ 98 545 13 callsubr
+ </CharString>
+ <CharString index="113">
+ 98 245 13 callsubr
+ </CharString>
+ <CharString index="114">
+ 62 110 rmoveto
+ 414 hlineto
+ 19 callsubr
+ return
+ </CharString>
+ <CharString index="115">
+ 43 callgsubr
+ 70 140 240 return
+ </CharString>
+ <CharString index="116">
+ hlineto
+ -50 -40 -40 -50 -50 40 -40 50 hvcurveto
+ return
+ </CharString>
+ <CharString index="117">
+ 70 -40 200 hlineto
+ -101 callsubr
+ -100 vlineto
+ -80 80 -42 -71 89 -89 rlineto
+ return
+ </CharString>
+ <CharString index="118">
+ 58 callgsubr
+ 16 13 13 16 16 -13 13 -16 hvcurveto
+ return
+ </CharString>
+ <CharString index="119">
+ 140 hmoveto
+ 70 350 -210 -350 70 280 70 hlineto
+ endchar
+ </CharString>
+ <CharString index="120">
+ rmoveto
+ -196 -49 196 -49 -245 147 245 vlineto
+ endchar
+ </CharString>
+ <CharString index="121">
+ hlineto
+ -103 callgsubr
+ -476 hlineto
+ return
+ </CharString>
+ <CharString index="122">
+ -93 callgsubr
+ -52 -90 rlineto
+ return
+ </CharString>
+ <CharString index="123">
+ 22 110 rmoveto
+ 414 -80 callsubr
+ -494 -70 return
+ </CharString>
+ <CharString index="124">
+ -20 hmoveto
+ 690 -101 callgsubr
+ -436 return
+ </CharString>
+ <CharString index="125">
+ -63 -103 callsubr
+ 339 hlineto
+ 6 15 0 21 36 return
+ </CharString>
+ <CharString index="126">
+ -103 callgsubr
+ -476 hlineto
+ -40 -70 rlineto
+ return
+ </CharString>
+ <CharString index="127">
+ -49 -49 49 49 vlineto
+ endchar
+ </CharString>
+ <CharString index="128">
+ -7 -6 0 1 -7 return
+ </CharString>
+ <CharString index="129">
+ 40 325 rmoveto
+ 235 -40 -235 vlineto
+ return
+ </CharString>
+ <CharString index="130">
+ -147 -49 98 -49 -98 return
+ </CharString>
+ <CharString index="131">
+ 95 -15 -58 15 -38 hhcurveto
+ return
+ </CharString>
+ <CharString index="132">
+ 70 350 rmoveto
+ -70 -161 140 return
+ </CharString>
+ <CharString index="133">
+ 147 vmoveto
+ -49 49 49 vlineto
+ endchar
+ </CharString>
+ <CharString index="134">
+ rmoveto
+ -118 119 118 vlineto
+ return
+ </CharString>
+ <CharString index="135">
+ -22 -18 -18 -22 -22 18 -18 22 return
+ </CharString>
+ </Subrs>
+ </Private>
+ <CharStrings>
+ <CharString name=".notdef">
+ 66 40 hmoveto
+ 250 450 -250 hlineto
+ 210 -79 rmoveto
+ -297 vlineto
+ -65 148 65 149 rlineto
+ -170 -290 rmoveto
+ 283 vlineto
+ 62 -142 -62 -141 rlineto
+ 84 192 rmoveto
+ -60 137 rlineto
+ 119 hlineto
+ -59 -137 rlineto
+ -101 vmoveto
+ 57 -132 rlineto
+ -115 hlineto
+ 58 132 rlineto
+ endchar
+ </CharString>
+ <CharString name="a">
+ 120 hmoveto
+ 80 90 hlineto
+ -6 callgsubr
+ 7 7 0 1 6 hvcurveto
+ -20 69 -106 callgsubr
+ </CharString>
+ <CharString name="ain-ar">
+ 416 -29 callgsubr
+ endchar
+ </CharString>
+ <CharString name="ain-ar.1">
+ 265 -49 callgsubr
+ -273 -35 callgsubr
+ </CharString>
+ <CharString name="ain-ar.2">
+ 265 -24 callsubr
+ -203 -35 callgsubr
+ </CharString>
+ <CharString name="ain-ar.3">
+ 66 -37 callsubr
+ 79 -106 callsubr
+ -127 hlineto
+ -21 -12 17 19 21 16 23 37 13 16 -3 -7 18 hvcurveto
+ 45 -14 -35 25 -35 hhcurveto
+ -88 -30 -102 -63 38 hvcurveto
+ -43 -29 -23 -52 -54 vvcurveto
+ -104 86 -56 113 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.fina">
+ 40 -37 callsubr
+ 134 10 callsubr
+ -1 44 callgsubr
+ </CharString>
+ <CharString name="ain-ar.init">
+ 66 -20 hmoveto
+ 269 -61 callgsubr
+ -46 hlineto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.init.1">
+ 16 -20 hmoveto
+ 219 -106 callsubr
+ -127 0 callgsubr
+ hlineto
+ endchar
+ </CharString>
+ <CharString name="ain-ar.medi">
+ -22 -20 hmoveto
+ 262 10 callsubr
+ -109 hlineto
+ endchar
+ </CharString>
+ <CharString name="alef-ar">
+ 96 -72 callsubr
+ </CharString>
+ <CharString name="alef-ar.1">
+ -64 -10 callgsubr
+ </CharString>
+ <CharString name="alef-ar.2">
+ 16 80 100 rmoveto
+ 460 -107 callsubr
+ -440 vlineto
+ -66 52 -34 61 42 47 16 34 38 vhcurveto
+ -8 -24 -27 -5 -24 hhcurveto
+ -46 -39 17 46 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="alef-ar.3">
+ -144 40 callgsubr
+ 480 -107 callsubr
+ -470 vlineto
+ -30 -13 -20 -27 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="alef-ar.fina">
+ -144 -41 callgsubr
+ -500 vlineto
+ -25 15 -15 23 vhcurveto
+ 82 70 -30 hlineto
+ -7 -3 3 7 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="alefHamzaabove-ar">
+ 96 -71 callsubr
+ 106 363 -100 callsubr
+ </CharString>
+ <CharString name="alefHamzabelow-ar">
+ 96 -71 callsubr
+ -3 -218 -100 callsubr
+ </CharString>
+ <CharString name="alefMadda-ar">
+ 96 -72 callsubr
+ </CharString>
+ <CharString name="alefMaksura-ar">
+ -17 -75 callsubr
+ </CharString>
+ <CharString name="alefMaksura-ar.1">
+ -17 -33 -250 -73 callgsubr
+ 126 -40 callsubr
+ -70 -57 callsubr
+ </CharString>
+ <CharString name="alefMaksura-ar.2">
+ -22 -49 callgsubr
+ -283 -80 callgsubr
+ </CharString>
+ <CharString name="alefMaksura-ar.3">
+ -22 50 callgsubr
+ -428 -80 callgsubr
+ </CharString>
+ <CharString name="alefMaksura-ar.4">
+ -22 -91 callsubr
+ 560 -106 callsubr
+ -583 -80 callgsubr
+ </CharString>
+ <CharString name="alefMaksura-ar.5">
+ -22 -44 callsubr
+ </CharString>
+ <CharString name="alefMaksura-ar.6">
+ -22 24 callgsubr
+ -583 -80 callgsubr
+ </CharString>
+ <CharString name="alefMaksura-ar.fina">
+ -57 -46 callsubr
+ </CharString>
+ <CharString name="alefMaksura-ar.fina.0">
+ -57 -46 callsubr
+ </CharString>
+ <CharString name="alefMaksura-ar.fina.1">
+ -57 -33 -250 -73 callgsubr
+ 126 -22 callgsubr
+ -70 -57 callsubr
+ </CharString>
+ <CharString name="alefMaksura-ar.fina.2">
+ -57 -49 callgsubr
+ -273 -94 callsubr
+ </CharString>
+ <CharString name="alefMaksura-ar.fina.3">
+ -57 50 callgsubr
+ -418 -94 callsubr
+ </CharString>
+ <CharString name="alefMaksura-ar.fina.4">
+ -57 -91 callsubr
+ 560 -106 callsubr
+ -573 -94 callsubr
+ </CharString>
+ <CharString name="alefMaksura-ar.fina.5">
+ -57 -24 callsubr
+ -203 -94 callsubr
+ </CharString>
+ <CharString name="alefMaksura-ar.fina.6">
+ -57 24 callgsubr
+ -573 -94 callsubr
+ </CharString>
+ <CharString name="alefMaksura-ar.fina.tooth">
+ 16 -40 -220 rmoveto
+ 299 -104 callgsubr
+ -76 hlineto
+ -7 -3 3 7 hvcurveto
+ 80 -80 -120 vlineto
+ -25 15 -15 23 vhcurveto
+ 118 -80 callsubr
+ -196 hlineto
+ endchar
+ </CharString>
+ <CharString name="alefWasla-ar">
+ 96 -72 callsubr
+ </CharString>
+ <CharString name="b">
+ 290 vmoveto
+ -70 vlineto
+ -130 vlineto
+ -60 35 -30 65 55 45 30 60 50 -45 40 -55 -7 -6 0 1 -7 vhcurveto
+ 379 vlineto
+ -80 -20 rlineto
+ 100 -470 -106 callgsubr
+ </CharString>
+ <CharString name="backslash">
+ 12 236 14 rmoveto
+ -198 546 -38 -14 199 -546 rlineto
+ endchar
+ </CharString>
+ <CharString name="beh-ar">
+ 336 -99 callsubr
+ 198 -214 -104 callsubr
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar">
+ 336 -99 callsubr
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.fina">
+ 336 0 vmoveto
+ 600 70 hlineto
+ -47 callgsubr
+ -380 vlineto
+ -93 callgsubr
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.fina.1">
+ 336 0 vmoveto
+ 600 70 -47 hlineto
+ -51 140 -68 -46 34 -94 rlineto
+ -368 -97 callsubr
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.init">
+ -144 -20 hmoveto
+ 79 hlineto
+ -102 callgsubr
+ 219 -42 callgsubr
+ -105 callgsubr
+ </CharString>
+ <CharString name="behDotless-ar.init.hah">
+ -184 -40 callgsubr
+ 90 -107 callsubr
+ -70 vlineto
+ -19 0 -26 -20 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.medi">
+ -144 -20 -102 callsubr
+ hlineto
+ -47 callgsubr
+ -105 callgsubr
+ </CharString>
+ <CharString name="behDotless-ar.medi.1">
+ -114 -20 hmoveto
+ 170 70 -40 hlineto
+ -86 callgsubr
+ rlineto
+ -20 hlineto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.medi.high">
+ -144 -20 -102 callsubr
+ hlineto
+ -8 callgsubr
+ -105 callgsubr
+ </CharString>
+ <CharString name="behDotless-ar.medi.high.1">
+ -144 -20 -102 callsubr
+ hlineto
+ -107 callgsubr
+ 150 -107 callsubr
+ -170 -20 vlineto
+ endchar
+ </CharString>
+ <CharString name="behDotless-ar.medi.yeh">
+ -144 80 80 rmoveto
+ 150 -107 callsubr
+ -210 48 callgsubr
+ </CharString>
+ <CharString name="braceleft">
+ -56 168 560 rmoveto
+ -70 -46 -57 -82 -114 -9 -45 -43 -31 hvcurveto
+ 43 -31 9 -38 -115 vvcurveto
+ -89 39 -58 77 vhcurveto
+ -43 17 -21 41 89 vvcurveto
+ 93 -3 67 -87 24 vhcurveto
+ 90 24 0 66 100 vvcurveto
+ 82 21 37 43 20 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="braceright">
+ -56 -100 vmoveto
+ 70 46 57 82 114 9 45 43 31 hvcurveto
+ -43 31 -9 38 115 vvcurveto
+ 89 -39 58 -77 vhcurveto
+ 43 -17 21 -41 -89 vvcurveto
+ -93 3 -67 87 -24 vhcurveto
+ -90 -24 0 -66 -100 vvcurveto
+ -82 -21 -37 -43 -20 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="bracketleft">
+ -114 110 560 rmoveto
+ -110 -660 110 40 -70 580 70 hlineto
+ endchar
+ </CharString>
+ <CharString name="bracketright">
+ -114 -100 vmoveto
+ 110 660 -110 -40 70 -580 -70 hlineto
+ endchar
+ </CharString>
+ <CharString name="bullet">
+ -107 59 103 rmoveto
+ 32 26 26 33 32 -26 26 -32 -33 -26 -26 -32 -33 26 -26 33 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="c">
+ -84 90 hmoveto
+ 50 70 -40 hlineto
+ -54 callsubr
+ 40 70 -50 9 callsubr
+ endchar
+ </CharString>
+ <CharString name="colon">
+ -144 40 -83 callgsubr
+ 180 vmoveto
+ 22 18 18 22 22 -18 18 -22 -22 -18 -18 -22 -22 18 -18 22 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="comma">
+ -144 21 callgsubr
+ endchar
+ </CharString>
+ <CharString name="comma-ar">
+ -144 20 callgsubr
+ endchar
+ </CharString>
+ <CharString name="d">
+ -79 callsubr
+ hvcurveto
+ -59 callgsubr
+ </CharString>
+ <CharString name="dad-ar">
+ 476 -27 callgsubr
+ 230 -50 callgsubr
+ </CharString>
+ <CharString name="dal-ar">
+ 336 -62 callgsubr
+ endchar
+ </CharString>
+ <CharString name="dal-ar.fina">
+ 336 0 vmoveto
+ 600 -101 callgsubr
+ -326 -64 callsubr
+ 372 -80 callsubr
+ -436 hlineto
+ endchar
+ </CharString>
+ <CharString name="ddal-ar">
+ 336 -62 callgsubr
+ 166 185 -70 callsubr
+ </CharString>
+ <CharString name="dotabove-ar">
+ -264 17 hmoveto
+ -96 callsubr
+ endchar
+ </CharString>
+ <CharString name="dotabove-ar.alt1">
+ -264 -72 callgsubr
+ endchar
+ </CharString>
+ <CharString name="dotbelow-ar">
+ -264 17 hmoveto
+ -96 callsubr
+ endchar
+ </CharString>
+ <CharString name="dotbelow-ar.alt1">
+ -264 -72 callgsubr
+ endchar
+ </CharString>
+ <CharString name="e">
+ 80 90 rmoveto
+ 120 hlineto
+ -100 callgsubr
+ -76 callsubr
+ vhcurveto
+ 70 vlineto
+ -85 callgsubr
+ hvcurveto
+ 37 10 rmoveto
+ -34 hlineto
+ 6 3 7 4 7 hhcurveto
+ 7 7 -4 -6 3 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="eight">
+ -14 -51 callsubr
+ -350 210 hlineto
+ -140 70 rmoveto
+ 70 70 -70 -70 vlineto
+ 70 140 rmoveto
+ -70 70 70 -70 hlineto
+ endchar
+ </CharString>
+ <CharString name="eight-ar">
+ -14 12 callsubr
+ </CharString>
+ <CharString name="eight-ar.1">
+ 82 153 238 rmoveto
+ 87 -238 66 23 -120 327 rlineto
+ -66 hlineto
+ -120 -327 66 -23 87 238 rlineto
+ endchar
+ </CharString>
+ <CharString name="eight-ar.2">
+ 102 163 185 rmoveto
+ 85 -185 rlineto
+ 78 hlineto
+ -163 350 -163 -350 rlineto
+ 77 hlineto
+ 86 185 rlineto
+ endchar
+ </CharString>
+ <CharString name="eight-ar.dnom">
+ -77 36 callgsubr
+ </CharString>
+ <CharString name="eight-ar.numr">
+ -77 28 callgsubr
+ </CharString>
+ <CharString name="eight-persian">
+ -14 12 callsubr
+ </CharString>
+ <CharString name="eight-persian.dnom">
+ -77 36 callgsubr
+ </CharString>
+ <CharString name="eight-persian.numr">
+ -77 28 callgsubr
+ </CharString>
+ <CharString name="eight.dnom">
+ -77 147 245 rmoveto
+ -147 -245 147 hlineto
+ -98 49 rmoveto
+ -39 callgsubr
+ 49 98 rmoveto
+ -49 49 49 -49 hlineto
+ endchar
+ </CharString>
+ <CharString name="eight.numr">
+ -77 147 545 rmoveto
+ -147 -245 147 hlineto
+ -98 49 rmoveto
+ -39 callgsubr
+ 49 98 rmoveto
+ -49 49 49 -49 hlineto
+ endchar
+ </CharString>
+ <CharString name="ellipsis">
+ 96 40 -83 callgsubr
+ 120 -83 callgsubr
+ 120 -83 callgsubr
+ endchar
+ </CharString>
+ <CharString name="emdash">
+ 296 140 vmoveto
+ 520 40 -520 hlineto
+ endchar
+ </CharString>
+ <CharString name="empty">
+ -264 endchar
+ </CharString>
+ <CharString name="endash">
+ 36 140 vmoveto
+ 260 40 -260 hlineto
+ endchar
+ </CharString>
+ <CharString name="exclam">
+ -120 64 155 rmoveto
+ 68 170 -31 83 -50 136 -2 5 -2 6 -2 5 -45 -91 rcurveline
+ 2 -4 2 -4 2 -5 36 -79 34 -76 -12 -146 rrcurveto
+ -14 -155 -84 callgsubr
+ </CharString>
+ <CharString name="exclamdown">
+ -120 40 290 rmoveto
+ -68 -170 31 -83 50 -136 2 -5 2 -6 2 -5 45 91 rcurveline
+ -2 4 -2 4 -2 5 -36 79 -34 76 12 146 rrcurveto
+ 14 155 1 callsubr
+ </CharString>
+ <CharString name="f">
+ -144 40 callgsubr
+ 270 35 vlineto
+ 41 70 rlineto
+ -68 0 callgsubr
+ -70 45 -280 hlineto
+ -30 -13 -20 -27 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="feh-ar">
+ 349 -73 callsubr
+ 408 245 -104 callsubr
+ 17 -165 -106 callgsubr
+ </CharString>
+ <CharString name="fehAfrican-ar">
+ 349 -32 callgsubr
+ </CharString>
+ <CharString name="fehDotless-ar">
+ 349 -32 callgsubr
+ </CharString>
+ <CharString name="fehDotless-ar.1">
+ 336 -8 callsubr
+ 539 -17 callgsubr
+ </CharString>
+ <CharString name="fehDotless-ar.2">
+ 389 0 vmoveto
+ 576 hlineto
+ 24 13 37 65 -67 callsubr
+ hvcurveto
+ -32 callsubr
+ </CharString>
+ <CharString name="fehDotless-ar.3">
+ 376 9 callgsubr
+ 579 -17 callgsubr
+ </CharString>
+ <CharString name="fehDotless-ar.fina">
+ 349 0 vmoveto
+ 613 70 -41 hlineto
+ 1 10 0 10 12 vvcurveto
+ -67 callsubr
+ vhcurveto
+ -52 callgsubr
+ -390 -97 callsubr
+ 408 90 -106 callgsubr
+ </CharString>
+ <CharString name="fehDotless-ar.fina.1">
+ 336 -8 callsubr
+ 600 -29 callsubr
+ </CharString>
+ <CharString name="fehDotless-ar.fina.2">
+ 389 0 vmoveto
+ 653 70 -41 hlineto
+ 1 10 0 10 12 vvcurveto
+ -67 callsubr
+ vhcurveto
+ -32 callsubr
+ </CharString>
+ <CharString name="fehDotless-ar.fina.3">
+ 376 9 callgsubr
+ 640 -29 callsubr
+ </CharString>
+ <CharString name="fehDotless-ar.init">
+ -11 -20 hmoveto
+ 196 -55 callgsubr
+ -150 hlineto
+ 120 110 -106 callgsubr
+ </CharString>
+ <CharString name="fehDotless-ar.init.1">
+ -70 callgsubr
+ 189 vlineto
+ -20 callgsubr
+ </CharString>
+ <CharString name="fehDotless-ar.medi">
+ -16 -20 hmoveto
+ 268 70 -42 137 hlineto
+ 57 -46 46 -57 -57 -47 -46 -57 -28 15 -26 19 -19 vhcurveto
+ 62 -64 rlineto
+ -115 hlineto
+ 146 83 rmoveto
+ -40 41 rlineto
+ -5 5 -4 7 8 vvcurveto
+ 14 8 12 15 14 12 -12 -14 vhcurveto
+ -61 vlineto
+ endchar
+ </CharString>
+ <CharString name="fehDotless-ar.medi.1">
+ -94 callgsubr
+ 130 hlineto
+ -20 callgsubr
+ </CharString>
+ <CharString name="fehDotmovedbelow-ar">
+ 349 -73 callsubr
+ 405 -214 -104 callsubr
+ 20 294 -106 callgsubr
+ </CharString>
+ <CharString name="five">
+ -14 0 vmoveto
+ 210 210 -140 70 140 70 -210 -210 140 -70 -140 hlineto
+ endchar
+ </CharString>
+ <CharString name="five-ar">
+ -14 -57 callgsubr
+ </CharString>
+ <CharString name="five-ar.dnom">
+ -77 -65 callsubr
+ </CharString>
+ <CharString name="five-ar.numr">
+ -77 -56 callgsubr
+ </CharString>
+ <CharString name="five-persian">
+ -14 -57 callgsubr
+ </CharString>
+ <CharString name="five-persian.dnom">
+ -77 -65 callsubr
+ </CharString>
+ <CharString name="five-persian.numr">
+ -77 -56 callgsubr
+ </CharString>
+ <CharString name="five.dnom">
+ -77 0 4 callsubr
+ </CharString>
+ <CharString name="five.numr">
+ -77 300 4 callsubr
+ </CharString>
+ <CharString name="four">
+ -14 -63 callsubr
+ </CharString>
+ <CharString name="four-ar">
+ 86 -68 callsubr
+ </CharString>
+ <CharString name="four-ar.1">
+ 86 8 callsubr
+ 70 -120 70 120 70 vlineto
+ endchar
+ </CharString>
+ <CharString name="four-ar.2">
+ -14 -6 callsubr
+ </CharString>
+ <CharString name="four-ar.dnom">
+ -7 -10 callsubr
+ </CharString>
+ <CharString name="four-ar.numr">
+ -7 7 callgsubr
+ </CharString>
+ <CharString name="four-ar.osf">
+ 86 -68 callsubr
+ </CharString>
+ <CharString name="four-ar.osf.1">
+ 86 27 callgsubr
+ 70 -120 70 120 70 vlineto
+ endchar
+ </CharString>
+ <CharString name="four-ar.osf.2">
+ -14 -6 callsubr
+ </CharString>
+ <CharString name="four-persian">
+ 86 -68 callsubr
+ </CharString>
+ <CharString name="four-persian.dnom">
+ -7 -10 callsubr
+ </CharString>
+ <CharString name="four-persian.numr">
+ -7 7 callgsubr
+ </CharString>
+ <CharString name="four-persian.urdu">
+ 56 120 189 rmoveto
+ 70 91 90 70 -280 -350 70 280 50 hlineto
+ endchar
+ </CharString>
+ <CharString name="four.dnom">
+ -77 -54 callgsubr
+ </CharString>
+ <CharString name="four.numr">
+ -77 -62 callsubr
+ </CharString>
+ <CharString name="fraction">
+ -184 -118 hmoveto
+ 312 540 -35 20 -312 -540 rlineto
+ endchar
+ </CharString>
+ <CharString name="fullstop-ar">
+ -74 110 hmoveto
+ 40 70 rlineto
+ -110 hlineto
+ -40 -70 rlineto
+ endchar
+ </CharString>
+ <CharString name="g">
+ -82 callsubr
+ 300 vlineto
+ 130 -77 callsubr
+ -5 -40 hhcurveto
+ 42 callgsubr
+ 7 7 0 1 6 hvcurveto
+ -181 -81 callsubr
+ 98 230 -106 callgsubr
+ </CharString>
+ <CharString name="g.1">
+ -82 callsubr
+ 300 vlineto
+ -100 callgsubr
+ -76 callsubr
+ 7 7 0 1 6 vhcurveto
+ -181 -81 callsubr
+ 98 230 -106 callgsubr
+ </CharString>
+ <CharString name="gaf-ar">
+ 376 -64 callgsubr
+ </CharString>
+ <CharString name="ghain-ar">
+ 416 -29 callgsubr
+ 309 340 rmoveto
+ -96 callsubr
+ endchar
+ </CharString>
+ <CharString name="guillemetleft">
+ -60 -2 callsubr
+ 82 hmoveto
+ -97 -46 -13 -126 82 -87 28 56 rcurveline
+ -63 59 6 90 57 54 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="guillemetright">
+ -60 3 callsubr
+ 82 hmoveto
+ 97 46 13 126 -82 87 -28 -56 rcurveline
+ 63 -59 -6 -90 -57 -54 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="guilsinglleft">
+ -142 -2 callsubr
+ endchar
+ </CharString>
+ <CharString name="guilsinglright">
+ -142 3 callsubr
+ endchar
+ </CharString>
+ <CharString name="h">
+ 5 callgsubr
+ 21 callsubr
+ vhcurveto
+ 379 -107 callsubr
+ -560 -99 callgsubr
+ 39 vlineto
+ endchar
+ </CharString>
+ <CharString name="h.1">
+ 14 callgsubr
+ 21 callsubr
+ vhcurveto
+ 379 -107 callsubr
+ endchar
+ </CharString>
+ <CharString name="hah-ar">
+ 376 -79 callgsubr
+ endchar
+ </CharString>
+ <CharString name="hah-ar.1">
+ 396 90 -103 callsubr
+ 425 -106 callsubr
+ -456 -9 callsubr
+ 479 -106 callsubr
+ -157 -18 callsubr
+ </CharString>
+ <CharString name="hah-ar.2">
+ 416 90 -103 callsubr
+ 445 -106 callsubr
+ -476 -9 callsubr
+ 499 -106 callsubr
+ -177 -18 callsubr
+ </CharString>
+ <CharString name="hah-ar.3">
+ 226 -26 callgsubr
+ </CharString>
+ <CharString name="hah-ar.4">
+ 343 -91 callsubr
+ 331 -106 callsubr
+ -344 -65 callgsubr
+ 386 -106 callsubr
+ -137 -31 callsubr
+ </CharString>
+ <CharString name="hah-ar.5">
+ 363 -91 callsubr
+ 351 -106 callsubr
+ -364 -65 callgsubr
+ 406 -106 callsubr
+ -157 -31 callsubr
+ </CharString>
+ <CharString name="hah-ar.fina">
+ 47 312 0 callsubr
+ -29 51 callgsubr
+ 43 46 8 35 76 hvcurveto
+ -8 -49 -35 -4 -26 hhcurveto
+ -83 -91 36 90 67 50 26 40 hvcurveto
+ 50 hlineto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.fina.1">
+ 226 -26 callgsubr
+ </CharString>
+ <CharString name="hah-ar.init">
+ 136 -17 callsubr
+ </CharString>
+ <CharString name="hah-ar.init.1">
+ 156 -16 callsubr
+ </CharString>
+ <CharString name="hah-ar.init.2">
+ 176 -2 callgsubr
+ </CharString>
+ <CharString name="hah-ar.medi">
+ -73 192 0 callsubr
+ -79 -70 119 hlineto
+ endchar
+ </CharString>
+ <CharString name="hah-ar.medi.1">
+ 136 -17 callsubr
+ </CharString>
+ <CharString name="hah-ar.medi.2">
+ 156 -16 callsubr
+ </CharString>
+ <CharString name="hah-ar.medi.3">
+ 176 -2 callgsubr
+ </CharString>
+ <CharString name="hamza-ar">
+ 32 165 50 rmoveto
+ -15 -9 12 14 15 12 16 26 10 11 -2 -5 13 hvcurveto
+ 32 -10 -25 18 -25 hhcurveto
+ -55 -23 -56 -44 13 hvcurveto
+ -19 hlineto
+ -29 -50 rlineto
+ 186 hlineto
+ 30 50 rlineto
+ -91 hlineto
+ endchar
+ </CharString>
+ <CharString name="hamzaabove-ar">
+ -264 72 29 -100 callsubr
+ </CharString>
+ <CharString name="hamzabelow-ar">
+ -264 72 29 -100 callsubr
+ </CharString>
+ <CharString name="heh-ar">
+ -33 callsubr
+ </CharString>
+ <CharString name="heh-ar.1">
+ -79 callsubr
+ hvcurveto
+ -35 callsubr
+ </CharString>
+ <CharString name="heh-ar.2">
+ -79 callsubr
+ hvcurveto
+ -59 callgsubr
+ </CharString>
+ <CharString name="heh-ar.fina">
+ 100 -102 callsubr
+ -40 20 hlineto
+ -12 callgsubr
+ </CharString>
+ <CharString name="heh-ar.fina.1">
+ 100 -102 callsubr
+ -40 20 hlineto
+ -35 callsubr
+ </CharString>
+ <CharString name="heh-ar.fina.2">
+ 100 -102 callsubr
+ -40 20 hlineto
+ -59 callgsubr
+ </CharString>
+ <CharString name="heh-ar.init">
+ -47 callsubr
+ </CharString>
+ <CharString name="heh-ar.init.1">
+ -85 callsubr
+ 235 -34 callgsubr
+ </CharString>
+ <CharString name="heh-ar.init.2">
+ -70 callgsubr
+ 29 vlineto
+ 235 -77 callsubr
+ 0 -40 -74 callsubr
+ </CharString>
+ <CharString name="heh-ar.init.3">
+ -70 callgsubr
+ 29 vlineto
+ 235 vlineto
+ -45 callsubr
+ </CharString>
+ <CharString name="heh-ar.init.4">
+ -71 callgsubr
+ 235 vlineto
+ -35 -20 -20 0 -40 hhcurveto
+ -18 callgsubr
+ </CharString>
+ <CharString name="heh-ar.init.5">
+ -71 callgsubr
+ 235 vlineto
+ -21 callgsubr
+ </CharString>
+ <CharString name="heh-ar.init.6">
+ -71 callgsubr
+ 245 vlineto
+ -28 -16 -24 -7 -40 hhcurveto
+ -74 -46 -40 -63 -23 6 -20 6 -14 hvcurveto
+ -32 hlineto
+ 109 90 rmoveto
+ 31 -30 -40 -10 rlineto
+ 31 -50 rmoveto
+ -31 30 40 10 -9 -40 rlineto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.init.7">
+ -71 callgsubr
+ 280 vlineto
+ -27 callsubr
+ </CharString>
+ <CharString name="heh-ar.medi">
+ -85 callsubr
+ 20 40 70 -40 145 -43 callsubr
+ </CharString>
+ <CharString name="heh-ar.medi.1">
+ -85 callsubr
+ 20 40 70 -40 145 -34 callgsubr
+ </CharString>
+ <CharString name="heh-ar.medi.2">
+ -94 callgsubr
+ 205 hlineto
+ -35 -20 -40 0 -40 -74 callsubr
+ </CharString>
+ <CharString name="heh-ar.medi.3">
+ -94 callgsubr
+ 205 hlineto
+ -45 callsubr
+ </CharString>
+ <CharString name="heh-ar.medi.4">
+ -94 callgsubr
+ 185 hlineto
+ -35 -20 -20 0 -40 hhcurveto
+ -65 -57 -32 -72 -18 4 -16 6 -12 hvcurveto
+ -28 hlineto
+ 100 44 rmoveto
+ 20 2 17 16 21 hhcurveto
+ -20 -2 -17 -16 -21 hhcurveto
+ 40 -44 rmoveto
+ -21 -17 16 20 -2 hvcurveto
+ 21 17 -16 -20 2 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.medi.5">
+ -94 callgsubr
+ 185 hlineto
+ -21 callgsubr
+ </CharString>
+ <CharString name="heh-ar.medi.6">
+ -94 callgsubr
+ 195 hlineto
+ -28 -16 -24 -7 -40 hhcurveto
+ -74 -46 -40 -63 -23 6 -20 6 -14 hvcurveto
+ -32 hlineto
+ 109 90 rmoveto
+ 31 -30 -40 -10 rlineto
+ 31 -50 rmoveto
+ -31 30 40 10 -9 -40 rlineto
+ endchar
+ </CharString>
+ <CharString name="heh-ar.medi.7">
+ -94 callgsubr
+ 230 hlineto
+ -27 callsubr
+ </CharString>
+ <CharString name="hehDoachashmee-ar">
+ -47 callsubr
+ </CharString>
+ <CharString name="hehgoal-ar">
+ -33 callsubr
+ </CharString>
+ <CharString name="hehgoalHamzaabove-ar">
+ 8 callgsubr
+ 13 264 -63 callgsubr
+ -13 -194 -106 callgsubr
+ </CharString>
+ <CharString name="hyphen">
+ -94 140 vmoveto
+ 130 40 -130 hlineto
+ endchar
+ </CharString>
+ <CharString name="i">
+ -64 80 80 rmoveto
+ 120 -107 callsubr
+ -100 -5 callsubr
+ 159 vmoveto
+ 20 vlineto
+ -80 -21 rlineto
+ -20 vlineto
+ endchar
+ </CharString>
+ <CharString name="j">
+ -144 -40 -230 47 callgsubr
+ 370 vlineto
+ -95 callsubr
+ vlineto
+ -30 -13 -20 -27 vhcurveto
+ 120 469 rmoveto
+ 20 vlineto
+ -80 -21 rlineto
+ -20 vlineto
+ endchar
+ </CharString>
+ <CharString name="jeem-ar">
+ 376 -79 callgsubr
+ 180 -124 -104 callsubr
+ endchar
+ </CharString>
+ <CharString name="jeh-ar">
+ 48 -78 callgsubr
+ 79 255 -74 callgsubr
+ </CharString>
+ <CharString name="k">
+ -4 -46 callgsubr
+ 16 -5 15 -8 13 vhcurveto
+ 58 62 -27 128 -98 hhcurveto
+ -15 -15 -5 -9 -14 hvcurveto
+ 254 -107 callsubr
+ -560 -99 callgsubr
+ 39 vlineto
+ 142 vmoveto
+ 79 vlineto
+ 2 3 0 2 hhcurveto
+ 37 16 -23 -21 -19 -12 -17 -21 hvcurveto
+ -7 hlineto
+ -7 -6 0 1 -7 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="k.1">
+ -4 0 vmoveto
+ 80 90 hlineto
+ -87 callgsubr
+ -90 80 90 vlineto
+ 16 -5 15 -8 13 vhcurveto
+ 58 62 -27 128 -98 hhcurveto
+ -15 -15 -5 -9 -14 hvcurveto
+ 254 -107 callsubr
+ 80 -359 rmoveto
+ 79 vlineto
+ 2 3 0 2 hhcurveto
+ 37 16 -23 -21 -19 -12 -17 -21 hvcurveto
+ -7 hlineto
+ -7 -6 0 1 -7 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar">
+ 376 -64 callgsubr
+ </CharString>
+ <CharString name="kaf-ar.1">
+ 376 7 callsubr
+ 579 -104 callgsubr
+ -21 callsubr
+ </CharString>
+ <CharString name="kaf-ar.2">
+ 376 116 hmoveto
+ 463 -104 callgsubr
+ -366 hlineto
+ 27 70 rlineto
+ -3 hlineto
+ -80 -140 rlineto
+ 412 hlineto
+ -15 callsubr
+ </CharString>
+ <CharString name="kaf-ar.fina">
+ 376 116 hmoveto
+ 524 -101 callgsubr
+ -66 callsubr
+ -476 hlineto
+ -40 -70 rlineto
+ 116 hlineto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.fina.1">
+ 376 7 callsubr
+ 640 -101 callgsubr
+ -21 callsubr
+ </CharString>
+ <CharString name="kaf-ar.fina.2">
+ 376 116 hmoveto
+ 524 -101 callgsubr
+ -366 hlineto
+ 27 70 rlineto
+ -3 hlineto
+ -80 -140 rlineto
+ 412 hlineto
+ -15 callsubr
+ </CharString>
+ <CharString name="kaf-ar.init">
+ 316 -20 hmoveto
+ 539 -104 callgsubr
+ -370 -64 callsubr
+ 416 14 callsubr
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.init.1">
+ 336 16 callsubr
+ 557 -104 callgsubr
+ 3 callgsubr
+ </CharString>
+ <CharString name="kaf-ar.init.2">
+ 336 -20 hmoveto
+ 559 -104 callgsubr
+ -66 callsubr
+ -496 hlineto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.medi">
+ 316 -20 hmoveto
+ 600 -101 callgsubr
+ -370 -64 callsubr
+ 416 14 callsubr
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.medi.1">
+ 336 -20 hmoveto
+ 620 -101 callgsubr
+ -66 callsubr
+ -496 hlineto
+ endchar
+ </CharString>
+ <CharString name="kaf-ar.medi.2">
+ 336 16 callsubr
+ 618 -101 callgsubr
+ 3 callgsubr
+ </CharString>
+ <CharString name="kashida-ar">
+ -184 -20 hmoveto
+ 100 70 -100 hlineto
+ endchar
+ </CharString>
+ <CharString name="keheh-ar">
+ 376 -64 callgsubr
+ </CharString>
+ <CharString name="khah-ar">
+ 376 -79 callgsubr
+ 419 273 -104 callsubr
+ endchar
+ </CharString>
+ <CharString name="l">
+ -64 -10 callgsubr
+ </CharString>
+ <CharString name="lam-ar">
+ -74 -58 callsubr
+ 770 -107 callsubr
+ -720 -105 callsubr
+ </CharString>
+ <CharString name="lam-ar.fina">
+ -74 -98 callsubr
+ 40 70 vlineto
+ -107 callgsubr
+ 450 -107 callsubr
+ -720 -105 callsubr
+ </CharString>
+ <CharString name="lam-ar.init">
+ -144 -68 callgsubr
+ 520 53 callgsubr
+ </CharString>
+ <CharString name="lam-ar.init.hah">
+ -184 -40 callgsubr
+ 380 vlineto
+ -95 callsubr
+ vlineto
+ -19 0 -26 -20 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.init.hah2">
+ -184 -40 callgsubr
+ 270 vlineto
+ -81 callgsubr
+ vlineto
+ -19 0 -26 -20 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.init.lellah">
+ -144 -68 callgsubr
+ 490 -107 callsubr
+ -440 -105 callgsubr
+ </CharString>
+ <CharString name="lam-ar.init.short">
+ -144 -68 callgsubr
+ 410 vlineto
+ -95 callsubr
+ -105 callgsubr
+ </CharString>
+ <CharString name="lam-ar.init.short2">
+ -144 -68 callgsubr
+ 300 vlineto
+ -81 callgsubr
+ -105 callgsubr
+ </CharString>
+ <CharString name="lam-ar.medi">
+ -144 -83 callsubr
+ 450 53 callgsubr
+ </CharString>
+ <CharString name="lam-ar.medi.lellah">
+ -144 -83 callsubr
+ 390 -107 callsubr
+ -410 -20 vlineto
+ endchar
+ </CharString>
+ <CharString name="lam-ar.medi.short">
+ -144 -83 callsubr
+ 340 vlineto
+ -95 callsubr
+ -105 callgsubr
+ </CharString>
+ <CharString name="lam-ar.medi.short2">
+ -144 -83 callsubr
+ 230 vlineto
+ -81 callgsubr
+ -105 callgsubr
+ </CharString>
+ <CharString name="lam-ar.medi.yeh">
+ -144 -41 callgsubr
+ -540 48 callgsubr
+ </CharString>
+ <CharString name="lam_alef-ar">
+ 96 0 vmoveto
+ 320 hlineto
+ -114 197 -38 callsubr
+ </CharString>
+ <CharString name="lam_alef-ar.1">
+ -9 0 vmoveto
+ 215 100 hlineto
+ 29 -13 31 -30 22 vhcurveto
+ -92 66 rlineto
+ 312 -107 callsubr
+ -234 vlineto
+ -213 154 -29 -77 242 -175 rlineto
+ 80 -58 rmoveto
+ 46 -33 rlineto
+ 4 -4 5 -5 -8 vvcurveto
+ -30 -55 80 vlineto
+ endchar
+ </CharString>
+ <CharString name="lam_alef-ar.2">
+ 56 0 vmoveto
+ 280 hlineto
+ -108 142 -19 callgsubr
+ </CharString>
+ <CharString name="lam_alef-ar.3">
+ 56 0 vmoveto
+ 280 hlineto
+ -108 142 -34 callsubr
+ </CharString>
+ <CharString name="lam_alef-ar.4">
+ 136 0 vmoveto
+ 360 hlineto
+ -46 34 -62 54 -42 52 -30 callgsubr
+ </CharString>
+ <CharString name="lam_alef-ar.5">
+ 136 0 vmoveto
+ 360 hlineto
+ -46 34 -62 54 -42 52 -42 callsubr
+ </CharString>
+ <CharString name="lam_alef-ar.fina">
+ 96 0 vmoveto
+ 360 70 -80 hlineto
+ -74 127 -38 callsubr
+ </CharString>
+ <CharString name="lam_alef-ar.fina.1">
+ -9 0 vmoveto
+ 255 70 -40 30 hlineto
+ 29 -13 31 -30 22 vhcurveto
+ -92 66 rlineto
+ 312 -107 callsubr
+ -234 vlineto
+ -213 154 -29 -77 242 -175 rlineto
+ 80 -58 rmoveto
+ 46 -33 rlineto
+ 4 -4 5 -5 -8 vvcurveto
+ -30 -55 80 vlineto
+ endchar
+ </CharString>
+ <CharString name="lam_alef-ar.fina.2">
+ 56 0 vmoveto
+ 320 70 -93 hlineto
+ -55 72 -19 callgsubr
+ </CharString>
+ <CharString name="lam_alef-ar.fina.3">
+ 56 0 vmoveto
+ 320 70 -93 hlineto
+ -55 72 -34 callsubr
+ </CharString>
+ <CharString name="lam_alef-ar.fina.4">
+ 136 0 vmoveto
+ 400 70 -124 hlineto
+ -24 22 -23 24 -19 24 -30 callgsubr
+ </CharString>
+ <CharString name="lam_alef-ar.fina.5">
+ 136 0 vmoveto
+ 400 70 -124 hlineto
+ -24 22 -23 24 -19 24 -42 callsubr
+ </CharString>
+ <CharString name="m">
+ 96 -46 callgsubr
+ -87 callgsubr
+ -110 -99 callgsubr
+ 10 callgsubr
+ -240 -99 callgsubr
+ 39 vlineto
+ endchar
+ </CharString>
+ <CharString name="m.1">
+ 96 120 hmoveto
+ 80 90 hlineto
+ -87 callgsubr
+ -90 80 10 callgsubr
+ -220 80 90 vlineto
+ -87 callgsubr
+ endchar
+ </CharString>
+ <CharString name="meem-ar">
+ 176 0 vmoveto
+ 300 23 callgsubr
+ -102 hlineto
+ -20 -17 5 15 -11 hvcurveto
+ 248 -20 rmoveto
+ -9 callgsubr
+ </CharString>
+ <CharString name="meem-ar.1">
+ 16 0 vmoveto
+ 140 hlineto
+ -53 callsubr
+ -96 callgsubr
+ -40 -5 -30 -35 -20 hvcurveto
+ 140 70 -106 callgsubr
+ </CharString>
+ <CharString name="meem-ar.2">
+ 14 138 -40 rmoveto
+ -53 callsubr
+ -52 -43 -36 -46 -5 hvcurveto
+ -3 -24 -10 -20 -25 -14 rrcurveto
+ 52 hlineto
+ -27 17 32 -13 37 hhcurveto
+ -93 callsubr
+ </CharString>
+ <CharString name="meem-ar.fina">
+ 176 0 vmoveto
+ 440 -4 callsubr
+ -102 hlineto
+ -20 -17 5 15 -11 hvcurveto
+ 248 -20 rmoveto
+ -9 callgsubr
+ </CharString>
+ <CharString name="meem-ar.fina.1">
+ 16 0 vmoveto
+ 280 70 -41 hlineto
+ 6 1 7 7 vvcurveto
+ -100 callgsubr
+ -40 -5 -30 -35 -20 vhcurveto
+ 140 70 -106 callgsubr
+ </CharString>
+ <CharString name="meem-ar.fina.2">
+ 14 138 -40 rmoveto
+ 43 30 13 27 16 hvcurveto
+ 51 70 -43 hlineto
+ 40 -10 -39 30 -48 hhcurveto
+ -52 -43 -36 -46 -5 hvcurveto
+ -3 -24 -10 -20 -25 -14 rrcurveto
+ 52 hlineto
+ -27 17 32 -13 37 hhcurveto
+ -93 callsubr
+ </CharString>
+ <CharString name="meem-ar.init">
+ -20 hmoveto
+ 120 23 callgsubr
+ -22 hlineto
+ 120 hmoveto
+ -11 -9 9 11 11 9 9 -56 callsubr
+ hvcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.medi">
+ -20 hmoveto
+ 260 -4 callsubr
+ -22 hlineto
+ 120 hmoveto
+ -11 -9 9 11 11 9 9 -56 callsubr
+ hvcurveto
+ endchar
+ </CharString>
+ <CharString name="meem-ar.medi.1">
+ 100 -40 rmoveto
+ 43 30 13 27 16 hvcurveto
+ 51 70 -43 hlineto
+ 40 -10 -39 30 -48 hhcurveto
+ -48 -39 -30 -40 -11 hvcurveto
+ -22 -70 31 hlineto
+ -27 16 30 -13 43 hhcurveto
+ 70 vmoveto
+ -11 -9 8 11 hvcurveto
+ 2 vlineto
+ 11 9 8 -56 callsubr
+ vhcurveto
+ endchar
+ </CharString>
+ <CharString name="n">
+ 5 callgsubr
+ -78 callsubr
+ vhcurveto
+ -240 -99 callgsubr
+ 39 vlineto
+ endchar
+ </CharString>
+ <CharString name="n.1">
+ 14 callgsubr
+ -78 callsubr
+ vhcurveto
+ endchar
+ </CharString>
+ <CharString name="nine">
+ -14 70 vmoveto
+ -70 210 350 -210 -210 140 -70 vlineto
+ 210 vmoveto
+ -70 -90 callsubr
+ </CharString>
+ <CharString name="nine-ar">
+ -14 6 callgsubr
+ </CharString>
+ <CharString name="nine-ar.dnom">
+ -77 12 callgsubr
+ </CharString>
+ <CharString name="nine-ar.numr">
+ -77 -7 callsubr
+ </CharString>
+ <CharString name="nine-ar.osf">
+ -14 -51 callsubr
+ -210 140 -250 70 hlineto
+ -70 390 rmoveto
+ -70 -90 callsubr
+ </CharString>
+ <CharString name="nine-persian">
+ -14 6 callgsubr
+ </CharString>
+ <CharString name="nine-persian.dnom">
+ -77 12 callgsubr
+ </CharString>
+ <CharString name="nine-persian.numr">
+ -77 -7 callsubr
+ </CharString>
+ <CharString name="nine.dnom">
+ -77 49 vmoveto
+ -49 147 245 -38 callgsubr
+ vlineto
+ 147 vmoveto
+ 20 callsubr
+ </CharString>
+ <CharString name="nine.numr">
+ -77 349 vmoveto
+ -49 147 245 -38 callgsubr
+ vlineto
+ 147 vmoveto
+ 20 callsubr
+ </CharString>
+ <CharString name="noon-ar">
+ -74 -22 callsubr
+ 158 365 -104 callsubr
+ endchar
+ </CharString>
+ <CharString name="noonAfrican-ar">
+ -74 -25 callsubr
+ </CharString>
+ <CharString name="noonghunna-ar">
+ -74 -25 callsubr
+ </CharString>
+ <CharString name="noonghunna-ar.fina">
+ -74 -98 callsubr
+ 40 70 -50 vlineto
+ -70 70 39 callgsubr
+ endchar
+ </CharString>
+ <CharString name="o">
+ 100 hmoveto
+ -53 callsubr
+ -3 callgsubr
+ </CharString>
+ <CharString name="one">
+ -154 -44 callgsubr
+ </CharString>
+ <CharString name="one-ar">
+ -154 -44 callgsubr
+ </CharString>
+ <CharString name="one-ar.dnom">
+ -175 -55 callsubr
+ </CharString>
+ <CharString name="one-ar.numr">
+ -175 -43 callgsubr
+ </CharString>
+ <CharString name="one-ar.osf">
+ -154 350 vmoveto
+ -460 70 460 vlineto
+ endchar
+ </CharString>
+ <CharString name="one-persian">
+ -154 -44 callgsubr
+ </CharString>
+ <CharString name="one-persian.dnom">
+ -175 -55 callsubr
+ </CharString>
+ <CharString name="one-persian.numr">
+ -175 -43 callgsubr
+ </CharString>
+ <CharString name="one.dnom">
+ -175 -55 callsubr
+ </CharString>
+ <CharString name="one.numr">
+ -175 -43 callgsubr
+ </CharString>
+ <CharString name="p">
+ 90 vmoveto
+ -11 callsubr
+ -78 callsubr
+ hvcurveto
+ 100 -103 callsubr
+ -84 callsubr
+ </CharString>
+ <CharString name="p.1">
+ 100 180 rmoveto
+ -65 -35 -30 -60 hvcurveto
+ -11 callsubr
+ hvcurveto
+ -70 vmoveto
+ -84 callsubr
+ </CharString>
+ <CharString name="parenleft">
+ -102 122 560 rmoveto
+ -154 -178 0 -256 109 -226 45 91 rcurveline
+ -93 174 -3 230 96 165 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="parenright">
+ -102 -100 vmoveto
+ 154 178 0 256 -109 226 -45 -91 rcurveline
+ 93 -174 3 -230 -96 -165 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="peh-ar">
+ 336 -99 callsubr
+ 210 -214 -74 callgsubr
+ </CharString>
+ <CharString name="percent">
+ 12 -45 callgsubr
+ -88 -422 27 callsubr
+ -229 402 27 callsubr
+ 31 -480 rmoveto
+ 38 39 -38 -39 vlineto
+ -110 402 rmoveto
+ 38 39 -38 -39 vlineto
+ endchar
+ </CharString>
+ <CharString name="percent-ar">
+ 12 -45 callgsubr
+ -32 -440 rmoveto
+ -70 70 70 vlineto
+ -236 390 rmoveto
+ -90 callsubr
+ </CharString>
+ <CharString name="period">
+ -144 40 -83 callgsubr
+ endchar
+ </CharString>
+ <CharString name="periodcentered">
+ -144 40 120 -84 callgsubr
+ </CharString>
+ <CharString name="q">
+ 200 90 rmoveto
+ 130 -77 callsubr
+ -5 -40 hhcurveto
+ -55 -45 -30 -60 -98 callgsubr
+ 7 6 0 -1 7 hvcurveto
+ -249 -99 callgsubr
+ 190 vlineto
+ 130 vlineto
+ -100 20 rmoveto
+ -84 callsubr
+ </CharString>
+ <CharString name="q.1">
+ 100 180 rmoveto
+ -55 -45 -30 -60 -50 45 -40 55 7 6 0 -1 7 hvcurveto
+ -249 -99 callgsubr
+ 190 vlineto
+ 130 vlineto
+ 60 -35 30 -65 vhcurveto
+ -70 vmoveto
+ -84 callsubr
+ </CharString>
+ <CharString name="qaf-ar">
+ 32 -24 callgsubr
+ 86 415 -15 callgsubr
+ </CharString>
+ <CharString name="qafAfrican-ar">
+ 32 -49 callsubr
+ </CharString>
+ <CharString name="qafDotabove-ar">
+ 32 -41 callsubr
+ 415 -104 callsubr
+ 17 -175 -106 callgsubr
+ </CharString>
+ <CharString name="qafDotless-ar">
+ 32 -49 callsubr
+ </CharString>
+ <CharString name="qafDotless-ar.fina">
+ -8 100 hmoveto
+ 27 hlineto
+ -127 -140 46 callgsubr
+ -40 -70 rlineto
+ 299 -104 callgsubr
+ -51 hlineto
+ 64 70 rlineto
+ 101 70 -57 hlineto
+ 1 6 0 7 7 vvcurveto
+ -100 callgsubr
+ -76 callsubr
+ vhcurveto
+ -93 callsubr
+ </CharString>
+ <CharString name="question">
+ 6 531 vmoveto
+ -78 vlineto
+ 26 43 37 11 34 hhcurveto
+ 33 51 -12 -34 -23 -23 -26 -40 -19 hvcurveto
+ -63 -31 -35 -39 -54 vvcurveto
+ -28 10 -31 20 -37 vhcurveto
+ -10 83 28 32 77 41 rrcurveto
+ 51 28 17 44 40 vvcurveto
+ 76 -62 60 -76 -31 -32 -10 -19 -29 vhcurveto
+ 77 -531 -84 callgsubr
+ </CharString>
+ <CharString name="question-ar">
+ 6 230 531 rmoveto
+ 19 -29 -32 10 -31 hhcurveto
+ -76 -62 -60 -76 -40 17 -44 51 -28 hvcurveto
+ 77 -41 28 -32 -10 -83 rrcurveto
+ 20 37 10 31 28 vvcurveto
+ 54 -35 39 -63 31 vhcurveto
+ -40 19 -23 26 23 vvcurveto
+ 34 51 12 33 34 37 -11 -26 43 vhcurveto
+ -77 -453 -84 callgsubr
+ </CharString>
+ <CharString name="questiondown">
+ 6 230 -86 rmoveto
+ 78 vlineto
+ -26 -43 -37 -11 -34 hhcurveto
+ -33 -51 12 34 23 23 26 40 19 hvcurveto
+ 63 31 35 39 54 vvcurveto
+ 28 -10 31 -20 37 vhcurveto
+ 10 -83 -28 -32 -77 -41 rrcurveto
+ -51 -28 -17 -44 -40 vvcurveto
+ -76 62 -60 76 31 32 10 19 29 vhcurveto
+ -77 531 1 callsubr
+ </CharString>
+ <CharString name="quotedbl">
+ -104 22 callsubr
+ 120 hmoveto
+ 235 -40 -235 vlineto
+ endchar
+ </CharString>
+ <CharString name="quotedblbase">
+ -84 -100 -13 callgsubr
+ </CharString>
+ <CharString name="quotedblleft">
+ -84 -3 callsubr
+ 65 hmoveto
+ -88 -42 -12 -114 75 -79 25 50 rcurveline
+ -57 54 5 82 52 49 rrcurveto
+ endchar
+ </CharString>
+ <CharString name="quotedblright">
+ -84 324 -13 callgsubr
+ </CharString>
+ <CharString name="quoteleft">
+ -149 -3 callsubr
+ endchar
+ </CharString>
+ <CharString name="quoteright">
+ -149 324 -60 callgsubr
+ endchar
+ </CharString>
+ <CharString name="quotesinglbase">
+ -149 -100 -60 callgsubr
+ endchar
+ </CharString>
+ <CharString name="quotesingle">
+ -184 22 callsubr
+ endchar
+ </CharString>
+ <CharString name="r">
+ -47 -61 callsubr
+ -240 -99 callgsubr
+ 41 callgsubr
+ </CharString>
+ <CharString name="r.1">
+ -47 -61 callsubr
+ -470 -99 callgsubr
+ 320 vlineto
+ 11 9 9 11 7 7 -4 -6 3 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="r.2">
+ -47 -61 callsubr
+ -220 80 41 callgsubr
+ </CharString>
+ <CharString name="reh-ar">
+ 48 -78 callgsubr
+ endchar
+ </CharString>
+ <CharString name="reh-ar.1">
+ 48 -63 -103 callsubr
+ -20 callsubr
+ </CharString>
+ <CharString name="reh-ar.2">
+ 136 0 vmoveto
+ -4 callgsubr
+ endchar
+ </CharString>
+ <CharString name="reh-ar.3">
+ 136 0 vmoveto
+ -20 callsubr
+ </CharString>
+ <CharString name="reh-ar.fina">
+ 19 18 callsubr
+ -5 30 -9 24 hvcurveto
+ 69 -50 vlineto
+ -35 29 -51 20 -66 21 -80 -140 rcurveline
+ 45 callgsubr
+ </CharString>
+ <CharString name="reh-ar.fina.1">
+ 19 18 callsubr
+ -4 29 -10 25 hvcurveto
+ 69 -61 vlineto
+ -37 21 -53 10 -71 4 -60 -105 rcurveline
+ 45 callgsubr
+ </CharString>
+ <CharString name="rreh-ar">
+ 48 -78 callgsubr
+ 66 255 -70 callsubr
+ </CharString>
+ <CharString name="s">
+ -26 71 vmoveto
+ -48 9 41 -23 49 hhcurveto
+ 58 34 24 47 7 hvcurveto
+ -146 39 rlineto
+ 144 hlineto
+ 40 -10 -40 30 -47 hhcurveto
+ -48 -40 -30 -41 -10 hvcurveto
+ 141 -38 rlineto
+ endchar
+ </CharString>
+ <CharString name="sad-ar">
+ 476 -27 callgsubr
+ endchar
+ </CharString>
+ <CharString name="sad-ar.1">
+ 476 -98 callsubr
+ 529 vlineto
+ -48 callgsubr
+ -26 callsubr
+ </CharString>
+ <CharString name="sad-ar.fina">
+ 476 -98 callsubr
+ 590 70 -43 vlineto
+ 24 callsubr
+ -436 hlineto
+ -80 80 -40 -70 40 -40 rlineto
+ -330 -12 callsubr
+ </CharString>
+ <CharString name="sad-ar.fina.1">
+ 476 -98 callsubr
+ 590 70 -43 vlineto
+ 24 callsubr
+ -26 callsubr
+ </CharString>
+ <CharString name="sad-ar.init">
+ 406 46 hmoveto
+ 563 -104 callgsubr
+ -5 callgsubr
+ </CharString>
+ <CharString name="sad-ar.medi">
+ 406 46 hmoveto
+ 624 -101 callgsubr
+ -5 callgsubr
+ </CharString>
+ <CharString name="seen-ar">
+ 166 -91 callgsubr
+ 259 -87 callsubr
+ -370 -105 callsubr
+ </CharString>
+ <CharString name="seen-ar.1">
+ 166 -91 callgsubr
+ 279 -75 callgsubr
+ -390 -105 callsubr
+ </CharString>
+ <CharString name="seen-ar.2">
+ 166 -91 callgsubr
+ 299 -89 callsubr
+ -410 -105 callsubr
+ </CharString>
+ <CharString name="seen-ar.3">
+ 166 -28 callgsubr
+ endchar
+ </CharString>
+ <CharString name="seen-ar.4">
+ 166 -91 callgsubr
+ 239 -76 callgsubr
+ -410 -105 callsubr
+ </CharString>
+ <CharString name="seen-ar.5">
+ 166 -91 callgsubr
+ 259 -88 callsubr
+ -430 -105 callsubr
+ </CharString>
+ <CharString name="seen-ar.6">
+ 106 -98 callsubr
+ 159 vlineto
+ 16 callgsubr
+ 40 -40 rlineto
+ -210 -105 callsubr
+ </CharString>
+ <CharString name="seen-ar.fina">
+ 166 -92 callgsubr
+ 160 -87 callsubr
+ -370 -105 callsubr
+ </CharString>
+ <CharString name="seen-ar.fina.1">
+ 166 -92 callgsubr
+ 180 -75 callgsubr
+ -390 -105 callsubr
+ </CharString>
+ <CharString name="seen-ar.fina.2">
+ 166 -92 callgsubr
+ 200 -89 callsubr
+ -410 -105 callsubr
+ </CharString>
+ <CharString name="seen-ar.fina.3">
+ 166 -92 callgsubr
+ 120 -77 callgsubr
+ -390 -88 callgsubr
+ endchar
+ </CharString>
+ <CharString name="seen-ar.fina.4">
+ 166 -92 callgsubr
+ 140 -76 callgsubr
+ -410 -105 callsubr
+ </CharString>
+ <CharString name="seen-ar.fina.5">
+ 166 -92 callgsubr
+ 160 -88 callsubr
+ -430 -105 callsubr
+ </CharString>
+ <CharString name="seen-ar.init">
+ 96 -20 hmoveto
+ 319 hlineto
+ -102 callgsubr
+ 259 -87 callsubr
+ -120 -105 callgsubr
+ </CharString>
+ <CharString name="seen-ar.init.1">
+ 96 -20 hmoveto
+ 319 hlineto
+ -102 callgsubr
+ 279 -75 callgsubr
+ -140 -105 callgsubr
+ </CharString>
+ <CharString name="seen-ar.init.2">
+ 96 -20 hmoveto
+ 319 hlineto
+ -102 callgsubr
+ 299 -89 callsubr
+ -160 -105 callgsubr
+ </CharString>
+ <CharString name="seen-ar.init.3">
+ 96 -20 hmoveto
+ 319 hlineto
+ -102 callgsubr
+ 219 -77 callgsubr
+ -140 -105 callgsubr
+ </CharString>
+ <CharString name="seen-ar.init.4">
+ 96 -20 hmoveto
+ 319 hlineto
+ -102 callgsubr
+ 239 -76 callgsubr
+ -160 -105 callgsubr
+ </CharString>
+ <CharString name="seen-ar.init.5">
+ 96 -20 hmoveto
+ 319 hlineto
+ -102 callgsubr
+ 259 -88 callsubr
+ -180 -105 callgsubr
+ </CharString>
+ <CharString name="seen-ar.init.6">
+ 76 -20 hmoveto
+ 299 hlineto
+ 16 callgsubr
+ rlineto
+ -20 hlineto
+ endchar
+ </CharString>
+ <CharString name="seen-ar.medi">
+ 96 -20 hmoveto
+ 380 70 hlineto
+ -107 callgsubr
+ 160 -87 callsubr
+ -120 -105 callgsubr
+ </CharString>
+ <CharString name="seen-ar.medi.1">
+ 96 -20 hmoveto
+ 380 70 hlineto
+ -107 callgsubr
+ 180 -75 callgsubr
+ -140 -105 callgsubr
+ </CharString>
+ <CharString name="seen-ar.medi.2">
+ 96 -20 hmoveto
+ 380 70 hlineto
+ -107 callgsubr
+ 200 -89 callsubr
+ -160 -105 callgsubr
+ </CharString>
+ <CharString name="seen-ar.medi.3">
+ 96 -20 hmoveto
+ 380 70 hlineto
+ -107 callgsubr
+ 120 -77 callgsubr
+ -140 -105 callgsubr
+ </CharString>
+ <CharString name="seen-ar.medi.4">
+ 96 -20 hmoveto
+ 380 70 hlineto
+ -107 callgsubr
+ 140 -76 callgsubr
+ -160 -105 callgsubr
+ </CharString>
+ <CharString name="seen-ar.medi.5">
+ 96 -20 hmoveto
+ 380 70 hlineto
+ -107 callgsubr
+ 160 -88 callsubr
+ -180 -105 callgsubr
+ </CharString>
+ <CharString name="seen-ar.medi.6">
+ 106 -20 hmoveto
+ 390 70 -40 hlineto
+ -86 callgsubr
+ -86 callgsubr
+ -86 callgsubr
+ rlineto
+ -20 hlineto
+ endchar
+ </CharString>
+ <CharString name="semicolon">
+ -144 21 callgsubr
+ 21 295 -84 callgsubr
+ </CharString>
+ <CharString name="semicolon-ar">
+ -144 20 callgsubr
+ -22 -267 rmoveto
+ -53 callgsubr
+ </CharString>
+ <CharString name="seven">
+ -14 34 callgsubr
+ </CharString>
+ <CharString name="seven-ar">
+ -14 2 callsubr
+ </CharString>
+ <CharString name="seven-ar.1">
+ 82 153 112 rmoveto
+ -87 238 -66 -23 120 -327 rlineto
+ 66 hlineto
+ 120 327 -66 23 -87 -238 rlineto
+ endchar
+ </CharString>
+ <CharString name="seven-ar.2">
+ 102 163 165 rmoveto
+ -86 185 rlineto
+ -77 hlineto
+ 163 -350 163 350 rlineto
+ -78 hlineto
+ -85 -185 rlineto
+ endchar
+ </CharString>
+ <CharString name="seven-ar.dnom">
+ -77 6 callsubr
+ </CharString>
+ <CharString name="seven-ar.numr">
+ -77 5 callsubr
+ </CharString>
+ <CharString name="seven-persian">
+ -14 2 callsubr
+ </CharString>
+ <CharString name="seven-persian.dnom">
+ -77 6 callsubr
+ </CharString>
+ <CharString name="seven-persian.numr">
+ -77 5 callsubr
+ </CharString>
+ <CharString name="seven-persian.urdu">
+ -14 0 vmoveto
+ 210 70 -140 280 -70 hlineto
+ endchar
+ </CharString>
+ <CharString name="seven.dnom">
+ -77 147 245 rmoveto
+ -147 -49 98 -196 49 hlineto
+ endchar
+ </CharString>
+ <CharString name="seven.numr">
+ -77 147 545 rmoveto
+ -147 -49 98 -196 49 hlineto
+ endchar
+ </CharString>
+ <CharString name="sheen-ar">
+ 166 -28 callgsubr
+ 250 460 rmoveto
+ -1 callgsubr
+ </CharString>
+ <CharString name="six">
+ -14 210 280 rmoveto
+ 70 -210 -350 210 210 -140 70 vlineto
+ -210 vmoveto
+ 70 70 -70 -70 vlineto
+ endchar
+ </CharString>
+ <CharString name="six-ar">
+ -14 -63 callsubr
+ </CharString>
+ <CharString name="six-ar.1">
+ -14 34 callgsubr
+ </CharString>
+ <CharString name="six-ar.dnom">
+ -77 -54 callgsubr
+ </CharString>
+ <CharString name="six-ar.numr">
+ -77 -62 callsubr
+ </CharString>
+ <CharString name="six-ar.osf">
+ -14 25 callsubr
+ -299 70 460 -70 -91 -70 hlineto
+ endchar
+ </CharString>
+ <CharString name="six-ar.osf.1">
+ -14 -51 callsubr
+ -70 140 -390 70 hlineto
+ endchar
+ </CharString>
+ <CharString name="six-persian">
+ -14 -63 callsubr
+ </CharString>
+ <CharString name="six-persian.dnom">
+ -77 -54 callgsubr
+ </CharString>
+ <CharString name="six-persian.numr">
+ -77 -62 callsubr
+ </CharString>
+ <CharString name="six.dnom">
+ -77 147 196 13 callgsubr
+ </CharString>
+ <CharString name="six.numr">
+ -77 147 496 13 callgsubr
+ </CharString>
+ <CharString name="slash">
+ 12 -45 callgsubr
+ endchar
+ </CharString>
+ <CharString name="space">
+ -264 endchar
+ </CharString>
+ <CharString name="space.alt">
+ -224 endchar
+ </CharString>
+ <CharString name="space.latn">
+ -184 endchar
+ </CharString>
+ <CharString name="t">
+ -64 80 80 rmoveto
+ 80 80 19 -80 81 -107 callsubr
+ -61 -20 -19 20 -80 -5 callsubr
+ endchar
+ </CharString>
+ <CharString name="tah-ar">
+ 486 -16 callgsubr
+ endchar
+ </CharString>
+ <CharString name="tah-ar.fina">
+ 486 0 vmoveto
+ 750 -101 callgsubr
+ -436 -52 callsubr
+ -470 -40 vlineto
+ 120 hmoveto
+ -59 callsubr
+ endchar
+ </CharString>
+ <CharString name="tah-ar.init">
+ 406 -20 hmoveto
+ 629 -104 callgsubr
+ -14 callsubr
+ </CharString>
+ <CharString name="tah-ar.init.short">
+ 406 -20 hmoveto
+ 629 -104 callgsubr
+ -436 270 hlineto
+ -95 callsubr
+ -92 callsubr
+ </CharString>
+ <CharString name="tah-ar.init.short2">
+ 406 -20 hmoveto
+ 629 -104 callgsubr
+ -436 160 hlineto
+ -81 callgsubr
+ -92 callsubr
+ </CharString>
+ <CharString name="tah-ar.medi">
+ 406 -20 hmoveto
+ 690 -101 callgsubr
+ -14 callsubr
+ </CharString>
+ <CharString name="tah-ar.medi.short">
+ 406 17 callsubr
+ 270 hlineto
+ -95 callsubr
+ -92 callsubr
+ </CharString>
+ <CharString name="tah-ar.medi.short2">
+ 406 17 callsubr
+ 160 hlineto
+ -81 callgsubr
+ -92 callsubr
+ </CharString>
+ <CharString name="tahabove-ar">
+ -264 0 vmoveto
+ 142 hlineto
+ 4 2 0 6 44 -21 9 -14 hvcurveto
+ -63 56 hlineto
+ -25 -6 rlineto
+ -88 -13 vlineto
+ 38 hmoveto
+ 14 59 vlineto
+ 8 6 -6 -8 hvcurveto
+ -73 hlineto
+ endchar
+ </CharString>
+ <CharString name="tcheh-ar">
+ 376 -79 callgsubr
+ 192 -124 -74 callgsubr
+ </CharString>
+ <CharString name="teh-ar">
+ 336 -99 callsubr
+ 190 110 -36 callsubr
+ endchar
+ </CharString>
+ <CharString name="tehMarbuta-ar">
+ -31 callgsubr
+ </CharString>
+ <CharString name="tehMarbutagoal-ar">
+ -31 callgsubr
+ </CharString>
+ <CharString name="thal-ar">
+ 336 -62 callgsubr
+ 240 -50 callgsubr
+ </CharString>
+ <CharString name="theh-ar">
+ 336 -99 callsubr
+ 167 110 -74 callgsubr
+ </CharString>
+ <CharString name="three">
+ -14 210 hmoveto
+ 350 57 callgsubr
+ -70 140 -70 -140 -70 vlineto
+ endchar
+ </CharString>
+ <CharString name="three-ar">
+ 86 -69 callsubr
+ </CharString>
+ <CharString name="three-ar.1">
+ 86 8 callsubr
+ 210 -70 -67 callgsubr
+ vlineto
+ endchar
+ </CharString>
+ <CharString name="three-ar.dnom">
+ -7 -13 callsubr
+ </CharString>
+ <CharString name="three-ar.numr">
+ -7 4 callgsubr
+ </CharString>
+ <CharString name="three-ar.osf">
+ 86 -69 callsubr
+ </CharString>
+ <CharString name="three-ar.osf.1">
+ 86 27 callgsubr
+ 210 -70 -67 callgsubr
+ vlineto
+ endchar
+ </CharString>
+ <CharString name="three-persian">
+ 86 -69 callsubr
+ </CharString>
+ <CharString name="three-persian.dnom">
+ -7 -13 callsubr
+ </CharString>
+ <CharString name="three-persian.numr">
+ -7 4 callgsubr
+ </CharString>
+ <CharString name="three.dnom">
+ -77 147 hmoveto
+ 245 23 callsubr
+ -49 98 -49 -98 -49 vlineto
+ endchar
+ </CharString>
+ <CharString name="three.numr">
+ -77 147 300 rmoveto
+ 245 23 callsubr
+ -49 98 -49 -98 -49 vlineto
+ endchar
+ </CharString>
+ <CharString name="threedotsdownbelow-ar">
+ -264 -19 callsubr
+ </CharString>
+ <CharString name="threedotsdownbelow-ar.alt1">
+ -264 68 58 rmoveto
+ 11 callsubr
+ -39 70 rmoveto
+ 11 callsubr
+ 82 hmoveto
+ -16 -13 -13 -16 -16 13 -13 16 16 13 13 16 16 -13 13 -16 hvcurveto
+ endchar
+ </CharString>
+ <CharString name="threedotsupabove-ar">
+ -264 -19 callsubr
+ </CharString>
+ <CharString name="threedotsupabove-ar.alt1">
+ -264 -28 callsubr
+ -43 70 rmoveto
+ -53 callgsubr
+ </CharString>
+ <CharString name="tteh-ar">
+ 336 -99 callsubr
+ 154 110 -70 callsubr
+ </CharString>
+ <CharString name="two">
+ -14 210 hmoveto
+ 70 -140 70 140 210 57 callgsubr
+ -210 vlineto
+ endchar
+ </CharString>
+ <CharString name="two-ar">
+ -14 -1 callsubr
+ </CharString>
+ <CharString name="two-ar.1">
+ -14 350 vmoveto
+ -350 70 280 140 70 vlineto
+ endchar
+ </CharString>
+ <CharString name="two-ar.dnom">
+ -77 26 callgsubr
+ </CharString>
+ <CharString name="two-ar.numr">
+ -77 25 callgsubr
+ </CharString>
+ <CharString name="two-ar.osf">
+ -14 55 callgsubr
+ -460 70 299 140 161 vlineto
+ endchar
+ </CharString>
+ <CharString name="two-ar.osf.1">
+ -14 350 vmoveto
+ -460 70 390 140 70 vlineto
+ endchar
+ </CharString>
+ <CharString name="two-persian">
+ -14 -1 callsubr
+ </CharString>
+ <CharString name="two-persian.dnom">
+ -77 26 callgsubr
+ </CharString>
+ <CharString name="two-persian.numr">
+ -77 25 callgsubr
+ </CharString>
+ <CharString name="two.dnom">
+ -77 147 hmoveto
+ 32 callgsubr
+ </CharString>
+ <CharString name="two.numr">
+ -77 147 300 rmoveto
+ 32 callgsubr
+ </CharString>
+ <CharString name="twodotshorizontalabove-ar">
+ -264 17 hmoveto
+ -60 callsubr
+ endchar
+ </CharString>
+ <CharString name="twodotshorizontalabove-ar.alt1">
+ -264 -30 callsubr
+ </CharString>
+ <CharString name="twodotshorizontalbelow-ar">
+ -264 17 hmoveto
+ -60 callsubr
+ endchar
+ </CharString>
+ <CharString name="twodotshorizontalbelow-ar.alt1">
+ -264 -30 callsubr
+ </CharString>
+ <CharString name="twodotsverticalabove-ar">
+ -264 19 callgsubr
+ </CharString>
+ <CharString name="twodotsverticalabove-ar.alt1">
+ -264 -14 callgsubr
+ </CharString>
+ <CharString name="twodotsverticalbelow-ar">
+ -264 19 callgsubr
+ </CharString>
+ <CharString name="twodotsverticalbelow-ar.alt1">
+ -264 -14 callgsubr
+ </CharString>
+ <CharString name="u">
+ 100 hmoveto
+ 40 40 -5 -35 20 hvcurveto
+ 240 2 callgsubr
+ vhcurveto
+ endchar
+ </CharString>
+ <CharString name="u.1">
+ 200 180 rmoveto
+ -80 -90 hlineto
+ 54 callgsubr
+ 90 -80 -90 vlineto
+ -98 callgsubr
+ 40 40 -5 -35 20 vhcurveto
+ endchar
+ </CharString>
+ <CharString name="underscore">
+ -134 -40 -90 rmoveto
+ 170 40 -170 hlineto
+ endchar
+ </CharString>
+ <CharString name="v">
+ -50 38 callgsubr
+ 107 230 rlineto
+ endchar
+ </CharString>
+ <CharString name="veh-ar">
+ 349 -73 callsubr
+ 347 245 1 callgsubr
+ -14 -165 -106 callgsubr
+ </CharString>
+ <CharString name="w">
+ 87 38 callgsubr
+ 69 147 68 -147 107 230 rlineto
+ -77 hlineto
+ -30 -65 -30 65 rlineto
+ endchar
+ </CharString>
+ <CharString name="waw-ar">
+ 6 -50 -103 callsubr
+ -39 callsubr
+ 128 90 -106 callgsubr
+ </CharString>
+ <CharString name="waw-ar.1">
+ 6 130 hmoveto
+ -25 callgsubr
+ </CharString>
+ <CharString name="waw-ar.2">
+ 69 0 vmoveto
+ 243 hlineto
+ 31 9 14 24 5 hvcurveto
+ 4 17 1 22 26 vvcurveto
+ 36 -4 37 -6 25 vhcurveto
+ 56 -15 -38 33 -50 hhcurveto
+ -55 -58 callgsubr
+ -110 -97 callsubr
+ 128 90 -106 callgsubr
+ </CharString>
+ <CharString name="waw-ar.3">
+ 56 180 110 rmoveto
+ -25 callgsubr
+ </CharString>
+ <CharString name="waw-ar.fina">
+ 16 130 hmoveto
+ 31 hlineto
+ 1 -6 0 -6 -6 vvcurveto
+ -7 0 -8 -2 -7 vhcurveto
+ -110 hlineto
+ 15 callsubr
+ 243 hlineto
+ 31 9 14 24 5 hvcurveto
+ 4 17 1 22 26 3 0 2 2 vvcurveto
+ 37 70 -43 hlineto
+ -1 7 -2 7 -1 7 rrcurveto
+ 56 -15 -38 33 -50 hhcurveto
+ -96 callgsubr
+ -98 callgsubr
+ hvcurveto
+ -93 callsubr
+ </CharString>
+ <CharString name="waw-ar.fina.1">
+ 6 130 hmoveto
+ 20 -40 -100 hlineto
+ 31 callgsubr
+ 70 40 70 -40 20 vlineto
+ -23 callsubr
+ </CharString>
+ <CharString name="wawHamzaabove-ar">
+ 6 -50 -103 callsubr
+ -39 callsubr
+ 140 279 -63 callgsubr
+ -12 -189 -106 callgsubr
+ </CharString>
+ <CharString name="x">
+ -10 137 230 rmoveto
+ -30 -65 -30 65 rlineto
+ -77 hlineto
+ 53 -115 -53 -115 rlineto
+ 77 hlineto
+ 30 65 30 -65 rlineto
+ 77 hlineto
+ -54 115 54 115 rlineto
+ endchar
+ </CharString>
+ <CharString name="y">
+ -82 callsubr
+ 410 2 callgsubr
+ 7 6 0 -1 7 vhcurveto
+ -179 -81 callsubr
+ endchar
+ </CharString>
+ <CharString name="y.1">
+ -82 callsubr
+ 390 -80 -90 vlineto
+ -11 -9 -9 -11 -11 -9 9 11 vhcurveto
+ 90 -80 -90 vlineto
+ -98 callgsubr
+ 7 6 0 -1 7 vhcurveto
+ -179 -81 callsubr
+ endchar
+ </CharString>
+ <CharString name="yeh-ar">
+ -17 -75 callsubr
+ </CharString>
+ <CharString name="yeh-farsi">
+ -17 -75 callsubr
+ </CharString>
+ <CharString name="yehHamzaabove-ar">
+ -17 -48 callsubr
+ 51 357 -100 callsubr
+ </CharString>
+ <CharString name="yehbarree-ar">
+ -22 -44 callsubr
+ </CharString>
+ <CharString name="yehbarreeHamzaabove-ar">
+ -22 -33 callgsubr
+ -61 337 -100 callsubr
+ </CharString>
+ <CharString name="z">
+ 47 22 160 rmoveto
+ 153 hlineto
+ -175 -160 rlineto
+ 257 hlineto
+ -52 90 rlineto
+ -15 -11 -17 -5 -20 hhcurveto
+ -59 hlineto
+ 173 160 rlineto
+ -227 hlineto
+ endchar
+ </CharString>
+ <CharString name="zah-ar">
+ 486 -16 callgsubr
+ 230 -50 callgsubr
+ </CharString>
+ <CharString name="zain-ar">
+ 48 -78 callgsubr
+ 140 255 -104 callsubr
+ endchar
+ </CharString>
+ <CharString name="zero">
+ -14 -57 callgsubr
+ </CharString>
+ <CharString name="zero-ar">
+ -154 210 vmoveto
+ -90 callsubr
+ </CharString>
+ <CharString name="zero-ar.dnom">
+ -175 26 callsubr
+ </CharString>
+ <CharString name="zero-ar.numr">
+ -175 56 callgsubr
+ </CharString>
+ <CharString name="zero-persian">
+ -154 210 vmoveto
+ -90 callsubr
+ </CharString>
+ <CharString name="zero-persian.dnom">
+ -175 26 callsubr
+ </CharString>
+ <CharString name="zero-persian.numr">
+ -175 56 callgsubr
+ </CharString>
+ <CharString name="zero.dnom">
+ -77 -65 callsubr
+ </CharString>
+ <CharString name="zero.numr">
+ -77 -56 callgsubr
+ </CharString>
+ </CharStrings>
+ </CFFFont>
+
+ <GlobalSubrs>
+ <!-- The 'index' attribute is only for humans; it is ignored when parsed. -->
+ <CharString index="0">
+ -22 -18 18 22 hvcurveto
+ return
+ </CharString>
+ <CharString index="1">
+ rmoveto
+ -89 callgsubr
+ endchar
+ </CharString>
+ <CharString index="2">
+ -20 vlineto
+ endchar
+ </CharString>
+ <CharString index="3">
+ hlineto
+ -48 callgsubr
+ return
+ </CharString>
+ <CharString index="4">
+ 22 18 -18 -22 hvcurveto
+ return
+ </CharString>
+ <CharString index="5">
+ 6 15 0 11 hvcurveto
+ return
+ </CharString>
+ <CharString index="6">
+ 70 -43 hlineto
+ 95 -15 -58 15 -38 hhcurveto
+ return
+ </CharString>
+ <CharString index="7">
+ 50 -45 40 -55 -96 callgsubr
+ return
+ </CharString>
+ <CharString index="8">
+ vlineto
+ 80 20 rlineto
+ return
+ </CharString>
+ <CharString index="9">
+ -50 45 -40 55 return
+ </CharString>
+ <CharString index="10">
+ hlineto
+ 23 15 15 25 hvcurveto
+ return
+ </CharString>
+ <CharString index="11">
+ -55 -45 -40 -50 return
+ </CharString>
+ <CharString index="12">
+ vmoveto
+ -89 callgsubr
+ endchar
+ </CharString>
+ <CharString index="13">
+ -20 hmoveto
+ 260 70 -40 return
+ </CharString>
+ <CharString index="14">
+ -22 -16 7 13 -10 hvcurveto
+ return
+ </CharString>
+ <CharString index="15">
+ -130 -250 rmoveto
+ 242 -97 callgsubr
+ 210 280 70 vlineto
+ -107 callgsubr
+ return
+ </CharString>
+ <CharString index="16">
+ -130 -250 rmoveto
+ 242 -97 callgsubr
+ 210 219 vlineto
+ -102 callgsubr
+ return
+ </CharString>
+ <CharString index="17">
+ -9 -5 5 4 -4 hvcurveto
+ -64 64 rlineto
+ -50 50 -44 -149 -49 vvcurveto
+ return
+ </CharString>
+ <CharString index="18">
+ -85 callgsubr
+ 11 9 9 11 -37 callgsubr
+ hvcurveto
+ return
+ </CharString>
+ <CharString index="19">
+ -100 -69 callgsubr
+ return
+ </CharString>
+ <CharString index="20">
+ 11 9 9 11 11 9 -9 -11 vhcurveto
+ return
+ </CharString>
+ <CharString index="21">
+ -70 70 -40 -70 return
+ </CharString>
+ <CharString index="22">
+ -11 -9 9 11 return
+ </CharString>
+ <CharString index="23">
+ rmoveto
+ -66 callgsubr
+ -22 -18 -18 -22 -22 18 -18 22 hvcurveto
+ endchar
+ </CharString>
+ <CharString index="24">
+ hmoveto
+ -66 callgsubr
+ -22 -18 -18 -22 -22 18 -18 22 hvcurveto
+ return
+ </CharString>
+ <CharString index="25">
+ -31 31 -17 17 9 47 14 -14 rlinecurve
+ 52 -52 rlineto
+ -10 10 9 -5 12 hhcurveto
+ return
+ </CharString>
+ <CharString index="26">
+ -80 -20 rlineto
+ -250 return
+ </CharString>
+ <CharString index="27">
+ -23 callgsubr
+ endchar
+ </CharString>
+ <CharString index="28">
+ 90 -110 rmoveto
+ 405 hlineto
+ 41 70 rlineto
+ -436 hlineto
+ -85 callgsubr
+ 11 9 9 11 hvcurveto
+ 459 hlineto
+ 41 70 rlineto
+ -137 hlineto
+ -58 -61 65 75 -61 hvcurveto
+ -43 -70 19 -28 28 -29 15 -13 rlinecurve
+ -212 hlineto
+ -50 -40 -40 -50 -50 40 -40 50 hvcurveto
+ return
+ </CharString>
+ <CharString index="29">
+ -63 -110 rmoveto
+ -4 callgsubr
+ return
+ </CharString>
+ <CharString index="30">
+ -42 callgsubr
+ vlineto
+ -47 callgsubr
+ 15 callgsubr
+ return
+ </CharString>
+ <CharString index="31">
+ vlineto
+ -80 -20 rlineto
+ -160 vlineto
+ -107 callgsubr
+ 140 vlineto
+ -80 -20 rlineto
+ -160 vlineto
+ -107 callgsubr
+ 140 vlineto
+ -80 -20 rlineto
+ return
+ </CharString>
+ <CharString index="32">
+ vlineto
+ -80 -20 rlineto
+ -200 vlineto
+ -107 callgsubr
+ 150 vlineto
+ -80 -20 rlineto
+ -170 15 callgsubr
+ return
+ </CharString>
+ <CharString index="33">
+ 1 callgsubr
+ endchar
+ </CharString>
+ <CharString index="34">
+ rmoveto
+ 202 -97 callgsubr
+ return
+ </CharString>
+ <CharString index="35">
+ 29 -7 callgsubr
+ return
+ </CharString>
+ <CharString index="36">
+ -70 callgsubr
+ 9 vlineto
+ return
+ </CharString>
+ <CharString index="37">
+ -20 hmoveto
+ 199 hlineto
+ -102 callgsubr
+ return
+ </CharString>
+ <CharString index="38">
+ vlineto
+ -20 -17 5 15 -11 hvcurveto
+ return
+ </CharString>
+ <CharString index="39">
+ -20 hmoveto
+ 62 -97 callgsubr
+ return
+ </CharString>
+ <CharString index="40">
+ -140 -50 140 return
+ </CharString>
+ <CharString index="41">
+ 22 18 18 22 22 -18 18 -22 return
+ </CharString>
+ <CharString index="42">
+ hlineto
+ -32 -22 3 23 -23 hvcurveto
+ -82 callgsubr
+ return
+ </CharString>
+ <CharString index="43">
+ 116 hmoveto
+ 463 -104 callgsubr
+ -366 380 hlineto
+ -80 -20 rlineto
+ -430 436 vlineto
+ -103 callgsubr
+ -476 hlineto
+ -40 -70 rlineto
+ 116 hlineto
+ endchar
+ </CharString>
+ <CharString index="44">
+ rmoveto
+ -8 -5 7 8 9 7 9 15 5 7 -1 -3 7 hvcurveto
+ 18 -6 -14 11 -14 hhcurveto
+ -32 -14 -33 -25 8 hvcurveto
+ -11 hlineto
+ -17 -29 rlineto
+ 108 hlineto
+ 17 29 rlineto
+ -53 hlineto
+ return
+ </CharString>
+ <CharString index="45">
+ 0 vmoveto
+ 539 -104 callgsubr
+ -326 hlineto
+ 27 70 rlineto
+ -3 hlineto
+ -80 -140 rlineto
+ 372 hlineto
+ -103 callgsubr
+ -436 hlineto
+ return
+ </CharString>
+ <CharString index="46">
+ hlineto
+ 41 70 rlineto
+ -139 hlineto
+ -32 -53 47 31 29 65 38 20 12 hvcurveto
+ -1 3 rlineto
+ -53 -26 -93 -47 -48 vvcurveto
+ -13 6 -13 16 -13 vhcurveto
+ return
+ </CharString>
+ <CharString index="47">
+ vmoveto
+ 30 callgsubr
+ return
+ </CharString>
+ <CharString index="48">
+ 130 vlineto
+ 340 vlineto
+ -80 -20 rlineto
+ -359 vlineto
+ -1 -7 -6 0 -7 -51 callgsubr
+ </CharString>
+ <CharString index="49">
+ -45 -40 -50 -98 callgsubr
+ 10 10 1 3 10 hvcurveto
+ -52 callgsubr
+ return
+ </CharString>
+ <CharString index="50">
+ 350 vmoveto
+ -350 210 350 vlineto
+ -140 -280 rmoveto
+ 210 70 -210 -70 vlineto
+ endchar
+ </CharString>
+ <CharString index="51">
+ 545 18 callgsubr
+ </CharString>
+ <CharString index="52">
+ hlineto
+ 24 13 37 65 77 -19 111 -93 -56 -58 callgsubr
+ return
+ </CharString>
+ <CharString index="53">
+ 49 245 rmoveto
+ -49 -113 98 -132 49 245 -49 -64 -49 hlineto
+ endchar
+ </CharString>
+ <CharString index="54">
+ 29 callgsubr
+ endchar
+ </CharString>
+ <CharString index="55">
+ 2 -7 0 -8 -7 vvcurveto
+ -7 0 -8 -2 -7 vhcurveto
+ return
+ </CharString>
+ <CharString index="56">
+ hhcurveto
+ -3 callgsubr
+ </CharString>
+ <CharString index="57">
+ 185 rmoveto
+ 47 79 -17 10 -47 -79 rlineto
+ endchar
+ </CharString>
+ <CharString index="58">
+ 131 -110 rmoveto
+ 260 hlineto
+ 41 70 rlineto
+ return
+ </CharString>
+ <CharString index="59">
+ 6 15 0 21 139 -70 20 -44 hvcurveto
+ return
+ </CharString>
+ <CharString index="60">
+ -107 callgsubr
+ 120 vlineto
+ -80 -20 rlineto
+ -140 return
+ </CharString>
+ <CharString index="61">
+ 80 39 rmoveto
+ 51 vlineto
+ -87 callgsubr
+ -110 -99 callgsubr
+ 90 vlineto
+ return
+ </CharString>
+ <CharString index="62">
+ 14 vmoveto
+ 37 -14 199 546 -38 14 rlineto
+ return
+ </CharString>
+ <CharString index="63">
+ 350 vmoveto
+ -350 70 350 vlineto
+ endchar
+ </CharString>
+ <CharString index="64">
+ 545 vmoveto
+ -245 49 245 vlineto
+ endchar
+ </CharString>
+ <CharString index="65">
+ vlineto
+ -80 -20 rlineto
+ -140 return
+ </CharString>
+ <CharString index="66">
+ 80 80 rmoveto
+ 480 vlineto
+ -80 -20 rlineto
+ return
+ </CharString>
+ <CharString index="67">
+ -20 hmoveto
+ 57 43 30 40 hvcurveto
+ return
+ </CharString>
+ <CharString index="68">
+ 49 49 -49 -49 vlineto
+ return
+ </CharString>
+ <CharString index="69">
+ -147 -147 98 -49 return
+ </CharString>
+ <CharString index="70">
+ 11 9 -9 -11 -11 -9 -9 -11 return
+ </CharString>
+ <CharString index="71">
+ 41 41 rcurveline
+ 13 13 16 18 23 vvcurveto
+ 325 vlineto
+ -80 -20 rlineto
+ -305 vlineto
+ -16 -8 -18 -12 -21 vhcurveto
+ -12 21 -8 18 16 vvcurveto
+ return
+ </CharString>
+ <CharString index="72">
+ -65 callgsubr
+ 308 -61 callgsubr
+ -49 hlineto
+ -90 callgsubr
+ -85 57 -19 74 -1 vhcurveto
+ endchar
+ </CharString>
+ <CharString index="73">
+ vlineto
+ 36 vlineto
+ -80 -20 rlineto
+ -51 vlineto
+ -7 -6 0 -7 hhcurveto
+ -96 callgsubr
+ -7 1 -7 1 -6 hvcurveto
+ -52 -70 52 hlineto
+ -1 -6 -1 -7 -7 vvcurveto
+ -60 45 -30 55 vhcurveto
+ 180 vmoveto
+ -89 callgsubr
+ -110 -95 callgsubr
+ </CharString>
+ <CharString index="74">
+ 131 -110 rmoveto
+ 45 hlineto
+ 31 101 47 23 54 hvcurveto
+ -213 -23 callgsubr
+ return
+ </CharString>
+ <CharString index="75">
+ 0 vmoveto
+ 536 -55 callgsubr
+ -390 hlineto
+ -93 callgsubr
+ 408 90 -106 callgsubr
+ </CharString>
+ <CharString index="76">
+ 8 callgsubr
+ -38 235 -15 callgsubr
+ </CharString>
+ <CharString index="77">
+ -36 callgsubr
+ 325 vlineto
+ -80 -20 rlineto
+ -305 vlineto
+ -18 16 -23 13 -13 vhcurveto
+ 41 -41 -42 -52 -62 -54 -46 -34 rlinecurve
+ 180 110 rmoveto
+ 40 -40 rlineto
+ -80 hlineto
+ 40 40 rlineto
+ endchar
+ </CharString>
+ <CharString index="78">
+ 90 -110 rmoveto
+ 445 hlineto
+ 41 70 rlineto
+ -476 hlineto
+ -85 callgsubr
+ 11 9 9 11 hvcurveto
+ 499 -61 callgsubr
+ -286 hlineto
+ -50 -40 -40 -50 -50 40 -40 50 hvcurveto
+ return
+ </CharString>
+ <CharString index="79">
+ -91 callgsubr
+ 219 -77 callgsubr
+ -390 -88 callgsubr
+ return
+ </CharString>
+ <CharString index="80">
+ -130 -250 rmoveto
+ 242 -97 callgsubr
+ 210 529 vlineto
+ -48 callgsubr
+ -436 hlineto
+ -80 80 -40 -70 40 -40 rlineto
+ -330 -88 callgsubr
+ 228 230 rmoveto
+ 40 426 vlineto
+ -103 callgsubr
+ -466 hlineto
+ return
+ </CharString>
+ <CharString index="81">
+ 199 -250 rmoveto
+ 43 46 8 35 76 hvcurveto
+ -8 -49 -35 -4 -26 hhcurveto
+ -83 -91 36 90 67 50 26 40 hvcurveto
+ 239 hlineto
+ 41 70 rlineto
+ -137 hlineto
+ -58 -61 65 75 -61 hvcurveto
+ -43 -70 19 -28 28 -29 15 -13 rlinecurve
+ -2 44 callgsubr
+ </CharString>
+ <CharString index="82">
+ 7 7 1 1 6 hvcurveto
+ -42 -100 vlineto
+ 31 callgsubr
+ 160 vlineto
+ -100 callgsubr
+ -98 callgsubr
+ vhcurveto
+ 70 -95 callgsubr
+ </CharString>
+ <CharString index="83">
+ -64 -250 rmoveto
+ 299 -104 callgsubr
+ -51 hlineto
+ 88 97 rlineto
+ 14 15 7 21 27 vvcurveto
+ -100 callgsubr
+ -60 45 -30 55 11 10 1 1 9 vhcurveto
+ -130 -142 46 callgsubr
+ return
+ </CharString>
+ <CharString index="84">
+ hlineto
+ -32 -12 3 23 -23 hvcurveto
+ -82 callgsubr
+ 16 36 10 80 10 hvcurveto
+ -15 -3 -14 -5 -9 hhcurveto
+ -90 callgsubr
+ -85 57 -19 74 -1 vhcurveto
+ return
+ </CharString>
+ <CharString index="85">
+ vlineto
+ 25 -13 16 -35 -32 -22 6 23 -23 vhcurveto
+ -11 callgsubr
+ -83 55 -20 72 -2 vhcurveto
+ return
+ </CharString>
+ <CharString index="86">
+ 33 callgsubr
+ -18 callgsubr
+ </CharString>
+ <CharString index="87">
+ -100 callgsubr
+ -98 callgsubr
+ 7 7 1 1 6 vhcurveto
+ -42 -140 vlineto
+ 120 110 -106 callgsubr
+ </CharString>
+ <CharString index="88">
+ 68 68 rlineto
+ 350 vlineto
+ -80 -20 rlineto
+ -330 vlineto
+ -20 -26 -20 26 rlineto
+ 350 vlineto
+ -80 -20 rlineto
+ -330 vlineto
+ 68 -68 rlineto
+ 32 -32 rmoveto
+ 40 -40 -17 -13 -46 0 -17 13 rlinecurve
+ 40 40 rlineto
+ endchar
+ </CharString>
+ <CharString index="89">
+ -65 -57 -32 -72 -18 4 -16 6 -12 hvcurveto
+ -28 hlineto
+ 100 44 rmoveto
+ 20 2 17 16 21 hhcurveto
+ -20 -2 -17 -16 -21 hhcurveto
+ 40 -44 rmoveto
+ -21 -17 16 20 -2 hvcurveto
+ 21 17 -16 -20 2 hvcurveto
+ endchar
+ </CharString>
+ <CharString index="90">
+ hlineto
+ -102 callgsubr
+ 189 vlineto
+ -100 callgsubr
+ -98 callgsubr
+ vhcurveto
+ 70 -95 callgsubr
+ </CharString>
+ <CharString index="91">
+ 0 vmoveto
+ 689 -104 callgsubr
+ -436 380 hlineto
+ -80 -20 rlineto
+ -470 -40 vlineto
+ 120 hmoveto
+ 40 426 vlineto
+ -103 callgsubr
+ -466 hlineto
+ return
+ </CharString>
+ <CharString index="92">
+ rmoveto
+ 47 79 -17 10 -47 -79 rlineto
+ 63 -10 rmoveto
+ 47 79 -17 10 -47 -79 rlineto
+ 9 -175 -106 callgsubr
+ </CharString>
+ <CharString index="93">
+ -72 callgsubr
+ 80 vmoveto
+ -53 callgsubr
+ </CharString>
+ <CharString index="94">
+ -60 callgsubr
+ 65 hmoveto
+ 30 callgsubr
+ endchar
+ </CharString>
+ <CharString index="95">
+ 130 vlineto
+ -35 -20 -40 -5 -40 -51 callgsubr
+ </CharString>
+ <CharString index="96">
+ -82 callgsubr
+ 67 70 -31 hlineto
+ -90 callgsubr
+ return
+ </CharString>
+ <CharString index="97">
+ -41 callgsubr
+ -460 vlineto
+ -50 37 -30 40 30 31 16 34 22 vhcurveto
+ -4 -9 -12 -3 -12 hhcurveto
+ -24 -23 11 26 hvcurveto
+ endchar
+ </CharString>
+ <CharString index="98">
+ -89 callgsubr
+ endchar
+ </CharString>
+ <CharString index="99">
+ -107 callgsubr
+ 160 vlineto
+ -80 -20 rlineto
+ -180 return
+ </CharString>
+ <CharString index="100">
+ hmoveto
+ 29 callgsubr
+ return
+ </CharString>
+ <CharString index="101">
+ 130 vlineto
+ -35 -20 -40 -5 -40 hhcurveto
+ -96 callgsubr
+ -60 45 -30 55 return
+ </CharString>
+ <CharString index="102">
+ -436 70 hlineto
+ -80 -20 rlineto
+ -160 -20 -70 66 vlineto
+ 34 110 rmoveto
+ 426 hlineto
+ -103 callgsubr
+ -466 40 hlineto
+ endchar
+ </CharString>
+ <CharString index="103">
+ 37 callgsubr
+ -69 43 -147 47 hvcurveto
+ -80 -140 rlineto
+ 172 hlineto
+ -103 callgsubr
+ -236 hlineto
+ return
+ </CharString>
+ <CharString index="104">
+ 42 callgsubr
+ hvcurveto
+ 70 -95 callgsubr
+ </CharString>
+ <CharString index="105">
+ -20 hmoveto
+ 379 hlineto
+ 41 70 rlineto
+ -177 hlineto
+ -58 -61 65 75 -61 hvcurveto
+ -43 -70 19 -28 28 -29 15 -13 rlinecurve
+ -82 hlineto
+ endchar
+ </CharString>
+ <CharString index="106">
+ 47 79 -17 10 -47 -79 rlineto
+ 63 -10 rmoveto
+ 47 79 -17 10 -47 -79 rlineto
+ 63 -10 rmoveto
+ 47 79 -17 10 -47 -79 rlineto
+ endchar
+ </CharString>
+ <CharString index="107">
+ hlineto
+ -21 -12 17 19 21 16 23 37 13 16 -3 -7 18 hvcurveto
+ 45 -14 -35 25 -35 hhcurveto
+ -77 -33 -78 -62 19 hvcurveto
+ -25 return
+ </CharString>
+ <CharString index="108">
+ rmoveto
+ 47 79 -17 10 -47 -79 rlineto
+ 63 -10 rmoveto
+ 47 79 -17 10 -47 -79 rlineto
+ 63 -10 rmoveto
+ 47 79 -17 10 -47 -79 rlineto
+ return
+ </CharString>
+ <CharString index="109">
+ vlineto
+ -80 -20 rlineto
+ -90 vlineto
+ 54 callgsubr
+ 110 vlineto
+ -80 -20 rlineto
+ -90 vlineto
+ -98 callgsubr
+ return
+ </CharString>
+ <CharString index="110">
+ -360 hlineto
+ 62 111 14 132 -22 137 -80 -80 rcurveline
+ 25 -125 -11 -134 -52 -111 rrcurveto
+ endchar
+ </CharString>
+ <CharString index="111">
+ 84 545 11 callgsubr
+ </CharString>
+ <CharString index="112">
+ -46 callgsubr
+ 50 -45 40 -55 return
+ </CharString>
+ <CharString index="113">
+ 210 350 rmoveto
+ -210 -210 140 -140 70 hlineto
+ -70 280 rmoveto
+ -70 -70 70 70 vlineto
+ endchar
+ </CharString>
+ <CharString index="114">
+ 84 545 rmoveto
+ -98 -35 98 -49 -245 217 49 -168 49 168 49 -84 49 84 49 vlineto
+ endchar
+ </CharString>
+ <CharString index="115">
+ 100 hmoveto
+ 65 35 30 60 hvcurveto
+ -6 callgsubr
+ hvcurveto
+ return
+ </CharString>
+ <CharString index="116">
+ 500 52 callgsubr
+ -420 vlineto
+ -93 callgsubr
+ -52 -90 rlineto
+ return
+ </CharString>
+ <CharString index="117">
+ 90 vlineto
+ 50 -45 40 -55 -22 -21 -7 -11 -17 vhcurveto
+ 11 -17 -21 7 -22 hhcurveto
+ -40 -40 5 35 -20 hvcurveto
+ return
+ </CharString>
+ <CharString index="118">
+ rmoveto
+ -98 -35 98 -49 -245 217 49 -168 49 168 147 -49 -98 -35 98 vlineto
+ endchar
+ </CharString>
+ <CharString index="119">
+ 147 245 22 callgsubr
+ </CharString>
+ <CharString index="120">
+ rmoveto
+ 49 -147 -245 147 147 -98 49 vlineto
+ -147 vmoveto
+ -39 callgsubr
+ endchar
+ </CharString>
+ <CharString index="121">
+ 0 vmoveto
+ 80 90 hlineto
+ -87 callgsubr
+ -90 80 90 vlineto
+ 50 -45 40 -55 return
+ </CharString>
+ <CharString index="122">
+ vlineto
+ -107 callgsubr
+ 120 vlineto
+ -80 -20 rlineto
+ return
+ </CharString>
+ <CharString index="123">
+ -102 callgsubr
+ 166 vlineto
+ -80 -20 rlineto
+ -87 vlineto
+ -86 callgsubr
+ -86 callgsubr
+ return
+ </CharString>
+ <CharString index="124">
+ 43 callgsubr
+ 310 70 -240 70 240 return
+ </CharString>
+ <CharString index="125">
+ vmoveto
+ -245 147 245 vlineto
+ -98 -196 rmoveto
+ 147 49 -147 -49 vlineto
+ endchar
+ </CharString>
+ <CharString index="126">
+ 29 hmoveto
+ 47 79 -17 10 -47 -79 rlineto
+ 5 47 rmoveto
+ 47 79 -17 10 -47 -79 rlineto
+ endchar
+ </CharString>
+ <CharString index="127">
+ 61 185 rmoveto
+ -65 -35 -21 -69 62 -81 43 58 rcurveline
+ -24 21 -25 64 30 42 rrcurveto
+ return
+ </CharString>
+ <CharString index="128">
+ 19 -115 rmoveto
+ 65 35 21 69 -62 81 -43 -58 rcurveline
+ 24 -21 25 -64 -30 -42 rrcurveto
+ return
+ </CharString>
+ <CharString index="129">
+ rmoveto
+ -147 -147 98 -98 49 hlineto
+ -49 196 rmoveto
+ -49 -49 49 49 vlineto
+ endchar
+ </CharString>
+ <CharString index="130">
+ hlineto
+ 65 35 30 60 -100 callgsubr
+ -7 1 -7 1 -6 hvcurveto
+ return
+ </CharString>
+ <CharString index="131">
+ 131 -110 rmoveto
+ 46 hlineto
+ 125 258 36 18 163 hvcurveto
+ 9 16 rlineto
+ return
+ </CharString>
+ <CharString index="132">
+ 98 545 35 callgsubr
+ </CharString>
+ <CharString index="133">
+ 98 245 35 callgsubr
+ </CharString>
+ <CharString index="134">
+ 49 callgsubr
+ -460 70 250 240 return
+ </CharString>
+ <CharString index="135">
+ 98 300 rmoveto
+ 49 245 -147 -245 49 196 49 hlineto
+ endchar
+ </CharString>
+ <CharString index="136">
+ 16 13 13 16 16 -13 13 -16 58 callgsubr
+ hvcurveto
+ return
+ </CharString>
+ <CharString index="137">
+ 88 42 12 114 -75 79 -25 -50 rcurveline
+ 57 -54 -5 -82 -52 -49 rrcurveto
+ return
+ </CharString>
+ <CharString index="138">
+ -93 callgsubr
+ -52 -90 rlineto
+ 242 -97 callgsubr
+ return
+ </CharString>
+ <CharString index="139">
+ 49 -98 49 98 147 -147 -49 98 -49 -98 -147 vlineto
+ endchar
+ </CharString>
+ <CharString index="140">
+ 35 vlineto
+ -80 -20 rlineto
+ -50 vlineto
+ return
+ </CharString>
+ <CharString index="141">
+ 210 350 rmoveto
+ -210 -70 140 -280 70 hlineto
+ endchar
+ </CharString>
+ <CharString index="142">
+ rmoveto
+ -64 -49 64 -49 -245 49 132 98 113 vlineto
+ endchar
+ </CharString>
+ <CharString index="143">
+ 98 hmoveto
+ 49 245 -147 -245 49 196 49 hlineto
+ endchar
+ </CharString>
+ <CharString index="144">
+ 339 hlineto
+ 6 15 0 21 139 return
+ </CharString>
+ <CharString index="145">
+ 117 230 rmoveto
+ -30 -65 -30 65 rlineto
+ -77 hlineto
+ 107 -230 return
+ </CharString>
+ <CharString index="146">
+ -40 -70 40 -40 rlineto
+ -210 -88 callgsubr
+ return
+ </CharString>
+ <CharString index="147">
+ -40 20 47 callgsubr
+ return
+ </CharString>
+ <CharString index="148">
+ 90 vlineto
+ 11 9 9 11 7 7 -4 -6 3 vhcurveto
+ endchar
+ </CharString>
+ <CharString index="149">
+ -96 callgsubr
+ -60 45 -30 55 return
+ </CharString>
+ <CharString index="150">
+ 49 callgsubr
+ -350 return
+ </CharString>
+ <CharString index="151">
+ 51 callgsubr
+ hvcurveto
+ endchar
+ </CharString>
+ <CharString index="152">
+ 172 hlineto
+ -103 callgsubr
+ -236 hlineto
+ endchar
+ </CharString>
+ <CharString index="153">
+ rlineto
+ 132 hlineto
+ -103 callgsubr
+ -196 hlineto
+ return
+ </CharString>
+ <CharString index="154">
+ rmoveto
+ -10 10 20 -10 22 hhcurveto
+ 38 30 30 50 hvcurveto
+ return
+ </CharString>
+ <CharString index="155">
+ 120 70 -30 vlineto
+ -7 -3 3 7 hvcurveto
+ endchar
+ </CharString>
+ <CharString index="156">
+ 120 350 rmoveto
+ -67 callgsubr
+ -70 return
+ </CharString>
+ <CharString index="157">
+ 131 -110 rmoveto
+ 405 hlineto
+ 41 70 rlineto
+ return
+ </CharString>
+ <CharString index="158">
+ hlineto
+ -96 -54 -78 -82 -104 86 -56 113 return
+ </CharString>
+ <CharString index="159">
+ 110 rmoveto
+ 7 7 1 1 6 hvcurveto
+ -42 return
+ </CharString>
+ <CharString index="160">
+ vlineto
+ -80 -20 rlineto
+ -470 -105 callgsubr
+ </CharString>
+ <CharString index="161">
+ -11 -9 -9 -11 -85 callgsubr
+ vhcurveto
+ return
+ </CharString>
+ <CharString index="162">
+ 140 350 rmoveto
+ -91 -70 91 -70 return
+ </CharString>
+ <CharString index="163">
+ 447 vmoveto
+ -49 49 49 vlineto
+ endchar
+ </CharString>
+ <CharString index="164">
+ -210 -70 140 -70 -140 return
+ </CharString>
+ <CharString index="165">
+ -16 -13 -13 -16 -16 13 -13 16 return
+ </CharString>
+ </GlobalSubrs>
+ </CFF>
+
+ <GDEF>
+ <Version value="0x00010002"/>
+ <GlyphClassDef>
+ <ClassDef glyph="a" class="1"/>
+ <ClassDef glyph="ain-ar" class="1"/>
+ <ClassDef glyph="ain-ar.1" class="1"/>
+ <ClassDef glyph="ain-ar.2" class="1"/>
+ <ClassDef glyph="ain-ar.3" class="1"/>
+ <ClassDef glyph="ain-ar.fina" class="1"/>
+ <ClassDef glyph="ain-ar.init" class="1"/>
+ <ClassDef glyph="ain-ar.init.1" class="1"/>
+ <ClassDef glyph="ain-ar.medi" class="1"/>
+ <ClassDef glyph="alef-ar" class="1"/>
+ <ClassDef glyph="alef-ar.1" class="1"/>
+ <ClassDef glyph="alef-ar.2" class="1"/>
+ <ClassDef glyph="alef-ar.3" class="1"/>
+ <ClassDef glyph="alef-ar.fina" class="1"/>
+ <ClassDef glyph="alefHamzaabove-ar" class="1"/>
+ <ClassDef glyph="alefHamzabelow-ar" class="1"/>
+ <ClassDef glyph="alefMadda-ar" class="1"/>
+ <ClassDef glyph="alefMaksura-ar" class="1"/>
+ <ClassDef glyph="alefMaksura-ar.1" class="1"/>
+ <ClassDef glyph="alefMaksura-ar.2" class="1"/>
+ <ClassDef glyph="alefMaksura-ar.3" class="1"/>
+ <ClassDef glyph="alefMaksura-ar.4" class="1"/>
+ <ClassDef glyph="alefMaksura-ar.5" class="1"/>
+ <ClassDef glyph="alefMaksura-ar.6" class="1"/>
+ <ClassDef glyph="alefMaksura-ar.fina" class="1"/>
+ <ClassDef glyph="alefMaksura-ar.fina.0" class="1"/>
+ <ClassDef glyph="alefMaksura-ar.fina.1" class="1"/>
+ <ClassDef glyph="alefMaksura-ar.fina.2" class="1"/>
+ <ClassDef glyph="alefMaksura-ar.fina.3" class="1"/>
+ <ClassDef glyph="alefMaksura-ar.fina.4" class="1"/>
+ <ClassDef glyph="alefMaksura-ar.fina.5" class="1"/>
+ <ClassDef glyph="alefMaksura-ar.fina.6" class="1"/>
+ <ClassDef glyph="alefMaksura-ar.fina.tooth" class="1"/>
+ <ClassDef glyph="alefWasla-ar" class="1"/>
+ <ClassDef glyph="b" class="1"/>
+ <ClassDef glyph="beh-ar" class="1"/>
+ <ClassDef glyph="behDotless-ar" class="1"/>
+ <ClassDef glyph="behDotless-ar.fina" class="1"/>
+ <ClassDef glyph="behDotless-ar.fina.1" class="1"/>
+ <ClassDef glyph="behDotless-ar.init" class="1"/>
+ <ClassDef glyph="behDotless-ar.init.hah" class="1"/>
+ <ClassDef glyph="behDotless-ar.medi" class="1"/>
+ <ClassDef glyph="behDotless-ar.medi.1" class="1"/>
+ <ClassDef glyph="behDotless-ar.medi.high" class="1"/>
+ <ClassDef glyph="behDotless-ar.medi.high.1" class="1"/>
+ <ClassDef glyph="behDotless-ar.medi.yeh" class="1"/>
+ <ClassDef glyph="c" class="1"/>
+ <ClassDef glyph="d" class="1"/>
+ <ClassDef glyph="dad-ar" class="1"/>
+ <ClassDef glyph="dal-ar" class="1"/>
+ <ClassDef glyph="dal-ar.fina" class="1"/>
+ <ClassDef glyph="ddal-ar" class="1"/>
+ <ClassDef glyph="dotabove-ar" class="3"/>
+ <ClassDef glyph="dotabove-ar.alt1" class="3"/>
+ <ClassDef glyph="dotbelow-ar" class="3"/>
+ <ClassDef glyph="dotbelow-ar.alt1" class="3"/>
+ <ClassDef glyph="e" class="1"/>
+ <ClassDef glyph="empty" class="3"/>
+ <ClassDef glyph="f" class="1"/>
+ <ClassDef glyph="feh-ar" class="1"/>
+ <ClassDef glyph="fehAfrican-ar" class="1"/>
+ <ClassDef glyph="fehDotless-ar" class="1"/>
+ <ClassDef glyph="fehDotless-ar.1" class="1"/>
+ <ClassDef glyph="fehDotless-ar.2" class="1"/>
+ <ClassDef glyph="fehDotless-ar.3" class="1"/>
+ <ClassDef glyph="fehDotless-ar.fina" class="1"/>
+ <ClassDef glyph="fehDotless-ar.fina.1" class="1"/>
+ <ClassDef glyph="fehDotless-ar.fina.2" class="1"/>
+ <ClassDef glyph="fehDotless-ar.fina.3" class="1"/>
+ <ClassDef glyph="fehDotless-ar.init" class="1"/>
+ <ClassDef glyph="fehDotless-ar.init.1" class="1"/>
+ <ClassDef glyph="fehDotless-ar.medi" class="1"/>
+ <ClassDef glyph="fehDotless-ar.medi.1" class="1"/>
+ <ClassDef glyph="fehDotmovedbelow-ar" class="1"/>
+ <ClassDef glyph="g" class="1"/>
+ <ClassDef glyph="g.1" class="1"/>
+ <ClassDef glyph="gaf-ar" class="1"/>
+ <ClassDef glyph="ghain-ar" class="1"/>
+ <ClassDef glyph="h" class="1"/>
+ <ClassDef glyph="h.1" class="1"/>
+ <ClassDef glyph="hah-ar" class="1"/>
+ <ClassDef glyph="hah-ar.1" class="1"/>
+ <ClassDef glyph="hah-ar.2" class="1"/>
+ <ClassDef glyph="hah-ar.3" class="1"/>
+ <ClassDef glyph="hah-ar.4" class="1"/>
+ <ClassDef glyph="hah-ar.5" class="1"/>
+ <ClassDef glyph="hah-ar.fina" class="1"/>
+ <ClassDef glyph="hah-ar.fina.1" class="1"/>
+ <ClassDef glyph="hah-ar.init" class="1"/>
+ <ClassDef glyph="hah-ar.init.1" class="1"/>
+ <ClassDef glyph="hah-ar.init.2" class="1"/>
+ <ClassDef glyph="hah-ar.medi" class="1"/>
+ <ClassDef glyph="hah-ar.medi.1" class="1"/>
+ <ClassDef glyph="hah-ar.medi.2" class="1"/>
+ <ClassDef glyph="hah-ar.medi.3" class="1"/>
+ <ClassDef glyph="hamza-ar" class="1"/>
+ <ClassDef glyph="hamzaabove-ar" class="3"/>
+ <ClassDef glyph="hamzabelow-ar" class="3"/>
+ <ClassDef glyph="heh-ar" class="1"/>
+ <ClassDef glyph="heh-ar.1" class="1"/>
+ <ClassDef glyph="heh-ar.2" class="1"/>
+ <ClassDef glyph="heh-ar.fina" class="1"/>
+ <ClassDef glyph="heh-ar.fina.1" class="1"/>
+ <ClassDef glyph="heh-ar.fina.2" class="1"/>
+ <ClassDef glyph="heh-ar.init" class="1"/>
+ <ClassDef glyph="heh-ar.init.1" class="1"/>
+ <ClassDef glyph="heh-ar.init.2" class="1"/>
+ <ClassDef glyph="heh-ar.init.3" class="1"/>
+ <ClassDef glyph="heh-ar.init.4" class="1"/>
+ <ClassDef glyph="heh-ar.init.5" class="1"/>
+ <ClassDef glyph="heh-ar.init.6" class="1"/>
+ <ClassDef glyph="heh-ar.init.7" class="1"/>
+ <ClassDef glyph="heh-ar.medi" class="1"/>
+ <ClassDef glyph="heh-ar.medi.1" class="1"/>
+ <ClassDef glyph="heh-ar.medi.2" class="1"/>
+ <ClassDef glyph="heh-ar.medi.3" class="1"/>
+ <ClassDef glyph="heh-ar.medi.4" class="1"/>
+ <ClassDef glyph="heh-ar.medi.5" class="1"/>
+ <ClassDef glyph="heh-ar.medi.6" class="1"/>
+ <ClassDef glyph="heh-ar.medi.7" class="1"/>
+ <ClassDef glyph="hehDoachashmee-ar" class="1"/>
+ <ClassDef glyph="hehgoal-ar" class="1"/>
+ <ClassDef glyph="hehgoalHamzaabove-ar" class="1"/>
+ <ClassDef glyph="i" class="1"/>
+ <ClassDef glyph="j" class="1"/>
+ <ClassDef glyph="jeem-ar" class="1"/>
+ <ClassDef glyph="jeh-ar" class="1"/>
+ <ClassDef glyph="k" class="1"/>
+ <ClassDef glyph="k.1" class="1"/>
+ <ClassDef glyph="kaf-ar" class="1"/>
+ <ClassDef glyph="kaf-ar.1" class="1"/>
+ <ClassDef glyph="kaf-ar.2" class="1"/>
+ <ClassDef glyph="kaf-ar.fina" class="1"/>
+ <ClassDef glyph="kaf-ar.fina.1" class="1"/>
+ <ClassDef glyph="kaf-ar.fina.2" class="1"/>
+ <ClassDef glyph="kaf-ar.init" class="1"/>
+ <ClassDef glyph="kaf-ar.init.1" class="1"/>
+ <ClassDef glyph="kaf-ar.init.2" class="1"/>
+ <ClassDef glyph="kaf-ar.medi" class="1"/>
+ <ClassDef glyph="kaf-ar.medi.1" class="1"/>
+ <ClassDef glyph="kaf-ar.medi.2" class="1"/>
+ <ClassDef glyph="kashida-ar" class="1"/>
+ <ClassDef glyph="keheh-ar" class="1"/>
+ <ClassDef glyph="khah-ar" class="1"/>
+ <ClassDef glyph="l" class="1"/>
+ <ClassDef glyph="lam-ar" class="1"/>
+ <ClassDef glyph="lam-ar.fina" class="1"/>
+ <ClassDef glyph="lam-ar.init" class="1"/>
+ <ClassDef glyph="lam-ar.init.hah" class="1"/>
+ <ClassDef glyph="lam-ar.init.hah2" class="1"/>
+ <ClassDef glyph="lam-ar.init.lellah" class="1"/>
+ <ClassDef glyph="lam-ar.init.short" class="1"/>
+ <ClassDef glyph="lam-ar.init.short2" class="1"/>
+ <ClassDef glyph="lam-ar.medi" class="1"/>
+ <ClassDef glyph="lam-ar.medi.lellah" class="1"/>
+ <ClassDef glyph="lam-ar.medi.short" class="1"/>
+ <ClassDef glyph="lam-ar.medi.short2" class="1"/>
+ <ClassDef glyph="lam-ar.medi.yeh" class="1"/>
+ <ClassDef glyph="lam_alef-ar" class="2"/>
+ <ClassDef glyph="lam_alef-ar.1" class="2"/>
+ <ClassDef glyph="lam_alef-ar.2" class="2"/>
+ <ClassDef glyph="lam_alef-ar.3" class="2"/>
+ <ClassDef glyph="lam_alef-ar.4" class="2"/>
+ <ClassDef glyph="lam_alef-ar.5" class="2"/>
+ <ClassDef glyph="lam_alef-ar.fina" class="2"/>
+ <ClassDef glyph="lam_alef-ar.fina.1" class="2"/>
+ <ClassDef glyph="lam_alef-ar.fina.2" class="2"/>
+ <ClassDef glyph="lam_alef-ar.fina.3" class="2"/>
+ <ClassDef glyph="lam_alef-ar.fina.4" class="2"/>
+ <ClassDef glyph="lam_alef-ar.fina.5" class="2"/>
+ <ClassDef glyph="m" class="1"/>
+ <ClassDef glyph="m.1" class="1"/>
+ <ClassDef glyph="meem-ar" class="1"/>
+ <ClassDef glyph="meem-ar.1" class="1"/>
+ <ClassDef glyph="meem-ar.2" class="1"/>
+ <ClassDef glyph="meem-ar.fina" class="1"/>
+ <ClassDef glyph="meem-ar.fina.1" class="1"/>
+ <ClassDef glyph="meem-ar.fina.2" class="1"/>
+ <ClassDef glyph="meem-ar.init" class="1"/>
+ <ClassDef glyph="meem-ar.medi" class="1"/>
+ <ClassDef glyph="meem-ar.medi.1" class="1"/>
+ <ClassDef glyph="n" class="1"/>
+ <ClassDef glyph="n.1" class="1"/>
+ <ClassDef glyph="noon-ar" class="1"/>
+ <ClassDef glyph="noonAfrican-ar" class="1"/>
+ <ClassDef glyph="noonghunna-ar" class="1"/>
+ <ClassDef glyph="noonghunna-ar.fina" class="1"/>
+ <ClassDef glyph="o" class="1"/>
+ <ClassDef glyph="p" class="1"/>
+ <ClassDef glyph="p.1" class="1"/>
+ <ClassDef glyph="peh-ar" class="1"/>
+ <ClassDef glyph="q" class="1"/>
+ <ClassDef glyph="q.1" class="1"/>
+ <ClassDef glyph="qaf-ar" class="1"/>
+ <ClassDef glyph="qafAfrican-ar" class="1"/>
+ <ClassDef glyph="qafDotabove-ar" class="1"/>
+ <ClassDef glyph="qafDotless-ar" class="1"/>
+ <ClassDef glyph="qafDotless-ar.fina" class="1"/>
+ <ClassDef glyph="r" class="1"/>
+ <ClassDef glyph="r.1" class="1"/>
+ <ClassDef glyph="r.2" class="1"/>
+ <ClassDef glyph="reh-ar" class="1"/>
+ <ClassDef glyph="reh-ar.1" class="1"/>
+ <ClassDef glyph="reh-ar.2" class="1"/>
+ <ClassDef glyph="reh-ar.3" class="1"/>
+ <ClassDef glyph="reh-ar.fina" class="1"/>
+ <ClassDef glyph="reh-ar.fina.1" class="1"/>
+ <ClassDef glyph="rreh-ar" class="1"/>
+ <ClassDef glyph="s" class="1"/>
+ <ClassDef glyph="sad-ar" class="1"/>
+ <ClassDef glyph="sad-ar.1" class="1"/>
+ <ClassDef glyph="sad-ar.fina" class="1"/>
+ <ClassDef glyph="sad-ar.fina.1" class="1"/>
+ <ClassDef glyph="sad-ar.init" class="1"/>
+ <ClassDef glyph="sad-ar.medi" class="1"/>
+ <ClassDef glyph="seen-ar" class="1"/>
+ <ClassDef glyph="seen-ar.1" class="1"/>
+ <ClassDef glyph="seen-ar.2" class="1"/>
+ <ClassDef glyph="seen-ar.3" class="1"/>
+ <ClassDef glyph="seen-ar.4" class="1"/>
+ <ClassDef glyph="seen-ar.5" class="1"/>
+ <ClassDef glyph="seen-ar.6" class="1"/>
+ <ClassDef glyph="seen-ar.fina" class="1"/>
+ <ClassDef glyph="seen-ar.fina.1" class="1"/>
+ <ClassDef glyph="seen-ar.fina.2" class="1"/>
+ <ClassDef glyph="seen-ar.fina.3" class="1"/>
+ <ClassDef glyph="seen-ar.fina.4" class="1"/>
+ <ClassDef glyph="seen-ar.fina.5" class="1"/>
+ <ClassDef glyph="seen-ar.init" class="1"/>
+ <ClassDef glyph="seen-ar.init.1" class="1"/>
+ <ClassDef glyph="seen-ar.init.2" class="1"/>
+ <ClassDef glyph="seen-ar.init.3" class="1"/>
+ <ClassDef glyph="seen-ar.init.4" class="1"/>
+ <ClassDef glyph="seen-ar.init.5" class="1"/>
+ <ClassDef glyph="seen-ar.init.6" class="1"/>
+ <ClassDef glyph="seen-ar.medi" class="1"/>
+ <ClassDef glyph="seen-ar.medi.1" class="1"/>
+ <ClassDef glyph="seen-ar.medi.2" class="1"/>
+ <ClassDef glyph="seen-ar.medi.3" class="1"/>
+ <ClassDef glyph="seen-ar.medi.4" class="1"/>
+ <ClassDef glyph="seen-ar.medi.5" class="1"/>
+ <ClassDef glyph="seen-ar.medi.6" class="1"/>
+ <ClassDef glyph="sheen-ar" class="1"/>
+ <ClassDef glyph="space" class="3"/>
+ <ClassDef glyph="t" class="1"/>
+ <ClassDef glyph="tah-ar" class="1"/>
+ <ClassDef glyph="tah-ar.fina" class="1"/>
+ <ClassDef glyph="tah-ar.init" class="1"/>
+ <ClassDef glyph="tah-ar.init.short" class="1"/>
+ <ClassDef glyph="tah-ar.init.short2" class="1"/>
+ <ClassDef glyph="tah-ar.medi" class="1"/>
+ <ClassDef glyph="tah-ar.medi.short" class="1"/>
+ <ClassDef glyph="tah-ar.medi.short2" class="1"/>
+ <ClassDef glyph="tahabove-ar" class="3"/>
+ <ClassDef glyph="tcheh-ar" class="1"/>
+ <ClassDef glyph="teh-ar" class="1"/>
+ <ClassDef glyph="tehMarbuta-ar" class="1"/>
+ <ClassDef glyph="tehMarbutagoal-ar" class="1"/>
+ <ClassDef glyph="thal-ar" class="1"/>
+ <ClassDef glyph="theh-ar" class="1"/>
+ <ClassDef glyph="threedotsdownbelow-ar" class="3"/>
+ <ClassDef glyph="threedotsdownbelow-ar.alt1" class="3"/>
+ <ClassDef glyph="threedotsupabove-ar" class="3"/>
+ <ClassDef glyph="threedotsupabove-ar.alt1" class="3"/>
+ <ClassDef glyph="tteh-ar" class="1"/>
+ <ClassDef glyph="twodotshorizontalabove-ar" class="3"/>
+ <ClassDef glyph="twodotshorizontalabove-ar.alt1" class="3"/>
+ <ClassDef glyph="twodotshorizontalbelow-ar" class="3"/>
+ <ClassDef glyph="twodotshorizontalbelow-ar.alt1" class="3"/>
+ <ClassDef glyph="twodotsverticalabove-ar" class="3"/>
+ <ClassDef glyph="twodotsverticalabove-ar.alt1" class="3"/>
+ <ClassDef glyph="twodotsverticalbelow-ar" class="3"/>
+ <ClassDef glyph="twodotsverticalbelow-ar.alt1" class="3"/>
+ <ClassDef glyph="u" class="1"/>
+ <ClassDef glyph="u.1" class="1"/>
+ <ClassDef glyph="v" class="1"/>
+ <ClassDef glyph="veh-ar" class="1"/>
+ <ClassDef glyph="w" class="1"/>
+ <ClassDef glyph="waw-ar" class="1"/>
+ <ClassDef glyph="waw-ar.1" class="1"/>
+ <ClassDef glyph="waw-ar.2" class="1"/>
+ <ClassDef glyph="waw-ar.3" class="1"/>
+ <ClassDef glyph="waw-ar.fina" class="1"/>
+ <ClassDef glyph="waw-ar.fina.1" class="1"/>
+ <ClassDef glyph="wawHamzaabove-ar" class="1"/>
+ <ClassDef glyph="x" class="1"/>
+ <ClassDef glyph="y" class="1"/>
+ <ClassDef glyph="y.1" class="1"/>
+ <ClassDef glyph="yeh-ar" class="1"/>
+ <ClassDef glyph="yeh-farsi" class="1"/>
+ <ClassDef glyph="yehHamzaabove-ar" class="1"/>
+ <ClassDef glyph="yehbarree-ar" class="1"/>
+ <ClassDef glyph="yehbarreeHamzaabove-ar" class="1"/>
+ <ClassDef glyph="z" class="1"/>
+ <ClassDef glyph="zah-ar" class="1"/>
+ <ClassDef glyph="zain-ar" class="1"/>
+ </GlyphClassDef>
+ <LigCaretList>
+ <Coverage>
+ <Glyph value="lam_alef-ar"/>
+ <Glyph value="lam_alef-ar.fina"/>
+ <Glyph value="lam_alef-ar.1"/>
+ <Glyph value="lam_alef-ar.fina.1"/>
+ <Glyph value="lam_alef-ar.fina.2"/>
+ <Glyph value="lam_alef-ar.fina.3"/>
+ <Glyph value="lam_alef-ar.fina.4"/>
+ <Glyph value="lam_alef-ar.fina.5"/>
+ <Glyph value="lam_alef-ar.2"/>
+ <Glyph value="lam_alef-ar.3"/>
+ <Glyph value="lam_alef-ar.4"/>
+ <Glyph value="lam_alef-ar.5"/>
+ </Coverage>
+ <!-- LigGlyphCount=12 -->
+ <LigGlyph index="0">
+ <!-- CaretCount=1 -->
+ <CaretValue index="0" Format="1">
+ <Coordinate value="174"/>
+ </CaretValue>
+ </LigGlyph>
+ <LigGlyph index="1">
+ <!-- CaretCount=1 -->
+ <CaretValue index="0" Format="1">
+ <Coordinate value="174"/>
+ </CaretValue>
+ </LigGlyph>
+ <LigGlyph index="2">
+ <!-- CaretCount=1 -->
+ <CaretValue index="0" Format="1">
+ <Coordinate value="0"/>
+ </CaretValue>
+ </LigGlyph>
+ <LigGlyph index="3">
+ <!-- CaretCount=1 -->
+ <CaretValue index="0" Format="1">
+ <Coordinate value="0"/>
+ </CaretValue>
+ </LigGlyph>
+ <LigGlyph index="4">
+ <!-- CaretCount=1 -->
+ <CaretValue index="0" Format="1">
+ <Coordinate value="140"/>
+ </CaretValue>
+ </LigGlyph>
+ <LigGlyph index="5">
+ <!-- CaretCount=1 -->
+ <CaretValue index="0" Format="1">
+ <Coordinate value="140"/>
+ </CaretValue>
+ </LigGlyph>
+ <LigGlyph index="6">
+ <!-- CaretCount=1 -->
+ <CaretValue index="0" Format="1">
+ <Coordinate value="180"/>
+ </CaretValue>
+ </LigGlyph>
+ <LigGlyph index="7">
+ <!-- CaretCount=1 -->
+ <CaretValue index="0" Format="1">
+ <Coordinate value="180"/>
+ </CaretValue>
+ </LigGlyph>
+ <LigGlyph index="8">
+ <!-- CaretCount=1 -->
+ <CaretValue index="0" Format="1">
+ <Coordinate value="140"/>
+ </CaretValue>
+ </LigGlyph>
+ <LigGlyph index="9">
+ <!-- CaretCount=1 -->
+ <CaretValue index="0" Format="1">
+ <Coordinate value="140"/>
+ </CaretValue>
+ </LigGlyph>
+ <LigGlyph index="10">
+ <!-- CaretCount=1 -->
+ <CaretValue index="0" Format="1">
+ <Coordinate value="180"/>
+ </CaretValue>
+ </LigGlyph>
+ <LigGlyph index="11">
+ <!-- CaretCount=1 -->
+ <CaretValue index="0" Format="1">
+ <Coordinate value="180"/>
+ </CaretValue>
+ </LigGlyph>
+ </LigCaretList>
+ <MarkGlyphSetsDef>
+ <MarkSetTableFormat value="1"/>
+ <!-- MarkSetCount=4 -->
+ <Coverage index="0">
+ <Glyph value="twodotshorizontalabove-ar"/>
+ <Glyph value="twodotshorizontalabove-ar.alt1"/>
+ </Coverage>
+ <Coverage index="1">
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="dotbelow-ar.alt1"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar.alt1"/>
+ </Coverage>
+ <Coverage index="2">
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar.alt1"/>
+ </Coverage>
+ <Coverage index="3">
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="dotbelow-ar.alt1"/>
+ <Glyph value="twodotsverticalbelow-ar"/>
+ <Glyph value="twodotsverticalbelow-ar.alt1"/>
+ </Coverage>
+ </MarkGlyphSetsDef>
+ </GDEF>
+
+ <GPOS>
+ <Version value="0x00010000"/>
+ <ScriptList>
+ <!-- ScriptCount=2 -->
+ <ScriptRecord index="0">
+ <ScriptTag value="DFLT"/>
+ <Script>
+ <DefaultLangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=3 -->
+ <FeatureIndex index="0" value="0"/>
+ <FeatureIndex index="1" value="1"/>
+ <FeatureIndex index="2" value="2"/>
+ </DefaultLangSys>
+ <!-- LangSysCount=0 -->
+ </Script>
+ </ScriptRecord>
+ <ScriptRecord index="1">
+ <ScriptTag value="arab"/>
+ <Script>
+ <DefaultLangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=3 -->
+ <FeatureIndex index="0" value="0"/>
+ <FeatureIndex index="1" value="1"/>
+ <FeatureIndex index="2" value="2"/>
+ </DefaultLangSys>
+ <!-- LangSysCount=0 -->
+ </Script>
+ </ScriptRecord>
+ </ScriptList>
+ <FeatureList>
+ <!-- FeatureCount=3 -->
+ <FeatureRecord index="0">
+ <FeatureTag value="curs"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="0"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="1">
+ <FeatureTag value="kern"/>
+ <Feature>
+ <!-- LookupCount=2 -->
+ <LookupListIndex index="0" value="12"/>
+ <LookupListIndex index="1" value="16"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="2">
+ <FeatureTag value="mark"/>
+ <Feature>
+ <!-- LookupCount=5 -->
+ <LookupListIndex index="0" value="1"/>
+ <LookupListIndex index="1" value="2"/>
+ <LookupListIndex index="2" value="3"/>
+ <LookupListIndex index="3" value="7"/>
+ <LookupListIndex index="4" value="9"/>
+ </Feature>
+ </FeatureRecord>
+ </FeatureList>
+ <LookupList>
+ <!-- LookupCount=17 -->
+ <Lookup index="0">
+ <LookupType value="3"/>
+ <LookupFlag value="9"/><!-- rightToLeft ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <CursivePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.medi.1"/>
+ <Glyph value="behDotless-ar.medi.high"/>
+ <Glyph value="behDotless-ar.medi.high.1"/>
+ <Glyph value="behDotless-ar.medi.yeh"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="behDotless-ar.init.hah"/>
+ <Glyph value="hah-ar.fina.1"/>
+ <Glyph value="hah-ar.medi"/>
+ <Glyph value="hah-ar.medi.1"/>
+ <Glyph value="hah-ar.medi.2"/>
+ <Glyph value="hah-ar.medi.3"/>
+ <Glyph value="hah-ar.init"/>
+ <Glyph value="hah-ar.init.1"/>
+ <Glyph value="hah-ar.init.2"/>
+ <Glyph value="seen-ar.medi"/>
+ <Glyph value="seen-ar.medi.1"/>
+ <Glyph value="seen-ar.medi.2"/>
+ <Glyph value="seen-ar.medi.3"/>
+ <Glyph value="seen-ar.medi.4"/>
+ <Glyph value="seen-ar.medi.5"/>
+ <Glyph value="seen-ar.medi.6"/>
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="seen-ar.init.1"/>
+ <Glyph value="seen-ar.init.2"/>
+ <Glyph value="seen-ar.init.3"/>
+ <Glyph value="seen-ar.init.4"/>
+ <Glyph value="seen-ar.init.5"/>
+ <Glyph value="seen-ar.init.6"/>
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="sad-ar.init"/>
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.medi.short"/>
+ <Glyph value="tah-ar.medi.short2"/>
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="tah-ar.init.short"/>
+ <Glyph value="tah-ar.init.short2"/>
+ <Glyph value="ain-ar.medi"/>
+ <Glyph value="ain-ar.init"/>
+ <Glyph value="ain-ar.init.1"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.medi.1"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="fehDotless-ar.init.1"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.medi.1"/>
+ <Glyph value="kaf-ar.medi.2"/>
+ <Glyph value="kaf-ar.init"/>
+ <Glyph value="kaf-ar.init.1"/>
+ <Glyph value="kaf-ar.init.2"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.medi.short"/>
+ <Glyph value="lam-ar.medi.short2"/>
+ <Glyph value="lam-ar.medi.yeh"/>
+ <Glyph value="lam-ar.init"/>
+ <Glyph value="lam-ar.init.hah"/>
+ <Glyph value="lam-ar.init.hah2"/>
+ <Glyph value="lam-ar.init.short"/>
+ <Glyph value="lam-ar.init.short2"/>
+ <Glyph value="meem-ar.medi"/>
+ <Glyph value="meem-ar.medi.1"/>
+ <Glyph value="meem-ar.init"/>
+ <Glyph value="heh-ar.medi"/>
+ <Glyph value="heh-ar.medi.1"/>
+ <Glyph value="heh-ar.medi.2"/>
+ <Glyph value="heh-ar.medi.3"/>
+ <Glyph value="heh-ar.medi.4"/>
+ <Glyph value="heh-ar.medi.5"/>
+ <Glyph value="heh-ar.medi.6"/>
+ <Glyph value="heh-ar.medi.7"/>
+ <Glyph value="heh-ar.init"/>
+ <Glyph value="heh-ar.init.1"/>
+ <Glyph value="heh-ar.init.2"/>
+ <Glyph value="heh-ar.init.3"/>
+ <Glyph value="heh-ar.init.4"/>
+ <Glyph value="heh-ar.init.5"/>
+ <Glyph value="heh-ar.init.6"/>
+ <Glyph value="heh-ar.init.7"/>
+ <Glyph value="alefMaksura-ar.fina.tooth"/>
+ <Glyph value="kashida-ar"/>
+ </Coverage>
+ <!-- EntryExitCount=80 -->
+ <EntryExitRecord index="0">
+ <EntryAnchor Format="1">
+ <XCoordinate value="120"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="1">
+ <EntryAnchor Format="1">
+ <XCoordinate value="150"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="2">
+ <EntryAnchor Format="1">
+ <XCoordinate value="120"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="3">
+ <EntryAnchor Format="1">
+ <XCoordinate value="120"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="4">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="5">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="6">
+ <ExitAnchor Format="1">
+ <XCoordinate value="-19"/>
+ <YCoordinate value="-2"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="7">
+ <EntryAnchor Format="1">
+ <XCoordinate value="180"/>
+ <YCoordinate value="110"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="8">
+ <EntryAnchor Format="1">
+ <XCoordinate value="191"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="9">
+ <EntryAnchor Format="1">
+ <XCoordinate value="90"/>
+ <YCoordinate value="110"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="10">
+ <EntryAnchor Format="1">
+ <XCoordinate value="90"/>
+ <YCoordinate value="110"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="11">
+ <EntryAnchor Format="1">
+ <XCoordinate value="90"/>
+ <YCoordinate value="110"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="12">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="13">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="14">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="15">
+ <EntryAnchor Format="1">
+ <XCoordinate value="360"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="16">
+ <EntryAnchor Format="1">
+ <XCoordinate value="360"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="17">
+ <EntryAnchor Format="1">
+ <XCoordinate value="360"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="18">
+ <EntryAnchor Format="1">
+ <XCoordinate value="360"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="19">
+ <EntryAnchor Format="1">
+ <XCoordinate value="360"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="20">
+ <EntryAnchor Format="1">
+ <XCoordinate value="360"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="21">
+ <EntryAnchor Format="1">
+ <XCoordinate value="370"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="22">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="23">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="24">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="25">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="26">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="27">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="28">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="29">
+ <EntryAnchor Format="1">
+ <XCoordinate value="670"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="30">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="31">
+ <EntryAnchor Format="1">
+ <XCoordinate value="670"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="32">
+ <EntryAnchor Format="1">
+ <XCoordinate value="670"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="33">
+ <EntryAnchor Format="1">
+ <XCoordinate value="670"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="34">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="35">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="36">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="37">
+ <EntryAnchor Format="1">
+ <XCoordinate value="242"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="38">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="39">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="40">
+ <EntryAnchor Format="1">
+ <XCoordinate value="248"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="41">
+ <EntryAnchor Format="1">
+ <XCoordinate value="240"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="42">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="43">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="44">
+ <EntryAnchor Format="1">
+ <XCoordinate value="580"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="45">
+ <EntryAnchor Format="1">
+ <XCoordinate value="600"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="46">
+ <EntryAnchor Format="1">
+ <XCoordinate value="600"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="47">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="48">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="49">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="50">
+ <EntryAnchor Format="1">
+ <XCoordinate value="120"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="51">
+ <EntryAnchor Format="1">
+ <XCoordinate value="120"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="52">
+ <EntryAnchor Format="1">
+ <XCoordinate value="120"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="53">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="54">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="55">
+ <ExitAnchor Format="1">
+ <XCoordinate value="-20"/>
+ <YCoordinate value="-2"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="56">
+ <ExitAnchor Format="1">
+ <XCoordinate value="-20"/>
+ <YCoordinate value="-2"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="57">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="58">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="59">
+ <EntryAnchor Format="1">
+ <XCoordinate value="240"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="60">
+ <EntryAnchor Format="1">
+ <XCoordinate value="240"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="61">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="62">
+ <EntryAnchor Format="1">
+ <XCoordinate value="240"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="63">
+ <EntryAnchor Format="1">
+ <XCoordinate value="240"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="64">
+ <EntryAnchor Format="1">
+ <XCoordinate value="240"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="65">
+ <EntryAnchor Format="1">
+ <XCoordinate value="240"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="66">
+ <EntryAnchor Format="1">
+ <XCoordinate value="240"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="67">
+ <EntryAnchor Format="1">
+ <XCoordinate value="240"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="68">
+ <EntryAnchor Format="1">
+ <XCoordinate value="240"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="69">
+ <EntryAnchor Format="1">
+ <XCoordinate value="240"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="70">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="71">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="72">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="73">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="74">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="75">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="76">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="77">
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="78">
+ <EntryAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ </EntryExitRecord>
+ <EntryExitRecord index="79">
+ <EntryAnchor Format="1">
+ <XCoordinate value="80"/>
+ <YCoordinate value="0"/>
+ </EntryAnchor>
+ <ExitAnchor Format="1">
+ <XCoordinate value="0"/>
+ <YCoordinate value="0"/>
+ </ExitAnchor>
+ </EntryExitRecord>
+ </CursivePos>
+ </Lookup>
+ <Lookup index="1">
+ <LookupType value="4"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <MarkBasePos index="0" Format="1">
+ <MarkCoverage>
+ <Glyph value="tahabove-ar"/>
+ <Glyph value="dotabove-ar"/>
+ <Glyph value="dotabove-ar.alt1"/>
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="dotbelow-ar.alt1"/>
+ <Glyph value="twodotsverticalabove-ar"/>
+ <Glyph value="twodotsverticalabove-ar.alt1"/>
+ <Glyph value="twodotsverticalbelow-ar"/>
+ <Glyph value="twodotsverticalbelow-ar.alt1"/>
+ <Glyph value="twodotshorizontalabove-ar"/>
+ <Glyph value="twodotshorizontalabove-ar.alt1"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar.alt1"/>
+ <Glyph value="threedotsdownbelow-ar"/>
+ <Glyph value="threedotsdownbelow-ar.alt1"/>
+ <Glyph value="threedotsupabove-ar"/>
+ <Glyph value="threedotsupabove-ar.alt1"/>
+ <Glyph value="hamzaabove-ar"/>
+ <Glyph value="hamzabelow-ar"/>
+ </MarkCoverage>
+ <BaseCoverage>
+ <Glyph value="a"/>
+ <Glyph value="b"/>
+ <Glyph value="d"/>
+ <Glyph value="g"/>
+ <Glyph value="l"/>
+ <Glyph value="p"/>
+ <Glyph value="p.1"/>
+ <Glyph value="q"/>
+ <Glyph value="q.1"/>
+ <Glyph value="alef-ar"/>
+ <Glyph value="alef-ar.1"/>
+ <Glyph value="alef-ar.2"/>
+ <Glyph value="alef-ar.3"/>
+ <Glyph value="alef-ar.fina"/>
+ <Glyph value="behDotless-ar"/>
+ <Glyph value="behDotless-ar.fina"/>
+ <Glyph value="behDotless-ar.fina.1"/>
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.medi.1"/>
+ <Glyph value="behDotless-ar.medi.high"/>
+ <Glyph value="behDotless-ar.medi.high.1"/>
+ <Glyph value="behDotless-ar.medi.yeh"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="behDotless-ar.init.hah"/>
+ <Glyph value="hah-ar"/>
+ <Glyph value="hah-ar.1"/>
+ <Glyph value="hah-ar.2"/>
+ <Glyph value="hah-ar.3"/>
+ <Glyph value="hah-ar.4"/>
+ <Glyph value="hah-ar.5"/>
+ <Glyph value="hah-ar.fina"/>
+ <Glyph value="hah-ar.fina.1"/>
+ <Glyph value="hah-ar.medi"/>
+ <Glyph value="hah-ar.medi.1"/>
+ <Glyph value="hah-ar.medi.2"/>
+ <Glyph value="hah-ar.medi.3"/>
+ <Glyph value="hah-ar.init"/>
+ <Glyph value="hah-ar.init.1"/>
+ <Glyph value="hah-ar.init.2"/>
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.1"/>
+ <Glyph value="reh-ar.2"/>
+ <Glyph value="reh-ar.3"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="reh-ar.fina.1"/>
+ <Glyph value="seen-ar"/>
+ <Glyph value="seen-ar.1"/>
+ <Glyph value="seen-ar.2"/>
+ <Glyph value="seen-ar.3"/>
+ <Glyph value="seen-ar.4"/>
+ <Glyph value="seen-ar.5"/>
+ <Glyph value="seen-ar.6"/>
+ <Glyph value="seen-ar.fina"/>
+ <Glyph value="seen-ar.fina.1"/>
+ <Glyph value="seen-ar.fina.2"/>
+ <Glyph value="seen-ar.fina.3"/>
+ <Glyph value="seen-ar.fina.4"/>
+ <Glyph value="seen-ar.fina.5"/>
+ <Glyph value="seen-ar.medi"/>
+ <Glyph value="seen-ar.medi.1"/>
+ <Glyph value="seen-ar.medi.2"/>
+ <Glyph value="seen-ar.medi.3"/>
+ <Glyph value="seen-ar.medi.4"/>
+ <Glyph value="seen-ar.medi.5"/>
+ <Glyph value="seen-ar.medi.6"/>
+ <Glyph value="seen-ar.init"/>
+ <Glyph value="seen-ar.init.1"/>
+ <Glyph value="seen-ar.init.2"/>
+ <Glyph value="seen-ar.init.3"/>
+ <Glyph value="seen-ar.init.4"/>
+ <Glyph value="seen-ar.init.5"/>
+ <Glyph value="seen-ar.init.6"/>
+ <Glyph value="sad-ar"/>
+ <Glyph value="sad-ar.1"/>
+ <Glyph value="sad-ar.fina"/>
+ <Glyph value="sad-ar.fina.1"/>
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="sad-ar.init"/>
+ <Glyph value="tah-ar"/>
+ <Glyph value="tah-ar.fina"/>
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.medi.short"/>
+ <Glyph value="tah-ar.medi.short2"/>
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="tah-ar.init.short"/>
+ <Glyph value="tah-ar.init.short2"/>
+ <Glyph value="ain-ar"/>
+ <Glyph value="ain-ar.1"/>
+ <Glyph value="ain-ar.2"/>
+ <Glyph value="ain-ar.3"/>
+ <Glyph value="ain-ar.fina"/>
+ <Glyph value="ain-ar.medi"/>
+ <Glyph value="ain-ar.init"/>
+ <Glyph value="ain-ar.init.1"/>
+ <Glyph value="fehDotless-ar"/>
+ <Glyph value="fehDotless-ar.1"/>
+ <Glyph value="fehDotless-ar.2"/>
+ <Glyph value="fehDotless-ar.3"/>
+ <Glyph value="fehDotless-ar.fina"/>
+ <Glyph value="fehDotless-ar.fina.1"/>
+ <Glyph value="fehDotless-ar.fina.2"/>
+ <Glyph value="fehDotless-ar.fina.3"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.medi.1"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="fehDotless-ar.init.1"/>
+ <Glyph value="qafDotless-ar"/>
+ <Glyph value="qafDotless-ar.fina"/>
+ <Glyph value="kaf-ar"/>
+ <Glyph value="kaf-ar.1"/>
+ <Glyph value="kaf-ar.2"/>
+ <Glyph value="kaf-ar.fina"/>
+ <Glyph value="kaf-ar.fina.1"/>
+ <Glyph value="kaf-ar.fina.2"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.medi.1"/>
+ <Glyph value="kaf-ar.medi.2"/>
+ <Glyph value="kaf-ar.init"/>
+ <Glyph value="kaf-ar.init.1"/>
+ <Glyph value="kaf-ar.init.2"/>
+ <Glyph value="lam-ar.medi.yeh"/>
+ <Glyph value="noonghunna-ar"/>
+ <Glyph value="noonghunna-ar.fina"/>
+ <Glyph value="heh-ar"/>
+ <Glyph value="heh-ar.1"/>
+ <Glyph value="heh-ar.2"/>
+ <Glyph value="heh-ar.fina"/>
+ <Glyph value="heh-ar.fina.1"/>
+ <Glyph value="heh-ar.fina.2"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.1"/>
+ <Glyph value="waw-ar.2"/>
+ <Glyph value="waw-ar.3"/>
+ <Glyph value="waw-ar.fina"/>
+ <Glyph value="waw-ar.fina.1"/>
+ <Glyph value="alefMaksura-ar"/>
+ <Glyph value="alefMaksura-ar.1"/>
+ <Glyph value="alefMaksura-ar.2"/>
+ <Glyph value="alefMaksura-ar.3"/>
+ <Glyph value="alefMaksura-ar.4"/>
+ <Glyph value="alefMaksura-ar.5"/>
+ <Glyph value="alefMaksura-ar.6"/>
+ <Glyph value="alefMaksura-ar.fina"/>
+ <Glyph value="alefMaksura-ar.fina.0"/>
+ <Glyph value="alefMaksura-ar.fina.1"/>
+ <Glyph value="alefMaksura-ar.fina.2"/>
+ <Glyph value="alefMaksura-ar.fina.3"/>
+ <Glyph value="alefMaksura-ar.fina.4"/>
+ <Glyph value="alefMaksura-ar.fina.5"/>
+ <Glyph value="alefMaksura-ar.fina.6"/>
+ <Glyph value="alefMaksura-ar.fina.tooth"/>
+ </BaseCoverage>
+ <!-- ClassCount=2 -->
+ <MarkArray>
+ <!-- MarkCount=19 -->
+ <MarkRecord index="0">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="74"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="1">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="17"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="2">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="29"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="3">
+ <Class value="1"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="47"/>
+ <YCoordinate value="89"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="4">
+ <Class value="1"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="29"/>
+ <YCoordinate value="58"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="5">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="29"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="6">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="29"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="7">
+ <Class value="1"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="47"/>
+ <YCoordinate value="146"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="8">
+ <Class value="1"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="29"/>
+ <YCoordinate value="138"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="9">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="55"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="10">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="70"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="11">
+ <Class value="1"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="35"/>
+ <YCoordinate value="89"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="12">
+ <Class value="1"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="70"/>
+ <YCoordinate value="58"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="13">
+ <Class value="1"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="35"/>
+ <YCoordinate value="89"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="14">
+ <Class value="1"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="70"/>
+ <YCoordinate value="128"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="15">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="78"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="16">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="68"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="17">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="59"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="18">
+ <Class value="1"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="65"/>
+ <YCoordinate value="87"/>
+ </MarkAnchor>
+ </MarkRecord>
+ </MarkArray>
+ <BaseArray>
+ <!-- BaseCount=153 -->
+ <BaseRecord index="0">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="100"/>
+ <YCoordinate value="235"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="1">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="100"/>
+ <YCoordinate value="405"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="2">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="50"/>
+ <YCoordinate value="318"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="3">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="100"/>
+ <YCoordinate value="235"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="4">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="173"/>
+ <YCoordinate value="474"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="70"/>
+ <YCoordinate value="-20"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="5">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="100"/>
+ <YCoordinate value="-225"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="150"/>
+ <YCoordinate value="-138"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="6">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="100"/>
+ <YCoordinate value="-225"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="7">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="100"/>
+ <YCoordinate value="-225"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="8">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="100"/>
+ <YCoordinate value="-225"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="9">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="173"/>
+ <YCoordinate value="474"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="70"/>
+ <YCoordinate value="-20"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="10">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="173"/>
+ <YCoordinate value="474"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="70"/>
+ <YCoordinate value="-20"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="11">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="173"/>
+ <YCoordinate value="474"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="70"/>
+ <YCoordinate value="-20"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="12">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="42"/>
+ <YCoordinate value="574"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="22"/>
+ <YCoordinate value="-20"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="13">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="40"/>
+ <YCoordinate value="569"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="44"/>
+ <YCoordinate value="-20"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="14">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="280"/>
+ <YCoordinate value="200"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="280"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="15">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="280"/>
+ <YCoordinate value="200"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="280"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="16">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="280"/>
+ <YCoordinate value="200"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="280"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="17">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="44"/>
+ <YCoordinate value="300"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="46"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="18">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="36"/>
+ <YCoordinate value="215"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="73"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="19">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="44"/>
+ <YCoordinate value="300"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="46"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="20">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="44"/>
+ <YCoordinate value="300"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="46"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="21">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="44"/>
+ <YCoordinate value="300"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="46"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="22">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="44"/>
+ <YCoordinate value="300"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="46"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="23">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="30"/>
+ <YCoordinate value="235"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="100"/>
+ <YCoordinate value="-145"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="24">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="509"/>
+ <YCoordinate value="163"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="300"/>
+ <YCoordinate value="-145"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="25">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="509"/>
+ <YCoordinate value="163"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="300"/>
+ <YCoordinate value="-145"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="26">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="509"/>
+ <YCoordinate value="163"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="300"/>
+ <YCoordinate value="-145"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="27">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="359"/>
+ <YCoordinate value="163"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="200"/>
+ <YCoordinate value="-34"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="28">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="476"/>
+ <YCoordinate value="163"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="320"/>
+ <YCoordinate value="-145"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="29">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="476"/>
+ <YCoordinate value="163"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="320"/>
+ <YCoordinate value="-145"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="30">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="156"/>
+ <YCoordinate value="305"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="176"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="31">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="99"/>
+ <YCoordinate value="233"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="190"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="32">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="36"/>
+ <YCoordinate value="305"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="70"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="33">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="9"/>
+ <YCoordinate value="233"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="110"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="34">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="9"/>
+ <YCoordinate value="233"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="110"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="35">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="9"/>
+ <YCoordinate value="233"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="110"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="36">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="269"/>
+ <YCoordinate value="163"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="170"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="37">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="269"/>
+ <YCoordinate value="163"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="170"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="38">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="269"/>
+ <YCoordinate value="163"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="170"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="39">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="280"/>
+ <YCoordinate value="255"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="40">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="280"/>
+ <YCoordinate value="255"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="41">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="117"/>
+ <YCoordinate value="215"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="42">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="117"/>
+ <YCoordinate value="180"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="43">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="180"/>
+ <YCoordinate value="325"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="44">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="180"/>
+ <YCoordinate value="290"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="45">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="117"/>
+ <YCoordinate value="215"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="46">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="117"/>
+ <YCoordinate value="180"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="47">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="233"/>
+ <YCoordinate value="310"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="236"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="48">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="233"/>
+ <YCoordinate value="320"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="236"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="49">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="233"/>
+ <YCoordinate value="340"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="236"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="50">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="233"/>
+ <YCoordinate value="300"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="51">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="233"/>
+ <YCoordinate value="320"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="52">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="233"/>
+ <YCoordinate value="340"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="53">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="180"/>
+ <YCoordinate value="202"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="213"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="54">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="233"/>
+ <YCoordinate value="310"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="236"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="55">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="233"/>
+ <YCoordinate value="320"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="236"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="56">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="233"/>
+ <YCoordinate value="340"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="236"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="57">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="233"/>
+ <YCoordinate value="300"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="58">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="233"/>
+ <YCoordinate value="320"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="59">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="233"/>
+ <YCoordinate value="340"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="356"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="60">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="160"/>
+ <YCoordinate value="290"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="61">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="160"/>
+ <YCoordinate value="300"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="62">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="160"/>
+ <YCoordinate value="320"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="63">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="160"/>
+ <YCoordinate value="280"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="64">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="160"/>
+ <YCoordinate value="300"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="65">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="160"/>
+ <YCoordinate value="300"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="66">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="148"/>
+ <YCoordinate value="215"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="183"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="67">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="160"/>
+ <YCoordinate value="290"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="68">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="160"/>
+ <YCoordinate value="300"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="69">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="160"/>
+ <YCoordinate value="320"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="70">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="160"/>
+ <YCoordinate value="280"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="71">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="160"/>
+ <YCoordinate value="300"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="72">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="160"/>
+ <YCoordinate value="300"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="286"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="73">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="148"/>
+ <YCoordinate value="215"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="73"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="74">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="380"/>
+ <YCoordinate value="255"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="75">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="380"/>
+ <YCoordinate value="255"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="76">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="380"/>
+ <YCoordinate value="255"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="77">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="380"/>
+ <YCoordinate value="255"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="78">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="310"/>
+ <YCoordinate value="255"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="79">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="310"/>
+ <YCoordinate value="255"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="80">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="390"/>
+ <YCoordinate value="255"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="81">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="390"/>
+ <YCoordinate value="255"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="82">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="310"/>
+ <YCoordinate value="255"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="83">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="310"/>
+ <YCoordinate value="255"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="84">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="310"/>
+ <YCoordinate value="255"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="85">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="310"/>
+ <YCoordinate value="255"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="86">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="310"/>
+ <YCoordinate value="255"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="87">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="310"/>
+ <YCoordinate value="255"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="88">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="399"/>
+ <YCoordinate value="230"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="89">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="248"/>
+ <YCoordinate value="230"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="239"/>
+ <YCoordinate value="-135"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="90">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="248"/>
+ <YCoordinate value="230"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="129"/>
+ <YCoordinate value="-135"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="91">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="145"/>
+ <YCoordinate value="230"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="92">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="143"/>
+ <YCoordinate value="305"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="93">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="81"/>
+ <YCoordinate value="305"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="94">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="49"/>
+ <YCoordinate value="230"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="95">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="95"/>
+ <YCoordinate value="230"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="96">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="460"/>
+ <YCoordinate value="335"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="487"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="97">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="460"/>
+ <YCoordinate value="335"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="487"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="98">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="500"/>
+ <YCoordinate value="335"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="527"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="99">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="500"/>
+ <YCoordinate value="335"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="527"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="100">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="460"/>
+ <YCoordinate value="335"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="487"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="101">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="460"/>
+ <YCoordinate value="335"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="487"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="102">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="500"/>
+ <YCoordinate value="335"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="527"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="103">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="500"/>
+ <YCoordinate value="335"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="527"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="104">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="81"/>
+ <YCoordinate value="355"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="127"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="105">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="100"/>
+ <YCoordinate value="335"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="127"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="106">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="100"/>
+ <YCoordinate value="335"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="127"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="107">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="100"/>
+ <YCoordinate value="335"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="127"/>
+ <YCoordinate value="-35"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="108">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="100"/>
+ <YCoordinate value="235"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="109">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="100"/>
+ <YCoordinate value="235"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="110">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="320"/>
+ <YCoordinate value="255"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="111">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="320"/>
+ <YCoordinate value="255"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="112">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="320"/>
+ <YCoordinate value="255"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="113">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="320"/>
+ <YCoordinate value="255"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="114">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="320"/>
+ <YCoordinate value="255"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="115">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="320"/>
+ <YCoordinate value="255"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="116">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="260"/>
+ <YCoordinate value="255"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="117">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="280"/>
+ <YCoordinate value="255"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="118">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="280"/>
+ <YCoordinate value="255"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="119">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="260"/>
+ <YCoordinate value="255"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="120">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="280"/>
+ <YCoordinate value="255"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="121">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="280"/>
+ <YCoordinate value="255"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="122">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="40"/>
+ <YCoordinate value="569"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="44"/>
+ <YCoordinate value="-20"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="123">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="80"/>
+ <YCoordinate value="205"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="124">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="80"/>
+ <YCoordinate value="205"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="125">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="100"/>
+ <YCoordinate value="235"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="126">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="100"/>
+ <YCoordinate value="405"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="127">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="50"/>
+ <YCoordinate value="318"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="128">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="100"/>
+ <YCoordinate value="235"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="129">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="100"/>
+ <YCoordinate value="405"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="130">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="50"/>
+ <YCoordinate value="318"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="131">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="129"/>
+ <YCoordinate value="230"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="132">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="129"/>
+ <YCoordinate value="230"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="133">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="179"/>
+ <YCoordinate value="340"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="134">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="179"/>
+ <YCoordinate value="340"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="135">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="129"/>
+ <YCoordinate value="230"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="136">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="129"/>
+ <YCoordinate value="230"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" empty="1"/>
+ </BaseRecord>
+ <BaseRecord index="137">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="57"/>
+ <YCoordinate value="198"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="87"/>
+ <YCoordinate value="-250"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="138">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="57"/>
+ <YCoordinate value="198"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="87"/>
+ <YCoordinate value="-280"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="139">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="57"/>
+ <YCoordinate value="198"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="239"/>
+ <YCoordinate value="-135"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="140">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="57"/>
+ <YCoordinate value="198"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="289"/>
+ <YCoordinate value="-135"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="141">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="57"/>
+ <YCoordinate value="198"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="349"/>
+ <YCoordinate value="-135"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="142">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="57"/>
+ <YCoordinate value="198"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="129"/>
+ <YCoordinate value="-135"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="143">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="57"/>
+ <YCoordinate value="198"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="289"/>
+ <YCoordinate value="-135"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="144">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="57"/>
+ <YCoordinate value="198"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="87"/>
+ <YCoordinate value="-250"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="145">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="57"/>
+ <YCoordinate value="198"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="87"/>
+ <YCoordinate value="-250"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="146">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="57"/>
+ <YCoordinate value="198"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="87"/>
+ <YCoordinate value="-280"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="147">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="57"/>
+ <YCoordinate value="198"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="239"/>
+ <YCoordinate value="-135"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="148">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="57"/>
+ <YCoordinate value="198"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="289"/>
+ <YCoordinate value="-135"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="149">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="57"/>
+ <YCoordinate value="198"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="349"/>
+ <YCoordinate value="-135"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="150">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="57"/>
+ <YCoordinate value="198"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="129"/>
+ <YCoordinate value="-135"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="151">
+ <BaseAnchor index="0" Format="1">
+ <XCoordinate value="57"/>
+ <YCoordinate value="198"/>
+ </BaseAnchor>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="289"/>
+ <YCoordinate value="-135"/>
+ </BaseAnchor>
+ </BaseRecord>
+ <BaseRecord index="152">
+ <BaseAnchor index="0" empty="1"/>
+ <BaseAnchor index="1" Format="1">
+ <XCoordinate value="120"/>
+ <YCoordinate value="-250"/>
+ </BaseAnchor>
+ </BaseRecord>
+ </BaseArray>
+ </MarkBasePos>
+ </Lookup>
+ <Lookup index="2">
+ <LookupType value="5"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <MarkLigPos index="0" Format="1">
+ <MarkCoverage>
+ <Glyph value="tahabove-ar"/>
+ <Glyph value="dotabove-ar"/>
+ <Glyph value="dotabove-ar.alt1"/>
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="dotbelow-ar.alt1"/>
+ <Glyph value="twodotsverticalabove-ar"/>
+ <Glyph value="twodotsverticalabove-ar.alt1"/>
+ <Glyph value="twodotsverticalbelow-ar"/>
+ <Glyph value="twodotsverticalbelow-ar.alt1"/>
+ <Glyph value="twodotshorizontalabove-ar"/>
+ <Glyph value="twodotshorizontalabove-ar.alt1"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar.alt1"/>
+ <Glyph value="threedotsdownbelow-ar"/>
+ <Glyph value="threedotsdownbelow-ar.alt1"/>
+ <Glyph value="threedotsupabove-ar"/>
+ <Glyph value="threedotsupabove-ar.alt1"/>
+ <Glyph value="hamzaabove-ar"/>
+ <Glyph value="hamzabelow-ar"/>
+ </MarkCoverage>
+ <LigatureCoverage>
+ <Glyph value="lam_alef-ar"/>
+ <Glyph value="lam_alef-ar.fina"/>
+ <Glyph value="lam_alef-ar.1"/>
+ <Glyph value="lam_alef-ar.fina.1"/>
+ <Glyph value="lam_alef-ar.fina.2"/>
+ <Glyph value="lam_alef-ar.fina.3"/>
+ <Glyph value="lam_alef-ar.fina.4"/>
+ <Glyph value="lam_alef-ar.fina.5"/>
+ <Glyph value="lam_alef-ar.2"/>
+ <Glyph value="lam_alef-ar.3"/>
+ <Glyph value="lam_alef-ar.4"/>
+ <Glyph value="lam_alef-ar.5"/>
+ </LigatureCoverage>
+ <!-- ClassCount=2 -->
+ <MarkArray>
+ <!-- MarkCount=19 -->
+ <MarkRecord index="0">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="74"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="1">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="17"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="2">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="29"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="3">
+ <Class value="1"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="47"/>
+ <YCoordinate value="89"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="4">
+ <Class value="1"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="29"/>
+ <YCoordinate value="58"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="5">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="29"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="6">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="29"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="7">
+ <Class value="1"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="47"/>
+ <YCoordinate value="146"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="8">
+ <Class value="1"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="29"/>
+ <YCoordinate value="138"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="9">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="55"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="10">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="70"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="11">
+ <Class value="1"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="35"/>
+ <YCoordinate value="89"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="12">
+ <Class value="1"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="70"/>
+ <YCoordinate value="58"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="13">
+ <Class value="1"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="35"/>
+ <YCoordinate value="89"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="14">
+ <Class value="1"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="70"/>
+ <YCoordinate value="128"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="15">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="78"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="16">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="68"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="17">
+ <Class value="0"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="59"/>
+ <YCoordinate value="0"/>
+ </MarkAnchor>
+ </MarkRecord>
+ <MarkRecord index="18">
+ <Class value="1"/>
+ <MarkAnchor Format="1">
+ <XCoordinate value="65"/>
+ <YCoordinate value="87"/>
+ </MarkAnchor>
+ </MarkRecord>
+ </MarkArray>
+ <LigatureArray>
+ <!-- LigatureCount=12 -->
+ <LigatureAttach index="0">
+ <!-- ComponentCount=2 -->
+ <ComponentRecord index="0">
+ <LigatureAnchor index="0" Format="1">
+ <XCoordinate value="270"/>
+ <YCoordinate value="560"/>
+ </LigatureAnchor>
+ <LigatureAnchor index="1" Format="1">
+ <XCoordinate value="270"/>
+ <YCoordinate value="-20"/>
+ </LigatureAnchor>
+ </ComponentRecord>
+ <ComponentRecord index="1">
+ <LigatureAnchor index="0" Format="1">
+ <XCoordinate value="-10"/>
+ <YCoordinate value="540"/>
+ </LigatureAnchor>
+ <LigatureAnchor index="1" Format="1">
+ <XCoordinate value="60"/>
+ <YCoordinate value="-20"/>
+ </LigatureAnchor>
+ </ComponentRecord>
+ </LigatureAttach>
+ <LigatureAttach index="1">
+ <!-- ComponentCount=2 -->
+ <ComponentRecord index="0">
+ <LigatureAnchor index="0" Format="1">
+ <XCoordinate value="270"/>
+ <YCoordinate value="560"/>
+ </LigatureAnchor>
+ <LigatureAnchor index="1" Format="1">
+ <XCoordinate value="270"/>
+ <YCoordinate value="-20"/>
+ </LigatureAnchor>
+ </ComponentRecord>
+ <ComponentRecord index="1">
+ <LigatureAnchor index="0" Format="1">
+ <XCoordinate value="-10"/>
+ <YCoordinate value="540"/>
+ </LigatureAnchor>
+ <LigatureAnchor index="1" Format="1">
+ <XCoordinate value="60"/>
+ <YCoordinate value="-20"/>
+ </LigatureAnchor>
+ </ComponentRecord>
+ </LigatureAttach>
+ <LigatureAttach index="2">
+ <!-- ComponentCount=2 -->
+ <ComponentRecord index="0">
+ <LigatureAnchor index="0" Format="1">
+ <XCoordinate value="40"/>
+ <YCoordinate value="570"/>
+ </LigatureAnchor>
+ <LigatureAnchor index="1" Format="1">
+ <XCoordinate value="171"/>
+ <YCoordinate value="-20"/>
+ </LigatureAnchor>
+ </ComponentRecord>
+ <ComponentRecord index="1">
+ <LigatureAnchor index="0" Format="1">
+ <XCoordinate value="-197"/>
+ <YCoordinate value="500"/>
+ </LigatureAnchor>
+ <LigatureAnchor index="1" Format="1">
+ <XCoordinate value="44"/>
+ <YCoordinate value="-20"/>
+ </LigatureAnchor>
+ </ComponentRecord>
+ </LigatureAttach>
+ <LigatureAttach index="3">
+ <!-- ComponentCount=2 -->
+ <ComponentRecord index="0">
+ <LigatureAnchor index="0" Format="1">
+ <XCoordinate value="40"/>
+ <YCoordinate value="570"/>
+ </LigatureAnchor>
+ <LigatureAnchor index="1" Format="1">
+ <XCoordinate value="171"/>
+ <YCoordinate value="-20"/>
+ </LigatureAnchor>
+ </ComponentRecord>
+ <ComponentRecord index="1">
+ <LigatureAnchor index="0" Format="1">
+ <XCoordinate value="-197"/>
+ <YCoordinate value="500"/>
+ </LigatureAnchor>
+ <LigatureAnchor index="1" Format="1">
+ <XCoordinate value="44"/>
+ <YCoordinate value="-20"/>
+ </LigatureAnchor>
+ </ComponentRecord>
+ </LigatureAttach>
+ <LigatureAttach index="4">
+ <!-- ComponentCount=2 -->
+ <ComponentRecord index="0">
+ <LigatureAnchor index="0" Format="1">
+ <XCoordinate value="201"/>
+ <YCoordinate value="570"/>
+ </LigatureAnchor>
+ <LigatureAnchor index="1" Format="1">
+ <XCoordinate value="220"/>
+ <YCoordinate value="-20"/>
+ </LigatureAnchor>
+ </ComponentRecord>
+ <ComponentRecord index="1">
+ <LigatureAnchor index="0" Format="1">
+ <XCoordinate value="80"/>
+ <YCoordinate value="570"/>
+ </LigatureAnchor>
+ <LigatureAnchor index="1" Format="1">
+ <XCoordinate value="64"/>
+ <YCoordinate value="-20"/>
+ </LigatureAnchor>
+ </ComponentRecord>
+ </LigatureAttach>
+ <LigatureAttach index="5">
+ <!-- ComponentCount=2 -->
+ <ComponentRecord index="0">
+ <LigatureAnchor index="0" Format="1">
+ <XCoordinate value="201"/>
+ <YCoordinate value="570"/>
+ </LigatureAnchor>
+ <LigatureAnchor index="1" Format="1">
+ <XCoordinate value="220"/>
+ <YCoordinate value="-20"/>
+ </LigatureAnchor>
+ </ComponentRecord>
+ <ComponentRecord index="1">
+ <LigatureAnchor index="0" Format="1">
+ <XCoordinate value="80"/>
+ <YCoordinate value="540"/>
+ </LigatureAnchor>
+ <LigatureAnchor index="1" Format="1">
+ <XCoordinate value="64"/>
+ <YCoordinate value="-20"/>
+ </LigatureAnchor>
+ </ComponentRecord>
+ </LigatureAttach>
+ <LigatureAttach index="6">
+ <!-- ComponentCount=2 -->
+ <ComponentRecord index="0">
+ <LigatureAnchor index="0" Format="1">
+ <XCoordinate value="241"/>
+ <YCoordinate value="570"/>
+ </LigatureAnchor>
+ <LigatureAnchor index="1" Format="1">
+ <XCoordinate value="260"/>
+ <YCoordinate value="-20"/>
+ </LigatureAnchor>
+ </ComponentRecord>
+ <ComponentRecord index="1">
+ <LigatureAnchor index="0" Format="1">
+ <XCoordinate value="120"/>
+ <YCoordinate value="570"/>
+ </LigatureAnchor>
+ <LigatureAnchor index="1" Format="1">
+ <XCoordinate value="104"/>
+ <YCoordinate value="-20"/>
+ </LigatureAnchor>
+ </ComponentRecord>
+ </LigatureAttach>
+ <LigatureAttach index="7">
+ <!-- ComponentCount=2 -->
+ <ComponentRecord index="0">
+ <LigatureAnchor index="0" Format="1">
+ <XCoordinate value="241"/>
+ <YCoordinate value="570"/>
+ </LigatureAnchor>
+ <LigatureAnchor index="1" Format="1">
+ <XCoordinate value="260"/>
+ <YCoordinate value="-20"/>
+ </LigatureAnchor>
+ </ComponentRecord>
+ <ComponentRecord index="1">
+ <LigatureAnchor index="0" Format="1">
+ <XCoordinate value="120"/>
+ <YCoordinate value="540"/>
+ </LigatureAnchor>
+ <LigatureAnchor index="1" Format="1">
+ <XCoordinate value="104"/>
+ <YCoordinate value="-20"/>
+ </LigatureAnchor>
+ </ComponentRecord>
+ </LigatureAttach>
+ <LigatureAttach index="8">
+ <!-- ComponentCount=2 -->
+ <ComponentRecord index="0">
+ <LigatureAnchor index="0" Format="1">
+ <XCoordinate value="201"/>
+ <YCoordinate value="570"/>
+ </LigatureAnchor>
+ <LigatureAnchor index="1" Format="1">
+ <XCoordinate value="220"/>
+ <YCoordinate value="-20"/>
+ </LigatureAnchor>
+ </ComponentRecord>
+ <ComponentRecord index="1">
+ <LigatureAnchor index="0" Format="1">
+ <XCoordinate value="80"/>
+ <YCoordinate value="570"/>
+ </LigatureAnchor>
+ <LigatureAnchor index="1" Format="1">
+ <XCoordinate value="64"/>
+ <YCoordinate value="-20"/>
+ </LigatureAnchor>
+ </ComponentRecord>
+ </LigatureAttach>
+ <LigatureAttach index="9">
+ <!-- ComponentCount=2 -->
+ <ComponentRecord index="0">
+ <LigatureAnchor index="0" Format="1">
+ <XCoordinate value="201"/>
+ <YCoordinate value="570"/>
+ </LigatureAnchor>
+ <LigatureAnchor index="1" Format="1">
+ <XCoordinate value="220"/>
+ <YCoordinate value="-20"/>
+ </LigatureAnchor>
+ </ComponentRecord>
+ <ComponentRecord index="1">
+ <LigatureAnchor index="0" Format="1">
+ <XCoordinate value="80"/>
+ <YCoordinate value="540"/>
+ </LigatureAnchor>
+ <LigatureAnchor index="1" Format="1">
+ <XCoordinate value="64"/>
+ <YCoordinate value="-20"/>
+ </LigatureAnchor>
+ </ComponentRecord>
+ </LigatureAttach>
+ <LigatureAttach index="10">
+ <!-- ComponentCount=2 -->
+ <ComponentRecord index="0">
+ <LigatureAnchor index="0" Format="1">
+ <XCoordinate value="241"/>
+ <YCoordinate value="570"/>
+ </LigatureAnchor>
+ <LigatureAnchor index="1" Format="1">
+ <XCoordinate value="260"/>
+ <YCoordinate value="-20"/>
+ </LigatureAnchor>
+ </ComponentRecord>
+ <ComponentRecord index="1">
+ <LigatureAnchor index="0" Format="1">
+ <XCoordinate value="120"/>
+ <YCoordinate value="570"/>
+ </LigatureAnchor>
+ <LigatureAnchor index="1" Format="1">
+ <XCoordinate value="104"/>
+ <YCoordinate value="-20"/>
+ </LigatureAnchor>
+ </ComponentRecord>
+ </LigatureAttach>
+ <LigatureAttach index="11">
+ <!-- ComponentCount=2 -->
+ <ComponentRecord index="0">
+ <LigatureAnchor index="0" Format="1">
+ <XCoordinate value="241"/>
+ <YCoordinate value="570"/>
+ </LigatureAnchor>
+ <LigatureAnchor index="1" Format="1">
+ <XCoordinate value="260"/>
+ <YCoordinate value="-20"/>
+ </LigatureAnchor>
+ </ComponentRecord>
+ <ComponentRecord index="1">
+ <LigatureAnchor index="0" Format="1">
+ <XCoordinate value="120"/>
+ <YCoordinate value="540"/>
+ </LigatureAnchor>
+ <LigatureAnchor index="1" Format="1">
+ <XCoordinate value="104"/>
+ <YCoordinate value="-20"/>
+ </LigatureAnchor>
+ </ComponentRecord>
+ </LigatureAttach>
+ </LigatureArray>
+ </MarkLigPos>
+ </Lookup>
+ <Lookup index="3">
+ <LookupType value="8"/>
+ <LookupFlag value="16"/><!-- useMarkFilteringSet -->
+ <!-- SubTableCount=1 -->
+ <ChainContextPos index="0" Format="2">
+ <Coverage>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar.alt1"/>
+ </Coverage>
+ <BacktrackClassDef>
+ <ClassDef glyph="behDotless-ar.init" class="2"/>
+ <ClassDef glyph="reh-ar" class="1"/>
+ <ClassDef glyph="reh-ar.1" class="1"/>
+ <ClassDef glyph="reh-ar.fina" class="1"/>
+ <ClassDef glyph="reh-ar.fina.1" class="1"/>
+ <ClassDef glyph="waw-ar" class="1"/>
+ <ClassDef glyph="waw-ar.1" class="1"/>
+ <ClassDef glyph="waw-ar.2" class="1"/>
+ <ClassDef glyph="waw-ar.3" class="1"/>
+ <ClassDef glyph="waw-ar.fina" class="1"/>
+ <ClassDef glyph="waw-ar.fina.1" class="1"/>
+ </BacktrackClassDef>
+ <InputClassDef>
+ <ClassDef glyph="twodotshorizontalbelow-ar" class="1"/>
+ <ClassDef glyph="twodotshorizontalbelow-ar.alt1" class="1"/>
+ </InputClassDef>
+ <LookAheadClassDef>
+ <ClassDef glyph="alefMaksura-ar.fina" class="2"/>
+ <ClassDef glyph="alefMaksura-ar.fina.0" class="2"/>
+ <ClassDef glyph="alefMaksura-ar.fina.1" class="2"/>
+ <ClassDef glyph="alefMaksura-ar.fina.2" class="1"/>
+ <ClassDef glyph="alefMaksura-ar.fina.3" class="1"/>
+ <ClassDef glyph="alefMaksura-ar.fina.4" class="1"/>
+ <ClassDef glyph="alefMaksura-ar.fina.5" class="1"/>
+ <ClassDef glyph="alefMaksura-ar.fina.6" class="1"/>
+ <ClassDef glyph="heh-ar.medi" class="1"/>
+ <ClassDef glyph="heh-ar.medi.1" class="1"/>
+ <ClassDef glyph="lam-ar.fina" class="1"/>
+ <ClassDef glyph="noonghunna-ar.fina" class="1"/>
+ <ClassDef glyph="qafDotless-ar.fina" class="2"/>
+ <ClassDef glyph="reh-ar.fina" class="1"/>
+ <ClassDef glyph="reh-ar.fina.1" class="1"/>
+ <ClassDef glyph="waw-ar.fina" class="1"/>
+ <ClassDef glyph="waw-ar.fina.1" class="1"/>
+ </LookAheadClassDef>
+ <!-- ChainPosClassSetCount=2 -->
+ <ChainPosClassSet index="0">
+ <!-- ChainPosClassRuleCount=0 -->
+ </ChainPosClassSet>
+ <ChainPosClassSet index="1">
+ <!-- ChainPosClassRuleCount=3 -->
+ <ChainPosClassRule index="0">
+ <!-- BacktrackGlyphCount=2 -->
+ <Backtrack index="0" value="2"/>
+ <Backtrack index="1" value="1"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="1"/>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="4"/>
+ </PosLookupRecord>
+ </ChainPosClassRule>
+ <ChainPosClassRule index="1">
+ <!-- BacktrackGlyphCount=2 -->
+ <Backtrack index="0" value="2"/>
+ <Backtrack index="1" value="1"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="2"/>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="5"/>
+ </PosLookupRecord>
+ </ChainPosClassRule>
+ <ChainPosClassRule index="2">
+ <!-- BacktrackGlyphCount=2 -->
+ <Backtrack index="0" value="2"/>
+ <Backtrack index="1" value="1"/>
+ <!-- InputGlyphCount=1 -->
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="6"/>
+ </PosLookupRecord>
+ </ChainPosClassRule>
+ </ChainPosClassSet>
+ </ChainContextPos>
+ <MarkFilteringSet value="2"/>
+ </Lookup>
+ <Lookup index="4">
+ <LookupType value="1"/>
+ <LookupFlag value="16"/><!-- useMarkFilteringSet -->
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar.alt1"/>
+ </Coverage>
+ <ValueFormat value="2"/>
+ <Value YPlacement="-100"/>
+ </SinglePos>
+ <MarkFilteringSet value="2"/>
+ </Lookup>
+ <Lookup index="5">
+ <LookupType value="1"/>
+ <LookupFlag value="16"/><!-- useMarkFilteringSet -->
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar.alt1"/>
+ </Coverage>
+ <ValueFormat value="3"/>
+ <Value XPlacement="40" YPlacement="-100"/>
+ </SinglePos>
+ <MarkFilteringSet value="2"/>
+ </Lookup>
+ <Lookup index="6">
+ <LookupType value="1"/>
+ <LookupFlag value="16"/><!-- useMarkFilteringSet -->
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar.alt1"/>
+ </Coverage>
+ <ValueFormat value="1"/>
+ <Value XPlacement="-60"/>
+ </SinglePos>
+ <MarkFilteringSet value="2"/>
+ </Lookup>
+ <Lookup index="7">
+ <LookupType value="8"/>
+ <LookupFlag value="16"/><!-- useMarkFilteringSet -->
+ <!-- SubTableCount=1 -->
+ <ChainContextPos index="0" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.init"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="dotbelow-ar.alt1"/>
+ <Glyph value="twodotsverticalbelow-ar"/>
+ <Glyph value="twodotsverticalbelow-ar.alt1"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="reh-ar.fina.1"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="8"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <MarkFilteringSet value="3"/>
+ </Lookup>
+ <Lookup index="8">
+ <LookupType value="1"/>
+ <LookupFlag value="16"/><!-- useMarkFilteringSet -->
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="dotbelow-ar.alt1"/>
+ <Glyph value="twodotsverticalbelow-ar"/>
+ <Glyph value="twodotsverticalbelow-ar.alt1"/>
+ </Coverage>
+ <ValueFormat value="1"/>
+ <Value XPlacement="20"/>
+ </SinglePos>
+ <MarkFilteringSet value="3"/>
+ </Lookup>
+ <Lookup index="9">
+ <LookupType value="8"/>
+ <LookupFlag value="16"/><!-- useMarkFilteringSet -->
+ <!-- SubTableCount=5 -->
+ <ChainContextPos index="0" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="behDotless-ar.init"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="dotbelow-ar.alt1"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar.alt1"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="alef-ar.fina"/>
+ <Glyph value="behDotless-ar.fina"/>
+ <Glyph value="behDotless-ar.fina.1"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="seen-ar.fina"/>
+ <Glyph value="seen-ar.fina.1"/>
+ <Glyph value="seen-ar.fina.2"/>
+ <Glyph value="seen-ar.fina.3"/>
+ <Glyph value="seen-ar.fina.4"/>
+ <Glyph value="seen-ar.fina.5"/>
+ <Glyph value="seen-ar.medi"/>
+ <Glyph value="seen-ar.medi.1"/>
+ <Glyph value="seen-ar.medi.2"/>
+ <Glyph value="seen-ar.medi.3"/>
+ <Glyph value="seen-ar.medi.4"/>
+ <Glyph value="seen-ar.medi.5"/>
+ <Glyph value="sad-ar.fina"/>
+ <Glyph value="sad-ar.fina.1"/>
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="tah-ar"/>
+ <Glyph value="tah-ar.fina"/>
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="ain-ar.fina"/>
+ <Glyph value="ain-ar.medi"/>
+ <Glyph value="kaf-ar.fina"/>
+ <Glyph value="kaf-ar.fina.1"/>
+ <Glyph value="kaf-ar.fina.2"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.medi.1"/>
+ <Glyph value="kaf-ar.medi.2"/>
+ <Glyph value="meem-ar.fina"/>
+ <Glyph value="meem-ar.fina.1"/>
+ <Glyph value="meem-ar.fina.2"/>
+ <Glyph value="meem-ar.medi"/>
+ <Glyph value="meem-ar.medi.1"/>
+ <Glyph value="heh-ar.fina"/>
+ <Glyph value="heh-ar.fina.1"/>
+ <Glyph value="heh-ar.fina.2"/>
+ <Glyph value="heh-ar.medi.2"/>
+ <Glyph value="heh-ar.medi.3"/>
+ <Glyph value="heh-ar.medi.4"/>
+ <Glyph value="heh-ar.medi.5"/>
+ <Glyph value="heh-ar.medi.6"/>
+ <Glyph value="heh-ar.medi.7"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="10"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="1" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="hah-ar.medi.1"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="dotbelow-ar.alt1"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar.alt1"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="hah-ar.fina.1"/>
+ <Glyph value="hah-ar.medi.1"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="11"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="2" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.medi.1"/>
+ <Glyph value="behDotless-ar.medi.high"/>
+ <Glyph value="behDotless-ar.medi.high.1"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.medi.1"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="fehDotless-ar.init.1"/>
+ <Glyph value="lam-ar.medi.short"/>
+ <Glyph value="lam-ar.medi.short2"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="dotbelow-ar.alt1"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar.alt1"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="hah-ar.fina.1"/>
+ <Glyph value="hah-ar.medi.1"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="11"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="3" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.medi.1"/>
+ <Glyph value="behDotless-ar.medi.high"/>
+ <Glyph value="behDotless-ar.medi.high.1"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.medi.1"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="fehDotless-ar.init.1"/>
+ <Glyph value="lam-ar.medi.short"/>
+ <Glyph value="lam-ar.medi.short2"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="dotbelow-ar.alt1"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar.alt1"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=2 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.medi.1"/>
+ <Glyph value="behDotless-ar.medi.high"/>
+ <Glyph value="behDotless-ar.medi.high.1"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.medi.1"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="fehDotless-ar.init.1"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.medi.short"/>
+ <Glyph value="lam-ar.medi.short2"/>
+ </LookAheadCoverage>
+ <LookAheadCoverage index="1">
+ <Glyph value="hah-ar.fina.1"/>
+ <Glyph value="hah-ar.medi.1"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="11"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="4" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.medi.1"/>
+ <Glyph value="behDotless-ar.medi.high"/>
+ <Glyph value="behDotless-ar.medi.high.1"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.medi.1"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="fehDotless-ar.init.1"/>
+ <Glyph value="lam-ar.medi.short"/>
+ <Glyph value="lam-ar.medi.short2"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=3 -->
+ <InputCoverage index="0">
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="dotbelow-ar.alt1"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar.alt1"/>
+ </InputCoverage>
+ <InputCoverage index="1">
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.medi.1"/>
+ <Glyph value="behDotless-ar.medi.high"/>
+ <Glyph value="behDotless-ar.medi.high.1"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.medi.1"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="fehDotless-ar.init.1"/>
+ <Glyph value="lam-ar.medi.short"/>
+ <Glyph value="lam-ar.medi.short2"/>
+ </InputCoverage>
+ <InputCoverage index="2">
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="dotbelow-ar.alt1"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar.alt1"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="hah-ar.fina.1"/>
+ <Glyph value="hah-ar.medi.1"/>
+ </LookAheadCoverage>
+ <!-- PosCount=2 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="11"/>
+ </PosLookupRecord>
+ <PosLookupRecord index="1">
+ <SequenceIndex value="2"/>
+ <LookupListIndex value="11"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <MarkFilteringSet value="1"/>
+ </Lookup>
+ <Lookup index="10">
+ <LookupType value="1"/>
+ <LookupFlag value="16"/><!-- useMarkFilteringSet -->
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="dotbelow-ar.alt1"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar.alt1"/>
+ </Coverage>
+ <ValueFormat value="1"/>
+ <Value XPlacement="-60"/>
+ </SinglePos>
+ <MarkFilteringSet value="1"/>
+ </Lookup>
+ <Lookup index="11">
+ <LookupType value="1"/>
+ <LookupFlag value="16"/><!-- useMarkFilteringSet -->
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="dotbelow-ar.alt1"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar.alt1"/>
+ </Coverage>
+ <ValueFormat value="3"/>
+ <Value XPlacement="40" YPlacement="-110"/>
+ </SinglePos>
+ <MarkFilteringSet value="1"/>
+ </Lookup>
+ <Lookup index="12">
+ <LookupType value="8"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=8 -->
+ <ChainContextPos index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.init.hah"/>
+ <Glyph value="lam-ar.init.hah"/>
+ <Glyph value="lam-ar.init.hah2"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="hah-ar.fina.1"/>
+ <Glyph value="hah-ar.medi.1"/>
+ <Glyph value="hah-ar.medi.2"/>
+ <Glyph value="hah-ar.medi.3"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="13"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="1" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="fehDotless-ar.init.1"/>
+ <Glyph value="meem-ar.init"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="hah-ar.fina.1"/>
+ <Glyph value="hah-ar.medi.1"/>
+ <Glyph value="hah-ar.medi.2"/>
+ <Glyph value="hah-ar.medi.3"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="13"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="2" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="ain-ar.init.1"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="hah-ar.fina.1"/>
+ <Glyph value="hah-ar.medi.1"/>
+ <Glyph value="hah-ar.medi.2"/>
+ <Glyph value="hah-ar.medi.3"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="13"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="3" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="fehDotless-ar.init"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="hah-ar.fina.1"/>
+ <Glyph value="hah-ar.medi.1"/>
+ <Glyph value="hah-ar.medi.2"/>
+ <Glyph value="hah-ar.medi.3"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="13"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="4" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="lam-ar.init.short"/>
+ <Glyph value="lam-ar.init.short2"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=2 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.medi.1"/>
+ <Glyph value="behDotless-ar.medi.high"/>
+ <Glyph value="behDotless-ar.medi.high.1"/>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="lam-ar.medi.short"/>
+ <Glyph value="lam-ar.medi.short2"/>
+ </LookAheadCoverage>
+ <LookAheadCoverage index="1">
+ <Glyph value="hah-ar.fina.1"/>
+ <Glyph value="hah-ar.medi.1"/>
+ <Glyph value="hah-ar.medi.2"/>
+ <Glyph value="hah-ar.medi.3"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="13"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="5" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="heh-ar.init.1"/>
+ <Glyph value="heh-ar.init.2"/>
+ <Glyph value="heh-ar.init.3"/>
+ <Glyph value="heh-ar.init.4"/>
+ <Glyph value="heh-ar.init.5"/>
+ <Glyph value="heh-ar.init.6"/>
+ <Glyph value="heh-ar.init.7"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="hah-ar.fina.1"/>
+ <Glyph value="hah-ar.medi.1"/>
+ <Glyph value="hah-ar.medi.2"/>
+ <Glyph value="hah-ar.medi.3"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="13"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="6" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="hah-ar.fina"/>
+ <Glyph value="hah-ar.fina.1"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.1"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="reh-ar.fina.1"/>
+ <Glyph value="ain-ar.3"/>
+ <Glyph value="ain-ar.fina"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.1"/>
+ <Glyph value="waw-ar.2"/>
+ <Glyph value="waw-ar.3"/>
+ <Glyph value="waw-ar.fina"/>
+ <Glyph value="waw-ar.fina.1"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.init"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=2 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="behDotless-ar.medi.yeh"/>
+ <Glyph value="lam-ar.medi.yeh"/>
+ </LookAheadCoverage>
+ <LookAheadCoverage index="1">
+ <Glyph value="alefMaksura-ar.fina.tooth"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="14"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ <ChainContextPos index="7" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="lam-ar"/>
+ <Glyph value="lam-ar.fina"/>
+ <Glyph value="noonghunna-ar"/>
+ <Glyph value="noonghunna-ar.fina"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.init"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=2 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="behDotless-ar.medi.yeh"/>
+ <Glyph value="lam-ar.medi.yeh"/>
+ </LookAheadCoverage>
+ <LookAheadCoverage index="1">
+ <Glyph value="alefMaksura-ar.fina.tooth"/>
+ </LookAheadCoverage>
+ <!-- PosCount=1 -->
+ <PosLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="15"/>
+ </PosLookupRecord>
+ </ChainContextPos>
+ </Lookup>
+ <Lookup index="13">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=2 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="fehDotless-ar.init.1"/>
+ <Glyph value="lam-ar.init.short"/>
+ <Glyph value="lam-ar.init.short2"/>
+ <Glyph value="meem-ar.init"/>
+ <Glyph value="heh-ar.init.1"/>
+ <Glyph value="heh-ar.init.2"/>
+ <Glyph value="heh-ar.init.3"/>
+ <Glyph value="heh-ar.init.4"/>
+ <Glyph value="heh-ar.init.5"/>
+ <Glyph value="heh-ar.init.6"/>
+ <Glyph value="heh-ar.init.7"/>
+ </Coverage>
+ <ValueFormat value="4"/>
+ <Value XAdvance="70"/>
+ </SinglePos>
+ <SinglePos index="1" Format="2">
+ <Coverage>
+ <Glyph value="behDotless-ar.init.hah"/>
+ <Glyph value="ain-ar.init.1"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="lam-ar.init.hah"/>
+ <Glyph value="lam-ar.init.hah2"/>
+ </Coverage>
+ <ValueFormat value="4"/>
+ <!-- ValueCount=5 -->
+ <Value index="0" XAdvance="210"/>
+ <Value index="1" XAdvance="30"/>
+ <Value index="2" XAdvance="57"/>
+ <Value index="3" XAdvance="210"/>
+ <Value index="4" XAdvance="210"/>
+ </SinglePos>
+ </Lookup>
+ <Lookup index="14">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="behDotless-ar.init"/>
+ </Coverage>
+ <ValueFormat value="4"/>
+ <Value XAdvance="100"/>
+ </SinglePos>
+ </Lookup>
+ <Lookup index="15">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="behDotless-ar.init"/>
+ </Coverage>
+ <ValueFormat value="4"/>
+ <Value XAdvance="200"/>
+ </SinglePos>
+ </Lookup>
+ <Lookup index="16">
+ <LookupType value="2"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=3 -->
+ <PairPos index="0" Format="1">
+ <Coverage>
+ <Glyph value="hah-ar.medi"/>
+ </Coverage>
+ <ValueFormat1 value="4"/>
+ <ValueFormat2 value="0"/>
+ <!-- PairSetCount=1 -->
+ <PairSet index="0">
+ <!-- PairValueCount=1 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alefMaksura-ar.fina.5"/>
+ <Value1 XAdvance="0"/>
+ </PairValueRecord>
+ </PairSet>
+ </PairPos>
+ <PairPos index="1" Format="1">
+ <Coverage>
+ <Glyph value="alef-ar.fina"/>
+ <Glyph value="behDotless-ar"/>
+ <Glyph value="behDotless-ar.fina"/>
+ <Glyph value="behDotless-ar.fina.1"/>
+ <Glyph value="behDotless-ar.medi.1"/>
+ <Glyph value="hah-ar"/>
+ <Glyph value="hah-ar.1"/>
+ <Glyph value="hah-ar.2"/>
+ <Glyph value="hah-ar.3"/>
+ <Glyph value="hah-ar.4"/>
+ <Glyph value="hah-ar.5"/>
+ <Glyph value="hah-ar.fina"/>
+ <Glyph value="hah-ar.medi"/>
+ <Glyph value="hah-ar.medi.1"/>
+ <Glyph value="hah-ar.medi.2"/>
+ <Glyph value="hah-ar.medi.3"/>
+ <Glyph value="hah-ar.init"/>
+ <Glyph value="hah-ar.init.1"/>
+ <Glyph value="hah-ar.init.2"/>
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar"/>
+ <Glyph value="reh-ar.1"/>
+ <Glyph value="reh-ar.2"/>
+ <Glyph value="reh-ar.3"/>
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="reh-ar.fina.1"/>
+ <Glyph value="seen-ar"/>
+ <Glyph value="seen-ar.1"/>
+ <Glyph value="seen-ar.2"/>
+ <Glyph value="seen-ar.3"/>
+ <Glyph value="seen-ar.4"/>
+ <Glyph value="seen-ar.5"/>
+ <Glyph value="seen-ar.6"/>
+ <Glyph value="seen-ar.fina"/>
+ <Glyph value="seen-ar.fina.1"/>
+ <Glyph value="seen-ar.fina.2"/>
+ <Glyph value="seen-ar.fina.3"/>
+ <Glyph value="seen-ar.fina.4"/>
+ <Glyph value="seen-ar.fina.5"/>
+ <Glyph value="sad-ar"/>
+ <Glyph value="sad-ar.1"/>
+ <Glyph value="sad-ar.fina"/>
+ <Glyph value="sad-ar.fina.1"/>
+ <Glyph value="ain-ar"/>
+ <Glyph value="ain-ar.1"/>
+ <Glyph value="ain-ar.2"/>
+ <Glyph value="ain-ar.3"/>
+ <Glyph value="ain-ar.fina"/>
+ <Glyph value="ain-ar.medi"/>
+ <Glyph value="ain-ar.init"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.medi.1"/>
+ <Glyph value="fehDotless-ar.init"/>
+ <Glyph value="fehDotless-ar.init.1"/>
+ <Glyph value="qafDotless-ar"/>
+ <Glyph value="qafDotless-ar.fina"/>
+ <Glyph value="kaf-ar"/>
+ <Glyph value="kaf-ar.1"/>
+ <Glyph value="kaf-ar.2"/>
+ <Glyph value="kaf-ar.fina"/>
+ <Glyph value="kaf-ar.fina.1"/>
+ <Glyph value="kaf-ar.fina.2"/>
+ <Glyph value="kaf-ar.medi.2"/>
+ <Glyph value="kaf-ar.init.1"/>
+ <Glyph value="lam-ar"/>
+ <Glyph value="lam-ar.fina"/>
+ <Glyph value="meem-ar"/>
+ <Glyph value="meem-ar.1"/>
+ <Glyph value="meem-ar.2"/>
+ <Glyph value="meem-ar.fina"/>
+ <Glyph value="meem-ar.fina.1"/>
+ <Glyph value="meem-ar.fina.2"/>
+ <Glyph value="meem-ar.medi"/>
+ <Glyph value="noonghunna-ar"/>
+ <Glyph value="noonghunna-ar.fina"/>
+ <Glyph value="heh-ar.medi"/>
+ <Glyph value="heh-ar.medi.1"/>
+ <Glyph value="heh-ar.init"/>
+ <Glyph value="heh-ar.init.1"/>
+ <Glyph value="waw-ar"/>
+ <Glyph value="waw-ar.1"/>
+ <Glyph value="waw-ar.2"/>
+ <Glyph value="waw-ar.3"/>
+ <Glyph value="waw-ar.fina"/>
+ <Glyph value="waw-ar.fina.1"/>
+ <Glyph value="alefMaksura-ar"/>
+ <Glyph value="alefMaksura-ar.1"/>
+ <Glyph value="alefMaksura-ar.2"/>
+ <Glyph value="alefMaksura-ar.3"/>
+ <Glyph value="alefMaksura-ar.4"/>
+ <Glyph value="alefMaksura-ar.5"/>
+ <Glyph value="alefMaksura-ar.6"/>
+ <Glyph value="alefMaksura-ar.fina"/>
+ <Glyph value="alefMaksura-ar.fina.1"/>
+ <Glyph value="alefMaksura-ar.fina.2"/>
+ <Glyph value="alefMaksura-ar.fina.3"/>
+ <Glyph value="alefMaksura-ar.fina.4"/>
+ <Glyph value="alefMaksura-ar.fina.5"/>
+ <Glyph value="alefMaksura-ar.fina.6"/>
+ <Glyph value="lam_alef-ar.1"/>
+ <Glyph value="lam_alef-ar.fina.1"/>
+ </Coverage>
+ <ValueFormat1 value="5"/>
+ <ValueFormat2 value="0"/>
+ <!-- PairSetCount=102 -->
+ <PairSet index="0">
+ <!-- PairValueCount=1 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="1">
+ <!-- PairValueCount=35 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alef-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alef-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alef-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="hah-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="hah-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="hah-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="hah-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="hah-ar.4"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="hah-ar.5"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="hah-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="hah-ar.init.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="ain-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="ain-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="13">
+ <SecondGlyph value="ain-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="14">
+ <SecondGlyph value="ain-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="15">
+ <SecondGlyph value="ain-ar.init"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="16">
+ <SecondGlyph value="ain-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="17">
+ <SecondGlyph value="fehDotless-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="18">
+ <SecondGlyph value="fehDotless-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="19">
+ <SecondGlyph value="fehDotless-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="20">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="-80" XAdvance="-80"/>
+ </PairValueRecord>
+ <PairValueRecord index="21">
+ <SecondGlyph value="meem-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="22">
+ <SecondGlyph value="meem-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="23">
+ <SecondGlyph value="meem-ar.2"/>
+ <Value1 XPlacement="-10" XAdvance="-10"/>
+ </PairValueRecord>
+ <PairValueRecord index="24">
+ <SecondGlyph value="meem-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="25">
+ <SecondGlyph value="heh-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="26">
+ <SecondGlyph value="heh-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="27">
+ <SecondGlyph value="heh-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="28">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="29">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="30">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="31">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="32">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="33">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="34">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="2">
+ <!-- PairValueCount=35 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alef-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alef-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alef-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="hah-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="hah-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="hah-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="hah-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="hah-ar.4"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="hah-ar.5"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="hah-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="hah-ar.init.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="ain-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="ain-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="13">
+ <SecondGlyph value="ain-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="14">
+ <SecondGlyph value="ain-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="15">
+ <SecondGlyph value="ain-ar.init"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="16">
+ <SecondGlyph value="ain-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="17">
+ <SecondGlyph value="fehDotless-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="18">
+ <SecondGlyph value="fehDotless-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="19">
+ <SecondGlyph value="fehDotless-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="20">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="-80" XAdvance="-80"/>
+ </PairValueRecord>
+ <PairValueRecord index="21">
+ <SecondGlyph value="meem-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="22">
+ <SecondGlyph value="meem-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="23">
+ <SecondGlyph value="meem-ar.2"/>
+ <Value1 XPlacement="-10" XAdvance="-10"/>
+ </PairValueRecord>
+ <PairValueRecord index="24">
+ <SecondGlyph value="meem-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="25">
+ <SecondGlyph value="heh-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="26">
+ <SecondGlyph value="heh-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="27">
+ <SecondGlyph value="heh-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="28">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="29">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="30">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="31">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="32">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="33">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="34">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="3">
+ <!-- PairValueCount=35 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alef-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alef-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alef-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="hah-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="hah-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="hah-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="hah-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="hah-ar.4"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="hah-ar.5"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="hah-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="hah-ar.init.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="ain-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="ain-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="13">
+ <SecondGlyph value="ain-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="14">
+ <SecondGlyph value="ain-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="15">
+ <SecondGlyph value="ain-ar.init"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="16">
+ <SecondGlyph value="ain-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="17">
+ <SecondGlyph value="fehDotless-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="18">
+ <SecondGlyph value="fehDotless-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="19">
+ <SecondGlyph value="fehDotless-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="20">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="-80" XAdvance="-80"/>
+ </PairValueRecord>
+ <PairValueRecord index="21">
+ <SecondGlyph value="meem-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="22">
+ <SecondGlyph value="meem-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="23">
+ <SecondGlyph value="meem-ar.2"/>
+ <Value1 XPlacement="-10" XAdvance="-10"/>
+ </PairValueRecord>
+ <PairValueRecord index="24">
+ <SecondGlyph value="meem-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="25">
+ <SecondGlyph value="heh-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="26">
+ <SecondGlyph value="heh-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="27">
+ <SecondGlyph value="heh-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="28">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="29">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="30">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="31">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="32">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="33">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="34">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="4">
+ <!-- PairValueCount=6 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="behDotless-ar.fina.1"/>
+ <Value1 XPlacement="-10" XAdvance="-10"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="lam_alef-ar.fina"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="lam_alef-ar.fina.2"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="lam_alef-ar.fina.3"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="lam_alef-ar.fina.4"/>
+ <Value1 XPlacement="-80" XAdvance="-80"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="lam_alef-ar.fina.5"/>
+ <Value1 XPlacement="-80" XAdvance="-80"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="5">
+ <!-- PairValueCount=5 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="385" XAdvance="385"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="170" XAdvance="170"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="6">
+ <!-- PairValueCount=5 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="385" XAdvance="385"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="170" XAdvance="170"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="7">
+ <!-- PairValueCount=5 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="385" XAdvance="385"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="170" XAdvance="170"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="8">
+ <!-- PairValueCount=5 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="385" XAdvance="385"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="170" XAdvance="170"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="9">
+ <!-- PairValueCount=5 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="385" XAdvance="385"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="170" XAdvance="170"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="10">
+ <!-- PairValueCount=5 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="385" XAdvance="385"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="170" XAdvance="170"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="11">
+ <!-- PairValueCount=5 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="385" XAdvance="385"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="170" XAdvance="170"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="12">
+ <!-- PairValueCount=39 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="behDotless-ar.medi.1"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="hah-ar.fina"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="hah-ar.medi"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="hah-ar.medi.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="hah-ar.medi.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="hah-ar.medi.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="hah-ar.init"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="dal-ar.fina"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="seen-ar.medi.6"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="sad-ar.fina"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="sad-ar.fina.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="sad-ar.medi"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="tah-ar.fina"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="13">
+ <SecondGlyph value="tah-ar.medi"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="14">
+ <SecondGlyph value="tah-ar.medi.short"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="15">
+ <SecondGlyph value="tah-ar.medi.short2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="16">
+ <SecondGlyph value="qafDotless-ar.fina"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="17">
+ <SecondGlyph value="kaf-ar.fina"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="18">
+ <SecondGlyph value="kaf-ar.fina.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="19">
+ <SecondGlyph value="kaf-ar.fina.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="20">
+ <SecondGlyph value="kaf-ar.medi"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="21">
+ <SecondGlyph value="kaf-ar.medi.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="22">
+ <SecondGlyph value="kaf-ar.medi.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="23">
+ <SecondGlyph value="meem-ar.fina"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="24">
+ <SecondGlyph value="meem-ar.fina.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="25">
+ <SecondGlyph value="meem-ar.fina.2"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="26">
+ <SecondGlyph value="meem-ar.medi"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="27">
+ <SecondGlyph value="meem-ar.medi.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="28">
+ <SecondGlyph value="noonghunna-ar.fina"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="29">
+ <SecondGlyph value="waw-ar.fina"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="30">
+ <SecondGlyph value="waw-ar.fina.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="31">
+ <SecondGlyph value="alefMaksura-ar.fina"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="32">
+ <SecondGlyph value="alefMaksura-ar.fina.0"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="33">
+ <SecondGlyph value="alefMaksura-ar.fina.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="34">
+ <SecondGlyph value="alefMaksura-ar.fina.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="35">
+ <SecondGlyph value="alefMaksura-ar.fina.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="36">
+ <SecondGlyph value="alefMaksura-ar.fina.4"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="37">
+ <SecondGlyph value="alefMaksura-ar.fina.6"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="38">
+ <SecondGlyph value="alefMaksura-ar.fina.tooth"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="13">
+ <!-- PairValueCount=3 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="qafDotless-ar.fina"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="meem-ar.fina.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="meem-ar.medi.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="14">
+ <!-- PairValueCount=3 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="qafDotless-ar.fina"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="meem-ar.fina.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="meem-ar.medi.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="15">
+ <!-- PairValueCount=3 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="qafDotless-ar.fina"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="meem-ar.fina.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="meem-ar.medi.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="16">
+ <!-- PairValueCount=3 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="qafDotless-ar.fina"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="meem-ar.fina.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="meem-ar.medi.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="17">
+ <!-- PairValueCount=11 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="behDotless-ar.medi.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="seen-ar.medi.6"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alefMaksura-ar.fina"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar.fina.0"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.fina.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="alefMaksura-ar.fina.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar.fina.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.fina.4"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.fina.5"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="alefMaksura-ar.fina.6"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="alefMaksura-ar.fina.tooth"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="18">
+ <!-- PairValueCount=11 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="behDotless-ar.medi.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="seen-ar.medi.6"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alefMaksura-ar.fina"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar.fina.0"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.fina.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="alefMaksura-ar.fina.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar.fina.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.fina.4"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.fina.5"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="alefMaksura-ar.fina.6"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="alefMaksura-ar.fina.tooth"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="19">
+ <!-- PairValueCount=35 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alef-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alef-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alef-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="hah-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="hah-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="hah-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="hah-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="hah-ar.4"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="hah-ar.5"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="hah-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="hah-ar.init.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="ain-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="ain-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="13">
+ <SecondGlyph value="ain-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="14">
+ <SecondGlyph value="ain-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="15">
+ <SecondGlyph value="ain-ar.init"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="16">
+ <SecondGlyph value="ain-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="17">
+ <SecondGlyph value="fehDotless-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="18">
+ <SecondGlyph value="fehDotless-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="19">
+ <SecondGlyph value="fehDotless-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="20">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="-80" XAdvance="-80"/>
+ </PairValueRecord>
+ <PairValueRecord index="21">
+ <SecondGlyph value="meem-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="22">
+ <SecondGlyph value="meem-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="23">
+ <SecondGlyph value="meem-ar.2"/>
+ <Value1 XPlacement="-10" XAdvance="-10"/>
+ </PairValueRecord>
+ <PairValueRecord index="24">
+ <SecondGlyph value="meem-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="25">
+ <SecondGlyph value="heh-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="26">
+ <SecondGlyph value="heh-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="27">
+ <SecondGlyph value="heh-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="28">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="29">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="30">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="31">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="32">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="33">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="34">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="20">
+ <!-- PairValueCount=35 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alef-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alef-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alef-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="hah-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="hah-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="hah-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="hah-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="hah-ar.4"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="hah-ar.5"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="hah-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="hah-ar.init.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="ain-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="ain-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="13">
+ <SecondGlyph value="ain-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="14">
+ <SecondGlyph value="ain-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="15">
+ <SecondGlyph value="ain-ar.init"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="16">
+ <SecondGlyph value="ain-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="17">
+ <SecondGlyph value="fehDotless-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="18">
+ <SecondGlyph value="fehDotless-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="19">
+ <SecondGlyph value="fehDotless-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="20">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="-80" XAdvance="-80"/>
+ </PairValueRecord>
+ <PairValueRecord index="21">
+ <SecondGlyph value="meem-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="22">
+ <SecondGlyph value="meem-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="23">
+ <SecondGlyph value="meem-ar.2"/>
+ <Value1 XPlacement="-10" XAdvance="-10"/>
+ </PairValueRecord>
+ <PairValueRecord index="24">
+ <SecondGlyph value="meem-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="25">
+ <SecondGlyph value="heh-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="26">
+ <SecondGlyph value="heh-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="27">
+ <SecondGlyph value="heh-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="28">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="29">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="30">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="31">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="32">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="33">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="34">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="21">
+ <!-- PairValueCount=13 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="reh-ar"/>
+ <Value1 XPlacement="88" XAdvance="88"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="reh-ar.1"/>
+ <Value1 XPlacement="88" XAdvance="88"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="lam-ar"/>
+ <Value1 XPlacement="63" XAdvance="63"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="noonghunna-ar"/>
+ <Value1 XPlacement="63" XAdvance="63"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="waw-ar"/>
+ <Value1 XPlacement="63" XAdvance="63"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="waw-ar.1"/>
+ <Value1 XPlacement="63" XAdvance="63"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="63" XAdvance="63"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="63" XAdvance="63"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="260" XAdvance="260"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="405" XAdvance="405"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="560" XAdvance="560"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="190" XAdvance="190"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="560" XAdvance="560"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="22">
+ <!-- PairValueCount=13 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="reh-ar"/>
+ <Value1 XPlacement="88" XAdvance="88"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="reh-ar.1"/>
+ <Value1 XPlacement="88" XAdvance="88"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="lam-ar"/>
+ <Value1 XPlacement="63" XAdvance="63"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="noonghunna-ar"/>
+ <Value1 XPlacement="63" XAdvance="63"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="waw-ar"/>
+ <Value1 XPlacement="63" XAdvance="63"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="waw-ar.1"/>
+ <Value1 XPlacement="63" XAdvance="63"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="63" XAdvance="63"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="63" XAdvance="63"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="260" XAdvance="260"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="405" XAdvance="405"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="560" XAdvance="560"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="190" XAdvance="190"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="560" XAdvance="560"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="23">
+ <!-- PairValueCount=35 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alef-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alef-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alef-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="hah-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="hah-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="hah-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="hah-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="hah-ar.4"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="hah-ar.5"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="hah-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="hah-ar.init.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="ain-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="ain-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="13">
+ <SecondGlyph value="ain-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="14">
+ <SecondGlyph value="ain-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="15">
+ <SecondGlyph value="ain-ar.init"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="16">
+ <SecondGlyph value="ain-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="17">
+ <SecondGlyph value="fehDotless-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="18">
+ <SecondGlyph value="fehDotless-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="19">
+ <SecondGlyph value="fehDotless-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="20">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="-80" XAdvance="-80"/>
+ </PairValueRecord>
+ <PairValueRecord index="21">
+ <SecondGlyph value="meem-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="22">
+ <SecondGlyph value="meem-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="23">
+ <SecondGlyph value="meem-ar.2"/>
+ <Value1 XPlacement="-10" XAdvance="-10"/>
+ </PairValueRecord>
+ <PairValueRecord index="24">
+ <SecondGlyph value="meem-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="25">
+ <SecondGlyph value="heh-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="26">
+ <SecondGlyph value="heh-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="27">
+ <SecondGlyph value="heh-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="28">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="29">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="30">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="31">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="32">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="33">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="34">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="24">
+ <!-- PairValueCount=35 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alef-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alef-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alef-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="hah-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="hah-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="hah-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="hah-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="hah-ar.4"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="hah-ar.5"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="hah-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="hah-ar.init.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="ain-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="ain-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="13">
+ <SecondGlyph value="ain-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="14">
+ <SecondGlyph value="ain-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="15">
+ <SecondGlyph value="ain-ar.init"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="16">
+ <SecondGlyph value="ain-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="17">
+ <SecondGlyph value="fehDotless-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="18">
+ <SecondGlyph value="fehDotless-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="19">
+ <SecondGlyph value="fehDotless-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="20">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="-80" XAdvance="-80"/>
+ </PairValueRecord>
+ <PairValueRecord index="21">
+ <SecondGlyph value="meem-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="22">
+ <SecondGlyph value="meem-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="23">
+ <SecondGlyph value="meem-ar.2"/>
+ <Value1 XPlacement="-10" XAdvance="-10"/>
+ </PairValueRecord>
+ <PairValueRecord index="24">
+ <SecondGlyph value="meem-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="25">
+ <SecondGlyph value="heh-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="26">
+ <SecondGlyph value="heh-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="27">
+ <SecondGlyph value="heh-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="28">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="29">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="30">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="31">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="32">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="33">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="34">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="25">
+ <!-- PairValueCount=13 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="reh-ar"/>
+ <Value1 XPlacement="88" XAdvance="88"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="reh-ar.1"/>
+ <Value1 XPlacement="88" XAdvance="88"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="lam-ar"/>
+ <Value1 XPlacement="63" XAdvance="63"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="noonghunna-ar"/>
+ <Value1 XPlacement="63" XAdvance="63"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="waw-ar"/>
+ <Value1 XPlacement="63" XAdvance="63"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="waw-ar.1"/>
+ <Value1 XPlacement="63" XAdvance="63"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="63" XAdvance="63"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="63" XAdvance="63"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="260" XAdvance="260"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="405" XAdvance="405"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="560" XAdvance="560"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="190" XAdvance="190"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="560" XAdvance="560"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="26">
+ <!-- PairValueCount=13 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="reh-ar"/>
+ <Value1 XPlacement="88" XAdvance="88"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="reh-ar.1"/>
+ <Value1 XPlacement="88" XAdvance="88"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="lam-ar"/>
+ <Value1 XPlacement="63" XAdvance="63"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="noonghunna-ar"/>
+ <Value1 XPlacement="63" XAdvance="63"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="waw-ar"/>
+ <Value1 XPlacement="63" XAdvance="63"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="waw-ar.1"/>
+ <Value1 XPlacement="63" XAdvance="63"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="63" XAdvance="63"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="63" XAdvance="63"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="260" XAdvance="260"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="405" XAdvance="405"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="560" XAdvance="560"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="190" XAdvance="190"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="560" XAdvance="560"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="27">
+ <!-- PairValueCount=10 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="lam-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="noonghunna-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="180" XAdvance="180"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="325" XAdvance="325"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="110" XAdvance="110"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="28">
+ <!-- PairValueCount=10 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="lam-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="noonghunna-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="180" XAdvance="180"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="325" XAdvance="325"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="110" XAdvance="110"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="29">
+ <!-- PairValueCount=10 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="lam-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="noonghunna-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="180" XAdvance="180"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="325" XAdvance="325"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="110" XAdvance="110"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="30">
+ <!-- PairValueCount=10 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="lam-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="noonghunna-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="180" XAdvance="180"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="325" XAdvance="325"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="110" XAdvance="110"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="31">
+ <!-- PairValueCount=10 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="lam-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="noonghunna-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="180" XAdvance="180"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="325" XAdvance="325"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="110" XAdvance="110"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="32">
+ <!-- PairValueCount=10 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="lam-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="noonghunna-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="180" XAdvance="180"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="325" XAdvance="325"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="110" XAdvance="110"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="33">
+ <!-- PairValueCount=10 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="lam-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="noonghunna-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="180" XAdvance="180"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="325" XAdvance="325"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="110" XAdvance="110"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="34">
+ <!-- PairValueCount=10 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="lam-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="noonghunna-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="180" XAdvance="180"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="325" XAdvance="325"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="110" XAdvance="110"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="35">
+ <!-- PairValueCount=10 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="lam-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="noonghunna-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="180" XAdvance="180"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="325" XAdvance="325"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="110" XAdvance="110"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="36">
+ <!-- PairValueCount=10 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="lam-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="noonghunna-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="180" XAdvance="180"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="325" XAdvance="325"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="110" XAdvance="110"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="37">
+ <!-- PairValueCount=10 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="lam-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="noonghunna-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="180" XAdvance="180"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="325" XAdvance="325"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="110" XAdvance="110"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="38">
+ <!-- PairValueCount=10 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="lam-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="noonghunna-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="180" XAdvance="180"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="325" XAdvance="325"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="110" XAdvance="110"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="39">
+ <!-- PairValueCount=10 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="lam-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="noonghunna-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="180" XAdvance="180"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="325" XAdvance="325"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="110" XAdvance="110"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="40">
+ <!-- PairValueCount=10 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="lam-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="noonghunna-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="180" XAdvance="180"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="325" XAdvance="325"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="110" XAdvance="110"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="41">
+ <!-- PairValueCount=10 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="lam-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="noonghunna-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="180" XAdvance="180"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="325" XAdvance="325"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="110" XAdvance="110"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="42">
+ <!-- PairValueCount=10 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="lam-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="noonghunna-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="180" XAdvance="180"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="325" XAdvance="325"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="110" XAdvance="110"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="43">
+ <!-- PairValueCount=10 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="lam-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="noonghunna-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="180" XAdvance="180"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="325" XAdvance="325"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="110" XAdvance="110"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="44">
+ <!-- PairValueCount=5 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="385" XAdvance="385"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="170" XAdvance="170"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="45">
+ <!-- PairValueCount=5 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="385" XAdvance="385"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="170" XAdvance="170"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="46">
+ <!-- PairValueCount=5 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="385" XAdvance="385"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="170" XAdvance="170"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="47">
+ <!-- PairValueCount=5 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="385" XAdvance="385"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="170" XAdvance="170"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="48">
+ <!-- PairValueCount=5 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="385" XAdvance="385"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="170" XAdvance="170"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="49">
+ <!-- PairValueCount=48 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="behDotless-ar.fina.1"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="behDotless-ar.medi.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="hah-ar.fina"/>
+ <Value1 XPlacement="-80" XAdvance="-80"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="hah-ar.medi"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="hah-ar.medi.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="hah-ar.medi.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="hah-ar.medi.3"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="hah-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="dal-ar.fina"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="reh-ar.fina"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="reh-ar.fina.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="seen-ar.medi.6"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="sad-ar.fina"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="13">
+ <SecondGlyph value="sad-ar.fina.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="14">
+ <SecondGlyph value="sad-ar.medi"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="15">
+ <SecondGlyph value="tah-ar.fina"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="16">
+ <SecondGlyph value="tah-ar.medi"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="17">
+ <SecondGlyph value="tah-ar.medi.short"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="18">
+ <SecondGlyph value="tah-ar.medi.short2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="19">
+ <SecondGlyph value="qafDotless-ar.fina"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="20">
+ <SecondGlyph value="kaf-ar.fina"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="21">
+ <SecondGlyph value="kaf-ar.fina.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="22">
+ <SecondGlyph value="kaf-ar.fina.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="23">
+ <SecondGlyph value="kaf-ar.medi"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="24">
+ <SecondGlyph value="kaf-ar.medi.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="25">
+ <SecondGlyph value="kaf-ar.medi.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="26">
+ <SecondGlyph value="meem-ar.fina"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="27">
+ <SecondGlyph value="meem-ar.fina.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="28">
+ <SecondGlyph value="meem-ar.fina.2"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="29">
+ <SecondGlyph value="meem-ar.medi"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="30">
+ <SecondGlyph value="meem-ar.medi.1"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="31">
+ <SecondGlyph value="noonghunna-ar.fina"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="32">
+ <SecondGlyph value="waw-ar.fina"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="33">
+ <SecondGlyph value="waw-ar.fina.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="34">
+ <SecondGlyph value="alefMaksura-ar.fina"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="35">
+ <SecondGlyph value="alefMaksura-ar.fina.0"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="36">
+ <SecondGlyph value="alefMaksura-ar.fina.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="37">
+ <SecondGlyph value="alefMaksura-ar.fina.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="38">
+ <SecondGlyph value="alefMaksura-ar.fina.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="39">
+ <SecondGlyph value="alefMaksura-ar.fina.4"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="40">
+ <SecondGlyph value="alefMaksura-ar.fina.5"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="41">
+ <SecondGlyph value="alefMaksura-ar.fina.6"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="42">
+ <SecondGlyph value="alefMaksura-ar.fina.tooth"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="43">
+ <SecondGlyph value="lam_alef-ar.fina"/>
+ <Value1 XPlacement="-60" XAdvance="-60"/>
+ </PairValueRecord>
+ <PairValueRecord index="44">
+ <SecondGlyph value="lam_alef-ar.fina.2"/>
+ <Value1 XPlacement="-60" XAdvance="-60"/>
+ </PairValueRecord>
+ <PairValueRecord index="45">
+ <SecondGlyph value="lam_alef-ar.fina.3"/>
+ <Value1 XPlacement="-60" XAdvance="-60"/>
+ </PairValueRecord>
+ <PairValueRecord index="46">
+ <SecondGlyph value="lam_alef-ar.fina.4"/>
+ <Value1 XPlacement="-100" XAdvance="-100"/>
+ </PairValueRecord>
+ <PairValueRecord index="47">
+ <SecondGlyph value="lam_alef-ar.fina.5"/>
+ <Value1 XPlacement="-100" XAdvance="-100"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="50">
+ <!-- PairValueCount=2 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="behDotless-ar.medi.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="seen-ar.medi.6"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="51">
+ <!-- PairValueCount=40 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="behDotless-ar.medi.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="hah-ar.fina"/>
+ <Value1 XPlacement="-100" XAdvance="-100"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="hah-ar.medi"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="dal-ar.fina"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="reh-ar.fina"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="reh-ar.fina.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="seen-ar.medi.6"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="sad-ar.fina"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="sad-ar.fina.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="sad-ar.medi"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="tah-ar.fina"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="tah-ar.medi"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="tah-ar.medi.short"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="13">
+ <SecondGlyph value="tah-ar.medi.short2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="14">
+ <SecondGlyph value="qafDotless-ar.fina"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="15">
+ <SecondGlyph value="kaf-ar.fina"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="16">
+ <SecondGlyph value="kaf-ar.fina.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="17">
+ <SecondGlyph value="kaf-ar.fina.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="18">
+ <SecondGlyph value="kaf-ar.medi"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="19">
+ <SecondGlyph value="kaf-ar.medi.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="20">
+ <SecondGlyph value="kaf-ar.medi.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="21">
+ <SecondGlyph value="meem-ar.fina"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="22">
+ <SecondGlyph value="meem-ar.fina.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="23">
+ <SecondGlyph value="meem-ar.fina.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="24">
+ <SecondGlyph value="meem-ar.medi"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="25">
+ <SecondGlyph value="meem-ar.medi.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="26">
+ <SecondGlyph value="noonghunna-ar.fina"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="27">
+ <SecondGlyph value="waw-ar.fina"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="28">
+ <SecondGlyph value="waw-ar.fina.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="29">
+ <SecondGlyph value="alefMaksura-ar.fina"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="30">
+ <SecondGlyph value="alefMaksura-ar.fina.0"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="31">
+ <SecondGlyph value="alefMaksura-ar.fina.1"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="32">
+ <SecondGlyph value="alefMaksura-ar.fina.2"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="33">
+ <SecondGlyph value="alefMaksura-ar.fina.3"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="34">
+ <SecondGlyph value="alefMaksura-ar.fina.4"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="35">
+ <SecondGlyph value="alefMaksura-ar.fina.5"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="36">
+ <SecondGlyph value="alefMaksura-ar.fina.6"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="37">
+ <SecondGlyph value="alefMaksura-ar.fina.tooth"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="38">
+ <SecondGlyph value="lam_alef-ar.fina"/>
+ <Value1 XPlacement="-80" XAdvance="-80"/>
+ </PairValueRecord>
+ <PairValueRecord index="39">
+ <SecondGlyph value="lam_alef-ar.fina.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="52">
+ <!-- PairValueCount=11 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="behDotless-ar.medi.1"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="seen-ar.medi.6"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alefMaksura-ar.fina"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar.fina.0"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.fina.1"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="alefMaksura-ar.fina.2"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar.fina.3"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.fina.4"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.fina.5"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="alefMaksura-ar.fina.6"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="alefMaksura-ar.fina.tooth"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="53">
+ <!-- PairValueCount=11 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="behDotless-ar.medi.1"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="seen-ar.medi.6"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alefMaksura-ar.fina"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar.fina.0"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.fina.1"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="alefMaksura-ar.fina.2"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar.fina.3"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.fina.4"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.fina.5"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="alefMaksura-ar.fina.6"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="alefMaksura-ar.fina.tooth"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="54">
+ <!-- PairValueCount=11 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="behDotless-ar.medi.1"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="seen-ar.medi.6"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alefMaksura-ar.fina"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar.fina.0"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.fina.1"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="alefMaksura-ar.fina.2"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar.fina.3"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.fina.4"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.fina.5"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="alefMaksura-ar.fina.6"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="alefMaksura-ar.fina.tooth"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="55">
+ <!-- PairValueCount=6 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="40" XAdvance="40"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="220" XAdvance="220"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="365" XAdvance="365"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="520" XAdvance="520"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="150" XAdvance="150"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="520" XAdvance="520"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="56">
+ <!-- PairValueCount=6 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="40" XAdvance="40"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="220" XAdvance="220"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="365" XAdvance="365"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="520" XAdvance="520"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="150" XAdvance="150"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="520" XAdvance="520"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="57">
+ <!-- PairValueCount=35 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alef-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alef-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alef-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="hah-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="hah-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="hah-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="hah-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="hah-ar.4"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="hah-ar.5"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="hah-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="hah-ar.init.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="ain-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="ain-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="13">
+ <SecondGlyph value="ain-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="14">
+ <SecondGlyph value="ain-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="15">
+ <SecondGlyph value="ain-ar.init"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="16">
+ <SecondGlyph value="ain-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="17">
+ <SecondGlyph value="fehDotless-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="18">
+ <SecondGlyph value="fehDotless-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="19">
+ <SecondGlyph value="fehDotless-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="20">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="-80" XAdvance="-80"/>
+ </PairValueRecord>
+ <PairValueRecord index="21">
+ <SecondGlyph value="meem-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="22">
+ <SecondGlyph value="meem-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="23">
+ <SecondGlyph value="meem-ar.2"/>
+ <Value1 XPlacement="-10" XAdvance="-10"/>
+ </PairValueRecord>
+ <PairValueRecord index="24">
+ <SecondGlyph value="meem-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="25">
+ <SecondGlyph value="heh-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="26">
+ <SecondGlyph value="heh-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="27">
+ <SecondGlyph value="heh-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="28">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="29">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="30">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="31">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="32">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="33">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="34">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="58">
+ <!-- PairValueCount=35 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alef-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alef-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alef-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="hah-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="hah-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="hah-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="hah-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="hah-ar.4"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="hah-ar.5"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="hah-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="hah-ar.init.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="ain-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="ain-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="13">
+ <SecondGlyph value="ain-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="14">
+ <SecondGlyph value="ain-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="15">
+ <SecondGlyph value="ain-ar.init"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="16">
+ <SecondGlyph value="ain-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="17">
+ <SecondGlyph value="fehDotless-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="18">
+ <SecondGlyph value="fehDotless-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="19">
+ <SecondGlyph value="fehDotless-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="20">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="-80" XAdvance="-80"/>
+ </PairValueRecord>
+ <PairValueRecord index="21">
+ <SecondGlyph value="meem-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="22">
+ <SecondGlyph value="meem-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="23">
+ <SecondGlyph value="meem-ar.2"/>
+ <Value1 XPlacement="-10" XAdvance="-10"/>
+ </PairValueRecord>
+ <PairValueRecord index="24">
+ <SecondGlyph value="meem-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="25">
+ <SecondGlyph value="heh-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="26">
+ <SecondGlyph value="heh-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="27">
+ <SecondGlyph value="heh-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="28">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="29">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="30">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="31">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="32">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="33">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="34">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="59">
+ <!-- PairValueCount=35 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alef-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alef-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alef-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="hah-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="hah-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="hah-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="hah-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="hah-ar.4"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="hah-ar.5"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="hah-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="hah-ar.init.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="ain-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="ain-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="13">
+ <SecondGlyph value="ain-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="14">
+ <SecondGlyph value="ain-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="15">
+ <SecondGlyph value="ain-ar.init"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="16">
+ <SecondGlyph value="ain-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="17">
+ <SecondGlyph value="fehDotless-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="18">
+ <SecondGlyph value="fehDotless-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="19">
+ <SecondGlyph value="fehDotless-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="20">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="-80" XAdvance="-80"/>
+ </PairValueRecord>
+ <PairValueRecord index="21">
+ <SecondGlyph value="meem-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="22">
+ <SecondGlyph value="meem-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="23">
+ <SecondGlyph value="meem-ar.2"/>
+ <Value1 XPlacement="-10" XAdvance="-10"/>
+ </PairValueRecord>
+ <PairValueRecord index="24">
+ <SecondGlyph value="meem-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="25">
+ <SecondGlyph value="heh-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="26">
+ <SecondGlyph value="heh-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="27">
+ <SecondGlyph value="heh-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="28">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="29">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="30">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="31">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="32">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="33">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="34">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="60">
+ <!-- PairValueCount=35 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alef-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alef-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alef-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="hah-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="hah-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="hah-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="hah-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="hah-ar.4"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="hah-ar.5"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="hah-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="hah-ar.init.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="ain-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="ain-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="13">
+ <SecondGlyph value="ain-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="14">
+ <SecondGlyph value="ain-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="15">
+ <SecondGlyph value="ain-ar.init"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="16">
+ <SecondGlyph value="ain-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="17">
+ <SecondGlyph value="fehDotless-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="18">
+ <SecondGlyph value="fehDotless-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="19">
+ <SecondGlyph value="fehDotless-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="20">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="-80" XAdvance="-80"/>
+ </PairValueRecord>
+ <PairValueRecord index="21">
+ <SecondGlyph value="meem-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="22">
+ <SecondGlyph value="meem-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="23">
+ <SecondGlyph value="meem-ar.2"/>
+ <Value1 XPlacement="-10" XAdvance="-10"/>
+ </PairValueRecord>
+ <PairValueRecord index="24">
+ <SecondGlyph value="meem-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="25">
+ <SecondGlyph value="heh-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="26">
+ <SecondGlyph value="heh-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="27">
+ <SecondGlyph value="heh-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="28">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="29">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="30">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="31">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="32">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="33">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="34">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="61">
+ <!-- PairValueCount=35 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alef-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alef-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alef-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="hah-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="hah-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="hah-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="hah-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="hah-ar.4"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="hah-ar.5"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="hah-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="hah-ar.init.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="ain-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="ain-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="13">
+ <SecondGlyph value="ain-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="14">
+ <SecondGlyph value="ain-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="15">
+ <SecondGlyph value="ain-ar.init"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="16">
+ <SecondGlyph value="ain-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="17">
+ <SecondGlyph value="fehDotless-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="18">
+ <SecondGlyph value="fehDotless-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="19">
+ <SecondGlyph value="fehDotless-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="20">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="-80" XAdvance="-80"/>
+ </PairValueRecord>
+ <PairValueRecord index="21">
+ <SecondGlyph value="meem-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="22">
+ <SecondGlyph value="meem-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="23">
+ <SecondGlyph value="meem-ar.2"/>
+ <Value1 XPlacement="-10" XAdvance="-10"/>
+ </PairValueRecord>
+ <PairValueRecord index="24">
+ <SecondGlyph value="meem-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="25">
+ <SecondGlyph value="heh-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="26">
+ <SecondGlyph value="heh-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="27">
+ <SecondGlyph value="heh-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="28">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="29">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="30">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="31">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="32">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="33">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="34">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="62">
+ <!-- PairValueCount=35 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alef-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alef-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alef-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="hah-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="hah-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="hah-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="hah-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="hah-ar.4"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="hah-ar.5"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="hah-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="hah-ar.init.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="ain-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="ain-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="13">
+ <SecondGlyph value="ain-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="14">
+ <SecondGlyph value="ain-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="15">
+ <SecondGlyph value="ain-ar.init"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="16">
+ <SecondGlyph value="ain-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="17">
+ <SecondGlyph value="fehDotless-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="18">
+ <SecondGlyph value="fehDotless-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="19">
+ <SecondGlyph value="fehDotless-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="20">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="-80" XAdvance="-80"/>
+ </PairValueRecord>
+ <PairValueRecord index="21">
+ <SecondGlyph value="meem-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="22">
+ <SecondGlyph value="meem-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="23">
+ <SecondGlyph value="meem-ar.2"/>
+ <Value1 XPlacement="-10" XAdvance="-10"/>
+ </PairValueRecord>
+ <PairValueRecord index="24">
+ <SecondGlyph value="meem-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="25">
+ <SecondGlyph value="heh-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="26">
+ <SecondGlyph value="heh-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="27">
+ <SecondGlyph value="heh-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="28">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="29">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="30">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="31">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="32">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="33">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="34">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="63">
+ <!-- PairValueCount=9 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alefMaksura-ar.fina"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alefMaksura-ar.fina.0"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alefMaksura-ar.fina.1"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar.fina.2"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.fina.3"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="alefMaksura-ar.fina.4"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar.fina.5"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.fina.6"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.fina.tooth"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="64">
+ <!-- PairValueCount=9 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alefMaksura-ar.fina"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alefMaksura-ar.fina.0"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alefMaksura-ar.fina.1"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar.fina.2"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.fina.3"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="alefMaksura-ar.fina.4"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar.fina.5"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.fina.6"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.fina.tooth"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="65">
+ <!-- PairValueCount=10 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="lam-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="noonghunna-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="180" XAdvance="180"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="325" XAdvance="325"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="110" XAdvance="110"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="66">
+ <!-- PairValueCount=10 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="lam-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="noonghunna-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="180" XAdvance="180"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="325" XAdvance="325"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="110" XAdvance="110"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="67">
+ <!-- PairValueCount=35 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alef-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alef-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alef-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="hah-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="hah-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="hah-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="hah-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="hah-ar.4"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="hah-ar.5"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="hah-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="hah-ar.init.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="ain-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="ain-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="13">
+ <SecondGlyph value="ain-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="14">
+ <SecondGlyph value="ain-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="15">
+ <SecondGlyph value="ain-ar.init"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="16">
+ <SecondGlyph value="ain-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="17">
+ <SecondGlyph value="fehDotless-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="18">
+ <SecondGlyph value="fehDotless-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="19">
+ <SecondGlyph value="fehDotless-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="20">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="-80" XAdvance="-80"/>
+ </PairValueRecord>
+ <PairValueRecord index="21">
+ <SecondGlyph value="meem-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="22">
+ <SecondGlyph value="meem-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="23">
+ <SecondGlyph value="meem-ar.2"/>
+ <Value1 XPlacement="-10" XAdvance="-10"/>
+ </PairValueRecord>
+ <PairValueRecord index="24">
+ <SecondGlyph value="meem-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="25">
+ <SecondGlyph value="heh-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="26">
+ <SecondGlyph value="heh-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="27">
+ <SecondGlyph value="heh-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="28">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="29">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="30">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="31">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="32">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="33">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="34">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="68">
+ <!-- PairValueCount=35 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alef-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alef-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alef-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="hah-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="hah-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="hah-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="hah-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="hah-ar.4"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="hah-ar.5"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="hah-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="hah-ar.init.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="ain-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="ain-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="13">
+ <SecondGlyph value="ain-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="14">
+ <SecondGlyph value="ain-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="15">
+ <SecondGlyph value="ain-ar.init"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="16">
+ <SecondGlyph value="ain-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="17">
+ <SecondGlyph value="fehDotless-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="18">
+ <SecondGlyph value="fehDotless-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="19">
+ <SecondGlyph value="fehDotless-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="20">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="-80" XAdvance="-80"/>
+ </PairValueRecord>
+ <PairValueRecord index="21">
+ <SecondGlyph value="meem-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="22">
+ <SecondGlyph value="meem-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="23">
+ <SecondGlyph value="meem-ar.2"/>
+ <Value1 XPlacement="-10" XAdvance="-10"/>
+ </PairValueRecord>
+ <PairValueRecord index="24">
+ <SecondGlyph value="meem-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="25">
+ <SecondGlyph value="heh-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="26">
+ <SecondGlyph value="heh-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="27">
+ <SecondGlyph value="heh-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="28">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="29">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="30">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="31">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="32">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="33">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="34">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="69">
+ <!-- PairValueCount=35 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alef-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alef-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alef-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="hah-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="hah-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="hah-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="hah-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="hah-ar.4"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="hah-ar.5"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="hah-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="hah-ar.init.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="ain-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="ain-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="13">
+ <SecondGlyph value="ain-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="14">
+ <SecondGlyph value="ain-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="15">
+ <SecondGlyph value="ain-ar.init"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="16">
+ <SecondGlyph value="ain-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="17">
+ <SecondGlyph value="fehDotless-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="18">
+ <SecondGlyph value="fehDotless-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="19">
+ <SecondGlyph value="fehDotless-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="20">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="-80" XAdvance="-80"/>
+ </PairValueRecord>
+ <PairValueRecord index="21">
+ <SecondGlyph value="meem-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="22">
+ <SecondGlyph value="meem-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="23">
+ <SecondGlyph value="meem-ar.2"/>
+ <Value1 XPlacement="-10" XAdvance="-10"/>
+ </PairValueRecord>
+ <PairValueRecord index="24">
+ <SecondGlyph value="meem-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="25">
+ <SecondGlyph value="heh-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="26">
+ <SecondGlyph value="heh-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="27">
+ <SecondGlyph value="heh-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="28">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="29">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="30">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="31">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="32">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="33">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="34">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="70">
+ <!-- PairValueCount=35 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alef-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alef-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alef-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="hah-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="hah-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="hah-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="hah-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="hah-ar.4"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="hah-ar.5"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="hah-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="hah-ar.init.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="ain-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="ain-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="13">
+ <SecondGlyph value="ain-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="14">
+ <SecondGlyph value="ain-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="15">
+ <SecondGlyph value="ain-ar.init"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="16">
+ <SecondGlyph value="ain-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="17">
+ <SecondGlyph value="fehDotless-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="18">
+ <SecondGlyph value="fehDotless-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="19">
+ <SecondGlyph value="fehDotless-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="20">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="-80" XAdvance="-80"/>
+ </PairValueRecord>
+ <PairValueRecord index="21">
+ <SecondGlyph value="meem-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="22">
+ <SecondGlyph value="meem-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="23">
+ <SecondGlyph value="meem-ar.2"/>
+ <Value1 XPlacement="-10" XAdvance="-10"/>
+ </PairValueRecord>
+ <PairValueRecord index="24">
+ <SecondGlyph value="meem-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="25">
+ <SecondGlyph value="heh-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="26">
+ <SecondGlyph value="heh-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="27">
+ <SecondGlyph value="heh-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="28">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="29">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="30">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="31">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="32">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="33">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="34">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="71">
+ <!-- PairValueCount=35 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alef-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alef-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alef-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="hah-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="hah-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="hah-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="hah-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="hah-ar.4"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="hah-ar.5"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="hah-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="hah-ar.init.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="ain-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="ain-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="13">
+ <SecondGlyph value="ain-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="14">
+ <SecondGlyph value="ain-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="15">
+ <SecondGlyph value="ain-ar.init"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="16">
+ <SecondGlyph value="ain-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="17">
+ <SecondGlyph value="fehDotless-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="18">
+ <SecondGlyph value="fehDotless-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="19">
+ <SecondGlyph value="fehDotless-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="20">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="-80" XAdvance="-80"/>
+ </PairValueRecord>
+ <PairValueRecord index="21">
+ <SecondGlyph value="meem-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="22">
+ <SecondGlyph value="meem-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="23">
+ <SecondGlyph value="meem-ar.2"/>
+ <Value1 XPlacement="-10" XAdvance="-10"/>
+ </PairValueRecord>
+ <PairValueRecord index="24">
+ <SecondGlyph value="meem-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="25">
+ <SecondGlyph value="heh-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="26">
+ <SecondGlyph value="heh-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="27">
+ <SecondGlyph value="heh-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="28">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="29">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="30">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="31">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="32">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="33">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="34">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="72">
+ <!-- PairValueCount=35 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alef-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alef-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alef-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="hah-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="hah-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="hah-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="hah-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="hah-ar.4"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="hah-ar.5"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="hah-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="hah-ar.init.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="ain-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="ain-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="13">
+ <SecondGlyph value="ain-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="14">
+ <SecondGlyph value="ain-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="15">
+ <SecondGlyph value="ain-ar.init"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="16">
+ <SecondGlyph value="ain-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="17">
+ <SecondGlyph value="fehDotless-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="18">
+ <SecondGlyph value="fehDotless-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="19">
+ <SecondGlyph value="fehDotless-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="20">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="-80" XAdvance="-80"/>
+ </PairValueRecord>
+ <PairValueRecord index="21">
+ <SecondGlyph value="meem-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="22">
+ <SecondGlyph value="meem-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="23">
+ <SecondGlyph value="meem-ar.2"/>
+ <Value1 XPlacement="-10" XAdvance="-10"/>
+ </PairValueRecord>
+ <PairValueRecord index="24">
+ <SecondGlyph value="meem-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="25">
+ <SecondGlyph value="heh-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="26">
+ <SecondGlyph value="heh-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="27">
+ <SecondGlyph value="heh-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="28">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="29">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="30">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="31">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="32">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="33">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="34">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="73">
+ <!-- PairValueCount=3 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="qafDotless-ar.fina"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="meem-ar.fina.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="meem-ar.medi.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="74">
+ <!-- PairValueCount=10 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="lam-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="noonghunna-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="180" XAdvance="180"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="325" XAdvance="325"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="110" XAdvance="110"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="75">
+ <!-- PairValueCount=10 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="lam-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="noonghunna-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="180" XAdvance="180"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="325" XAdvance="325"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="110" XAdvance="110"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="480" XAdvance="480"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="76">
+ <!-- PairValueCount=2 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="hah-ar.fina"/>
+ <Value1 XPlacement="60" XAdvance="60"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="hah-ar.medi"/>
+ <Value1 XPlacement="60" XAdvance="60"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="77">
+ <!-- PairValueCount=2 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="hah-ar.fina"/>
+ <Value1 XPlacement="60" XAdvance="60"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="hah-ar.medi"/>
+ <Value1 XPlacement="60" XAdvance="60"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="78">
+ <!-- PairValueCount=2 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="hah-ar.fina"/>
+ <Value1 XPlacement="60" XAdvance="60"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="hah-ar.medi"/>
+ <Value1 XPlacement="60" XAdvance="60"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="79">
+ <!-- PairValueCount=2 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="hah-ar.fina"/>
+ <Value1 XPlacement="60" XAdvance="60"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="hah-ar.medi"/>
+ <Value1 XPlacement="60" XAdvance="60"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="80">
+ <!-- PairValueCount=18 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="reh-ar"/>
+ <Value1 XPlacement="70" XAdvance="70"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="reh-ar.1"/>
+ <Value1 XPlacement="70" XAdvance="70"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="lam-ar"/>
+ <Value1 XPlacement="40" XAdvance="40"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="noonghunna-ar"/>
+ <Value1 XPlacement="40" XAdvance="40"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="waw-ar"/>
+ <Value1 XPlacement="40" XAdvance="40"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="waw-ar.1"/>
+ <Value1 XPlacement="40" XAdvance="40"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="40" XAdvance="40"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="40" XAdvance="40"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="385" XAdvance="385"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="170" XAdvance="170"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ <PairValueRecord index="13">
+ <SecondGlyph value="lam_alef-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="14">
+ <SecondGlyph value="lam_alef-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="15">
+ <SecondGlyph value="lam_alef-ar.3"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="16">
+ <SecondGlyph value="lam_alef-ar.4"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="17">
+ <SecondGlyph value="lam_alef-ar.5"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="81">
+ <!-- PairValueCount=18 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="reh-ar"/>
+ <Value1 XPlacement="70" XAdvance="70"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="reh-ar.1"/>
+ <Value1 XPlacement="70" XAdvance="70"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="lam-ar"/>
+ <Value1 XPlacement="40" XAdvance="40"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="noonghunna-ar"/>
+ <Value1 XPlacement="40" XAdvance="40"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="waw-ar"/>
+ <Value1 XPlacement="40" XAdvance="40"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="waw-ar.1"/>
+ <Value1 XPlacement="40" XAdvance="40"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="40" XAdvance="40"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="40" XAdvance="40"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="385" XAdvance="385"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="170" XAdvance="170"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ <PairValueRecord index="13">
+ <SecondGlyph value="lam_alef-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="14">
+ <SecondGlyph value="lam_alef-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="15">
+ <SecondGlyph value="lam_alef-ar.3"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="16">
+ <SecondGlyph value="lam_alef-ar.4"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="17">
+ <SecondGlyph value="lam_alef-ar.5"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="82">
+ <!-- PairValueCount=35 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alef-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alef-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alef-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="hah-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="hah-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="hah-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="hah-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="hah-ar.4"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="hah-ar.5"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="hah-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="hah-ar.init.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="ain-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="ain-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="13">
+ <SecondGlyph value="ain-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="14">
+ <SecondGlyph value="ain-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="15">
+ <SecondGlyph value="ain-ar.init"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="16">
+ <SecondGlyph value="ain-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="17">
+ <SecondGlyph value="fehDotless-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="18">
+ <SecondGlyph value="fehDotless-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="19">
+ <SecondGlyph value="fehDotless-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="20">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="-80" XAdvance="-80"/>
+ </PairValueRecord>
+ <PairValueRecord index="21">
+ <SecondGlyph value="meem-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="22">
+ <SecondGlyph value="meem-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="23">
+ <SecondGlyph value="meem-ar.2"/>
+ <Value1 XPlacement="-10" XAdvance="-10"/>
+ </PairValueRecord>
+ <PairValueRecord index="24">
+ <SecondGlyph value="meem-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="25">
+ <SecondGlyph value="heh-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="26">
+ <SecondGlyph value="heh-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="27">
+ <SecondGlyph value="heh-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="28">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="29">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="30">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="31">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="32">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="33">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="34">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="83">
+ <!-- PairValueCount=35 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alef-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alef-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alef-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="hah-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="hah-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="hah-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="hah-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="hah-ar.4"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="hah-ar.5"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="hah-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="hah-ar.init.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="ain-ar"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="ain-ar.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="13">
+ <SecondGlyph value="ain-ar.2"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="14">
+ <SecondGlyph value="ain-ar.3"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="15">
+ <SecondGlyph value="ain-ar.init"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="16">
+ <SecondGlyph value="ain-ar.init.1"/>
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </PairValueRecord>
+ <PairValueRecord index="17">
+ <SecondGlyph value="fehDotless-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="18">
+ <SecondGlyph value="fehDotless-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="19">
+ <SecondGlyph value="fehDotless-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="20">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="-80" XAdvance="-80"/>
+ </PairValueRecord>
+ <PairValueRecord index="21">
+ <SecondGlyph value="meem-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="22">
+ <SecondGlyph value="meem-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="23">
+ <SecondGlyph value="meem-ar.2"/>
+ <Value1 XPlacement="-10" XAdvance="-10"/>
+ </PairValueRecord>
+ <PairValueRecord index="24">
+ <SecondGlyph value="meem-ar.init"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="25">
+ <SecondGlyph value="heh-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="26">
+ <SecondGlyph value="heh-ar.1"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="27">
+ <SecondGlyph value="heh-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="28">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="29">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="30">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="31">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="32">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="33">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ <PairValueRecord index="34">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="-30" XAdvance="-30"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="84">
+ <!-- PairValueCount=18 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="reh-ar"/>
+ <Value1 XPlacement="70" XAdvance="70"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="reh-ar.1"/>
+ <Value1 XPlacement="70" XAdvance="70"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="lam-ar"/>
+ <Value1 XPlacement="40" XAdvance="40"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="noonghunna-ar"/>
+ <Value1 XPlacement="40" XAdvance="40"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="waw-ar"/>
+ <Value1 XPlacement="40" XAdvance="40"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="waw-ar.1"/>
+ <Value1 XPlacement="40" XAdvance="40"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="40" XAdvance="40"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="40" XAdvance="40"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="385" XAdvance="385"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="170" XAdvance="170"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ <PairValueRecord index="13">
+ <SecondGlyph value="lam_alef-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="14">
+ <SecondGlyph value="lam_alef-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="15">
+ <SecondGlyph value="lam_alef-ar.3"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="16">
+ <SecondGlyph value="lam_alef-ar.4"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="17">
+ <SecondGlyph value="lam_alef-ar.5"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="85">
+ <!-- PairValueCount=18 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="reh-ar"/>
+ <Value1 XPlacement="70" XAdvance="70"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="reh-ar.1"/>
+ <Value1 XPlacement="70" XAdvance="70"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="lam-ar"/>
+ <Value1 XPlacement="40" XAdvance="40"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="noonghunna-ar"/>
+ <Value1 XPlacement="40" XAdvance="40"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="waw-ar"/>
+ <Value1 XPlacement="40" XAdvance="40"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="waw-ar.1"/>
+ <Value1 XPlacement="40" XAdvance="40"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="alefMaksura-ar"/>
+ <Value1 XPlacement="40" XAdvance="40"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="alefMaksura-ar.1"/>
+ <Value1 XPlacement="40" XAdvance="40"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="385" XAdvance="385"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="170" XAdvance="170"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ <PairValueRecord index="13">
+ <SecondGlyph value="lam_alef-ar"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="14">
+ <SecondGlyph value="lam_alef-ar.2"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="15">
+ <SecondGlyph value="lam_alef-ar.3"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="16">
+ <SecondGlyph value="lam_alef-ar.4"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ <PairValueRecord index="17">
+ <SecondGlyph value="lam_alef-ar.5"/>
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="86">
+ <!-- PairValueCount=5 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="385" XAdvance="385"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="170" XAdvance="170"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="87">
+ <!-- PairValueCount=5 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="385" XAdvance="385"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="170" XAdvance="170"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="88">
+ <!-- PairValueCount=5 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="385" XAdvance="385"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="170" XAdvance="170"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="89">
+ <!-- PairValueCount=5 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="385" XAdvance="385"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="170" XAdvance="170"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="90">
+ <!-- PairValueCount=5 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="385" XAdvance="385"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="170" XAdvance="170"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="91">
+ <!-- PairValueCount=5 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="385" XAdvance="385"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="170" XAdvance="170"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="92">
+ <!-- PairValueCount=5 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="385" XAdvance="385"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="170" XAdvance="170"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="93">
+ <!-- PairValueCount=5 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="385" XAdvance="385"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="170" XAdvance="170"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="94">
+ <!-- PairValueCount=5 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="385" XAdvance="385"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="170" XAdvance="170"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="95">
+ <!-- PairValueCount=5 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="385" XAdvance="385"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="170" XAdvance="170"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="96">
+ <!-- PairValueCount=5 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="385" XAdvance="385"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="170" XAdvance="170"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="97">
+ <!-- PairValueCount=5 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="385" XAdvance="385"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="170" XAdvance="170"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="98">
+ <!-- PairValueCount=5 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="385" XAdvance="385"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="170" XAdvance="170"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="99">
+ <!-- PairValueCount=5 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alefMaksura-ar.2"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alefMaksura-ar.3"/>
+ <Value1 XPlacement="385" XAdvance="385"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alefMaksura-ar.4"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="alefMaksura-ar.5"/>
+ <Value1 XPlacement="170" XAdvance="170"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="alefMaksura-ar.6"/>
+ <Value1 XPlacement="540" XAdvance="540"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="100">
+ <!-- PairValueCount=40 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alef-ar.1"/>
+ <Value1 XPlacement="160" XAdvance="160"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alef-ar.2"/>
+ <Value1 XPlacement="80" XAdvance="80"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alef-ar.3"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="seen-ar"/>
+ <Value1 XPlacement="60" XAdvance="60"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="seen-ar.1"/>
+ <Value1 XPlacement="90" XAdvance="90"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="seen-ar.2"/>
+ <Value1 XPlacement="120" XAdvance="120"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="seen-ar.4"/>
+ <Value1 XPlacement="30" XAdvance="30"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="seen-ar.5"/>
+ <Value1 XPlacement="60" XAdvance="60"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="seen-ar.init"/>
+ <Value1 XPlacement="60" XAdvance="60"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="seen-ar.init.1"/>
+ <Value1 XPlacement="90" XAdvance="90"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="seen-ar.init.2"/>
+ <Value1 XPlacement="120" XAdvance="120"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="seen-ar.init.4"/>
+ <Value1 XPlacement="30" XAdvance="30"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="seen-ar.init.5"/>
+ <Value1 XPlacement="60" XAdvance="60"/>
+ </PairValueRecord>
+ <PairValueRecord index="13">
+ <SecondGlyph value="fehDotless-ar"/>
+ <Value1 XPlacement="20" XAdvance="20"/>
+ </PairValueRecord>
+ <PairValueRecord index="14">
+ <SecondGlyph value="fehDotless-ar.1"/>
+ <Value1 XPlacement="30" XAdvance="30"/>
+ </PairValueRecord>
+ <PairValueRecord index="15">
+ <SecondGlyph value="fehDotless-ar.2"/>
+ <Value1 XPlacement="20" XAdvance="20"/>
+ </PairValueRecord>
+ <PairValueRecord index="16">
+ <SecondGlyph value="fehDotless-ar.3"/>
+ <Value1 XPlacement="30" XAdvance="30"/>
+ </PairValueRecord>
+ <PairValueRecord index="17">
+ <SecondGlyph value="fehDotless-ar.init"/>
+ <Value1 XPlacement="20" XAdvance="20"/>
+ </PairValueRecord>
+ <PairValueRecord index="18">
+ <SecondGlyph value="fehDotless-ar.init.1"/>
+ <Value1 XPlacement="30" XAdvance="30"/>
+ </PairValueRecord>
+ <PairValueRecord index="19">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="20">
+ <SecondGlyph value="lam-ar"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="21">
+ <SecondGlyph value="lam-ar.init"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="22">
+ <SecondGlyph value="lam-ar.init.lellah"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="23">
+ <SecondGlyph value="heh-ar.1"/>
+ <Value1 XPlacement="140" XAdvance="140"/>
+ </PairValueRecord>
+ <PairValueRecord index="24">
+ <SecondGlyph value="heh-ar.2"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="25">
+ <SecondGlyph value="heh-ar.init.1"/>
+ <Value1 XPlacement="30" XAdvance="30"/>
+ </PairValueRecord>
+ <PairValueRecord index="26">
+ <SecondGlyph value="heh-ar.init.2"/>
+ <Value1 XPlacement="60" XAdvance="60"/>
+ </PairValueRecord>
+ <PairValueRecord index="27">
+ <SecondGlyph value="heh-ar.init.3"/>
+ <Value1 XPlacement="110" XAdvance="110"/>
+ </PairValueRecord>
+ <PairValueRecord index="28">
+ <SecondGlyph value="heh-ar.init.4"/>
+ <Value1 XPlacement="40" XAdvance="40"/>
+ </PairValueRecord>
+ <PairValueRecord index="29">
+ <SecondGlyph value="heh-ar.init.5"/>
+ <Value1 XPlacement="90" XAdvance="90"/>
+ </PairValueRecord>
+ <PairValueRecord index="30">
+ <SecondGlyph value="heh-ar.init.6"/>
+ <Value1 XPlacement="50" XAdvance="50"/>
+ </PairValueRecord>
+ <PairValueRecord index="31">
+ <SecondGlyph value="heh-ar.init.7"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="32">
+ <SecondGlyph value="waw-ar.2"/>
+ <Value1 XPlacement="30" XAdvance="30"/>
+ </PairValueRecord>
+ <PairValueRecord index="33">
+ <SecondGlyph value="waw-ar.3"/>
+ <Value1 XPlacement="40" XAdvance="40"/>
+ </PairValueRecord>
+ <PairValueRecord index="34">
+ <SecondGlyph value="lam_alef-ar"/>
+ <Value1 XPlacement="220" XAdvance="220"/>
+ </PairValueRecord>
+ <PairValueRecord index="35">
+ <SecondGlyph value="lam_alef-ar.1"/>
+ <Value1 XPlacement="90" XAdvance="90"/>
+ </PairValueRecord>
+ <PairValueRecord index="36">
+ <SecondGlyph value="lam_alef-ar.2"/>
+ <Value1 XPlacement="200" XAdvance="200"/>
+ </PairValueRecord>
+ <PairValueRecord index="37">
+ <SecondGlyph value="lam_alef-ar.3"/>
+ <Value1 XPlacement="200" XAdvance="200"/>
+ </PairValueRecord>
+ <PairValueRecord index="38">
+ <SecondGlyph value="lam_alef-ar.4"/>
+ <Value1 XPlacement="160" XAdvance="160"/>
+ </PairValueRecord>
+ <PairValueRecord index="39">
+ <SecondGlyph value="lam_alef-ar.5"/>
+ <Value1 XPlacement="160" XAdvance="160"/>
+ </PairValueRecord>
+ </PairSet>
+ <PairSet index="101">
+ <!-- PairValueCount=40 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="alef-ar.1"/>
+ <Value1 XPlacement="160" XAdvance="160"/>
+ </PairValueRecord>
+ <PairValueRecord index="1">
+ <SecondGlyph value="alef-ar.2"/>
+ <Value1 XPlacement="80" XAdvance="80"/>
+ </PairValueRecord>
+ <PairValueRecord index="2">
+ <SecondGlyph value="alef-ar.3"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="3">
+ <SecondGlyph value="seen-ar"/>
+ <Value1 XPlacement="60" XAdvance="60"/>
+ </PairValueRecord>
+ <PairValueRecord index="4">
+ <SecondGlyph value="seen-ar.1"/>
+ <Value1 XPlacement="90" XAdvance="90"/>
+ </PairValueRecord>
+ <PairValueRecord index="5">
+ <SecondGlyph value="seen-ar.2"/>
+ <Value1 XPlacement="120" XAdvance="120"/>
+ </PairValueRecord>
+ <PairValueRecord index="6">
+ <SecondGlyph value="seen-ar.4"/>
+ <Value1 XPlacement="30" XAdvance="30"/>
+ </PairValueRecord>
+ <PairValueRecord index="7">
+ <SecondGlyph value="seen-ar.5"/>
+ <Value1 XPlacement="60" XAdvance="60"/>
+ </PairValueRecord>
+ <PairValueRecord index="8">
+ <SecondGlyph value="seen-ar.init"/>
+ <Value1 XPlacement="60" XAdvance="60"/>
+ </PairValueRecord>
+ <PairValueRecord index="9">
+ <SecondGlyph value="seen-ar.init.1"/>
+ <Value1 XPlacement="90" XAdvance="90"/>
+ </PairValueRecord>
+ <PairValueRecord index="10">
+ <SecondGlyph value="seen-ar.init.2"/>
+ <Value1 XPlacement="120" XAdvance="120"/>
+ </PairValueRecord>
+ <PairValueRecord index="11">
+ <SecondGlyph value="seen-ar.init.4"/>
+ <Value1 XPlacement="30" XAdvance="30"/>
+ </PairValueRecord>
+ <PairValueRecord index="12">
+ <SecondGlyph value="seen-ar.init.5"/>
+ <Value1 XPlacement="60" XAdvance="60"/>
+ </PairValueRecord>
+ <PairValueRecord index="13">
+ <SecondGlyph value="fehDotless-ar"/>
+ <Value1 XPlacement="20" XAdvance="20"/>
+ </PairValueRecord>
+ <PairValueRecord index="14">
+ <SecondGlyph value="fehDotless-ar.1"/>
+ <Value1 XPlacement="30" XAdvance="30"/>
+ </PairValueRecord>
+ <PairValueRecord index="15">
+ <SecondGlyph value="fehDotless-ar.2"/>
+ <Value1 XPlacement="20" XAdvance="20"/>
+ </PairValueRecord>
+ <PairValueRecord index="16">
+ <SecondGlyph value="fehDotless-ar.3"/>
+ <Value1 XPlacement="30" XAdvance="30"/>
+ </PairValueRecord>
+ <PairValueRecord index="17">
+ <SecondGlyph value="fehDotless-ar.init"/>
+ <Value1 XPlacement="20" XAdvance="20"/>
+ </PairValueRecord>
+ <PairValueRecord index="18">
+ <SecondGlyph value="fehDotless-ar.init.1"/>
+ <Value1 XPlacement="30" XAdvance="30"/>
+ </PairValueRecord>
+ <PairValueRecord index="19">
+ <SecondGlyph value="qafDotless-ar"/>
+ <Value1 XPlacement="-50" XAdvance="-50"/>
+ </PairValueRecord>
+ <PairValueRecord index="20">
+ <SecondGlyph value="lam-ar"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="21">
+ <SecondGlyph value="lam-ar.init"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="22">
+ <SecondGlyph value="lam-ar.init.lellah"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="23">
+ <SecondGlyph value="heh-ar.1"/>
+ <Value1 XPlacement="140" XAdvance="140"/>
+ </PairValueRecord>
+ <PairValueRecord index="24">
+ <SecondGlyph value="heh-ar.2"/>
+ <Value1 XPlacement="240" XAdvance="240"/>
+ </PairValueRecord>
+ <PairValueRecord index="25">
+ <SecondGlyph value="heh-ar.init.1"/>
+ <Value1 XPlacement="30" XAdvance="30"/>
+ </PairValueRecord>
+ <PairValueRecord index="26">
+ <SecondGlyph value="heh-ar.init.2"/>
+ <Value1 XPlacement="60" XAdvance="60"/>
+ </PairValueRecord>
+ <PairValueRecord index="27">
+ <SecondGlyph value="heh-ar.init.3"/>
+ <Value1 XPlacement="110" XAdvance="110"/>
+ </PairValueRecord>
+ <PairValueRecord index="28">
+ <SecondGlyph value="heh-ar.init.4"/>
+ <Value1 XPlacement="40" XAdvance="40"/>
+ </PairValueRecord>
+ <PairValueRecord index="29">
+ <SecondGlyph value="heh-ar.init.5"/>
+ <Value1 XPlacement="90" XAdvance="90"/>
+ </PairValueRecord>
+ <PairValueRecord index="30">
+ <SecondGlyph value="heh-ar.init.6"/>
+ <Value1 XPlacement="50" XAdvance="50"/>
+ </PairValueRecord>
+ <PairValueRecord index="31">
+ <SecondGlyph value="heh-ar.init.7"/>
+ <Value1 XPlacement="100" XAdvance="100"/>
+ </PairValueRecord>
+ <PairValueRecord index="32">
+ <SecondGlyph value="waw-ar.2"/>
+ <Value1 XPlacement="30" XAdvance="30"/>
+ </PairValueRecord>
+ <PairValueRecord index="33">
+ <SecondGlyph value="waw-ar.3"/>
+ <Value1 XPlacement="40" XAdvance="40"/>
+ </PairValueRecord>
+ <PairValueRecord index="34">
+ <SecondGlyph value="lam_alef-ar"/>
+ <Value1 XPlacement="220" XAdvance="220"/>
+ </PairValueRecord>
+ <PairValueRecord index="35">
+ <SecondGlyph value="lam_alef-ar.1"/>
+ <Value1 XPlacement="90" XAdvance="90"/>
+ </PairValueRecord>
+ <PairValueRecord index="36">
+ <SecondGlyph value="lam_alef-ar.2"/>
+ <Value1 XPlacement="200" XAdvance="200"/>
+ </PairValueRecord>
+ <PairValueRecord index="37">
+ <SecondGlyph value="lam_alef-ar.3"/>
+ <Value1 XPlacement="200" XAdvance="200"/>
+ </PairValueRecord>
+ <PairValueRecord index="38">
+ <SecondGlyph value="lam_alef-ar.4"/>
+ <Value1 XPlacement="160" XAdvance="160"/>
+ </PairValueRecord>
+ <PairValueRecord index="39">
+ <SecondGlyph value="lam_alef-ar.5"/>
+ <Value1 XPlacement="160" XAdvance="160"/>
+ </PairValueRecord>
+ </PairSet>
+ </PairPos>
+ <PairPos index="2" Format="2">
+ <Coverage>
+ <Glyph value="behDotless-ar"/>
+ <Glyph value="behDotless-ar.fina"/>
+ <Glyph value="behDotless-ar.fina.1"/>
+ <Glyph value="behDotless-ar.medi.1"/>
+ <Glyph value="hah-ar.medi.1"/>
+ <Glyph value="hah-ar.medi.2"/>
+ <Glyph value="hah-ar.medi.3"/>
+ <Glyph value="hah-ar.init"/>
+ <Glyph value="dal-ar"/>
+ <Glyph value="dal-ar.fina"/>
+ <Glyph value="reh-ar.2"/>
+ <Glyph value="reh-ar.3"/>
+ <Glyph value="kaf-ar"/>
+ <Glyph value="kaf-ar.1"/>
+ <Glyph value="kaf-ar.2"/>
+ <Glyph value="kaf-ar.fina"/>
+ <Glyph value="kaf-ar.fina.1"/>
+ <Glyph value="kaf-ar.fina.2"/>
+ <Glyph value="meem-ar"/>
+ <Glyph value="meem-ar.1"/>
+ <Glyph value="meem-ar.2"/>
+ <Glyph value="meem-ar.fina"/>
+ <Glyph value="meem-ar.fina.1"/>
+ <Glyph value="meem-ar.fina.2"/>
+ <Glyph value="meem-ar.medi"/>
+ <Glyph value="heh-ar.init"/>
+ <Glyph value="heh-ar.init.1"/>
+ <Glyph value="waw-ar.2"/>
+ <Glyph value="waw-ar.3"/>
+ </Coverage>
+ <ValueFormat1 value="5"/>
+ <ValueFormat2 value="0"/>
+ <ClassDef1>
+ <ClassDef glyph="behDotless-ar.medi.1" class="3"/>
+ <ClassDef glyph="hah-ar.init" class="1"/>
+ <ClassDef glyph="hah-ar.medi.1" class="1"/>
+ <ClassDef glyph="hah-ar.medi.2" class="1"/>
+ <ClassDef glyph="hah-ar.medi.3" class="1"/>
+ <ClassDef glyph="heh-ar.init" class="2"/>
+ <ClassDef glyph="heh-ar.init.1" class="2"/>
+ <ClassDef glyph="meem-ar.medi" class="1"/>
+ </ClassDef1>
+ <ClassDef2>
+ <ClassDef glyph="alefMaksura-ar.fina" class="2"/>
+ <ClassDef glyph="alefMaksura-ar.fina.0" class="2"/>
+ <ClassDef glyph="alefMaksura-ar.fina.1" class="2"/>
+ <ClassDef glyph="alefMaksura-ar.fina.2" class="2"/>
+ <ClassDef glyph="alefMaksura-ar.fina.3" class="2"/>
+ <ClassDef glyph="alefMaksura-ar.fina.4" class="2"/>
+ <ClassDef glyph="alefMaksura-ar.fina.5" class="2"/>
+ <ClassDef glyph="alefMaksura-ar.fina.6" class="2"/>
+ <ClassDef glyph="alefMaksura-ar.fina.tooth" class="2"/>
+ <ClassDef glyph="behDotless-ar.medi.1" class="5"/>
+ <ClassDef glyph="dal-ar.fina" class="1"/>
+ <ClassDef glyph="hah-ar.fina" class="1"/>
+ <ClassDef glyph="hah-ar.init" class="3"/>
+ <ClassDef glyph="hah-ar.medi" class="1"/>
+ <ClassDef glyph="hah-ar.medi.1" class="3"/>
+ <ClassDef glyph="hah-ar.medi.2" class="3"/>
+ <ClassDef glyph="hah-ar.medi.3" class="3"/>
+ <ClassDef glyph="kaf-ar.fina" class="1"/>
+ <ClassDef glyph="kaf-ar.fina.1" class="1"/>
+ <ClassDef glyph="kaf-ar.fina.2" class="1"/>
+ <ClassDef glyph="kaf-ar.medi" class="1"/>
+ <ClassDef glyph="kaf-ar.medi.1" class="1"/>
+ <ClassDef glyph="kaf-ar.medi.2" class="1"/>
+ <ClassDef glyph="meem-ar.fina" class="1"/>
+ <ClassDef glyph="meem-ar.fina.1" class="1"/>
+ <ClassDef glyph="meem-ar.fina.2" class="1"/>
+ <ClassDef glyph="meem-ar.medi" class="3"/>
+ <ClassDef glyph="meem-ar.medi.1" class="1"/>
+ <ClassDef glyph="noonghunna-ar.fina" class="1"/>
+ <ClassDef glyph="qafDotless-ar.fina" class="1"/>
+ <ClassDef glyph="reh-ar.fina" class="4"/>
+ <ClassDef glyph="reh-ar.fina.1" class="4"/>
+ <ClassDef glyph="sad-ar.fina" class="1"/>
+ <ClassDef glyph="sad-ar.fina.1" class="1"/>
+ <ClassDef glyph="sad-ar.medi" class="1"/>
+ <ClassDef glyph="seen-ar.medi.6" class="5"/>
+ <ClassDef glyph="tah-ar.fina" class="1"/>
+ <ClassDef glyph="tah-ar.medi" class="1"/>
+ <ClassDef glyph="tah-ar.medi.short" class="1"/>
+ <ClassDef glyph="tah-ar.medi.short2" class="1"/>
+ <ClassDef glyph="waw-ar.fina" class="1"/>
+ <ClassDef glyph="waw-ar.fina.1" class="1"/>
+ </ClassDef2>
+ <!-- Class1Count=4 -->
+ <!-- Class2Count=6 -->
+ <Class1Record index="0">
+ <Class2Record index="0">
+ <Value1 XPlacement="0" XAdvance="0"/>
+ </Class2Record>
+ <Class2Record index="1">
+ <Value1 XPlacement="0" XAdvance="0"/>
+ </Class2Record>
+ <Class2Record index="2">
+ <Value1 XPlacement="0" XAdvance="0"/>
+ </Class2Record>
+ <Class2Record index="3">
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </Class2Record>
+ <Class2Record index="4">
+ <Value1 XPlacement="0" XAdvance="0"/>
+ </Class2Record>
+ <Class2Record index="5">
+ <Value1 XPlacement="0" XAdvance="0"/>
+ </Class2Record>
+ </Class1Record>
+ <Class1Record index="1">
+ <Class2Record index="0">
+ <Value1 XPlacement="0" XAdvance="0"/>
+ </Class2Record>
+ <Class2Record index="1">
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </Class2Record>
+ <Class2Record index="2">
+ <Value1 XPlacement="-40" XAdvance="-40"/>
+ </Class2Record>
+ <Class2Record index="3">
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </Class2Record>
+ <Class2Record index="4">
+ <Value1 XPlacement="0" XAdvance="0"/>
+ </Class2Record>
+ <Class2Record index="5">
+ <Value1 XPlacement="-20" XAdvance="-20"/>
+ </Class2Record>
+ </Class1Record>
+ <Class1Record index="2">
+ <Class2Record index="0">
+ <Value1 XPlacement="0" XAdvance="0"/>
+ </Class2Record>
+ <Class2Record index="1">
+ <Value1 XPlacement="0" XAdvance="0"/>
+ </Class2Record>
+ <Class2Record index="2">
+ <Value1 XPlacement="0" XAdvance="0"/>
+ </Class2Record>
+ <Class2Record index="3">
+ <Value1 XPlacement="0" XAdvance="0"/>
+ </Class2Record>
+ <Class2Record index="4">
+ <Value1 XPlacement="40" XAdvance="40"/>
+ </Class2Record>
+ <Class2Record index="5">
+ <Value1 XPlacement="0" XAdvance="0"/>
+ </Class2Record>
+ </Class1Record>
+ <Class1Record index="3">
+ <Class2Record index="0">
+ <Value1 XPlacement="0" XAdvance="0"/>
+ </Class2Record>
+ <Class2Record index="1">
+ <Value1 XPlacement="-15" XAdvance="-15"/>
+ </Class2Record>
+ <Class2Record index="2">
+ <Value1 XPlacement="-10" XAdvance="-10"/>
+ </Class2Record>
+ <Class2Record index="3">
+ <Value1 XPlacement="-15" XAdvance="-15"/>
+ </Class2Record>
+ <Class2Record index="4">
+ <Value1 XPlacement="-10" XAdvance="-10"/>
+ </Class2Record>
+ <Class2Record index="5">
+ <Value1 XPlacement="0" XAdvance="0"/>
+ </Class2Record>
+ </Class1Record>
+ </PairPos>
+ </Lookup>
+ </LookupList>
+ </GPOS>
+
+ <GSUB>
+ <Version value="0x00010000"/>
+ <ScriptList>
+ <!-- ScriptCount=3 -->
+ <ScriptRecord index="0">
+ <ScriptTag value="DFLT"/>
+ <Script>
+ <DefaultLangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=14 -->
+ <FeatureIndex index="0" value="0"/>
+ <FeatureIndex index="1" value="1"/>
+ <FeatureIndex index="2" value="2"/>
+ <FeatureIndex index="3" value="3"/>
+ <FeatureIndex index="4" value="4"/>
+ <FeatureIndex index="5" value="5"/>
+ <FeatureIndex index="6" value="6"/>
+ <FeatureIndex index="7" value="8"/>
+ <FeatureIndex index="8" value="9"/>
+ <FeatureIndex index="9" value="10"/>
+ <FeatureIndex index="10" value="11"/>
+ <FeatureIndex index="11" value="12"/>
+ <FeatureIndex index="12" value="14"/>
+ <FeatureIndex index="13" value="15"/>
+ </DefaultLangSys>
+ <!-- LangSysCount=0 -->
+ </Script>
+ </ScriptRecord>
+ <ScriptRecord index="1">
+ <ScriptTag value="arab"/>
+ <Script>
+ <DefaultLangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=14 -->
+ <FeatureIndex index="0" value="0"/>
+ <FeatureIndex index="1" value="1"/>
+ <FeatureIndex index="2" value="2"/>
+ <FeatureIndex index="3" value="3"/>
+ <FeatureIndex index="4" value="4"/>
+ <FeatureIndex index="5" value="5"/>
+ <FeatureIndex index="6" value="6"/>
+ <FeatureIndex index="7" value="8"/>
+ <FeatureIndex index="8" value="9"/>
+ <FeatureIndex index="9" value="10"/>
+ <FeatureIndex index="10" value="11"/>
+ <FeatureIndex index="11" value="12"/>
+ <FeatureIndex index="12" value="14"/>
+ <FeatureIndex index="13" value="15"/>
+ </DefaultLangSys>
+ <!-- LangSysCount=0 -->
+ </Script>
+ </ScriptRecord>
+ <ScriptRecord index="2">
+ <ScriptTag value="latn"/>
+ <Script>
+ <DefaultLangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=2 -->
+ <FeatureIndex index="0" value="7"/>
+ <FeatureIndex index="1" value="13"/>
+ </DefaultLangSys>
+ <!-- LangSysCount=0 -->
+ </Script>
+ </ScriptRecord>
+ </ScriptList>
+ <FeatureList>
+ <!-- FeatureCount=16 -->
+ <FeatureRecord index="0">
+ <FeatureTag value="calt"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="11"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="1">
+ <FeatureTag value="ccmp"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="5"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="2">
+ <FeatureTag value="dist"/>
+ <Feature>
+ <!-- LookupCount=7 -->
+ <LookupListIndex index="0" value="26"/>
+ <LookupListIndex index="1" value="28"/>
+ <LookupListIndex index="2" value="29"/>
+ <LookupListIndex index="3" value="31"/>
+ <LookupListIndex index="4" value="32"/>
+ <LookupListIndex index="5" value="33"/>
+ <LookupListIndex index="6" value="34"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="3">
+ <FeatureTag value="dnom"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="22"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="4">
+ <FeatureTag value="fina"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="10"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="5">
+ <FeatureTag value="init"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="8"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="6">
+ <FeatureTag value="isol"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="7"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="7">
+ <FeatureTag value="locl"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="6"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="8">
+ <FeatureTag value="medi"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="9"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="9">
+ <FeatureTag value="numr"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="21"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="10">
+ <FeatureTag value="onum"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="23"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="11">
+ <FeatureTag value="rclt"/>
+ <Feature>
+ <!-- LookupCount=3 -->
+ <LookupListIndex index="0" value="12"/>
+ <LookupListIndex index="1" value="16"/>
+ <LookupListIndex index="2" value="17"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="12">
+ <FeatureTag value="salt"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="24"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="13">
+ <FeatureTag value="salt"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="25"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="14">
+ <FeatureTag value="ss01"/>
+ <Feature>
+ <FeatureParamsStylisticSet>
+ <Version value="0"/>
+ <UINameID value="256"/> <!-- Dot-less Letter Forms -->
+ </FeatureParamsStylisticSet>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="19"/>
+ </Feature>
+ </FeatureRecord>
+ <FeatureRecord index="15">
+ <FeatureTag value="ss02"/>
+ <Feature>
+ <FeatureParamsStylisticSet>
+ <Version value="0"/>
+ <UINameID value="257"/> <!-- Rounded Dots -->
+ </FeatureParamsStylisticSet>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="20"/>
+ </Feature>
+ </FeatureRecord>
+ </FeatureList>
+ <LookupList>
+ <!-- LookupCount=37 -->
+ <Lookup index="0">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="behDotless-ar.init" out="behDotless-ar.init.hah"/>
+ <Substitution in="hah-ar.fina" out="hah-ar.fina.1"/>
+ <Substitution in="hah-ar.medi" out="hah-ar.medi.1"/>
+ <Substitution in="lam-ar.init" out="lam-ar.init.hah"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="1">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="behDotless-ar.init.hah" out="behDotless-ar.init"/>
+ <Substitution in="hah-ar.fina.1" out="hah-ar.fina"/>
+ <Substitution in="hah-ar.medi.1" out="hah-ar.medi"/>
+ <Substitution in="lam-ar.init.hah" out="lam-ar.init"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="2">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="lam-ar.init" out="lam-ar.init.lellah"/>
+ <Substitution in="lam-ar.medi" out="lam-ar.medi.lellah"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="3">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="alefMaksura-ar.fina" out="alefMaksura-ar.fina.tooth"/>
+ <Substitution in="behDotless-ar.medi" out="behDotless-ar.medi.yeh"/>
+ <Substitution in="lam-ar.medi" out="lam-ar.medi.yeh"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="4">
+ <LookupType value="2"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <MultipleSubst index="0">
+ <Substitution in="behDotless-ar.medi" out="behDotless-ar.medi,kashida-ar"/>
+ <Substitution in="behDotless-ar.medi.1" out="behDotless-ar.medi.1,kashida-ar"/>
+ <Substitution in="behDotless-ar.medi.high" out="behDotless-ar.medi.high,kashida-ar"/>
+ <Substitution in="behDotless-ar.medi.high.1" out="behDotless-ar.medi.high.1,kashida-ar"/>
+ <Substitution in="hah-ar.medi" out="hah-ar.medi,kashida-ar"/>
+ </MultipleSubst>
+ </Lookup>
+ <Lookup index="5">
+ <LookupType value="2"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <MultipleSubst index="0">
+ <Substitution in="alefHamzaabove-ar" out="alef-ar,hamzaabove-ar"/>
+ <Substitution in="alefHamzabelow-ar" out="alef-ar,hamzabelow-ar"/>
+ <Substitution in="alefMadda-ar" out="alef-ar"/>
+ <Substitution in="alefWasla-ar" out="alef-ar"/>
+ <Substitution in="beh-ar" out="behDotless-ar,dotbelow-ar"/>
+ <Substitution in="dad-ar" out="sad-ar,dotabove-ar"/>
+ <Substitution in="ddal-ar" out="dal-ar,tahabove-ar"/>
+ <Substitution in="feh-ar" out="fehDotless-ar,dotabove-ar"/>
+ <Substitution in="fehDotmovedbelow-ar" out="fehDotless-ar,dotbelow-ar"/>
+ <Substitution in="gaf-ar" out="kaf-ar"/>
+ <Substitution in="ghain-ar" out="ain-ar,dotabove-ar"/>
+ <Substitution in="hehgoal-ar" out="heh-ar"/>
+ <Substitution in="hehgoalHamzaabove-ar" out="heh-ar,hamzaabove-ar"/>
+ <Substitution in="jeem-ar" out="hah-ar,dotbelow-ar"/>
+ <Substitution in="jeh-ar" out="reh-ar,threedotsupabove-ar"/>
+ <Substitution in="keheh-ar" out="kaf-ar"/>
+ <Substitution in="khah-ar" out="hah-ar,dotabove-ar"/>
+ <Substitution in="noon-ar" out="noonghunna-ar,dotabove-ar"/>
+ <Substitution in="peh-ar" out="behDotless-ar,threedotsdownbelow-ar"/>
+ <Substitution in="qaf-ar" out="qafDotless-ar,twodotshorizontalabove-ar"/>
+ <Substitution in="qafDotabove-ar" out="qafDotless-ar,dotabove-ar"/>
+ <Substitution in="rreh-ar" out="reh-ar,tahabove-ar"/>
+ <Substitution in="sheen-ar" out="seen-ar,threedotsupabove-ar"/>
+ <Substitution in="tcheh-ar" out="hah-ar,threedotsdownbelow-ar"/>
+ <Substitution in="teh-ar" out="behDotless-ar,twodotshorizontalabove-ar"/>
+ <Substitution in="tehMarbutagoal-ar" out="heh-ar,twodotshorizontalabove-ar"/>
+ <Substitution in="thal-ar" out="dal-ar,dotabove-ar"/>
+ <Substitution in="theh-ar" out="behDotless-ar,threedotsupabove-ar"/>
+ <Substitution in="tteh-ar" out="behDotless-ar,tahabove-ar"/>
+ <Substitution in="veh-ar" out="fehDotless-ar,threedotsupabove-ar"/>
+ <Substitution in="wawHamzaabove-ar" out="waw-ar,hamzaabove-ar"/>
+ <Substitution in="yehHamzaabove-ar" out="alefMaksura-ar,hamzaabove-ar"/>
+ <Substitution in="zah-ar" out="tah-ar,dotabove-ar"/>
+ <Substitution in="zain-ar" out="reh-ar,dotabove-ar"/>
+ </MultipleSubst>
+ </Lookup>
+ <Lookup index="6">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="space" out="space.latn"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="7">
+ <LookupType value="2"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <MultipleSubst index="0">
+ <Substitution in="fehAfrican-ar" out="fehDotless-ar"/>
+ <Substitution in="noonAfrican-ar" out="noonghunna-ar"/>
+ <Substitution in="qafAfrican-ar" out="qafDotless-ar"/>
+ <Substitution in="tehMarbuta-ar" out="heh-ar,twodotshorizontalabove-ar"/>
+ <Substitution in="yeh-ar" out="alefMaksura-ar"/>
+ <Substitution in="yeh-farsi" out="alefMaksura-ar"/>
+ </MultipleSubst>
+ </Lookup>
+ <Lookup index="8">
+ <LookupType value="2"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <MultipleSubst index="0">
+ <Substitution in="ain-ar" out="ain-ar.init"/>
+ <Substitution in="alefMaksura-ar" out="behDotless-ar.init"/>
+ <Substitution in="behDotless-ar" out="behDotless-ar.init"/>
+ <Substitution in="fehAfrican-ar" out="fehDotless-ar.init,dotbelow-ar"/>
+ <Substitution in="fehDotless-ar" out="fehDotless-ar.init"/>
+ <Substitution in="hah-ar" out="hah-ar.init"/>
+ <Substitution in="heh-ar" out="heh-ar.init"/>
+ <Substitution in="kaf-ar" out="kaf-ar.init"/>
+ <Substitution in="lam-ar" out="lam-ar.init"/>
+ <Substitution in="meem-ar" out="meem-ar.init"/>
+ <Substitution in="noonAfrican-ar" out="behDotless-ar.init,dotabove-ar"/>
+ <Substitution in="noonghunna-ar" out="behDotless-ar.init"/>
+ <Substitution in="qafAfrican-ar" out="fehDotless-ar.init,dotabove-ar"/>
+ <Substitution in="qafDotless-ar" out="fehDotless-ar.init"/>
+ <Substitution in="sad-ar" out="sad-ar.init"/>
+ <Substitution in="seen-ar" out="seen-ar.init"/>
+ <Substitution in="tah-ar" out="tah-ar.init"/>
+ <Substitution in="yeh-ar" out="behDotless-ar.init,twodotshorizontalbelow-ar"/>
+ <Substitution in="yeh-farsi" out="behDotless-ar.init,twodotshorizontalbelow-ar"/>
+ </MultipleSubst>
+ </Lookup>
+ <Lookup index="9">
+ <LookupType value="2"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <MultipleSubst index="0">
+ <Substitution in="ain-ar" out="ain-ar.medi"/>
+ <Substitution in="alefMaksura-ar" out="behDotless-ar.medi"/>
+ <Substitution in="behDotless-ar" out="behDotless-ar.medi"/>
+ <Substitution in="fehAfrican-ar" out="fehDotless-ar.medi,dotbelow-ar"/>
+ <Substitution in="fehDotless-ar" out="fehDotless-ar.medi"/>
+ <Substitution in="hah-ar" out="hah-ar.medi"/>
+ <Substitution in="heh-ar" out="heh-ar.medi"/>
+ <Substitution in="kaf-ar" out="kaf-ar.medi"/>
+ <Substitution in="lam-ar" out="lam-ar.medi"/>
+ <Substitution in="meem-ar" out="meem-ar.medi"/>
+ <Substitution in="noonAfrican-ar" out="behDotless-ar.medi,dotabove-ar"/>
+ <Substitution in="noonghunna-ar" out="behDotless-ar.medi"/>
+ <Substitution in="qafAfrican-ar" out="fehDotless-ar.medi,dotabove-ar"/>
+ <Substitution in="qafDotless-ar" out="fehDotless-ar.medi"/>
+ <Substitution in="sad-ar" out="sad-ar.medi"/>
+ <Substitution in="seen-ar" out="seen-ar.medi"/>
+ <Substitution in="tah-ar" out="tah-ar.medi"/>
+ <Substitution in="yeh-ar" out="behDotless-ar.medi,twodotshorizontalbelow-ar"/>
+ <Substitution in="yeh-farsi" out="behDotless-ar.medi,twodotshorizontalbelow-ar"/>
+ </MultipleSubst>
+ </Lookup>
+ <Lookup index="10">
+ <LookupType value="2"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <MultipleSubst index="0">
+ <Substitution in="ain-ar" out="ain-ar.fina"/>
+ <Substitution in="alef-ar" out="alef-ar.fina"/>
+ <Substitution in="alefMaksura-ar" out="alefMaksura-ar.fina"/>
+ <Substitution in="behDotless-ar" out="behDotless-ar.fina"/>
+ <Substitution in="dal-ar" out="dal-ar.fina"/>
+ <Substitution in="fehAfrican-ar" out="fehDotless-ar.fina"/>
+ <Substitution in="fehDotless-ar" out="fehDotless-ar.fina"/>
+ <Substitution in="hah-ar" out="hah-ar.fina"/>
+ <Substitution in="heh-ar" out="heh-ar.fina"/>
+ <Substitution in="kaf-ar" out="kaf-ar.fina"/>
+ <Substitution in="lam-ar" out="lam-ar.fina"/>
+ <Substitution in="meem-ar" out="meem-ar.fina"/>
+ <Substitution in="noonAfrican-ar" out="noonghunna-ar.fina"/>
+ <Substitution in="noonghunna-ar" out="noonghunna-ar.fina"/>
+ <Substitution in="qafAfrican-ar" out="qafDotless-ar.fina"/>
+ <Substitution in="qafDotless-ar" out="qafDotless-ar.fina"/>
+ <Substitution in="reh-ar" out="reh-ar.fina"/>
+ <Substitution in="sad-ar" out="sad-ar.fina"/>
+ <Substitution in="seen-ar" out="seen-ar.fina"/>
+ <Substitution in="tah-ar" out="tah-ar.fina"/>
+ <Substitution in="tehMarbuta-ar" out="heh-ar.fina,twodotshorizontalabove-ar"/>
+ <Substitution in="waw-ar" out="waw-ar.fina"/>
+ <Substitution in="yeh-ar" out="alefMaksura-ar.fina"/>
+ <Substitution in="yeh-farsi" out="alefMaksura-ar.fina"/>
+ <Substitution in="yehbarree-ar" out="alefMaksura-ar.fina.5"/>
+ </MultipleSubst>
+ </Lookup>
+ <Lookup index="11">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="1">
+ <Coverage>
+ <Glyph value="lam-ar.init"/>
+ </Coverage>
+ <!-- ChainSubRuleSetCount=1 -->
+ <ChainSubRuleSet index="0">
+ <!-- ChainSubRuleCount=1 -->
+ <ChainSubRule index="0">
+ <!-- BacktrackGlyphCount=1 -->
+ <Backtrack index="0" value="alef-ar"/>
+ <!-- InputGlyphCount=2 -->
+ <Input index="0" value="lam-ar.medi"/>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAhead index="0" value="heh-ar.fina"/>
+ <!-- SubstCount=2 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="2"/>
+ </SubstLookupRecord>
+ <SubstLookupRecord index="1">
+ <SequenceIndex value="1"/>
+ <LookupListIndex value="2"/>
+ </SubstLookupRecord>
+ </ChainSubRule>
+ </ChainSubRuleSet>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="12">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=4 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.init"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="behDotless-ar.fina"/>
+ <Glyph value="behDotless-ar.medi"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="13"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ <ChainContextSubst index="1" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="seen-ar.medi"/>
+ <Glyph value="seen-ar.medi.1"/>
+ <Glyph value="seen-ar.medi.2"/>
+ <Glyph value="seen-ar.medi.3"/>
+ <Glyph value="seen-ar.init"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="14"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ <ChainContextSubst index="2" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="behDotless-ar.init"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="noonghunna-ar.fina"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="15"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ <ChainContextSubst index="3" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=2 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.init"/>
+ <Glyph value="lam-ar.init"/>
+ </InputCoverage>
+ <InputCoverage index="1">
+ <Glyph value="hah-ar.fina"/>
+ <Glyph value="hah-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=2 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="0"/>
+ </SubstLookupRecord>
+ <SubstLookupRecord index="1">
+ <SequenceIndex value="1"/>
+ <LookupListIndex value="0"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="13">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="behDotless-ar.medi" out="behDotless-ar.medi.high"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="14">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="behDotless-ar.medi" out="behDotless-ar.medi.high"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="15">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="behDotless-ar.medi" out="behDotless-ar.medi.high"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="16">
+ <LookupType value="4"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <LigatureSubst index="0">
+ <LigatureSet glyph="lam-ar.init">
+ <Ligature components="alef-ar.fina" glyph="lam_alef-ar"/>
+ </LigatureSet>
+ <LigatureSet glyph="lam-ar.medi">
+ <Ligature components="alef-ar.fina" glyph="lam_alef-ar.fina"/>
+ </LigatureSet>
+ </LigatureSubst>
+ </Lookup>
+ <Lookup index="17">
+ <LookupType value="6"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="space"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="space"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="18"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="18">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="space" out="space.alt"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="19">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="dotabove-ar" out="empty"/>
+ <Substitution in="dotbelow-ar" out="empty"/>
+ <Substitution in="hamza-ar" out="empty"/>
+ <Substitution in="hamzaabove-ar" out="empty"/>
+ <Substitution in="hamzabelow-ar" out="empty"/>
+ <Substitution in="threedotsdownbelow-ar" out="empty"/>
+ <Substitution in="threedotsupabove-ar" out="empty"/>
+ <Substitution in="twodotshorizontalabove-ar" out="empty"/>
+ <Substitution in="twodotshorizontalbelow-ar" out="empty"/>
+ <Substitution in="twodotsverticalabove-ar" out="empty"/>
+ <Substitution in="twodotsverticalbelow-ar" out="empty"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="20">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="dotabove-ar" out="dotabove-ar.alt1"/>
+ <Substitution in="dotbelow-ar" out="dotbelow-ar.alt1"/>
+ <Substitution in="threedotsdownbelow-ar" out="threedotsdownbelow-ar.alt1"/>
+ <Substitution in="threedotsupabove-ar" out="threedotsupabove-ar.alt1"/>
+ <Substitution in="twodotshorizontalabove-ar" out="twodotshorizontalabove-ar.alt1"/>
+ <Substitution in="twodotshorizontalbelow-ar" out="twodotshorizontalbelow-ar.alt1"/>
+ <Substitution in="twodotsverticalabove-ar" out="twodotsverticalabove-ar.alt1"/>
+ <Substitution in="twodotsverticalbelow-ar" out="twodotsverticalbelow-ar.alt1"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="21">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="eight" out="eight.numr"/>
+ <Substitution in="eight-ar" out="eight-ar.numr"/>
+ <Substitution in="eight-persian" out="eight-persian.numr"/>
+ <Substitution in="five" out="five.numr"/>
+ <Substitution in="five-ar" out="five-ar.numr"/>
+ <Substitution in="five-persian" out="five-persian.numr"/>
+ <Substitution in="four" out="four.numr"/>
+ <Substitution in="four-ar" out="four-ar.numr"/>
+ <Substitution in="four-persian" out="four-persian.numr"/>
+ <Substitution in="nine" out="nine.numr"/>
+ <Substitution in="nine-ar" out="nine-ar.numr"/>
+ <Substitution in="nine-persian" out="nine-persian.numr"/>
+ <Substitution in="one" out="one.numr"/>
+ <Substitution in="one-ar" out="one-ar.numr"/>
+ <Substitution in="one-persian" out="one-persian.numr"/>
+ <Substitution in="seven" out="seven.numr"/>
+ <Substitution in="seven-ar" out="seven-ar.numr"/>
+ <Substitution in="seven-persian" out="seven-persian.numr"/>
+ <Substitution in="six" out="six.numr"/>
+ <Substitution in="six-ar" out="six-ar.numr"/>
+ <Substitution in="six-persian" out="six-persian.numr"/>
+ <Substitution in="three" out="three.numr"/>
+ <Substitution in="three-ar" out="three-ar.numr"/>
+ <Substitution in="three-persian" out="three-persian.numr"/>
+ <Substitution in="two" out="two.numr"/>
+ <Substitution in="two-ar" out="two-ar.numr"/>
+ <Substitution in="two-persian" out="two-persian.numr"/>
+ <Substitution in="zero" out="zero.numr"/>
+ <Substitution in="zero-ar" out="zero-ar.numr"/>
+ <Substitution in="zero-persian" out="zero-persian.numr"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="22">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="eight" out="eight.dnom"/>
+ <Substitution in="eight-ar" out="eight-ar.dnom"/>
+ <Substitution in="eight-persian" out="eight-persian.dnom"/>
+ <Substitution in="five" out="five.dnom"/>
+ <Substitution in="five-ar" out="five-ar.dnom"/>
+ <Substitution in="five-persian" out="five-persian.dnom"/>
+ <Substitution in="four" out="four.dnom"/>
+ <Substitution in="four-ar" out="four-ar.dnom"/>
+ <Substitution in="four-persian" out="four-persian.dnom"/>
+ <Substitution in="nine" out="nine.dnom"/>
+ <Substitution in="nine-ar" out="nine-ar.dnom"/>
+ <Substitution in="nine-persian" out="nine-persian.dnom"/>
+ <Substitution in="one" out="one.dnom"/>
+ <Substitution in="one-ar" out="one-ar.dnom"/>
+ <Substitution in="one-persian" out="one-persian.dnom"/>
+ <Substitution in="seven" out="seven.dnom"/>
+ <Substitution in="seven-ar" out="seven-ar.dnom"/>
+ <Substitution in="seven-persian" out="seven-persian.dnom"/>
+ <Substitution in="six" out="six.dnom"/>
+ <Substitution in="six-ar" out="six-ar.dnom"/>
+ <Substitution in="six-persian" out="six-persian.dnom"/>
+ <Substitution in="three" out="three.dnom"/>
+ <Substitution in="three-ar" out="three-ar.dnom"/>
+ <Substitution in="three-persian" out="three-persian.dnom"/>
+ <Substitution in="two" out="two.dnom"/>
+ <Substitution in="two-ar" out="two-ar.dnom"/>
+ <Substitution in="two-persian" out="two-persian.dnom"/>
+ <Substitution in="zero" out="zero.dnom"/>
+ <Substitution in="zero-ar" out="zero-ar.dnom"/>
+ <Substitution in="zero-persian" out="zero-persian.dnom"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="23">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="four-ar" out="four-ar.osf"/>
+ <Substitution in="nine-ar" out="nine-ar.osf"/>
+ <Substitution in="one-ar" out="one-ar.osf"/>
+ <Substitution in="six-ar" out="six-ar.osf"/>
+ <Substitution in="three-ar" out="three-ar.osf"/>
+ <Substitution in="two-ar" out="two-ar.osf"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="24">
+ <LookupType value="3"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <AlternateSubst index="0">
+ <AlternateSet glyph="ain-ar">
+ <Alternate glyph="ain-ar"/>
+ <Alternate glyph="ain-ar.1"/>
+ <Alternate glyph="ain-ar.2"/>
+ <Alternate glyph="ain-ar.3"/>
+ </AlternateSet>
+ <AlternateSet glyph="ain-ar.init">
+ <Alternate glyph="ain-ar.init"/>
+ <Alternate glyph="ain-ar.init.1"/>
+ </AlternateSet>
+ <AlternateSet glyph="alef-ar">
+ <Alternate glyph="alef-ar.1"/>
+ <Alternate glyph="alef-ar.2"/>
+ <Alternate glyph="alef-ar"/>
+ <Alternate glyph="alef-ar.3"/>
+ </AlternateSet>
+ <AlternateSet glyph="alefMaksura-ar">
+ <Alternate glyph="alefMaksura-ar"/>
+ <Alternate glyph="alefMaksura-ar.1"/>
+ <Alternate glyph="alefMaksura-ar.2"/>
+ <Alternate glyph="alefMaksura-ar.3"/>
+ <Alternate glyph="alefMaksura-ar.4"/>
+ <Alternate glyph="alefMaksura-ar.5"/>
+ <Alternate glyph="alefMaksura-ar.6"/>
+ </AlternateSet>
+ <AlternateSet glyph="alefMaksura-ar.fina">
+ <Alternate glyph="alefMaksura-ar.fina.0"/>
+ <Alternate glyph="alefMaksura-ar.fina.1"/>
+ <Alternate glyph="alefMaksura-ar.fina.2"/>
+ <Alternate glyph="alefMaksura-ar.fina.3"/>
+ <Alternate glyph="alefMaksura-ar.fina.4"/>
+ <Alternate glyph="alefMaksura-ar.fina.5"/>
+ <Alternate glyph="alefMaksura-ar.fina.6"/>
+ </AlternateSet>
+ <AlternateSet glyph="alefMaksura-ar.fina.tooth">
+ <Alternate glyph="alefMaksura-ar.fina"/>
+ <Alternate glyph="alefMaksura-ar.fina.1"/>
+ <Alternate glyph="alefMaksura-ar.fina.2"/>
+ <Alternate glyph="alefMaksura-ar.fina.3"/>
+ <Alternate glyph="alefMaksura-ar.fina.4"/>
+ <Alternate glyph="alefMaksura-ar.fina.5"/>
+ <Alternate glyph="alefMaksura-ar.fina.6"/>
+ <Alternate glyph="alefMaksura-ar.fina.tooth"/>
+ </AlternateSet>
+ <AlternateSet glyph="behDotless-ar.fina">
+ <Alternate glyph="behDotless-ar.fina"/>
+ <Alternate glyph="behDotless-ar.fina.1"/>
+ </AlternateSet>
+ <AlternateSet glyph="behDotless-ar.medi">
+ <Alternate glyph="behDotless-ar.medi"/>
+ <Alternate glyph="behDotless-ar.medi.1"/>
+ </AlternateSet>
+ <AlternateSet glyph="behDotless-ar.medi.high">
+ <Alternate glyph="behDotless-ar.medi.high"/>
+ <Alternate glyph="behDotless-ar.medi.high.1"/>
+ </AlternateSet>
+ <AlternateSet glyph="eight-ar">
+ <Alternate glyph="eight-ar"/>
+ <Alternate glyph="eight-ar.1"/>
+ <Alternate glyph="eight-ar.2"/>
+ </AlternateSet>
+ <AlternateSet glyph="fehDotless-ar">
+ <Alternate glyph="fehDotless-ar"/>
+ <Alternate glyph="fehDotless-ar.1"/>
+ <Alternate glyph="fehDotless-ar.2"/>
+ <Alternate glyph="fehDotless-ar.3"/>
+ </AlternateSet>
+ <AlternateSet glyph="fehDotless-ar.fina">
+ <Alternate glyph="fehDotless-ar.fina"/>
+ <Alternate glyph="fehDotless-ar.fina.1"/>
+ <Alternate glyph="fehDotless-ar.fina.2"/>
+ <Alternate glyph="fehDotless-ar.fina.3"/>
+ </AlternateSet>
+ <AlternateSet glyph="fehDotless-ar.init">
+ <Alternate glyph="fehDotless-ar.init"/>
+ <Alternate glyph="fehDotless-ar.init.1"/>
+ </AlternateSet>
+ <AlternateSet glyph="fehDotless-ar.medi">
+ <Alternate glyph="fehDotless-ar.medi"/>
+ <Alternate glyph="fehDotless-ar.medi.1"/>
+ </AlternateSet>
+ <AlternateSet glyph="four-ar">
+ <Alternate glyph="four-ar"/>
+ <Alternate glyph="four-ar.1"/>
+ <Alternate glyph="four-ar.2"/>
+ </AlternateSet>
+ <AlternateSet glyph="four-ar.osf">
+ <Alternate glyph="four-ar.osf"/>
+ <Alternate glyph="four-ar.osf.1"/>
+ <Alternate glyph="four-ar.osf.2"/>
+ </AlternateSet>
+ <AlternateSet glyph="hah-ar">
+ <Alternate glyph="hah-ar"/>
+ <Alternate glyph="hah-ar.1"/>
+ <Alternate glyph="hah-ar.2"/>
+ <Alternate glyph="hah-ar.3"/>
+ <Alternate glyph="hah-ar.4"/>
+ <Alternate glyph="hah-ar.5"/>
+ </AlternateSet>
+ <AlternateSet glyph="hah-ar.fina">
+ <Alternate glyph="hah-ar.fina"/>
+ <Alternate glyph="hah-ar.fina.1"/>
+ </AlternateSet>
+ <AlternateSet glyph="hah-ar.fina.1">
+ <Alternate glyph="hah-ar.fina"/>
+ <Alternate glyph="hah-ar.fina.1"/>
+ </AlternateSet>
+ <AlternateSet glyph="hah-ar.init">
+ <Alternate glyph="hah-ar.init"/>
+ <Alternate glyph="hah-ar.init.1"/>
+ <Alternate glyph="hah-ar.init.2"/>
+ </AlternateSet>
+ <AlternateSet glyph="hah-ar.medi">
+ <Alternate glyph="hah-ar.medi"/>
+ <Alternate glyph="hah-ar.medi.1"/>
+ <Alternate glyph="hah-ar.medi.2"/>
+ <Alternate glyph="hah-ar.medi.3"/>
+ </AlternateSet>
+ <AlternateSet glyph="hah-ar.medi.1">
+ <Alternate glyph="hah-ar.medi"/>
+ <Alternate glyph="hah-ar.medi.1"/>
+ <Alternate glyph="hah-ar.medi.2"/>
+ <Alternate glyph="hah-ar.medi.3"/>
+ </AlternateSet>
+ <AlternateSet glyph="heh-ar">
+ <Alternate glyph="heh-ar"/>
+ <Alternate glyph="heh-ar.1"/>
+ <Alternate glyph="heh-ar.2"/>
+ </AlternateSet>
+ <AlternateSet glyph="heh-ar.fina">
+ <Alternate glyph="heh-ar.fina"/>
+ <Alternate glyph="heh-ar.fina.1"/>
+ <Alternate glyph="heh-ar.fina.2"/>
+ </AlternateSet>
+ <AlternateSet glyph="heh-ar.init">
+ <Alternate glyph="heh-ar.init"/>
+ <Alternate glyph="heh-ar.init.1"/>
+ <Alternate glyph="heh-ar.init.2"/>
+ <Alternate glyph="heh-ar.init.3"/>
+ <Alternate glyph="heh-ar.init.4"/>
+ <Alternate glyph="heh-ar.init.5"/>
+ <Alternate glyph="heh-ar.init.6"/>
+ <Alternate glyph="heh-ar.init.7"/>
+ </AlternateSet>
+ <AlternateSet glyph="heh-ar.medi">
+ <Alternate glyph="heh-ar.medi"/>
+ <Alternate glyph="heh-ar.medi.1"/>
+ <Alternate glyph="heh-ar.medi.2"/>
+ <Alternate glyph="heh-ar.medi.3"/>
+ <Alternate glyph="heh-ar.medi.4"/>
+ <Alternate glyph="heh-ar.medi.5"/>
+ <Alternate glyph="heh-ar.medi.6"/>
+ <Alternate glyph="heh-ar.medi.7"/>
+ </AlternateSet>
+ <AlternateSet glyph="kaf-ar">
+ <Alternate glyph="kaf-ar"/>
+ <Alternate glyph="kaf-ar.1"/>
+ <Alternate glyph="kaf-ar.2"/>
+ </AlternateSet>
+ <AlternateSet glyph="kaf-ar.fina">
+ <Alternate glyph="kaf-ar.fina"/>
+ <Alternate glyph="kaf-ar.fina.1"/>
+ <Alternate glyph="kaf-ar.fina.2"/>
+ </AlternateSet>
+ <AlternateSet glyph="kaf-ar.init">
+ <Alternate glyph="kaf-ar.init.1"/>
+ <Alternate glyph="kaf-ar.init.2"/>
+ <Alternate glyph="kaf-ar.init"/>
+ </AlternateSet>
+ <AlternateSet glyph="kaf-ar.medi">
+ <Alternate glyph="kaf-ar.medi.1"/>
+ <Alternate glyph="kaf-ar.medi.2"/>
+ <Alternate glyph="kaf-ar.medi"/>
+ </AlternateSet>
+ <AlternateSet glyph="lam_alef-ar">
+ <Alternate glyph="lam_alef-ar"/>
+ <Alternate glyph="lam_alef-ar.1"/>
+ <Alternate glyph="lam_alef-ar.2"/>
+ <Alternate glyph="lam_alef-ar.3"/>
+ <Alternate glyph="lam_alef-ar.4"/>
+ <Alternate glyph="lam_alef-ar.5"/>
+ </AlternateSet>
+ <AlternateSet glyph="lam_alef-ar.fina">
+ <Alternate glyph="lam_alef-ar.fina"/>
+ <Alternate glyph="lam_alef-ar.fina.1"/>
+ <Alternate glyph="lam_alef-ar.fina.2"/>
+ <Alternate glyph="lam_alef-ar.fina.3"/>
+ <Alternate glyph="lam_alef-ar.fina.4"/>
+ <Alternate glyph="lam_alef-ar.fina.5"/>
+ </AlternateSet>
+ <AlternateSet glyph="meem-ar">
+ <Alternate glyph="meem-ar"/>
+ <Alternate glyph="meem-ar.1"/>
+ <Alternate glyph="meem-ar.2"/>
+ </AlternateSet>
+ <AlternateSet glyph="meem-ar.fina">
+ <Alternate glyph="meem-ar.fina"/>
+ <Alternate glyph="meem-ar.fina.1"/>
+ <Alternate glyph="meem-ar.fina.2"/>
+ </AlternateSet>
+ <AlternateSet glyph="meem-ar.medi">
+ <Alternate glyph="meem-ar.medi"/>
+ <Alternate glyph="meem-ar.medi.1"/>
+ </AlternateSet>
+ <AlternateSet glyph="reh-ar">
+ <Alternate glyph="reh-ar"/>
+ <Alternate glyph="reh-ar.1"/>
+ <Alternate glyph="reh-ar.2"/>
+ <Alternate glyph="reh-ar.3"/>
+ </AlternateSet>
+ <AlternateSet glyph="reh-ar.fina">
+ <Alternate glyph="reh-ar.fina"/>
+ <Alternate glyph="reh-ar.fina.1"/>
+ </AlternateSet>
+ <AlternateSet glyph="sad-ar">
+ <Alternate glyph="sad-ar"/>
+ <Alternate glyph="sad-ar.1"/>
+ </AlternateSet>
+ <AlternateSet glyph="sad-ar.fina">
+ <Alternate glyph="sad-ar.fina"/>
+ <Alternate glyph="sad-ar.fina.1"/>
+ </AlternateSet>
+ <AlternateSet glyph="seen-ar">
+ <Alternate glyph="seen-ar"/>
+ <Alternate glyph="seen-ar.1"/>
+ <Alternate glyph="seen-ar.2"/>
+ <Alternate glyph="seen-ar.3"/>
+ <Alternate glyph="seen-ar.4"/>
+ <Alternate glyph="seen-ar.5"/>
+ <Alternate glyph="seen-ar.6"/>
+ </AlternateSet>
+ <AlternateSet glyph="seen-ar.fina">
+ <Alternate glyph="seen-ar.fina"/>
+ <Alternate glyph="seen-ar.fina.1"/>
+ <Alternate glyph="seen-ar.fina.2"/>
+ <Alternate glyph="seen-ar.fina.3"/>
+ <Alternate glyph="seen-ar.fina.4"/>
+ <Alternate glyph="seen-ar.fina.5"/>
+ </AlternateSet>
+ <AlternateSet glyph="seen-ar.init">
+ <Alternate glyph="seen-ar.init"/>
+ <Alternate glyph="seen-ar.init.1"/>
+ <Alternate glyph="seen-ar.init.2"/>
+ <Alternate glyph="seen-ar.init.3"/>
+ <Alternate glyph="seen-ar.init.4"/>
+ <Alternate glyph="seen-ar.init.5"/>
+ <Alternate glyph="seen-ar.init.6"/>
+ </AlternateSet>
+ <AlternateSet glyph="seen-ar.medi">
+ <Alternate glyph="seen-ar.medi"/>
+ <Alternate glyph="seen-ar.medi.1"/>
+ <Alternate glyph="seen-ar.medi.2"/>
+ <Alternate glyph="seen-ar.medi.3"/>
+ <Alternate glyph="seen-ar.medi.4"/>
+ <Alternate glyph="seen-ar.medi.5"/>
+ <Alternate glyph="seen-ar.medi.6"/>
+ </AlternateSet>
+ <AlternateSet glyph="seven-ar">
+ <Alternate glyph="seven-ar"/>
+ <Alternate glyph="seven-ar.1"/>
+ <Alternate glyph="seven-ar.2"/>
+ </AlternateSet>
+ <AlternateSet glyph="six-ar">
+ <Alternate glyph="six-ar"/>
+ <Alternate glyph="six-ar.1"/>
+ </AlternateSet>
+ <AlternateSet glyph="six-ar.osf">
+ <Alternate glyph="six-ar.osf"/>
+ <Alternate glyph="six-ar.osf.1"/>
+ </AlternateSet>
+ <AlternateSet glyph="three-ar">
+ <Alternate glyph="three-ar"/>
+ <Alternate glyph="three-ar.1"/>
+ </AlternateSet>
+ <AlternateSet glyph="three-ar.osf">
+ <Alternate glyph="three-ar.osf"/>
+ <Alternate glyph="three-ar.osf.1"/>
+ </AlternateSet>
+ <AlternateSet glyph="two-ar">
+ <Alternate glyph="two-ar"/>
+ <Alternate glyph="two-ar.1"/>
+ </AlternateSet>
+ <AlternateSet glyph="two-ar.osf">
+ <Alternate glyph="two-ar.osf"/>
+ <Alternate glyph="two-ar.osf.1"/>
+ </AlternateSet>
+ <AlternateSet glyph="waw-ar">
+ <Alternate glyph="waw-ar"/>
+ <Alternate glyph="waw-ar.1"/>
+ <Alternate glyph="waw-ar.2"/>
+ <Alternate glyph="waw-ar.3"/>
+ </AlternateSet>
+ <AlternateSet glyph="waw-ar.fina">
+ <Alternate glyph="waw-ar.fina"/>
+ <Alternate glyph="waw-ar.fina.1"/>
+ </AlternateSet>
+ </AlternateSubst>
+ </Lookup>
+ <Lookup index="25">
+ <LookupType value="3"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <AlternateSubst index="0">
+ <AlternateSet glyph="g">
+ <Alternate glyph="g"/>
+ <Alternate glyph="g.1"/>
+ </AlternateSet>
+ <AlternateSet glyph="h">
+ <Alternate glyph="h"/>
+ <Alternate glyph="h.1"/>
+ </AlternateSet>
+ <AlternateSet glyph="k">
+ <Alternate glyph="k"/>
+ <Alternate glyph="k.1"/>
+ </AlternateSet>
+ <AlternateSet glyph="m">
+ <Alternate glyph="m"/>
+ <Alternate glyph="m.1"/>
+ </AlternateSet>
+ <AlternateSet glyph="n">
+ <Alternate glyph="n"/>
+ <Alternate glyph="n.1"/>
+ </AlternateSet>
+ <AlternateSet glyph="p">
+ <Alternate glyph="p"/>
+ <Alternate glyph="p.1"/>
+ </AlternateSet>
+ <AlternateSet glyph="q">
+ <Alternate glyph="q"/>
+ <Alternate glyph="q.1"/>
+ </AlternateSet>
+ <AlternateSet glyph="r">
+ <Alternate glyph="r"/>
+ <Alternate glyph="r.1"/>
+ <Alternate glyph="r.2"/>
+ </AlternateSet>
+ <AlternateSet glyph="u">
+ <Alternate glyph="u"/>
+ <Alternate glyph="u.1"/>
+ </AlternateSet>
+ <AlternateSet glyph="y">
+ <Alternate glyph="y"/>
+ <Alternate glyph="y.1"/>
+ </AlternateSet>
+ </AlternateSubst>
+ </Lookup>
+ <Lookup index="26">
+ <LookupType value="6"/>
+ <LookupFlag value="16"/><!-- useMarkFilteringSet -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="heh-ar.2"/>
+ <Glyph value="heh-ar.fina.2"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="twodotshorizontalabove-ar"/>
+ <Glyph value="twodotshorizontalabove-ar.alt1"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="27"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ <MarkFilteringSet value="0"/>
+ </Lookup>
+ <Lookup index="27">
+ <LookupType value="1"/>
+ <LookupFlag value="16"/><!-- useMarkFilteringSet -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="twodotshorizontalabove-ar" out="twodotsverticalabove-ar"/>
+ <Substitution in="twodotshorizontalabove-ar.alt1" out="twodotsverticalabove-ar.alt1"/>
+ </SingleSubst>
+ <MarkFilteringSet value="0"/>
+ </Lookup>
+ <Lookup index="28">
+ <LookupType value="6"/>
+ <LookupFlag value="16"/><!-- useMarkFilteringSet -->
+ <!-- SubTableCount=3 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=4 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.medi.1"/>
+ <Glyph value="behDotless-ar.medi.high"/>
+ <Glyph value="behDotless-ar.medi.high.1"/>
+ <Glyph value="behDotless-ar.init"/>
+ </InputCoverage>
+ <InputCoverage index="1">
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="dotbelow-ar.alt1"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar.alt1"/>
+ </InputCoverage>
+ <InputCoverage index="2">
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="lam-ar.medi"/>
+ </InputCoverage>
+ <InputCoverage index="3">
+ <Glyph value="alefMaksura-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=0 -->
+ </ChainContextSubst>
+ <ChainContextSubst index="1" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=2 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="lam-ar.medi"/>
+ </InputCoverage>
+ <InputCoverage index="1">
+ <Glyph value="alefMaksura-ar.fina"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=2 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="3"/>
+ </SubstLookupRecord>
+ <SubstLookupRecord index="1">
+ <SequenceIndex value="1"/>
+ <LookupListIndex value="3"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ <ChainContextSubst index="2" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.medi.1"/>
+ <Glyph value="behDotless-ar.medi.high"/>
+ <Glyph value="behDotless-ar.medi.high.1"/>
+ <Glyph value="behDotless-ar.medi.yeh"/>
+ <Glyph value="hah-ar.medi"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=2 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="dotbelow-ar"/>
+ <Glyph value="dotbelow-ar.alt1"/>
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar.alt1"/>
+ </LookAheadCoverage>
+ <LookAheadCoverage index="1">
+ <Glyph value="hah-ar.fina"/>
+ <Glyph value="hah-ar.medi"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="4"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ <MarkFilteringSet value="1"/>
+ </Lookup>
+ <Lookup index="29">
+ <LookupType value="6"/>
+ <LookupFlag value="16"/><!-- useMarkFilteringSet -->
+ <!-- SubTableCount=1 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=1 -->
+ <BacktrackCoverage index="0">
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.init"/>
+ </BacktrackCoverage>
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="twodotshorizontalbelow-ar"/>
+ <Glyph value="twodotshorizontalbelow-ar.alt1"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="reh-ar.fina"/>
+ <Glyph value="reh-ar.fina.1"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="30"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ <MarkFilteringSet value="2"/>
+ </Lookup>
+ <Lookup index="30">
+ <LookupType value="1"/>
+ <LookupFlag value="16"/><!-- useMarkFilteringSet -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="twodotshorizontalbelow-ar" out="twodotsverticalbelow-ar"/>
+ <Substitution in="twodotshorizontalbelow-ar.alt1" out="twodotsverticalbelow-ar.alt1"/>
+ </SingleSubst>
+ <MarkFilteringSet value="2"/>
+ </Lookup>
+ <Lookup index="31">
+ <LookupType value="5"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ContextSubst index="0" Format="3">
+ <!-- GlyphCount=2 -->
+ <!-- SubstCount=2 -->
+ <Coverage index="0">
+ <Glyph value="behDotless-ar.init.hah"/>
+ <Glyph value="lam-ar.init.hah"/>
+ </Coverage>
+ <Coverage index="1">
+ <Glyph value="hah-ar.fina"/>
+ <Glyph value="hah-ar.medi"/>
+ </Coverage>
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="1"/>
+ </SubstLookupRecord>
+ <SubstLookupRecord index="1">
+ <SequenceIndex value="1"/>
+ <LookupListIndex value="1"/>
+ </SubstLookupRecord>
+ </ContextSubst>
+ </Lookup>
+ <Lookup index="32">
+ <LookupType value="8"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ReverseChainSingleSubst index="0" Format="1">
+ <Coverage>
+ <Glyph value="behDotless-ar.medi"/>
+ <Glyph value="behDotless-ar.medi.1"/>
+ <Glyph value="behDotless-ar.medi.high"/>
+ <Glyph value="behDotless-ar.medi.high.1"/>
+ <Glyph value="behDotless-ar.medi.yeh"/>
+ <Glyph value="hah-ar.medi"/>
+ <Glyph value="hah-ar.medi.1"/>
+ <Glyph value="hah-ar.medi.2"/>
+ <Glyph value="hah-ar.medi.3"/>
+ <Glyph value="seen-ar.medi"/>
+ <Glyph value="seen-ar.medi.1"/>
+ <Glyph value="seen-ar.medi.2"/>
+ <Glyph value="seen-ar.medi.3"/>
+ <Glyph value="seen-ar.medi.4"/>
+ <Glyph value="seen-ar.medi.5"/>
+ <Glyph value="seen-ar.medi.6"/>
+ <Glyph value="sad-ar.medi"/>
+ <Glyph value="tah-ar.medi"/>
+ <Glyph value="tah-ar.medi.short"/>
+ <Glyph value="tah-ar.medi.short2"/>
+ <Glyph value="ain-ar.medi"/>
+ <Glyph value="fehDotless-ar.medi"/>
+ <Glyph value="fehDotless-ar.medi.1"/>
+ <Glyph value="kaf-ar.medi"/>
+ <Glyph value="kaf-ar.medi.1"/>
+ <Glyph value="kaf-ar.medi.2"/>
+ <Glyph value="lam-ar.medi"/>
+ <Glyph value="lam-ar.medi.lellah"/>
+ <Glyph value="lam-ar.medi.short"/>
+ <Glyph value="lam-ar.medi.short2"/>
+ <Glyph value="lam-ar.medi.yeh"/>
+ <Glyph value="meem-ar.medi"/>
+ <Glyph value="meem-ar.medi.1"/>
+ <Glyph value="heh-ar.medi"/>
+ <Glyph value="heh-ar.medi.1"/>
+ <Glyph value="heh-ar.medi.2"/>
+ <Glyph value="heh-ar.medi.3"/>
+ <Glyph value="heh-ar.medi.4"/>
+ <Glyph value="heh-ar.medi.5"/>
+ <Glyph value="heh-ar.medi.6"/>
+ <Glyph value="heh-ar.medi.7"/>
+ <Glyph value="kashida-ar"/>
+ </Coverage>
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="hah-ar.fina.1"/>
+ <Glyph value="hah-ar.medi.1"/>
+ <Glyph value="hah-ar.medi.2"/>
+ <Glyph value="hah-ar.medi.3"/>
+ <Glyph value="glyph00453"/>
+ <Glyph value="glyph00454"/>
+ <Glyph value="glyph00455"/>
+ <Glyph value="glyph00456"/>
+ <Glyph value="glyph00457"/>
+ <Glyph value="glyph00458"/>
+ <Glyph value="glyph00459"/>
+ <Glyph value="glyph00460"/>
+ <Glyph value="glyph00461"/>
+ <Glyph value="glyph00462"/>
+ <Glyph value="glyph00463"/>
+ <Glyph value="glyph00464"/>
+ <Glyph value="glyph00465"/>
+ <Glyph value="glyph00466"/>
+ <Glyph value="glyph00467"/>
+ <Glyph value="glyph00468"/>
+ <Glyph value="glyph00469"/>
+ <Glyph value="glyph00470"/>
+ <Glyph value="glyph00471"/>
+ <Glyph value="glyph00472"/>
+ <Glyph value="glyph00473"/>
+ <Glyph value="glyph00474"/>
+ <Glyph value="glyph00475"/>
+ <Glyph value="glyph00476"/>
+ <Glyph value="glyph00477"/>
+ <Glyph value="glyph00478"/>
+ <Glyph value="glyph00479"/>
+ <Glyph value="glyph00480"/>
+ <Glyph value="glyph00481"/>
+ <Glyph value="glyph00482"/>
+ <Glyph value="glyph00483"/>
+ <Glyph value="glyph00484"/>
+ <Glyph value="glyph00485"/>
+ <Glyph value="glyph00486"/>
+ <Glyph value="glyph00487"/>
+ <Glyph value="glyph00488"/>
+ <Glyph value="glyph00489"/>
+ <Glyph value="glyph00490"/>
+ <Glyph value="glyph00491"/>
+ <Glyph value="glyph00492"/>
+ <Glyph value="glyph00493"/>
+ <Glyph value="glyph00494"/>
+ </LookAheadCoverage>
+ <!-- GlyphCount=42 -->
+ <Substitute index="0" value="glyph00453"/>
+ <Substitute index="1" value="glyph00454"/>
+ <Substitute index="2" value="glyph00455"/>
+ <Substitute index="3" value="glyph00456"/>
+ <Substitute index="4" value="glyph00457"/>
+ <Substitute index="5" value="glyph00458"/>
+ <Substitute index="6" value="glyph00459"/>
+ <Substitute index="7" value="glyph00460"/>
+ <Substitute index="8" value="glyph00461"/>
+ <Substitute index="9" value="glyph00462"/>
+ <Substitute index="10" value="glyph00463"/>
+ <Substitute index="11" value="glyph00464"/>
+ <Substitute index="12" value="glyph00465"/>
+ <Substitute index="13" value="glyph00466"/>
+ <Substitute index="14" value="glyph00467"/>
+ <Substitute index="15" value="glyph00468"/>
+ <Substitute index="16" value="glyph00469"/>
+ <Substitute index="17" value="glyph00470"/>
+ <Substitute index="18" value="glyph00471"/>
+ <Substitute index="19" value="glyph00472"/>
+ <Substitute index="20" value="glyph00473"/>
+ <Substitute index="21" value="glyph00474"/>
+ <Substitute index="22" value="glyph00475"/>
+ <Substitute index="23" value="glyph00476"/>
+ <Substitute index="24" value="glyph00477"/>
+ <Substitute index="25" value="glyph00478"/>
+ <Substitute index="26" value="glyph00479"/>
+ <Substitute index="27" value="glyph00480"/>
+ <Substitute index="28" value="glyph00481"/>
+ <Substitute index="29" value="glyph00482"/>
+ <Substitute index="30" value="glyph00483"/>
+ <Substitute index="31" value="glyph00484"/>
+ <Substitute index="32" value="glyph00485"/>
+ <Substitute index="33" value="glyph00486"/>
+ <Substitute index="34" value="glyph00487"/>
+ <Substitute index="35" value="glyph00488"/>
+ <Substitute index="36" value="glyph00489"/>
+ <Substitute index="37" value="glyph00490"/>
+ <Substitute index="38" value="glyph00491"/>
+ <Substitute index="39" value="glyph00492"/>
+ <Substitute index="40" value="glyph00493"/>
+ <Substitute index="41" value="glyph00494"/>
+ </ReverseChainSingleSubst>
+ </Lookup>
+ <Lookup index="33">
+ <LookupType value="8"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <ReverseChainSingleSubst index="0" Format="1">
+ <Coverage>
+ <Glyph value="glyph00453"/>
+ <Glyph value="glyph00454"/>
+ <Glyph value="glyph00455"/>
+ <Glyph value="glyph00456"/>
+ <Glyph value="glyph00457"/>
+ <Glyph value="glyph00458"/>
+ <Glyph value="glyph00459"/>
+ <Glyph value="glyph00460"/>
+ <Glyph value="glyph00461"/>
+ <Glyph value="glyph00462"/>
+ <Glyph value="glyph00463"/>
+ <Glyph value="glyph00464"/>
+ <Glyph value="glyph00465"/>
+ <Glyph value="glyph00466"/>
+ <Glyph value="glyph00467"/>
+ <Glyph value="glyph00468"/>
+ <Glyph value="glyph00469"/>
+ <Glyph value="glyph00470"/>
+ <Glyph value="glyph00471"/>
+ <Glyph value="glyph00472"/>
+ <Glyph value="glyph00473"/>
+ <Glyph value="glyph00474"/>
+ <Glyph value="glyph00475"/>
+ <Glyph value="glyph00476"/>
+ <Glyph value="glyph00477"/>
+ <Glyph value="glyph00478"/>
+ <Glyph value="glyph00479"/>
+ <Glyph value="glyph00480"/>
+ <Glyph value="glyph00481"/>
+ <Glyph value="glyph00482"/>
+ <Glyph value="glyph00483"/>
+ <Glyph value="glyph00484"/>
+ <Glyph value="glyph00485"/>
+ <Glyph value="glyph00486"/>
+ <Glyph value="glyph00487"/>
+ <Glyph value="glyph00488"/>
+ <Glyph value="glyph00489"/>
+ <Glyph value="glyph00490"/>
+ <Glyph value="glyph00491"/>
+ <Glyph value="glyph00492"/>
+ <Glyph value="glyph00493"/>
+ <Glyph value="glyph00494"/>
+ </Coverage>
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="glyph00459"/>
+ <Glyph value="glyph00460"/>
+ <Glyph value="glyph00461"/>
+ <Glyph value="glyph00495"/>
+ <Glyph value="glyph00496"/>
+ <Glyph value="glyph00497"/>
+ <Glyph value="glyph00498"/>
+ <Glyph value="glyph00499"/>
+ <Glyph value="glyph00500"/>
+ <Glyph value="glyph00501"/>
+ <Glyph value="glyph00502"/>
+ <Glyph value="glyph00503"/>
+ <Glyph value="glyph00504"/>
+ <Glyph value="glyph00505"/>
+ <Glyph value="glyph00506"/>
+ <Glyph value="glyph00507"/>
+ <Glyph value="glyph00508"/>
+ <Glyph value="glyph00509"/>
+ <Glyph value="glyph00510"/>
+ <Glyph value="glyph00511"/>
+ <Glyph value="glyph00512"/>
+ <Glyph value="glyph00513"/>
+ <Glyph value="glyph00514"/>
+ <Glyph value="glyph00515"/>
+ <Glyph value="glyph00516"/>
+ <Glyph value="glyph00517"/>
+ <Glyph value="glyph00518"/>
+ <Glyph value="glyph00519"/>
+ <Glyph value="glyph00520"/>
+ <Glyph value="glyph00521"/>
+ <Glyph value="glyph00522"/>
+ <Glyph value="glyph00523"/>
+ <Glyph value="glyph00524"/>
+ <Glyph value="glyph00525"/>
+ <Glyph value="glyph00526"/>
+ <Glyph value="glyph00527"/>
+ <Glyph value="glyph00528"/>
+ <Glyph value="glyph00529"/>
+ <Glyph value="glyph00530"/>
+ <Glyph value="glyph00531"/>
+ <Glyph value="glyph00532"/>
+ <Glyph value="glyph00533"/>
+ <Glyph value="glyph00534"/>
+ <Glyph value="glyph00535"/>
+ <Glyph value="glyph00536"/>
+ </LookAheadCoverage>
+ <!-- GlyphCount=42 -->
+ <Substitute index="0" value="glyph00495"/>
+ <Substitute index="1" value="glyph00496"/>
+ <Substitute index="2" value="glyph00497"/>
+ <Substitute index="3" value="glyph00498"/>
+ <Substitute index="4" value="glyph00499"/>
+ <Substitute index="5" value="glyph00500"/>
+ <Substitute index="6" value="glyph00501"/>
+ <Substitute index="7" value="glyph00502"/>
+ <Substitute index="8" value="glyph00503"/>
+ <Substitute index="9" value="glyph00504"/>
+ <Substitute index="10" value="glyph00505"/>
+ <Substitute index="11" value="glyph00506"/>
+ <Substitute index="12" value="glyph00507"/>
+ <Substitute index="13" value="glyph00508"/>
+ <Substitute index="14" value="glyph00509"/>
+ <Substitute index="15" value="glyph00510"/>
+ <Substitute index="16" value="glyph00511"/>
+ <Substitute index="17" value="glyph00512"/>
+ <Substitute index="18" value="glyph00513"/>
+ <Substitute index="19" value="glyph00514"/>
+ <Substitute index="20" value="glyph00515"/>
+ <Substitute index="21" value="glyph00516"/>
+ <Substitute index="22" value="glyph00517"/>
+ <Substitute index="23" value="glyph00518"/>
+ <Substitute index="24" value="glyph00519"/>
+ <Substitute index="25" value="glyph00520"/>
+ <Substitute index="26" value="glyph00521"/>
+ <Substitute index="27" value="glyph00522"/>
+ <Substitute index="28" value="glyph00523"/>
+ <Substitute index="29" value="glyph00524"/>
+ <Substitute index="30" value="glyph00525"/>
+ <Substitute index="31" value="glyph00526"/>
+ <Substitute index="32" value="glyph00527"/>
+ <Substitute index="33" value="glyph00528"/>
+ <Substitute index="34" value="glyph00529"/>
+ <Substitute index="35" value="glyph00530"/>
+ <Substitute index="36" value="glyph00531"/>
+ <Substitute index="37" value="glyph00532"/>
+ <Substitute index="38" value="glyph00533"/>
+ <Substitute index="39" value="glyph00534"/>
+ <Substitute index="40" value="glyph00535"/>
+ <Substitute index="41" value="glyph00536"/>
+ </ReverseChainSingleSubst>
+ </Lookup>
+ <Lookup index="34">
+ <LookupType value="6"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=5 -->
+ <ChainContextSubst index="0" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="lam-ar.init"/>
+ <Glyph value="lam-ar.init.hah"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="glyph00453"/>
+ <Glyph value="glyph00454"/>
+ <Glyph value="glyph00455"/>
+ <Glyph value="glyph00456"/>
+ <Glyph value="glyph00457"/>
+ <Glyph value="glyph00458"/>
+ <Glyph value="glyph00459"/>
+ <Glyph value="glyph00460"/>
+ <Glyph value="glyph00461"/>
+ <Glyph value="glyph00462"/>
+ <Glyph value="glyph00463"/>
+ <Glyph value="glyph00464"/>
+ <Glyph value="glyph00465"/>
+ <Glyph value="glyph00466"/>
+ <Glyph value="glyph00467"/>
+ <Glyph value="glyph00468"/>
+ <Glyph value="glyph00469"/>
+ <Glyph value="glyph00470"/>
+ <Glyph value="glyph00471"/>
+ <Glyph value="glyph00472"/>
+ <Glyph value="glyph00473"/>
+ <Glyph value="glyph00474"/>
+ <Glyph value="glyph00475"/>
+ <Glyph value="glyph00476"/>
+ <Glyph value="glyph00477"/>
+ <Glyph value="glyph00478"/>
+ <Glyph value="glyph00479"/>
+ <Glyph value="glyph00480"/>
+ <Glyph value="glyph00481"/>
+ <Glyph value="glyph00482"/>
+ <Glyph value="glyph00483"/>
+ <Glyph value="glyph00484"/>
+ <Glyph value="glyph00485"/>
+ <Glyph value="glyph00486"/>
+ <Glyph value="glyph00487"/>
+ <Glyph value="glyph00488"/>
+ <Glyph value="glyph00489"/>
+ <Glyph value="glyph00490"/>
+ <Glyph value="glyph00491"/>
+ <Glyph value="glyph00492"/>
+ <Glyph value="glyph00493"/>
+ <Glyph value="glyph00494"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="35"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ <ChainContextSubst index="1" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="tah-ar.init"/>
+ <Glyph value="lam-ar.init"/>
+ <Glyph value="lam-ar.init.hah"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=1 -->
+ <LookAheadCoverage index="0">
+ <Glyph value="glyph00495"/>
+ <Glyph value="glyph00496"/>
+ <Glyph value="glyph00497"/>
+ <Glyph value="glyph00498"/>
+ <Glyph value="glyph00499"/>
+ <Glyph value="glyph00500"/>
+ <Glyph value="glyph00501"/>
+ <Glyph value="glyph00502"/>
+ <Glyph value="glyph00503"/>
+ <Glyph value="glyph00504"/>
+ <Glyph value="glyph00505"/>
+ <Glyph value="glyph00506"/>
+ <Glyph value="glyph00507"/>
+ <Glyph value="glyph00508"/>
+ <Glyph value="glyph00509"/>
+ <Glyph value="glyph00510"/>
+ <Glyph value="glyph00511"/>
+ <Glyph value="glyph00512"/>
+ <Glyph value="glyph00513"/>
+ <Glyph value="glyph00514"/>
+ <Glyph value="glyph00515"/>
+ <Glyph value="glyph00516"/>
+ <Glyph value="glyph00517"/>
+ <Glyph value="glyph00518"/>
+ <Glyph value="glyph00519"/>
+ <Glyph value="glyph00520"/>
+ <Glyph value="glyph00521"/>
+ <Glyph value="glyph00522"/>
+ <Glyph value="glyph00523"/>
+ <Glyph value="glyph00524"/>
+ <Glyph value="glyph00525"/>
+ <Glyph value="glyph00526"/>
+ <Glyph value="glyph00527"/>
+ <Glyph value="glyph00528"/>
+ <Glyph value="glyph00529"/>
+ <Glyph value="glyph00530"/>
+ <Glyph value="glyph00531"/>
+ <Glyph value="glyph00532"/>
+ <Glyph value="glyph00533"/>
+ <Glyph value="glyph00534"/>
+ <Glyph value="glyph00535"/>
+ <Glyph value="glyph00536"/>
+ </LookAheadCoverage>
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="36"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ <ChainContextSubst index="2" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="glyph00470"/>
+ <Glyph value="glyph00479"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="35"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ <ChainContextSubst index="3" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="glyph00512"/>
+ <Glyph value="glyph00521"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="35"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ <ChainContextSubst index="4" Format="3">
+ <!-- BacktrackGlyphCount=0 -->
+ <!-- InputGlyphCount=1 -->
+ <InputCoverage index="0">
+ <Glyph value="glyph00453"/>
+ <Glyph value="glyph00454"/>
+ <Glyph value="glyph00455"/>
+ <Glyph value="glyph00456"/>
+ <Glyph value="glyph00457"/>
+ <Glyph value="glyph00458"/>
+ <Glyph value="glyph00459"/>
+ <Glyph value="glyph00460"/>
+ <Glyph value="glyph00461"/>
+ <Glyph value="glyph00462"/>
+ <Glyph value="glyph00463"/>
+ <Glyph value="glyph00464"/>
+ <Glyph value="glyph00465"/>
+ <Glyph value="glyph00466"/>
+ <Glyph value="glyph00467"/>
+ <Glyph value="glyph00468"/>
+ <Glyph value="glyph00469"/>
+ <Glyph value="glyph00470"/>
+ <Glyph value="glyph00471"/>
+ <Glyph value="glyph00472"/>
+ <Glyph value="glyph00473"/>
+ <Glyph value="glyph00474"/>
+ <Glyph value="glyph00475"/>
+ <Glyph value="glyph00476"/>
+ <Glyph value="glyph00477"/>
+ <Glyph value="glyph00478"/>
+ <Glyph value="glyph00479"/>
+ <Glyph value="glyph00480"/>
+ <Glyph value="glyph00481"/>
+ <Glyph value="glyph00482"/>
+ <Glyph value="glyph00483"/>
+ <Glyph value="glyph00484"/>
+ <Glyph value="glyph00485"/>
+ <Glyph value="glyph00486"/>
+ <Glyph value="glyph00487"/>
+ <Glyph value="glyph00488"/>
+ <Glyph value="glyph00489"/>
+ <Glyph value="glyph00490"/>
+ <Glyph value="glyph00491"/>
+ <Glyph value="glyph00492"/>
+ <Glyph value="glyph00493"/>
+ <Glyph value="glyph00494"/>
+ <Glyph value="glyph00495"/>
+ <Glyph value="glyph00496"/>
+ <Glyph value="glyph00497"/>
+ <Glyph value="glyph00498"/>
+ <Glyph value="glyph00499"/>
+ <Glyph value="glyph00500"/>
+ <Glyph value="glyph00501"/>
+ <Glyph value="glyph00502"/>
+ <Glyph value="glyph00503"/>
+ <Glyph value="glyph00504"/>
+ <Glyph value="glyph00505"/>
+ <Glyph value="glyph00506"/>
+ <Glyph value="glyph00507"/>
+ <Glyph value="glyph00508"/>
+ <Glyph value="glyph00509"/>
+ <Glyph value="glyph00510"/>
+ <Glyph value="glyph00511"/>
+ <Glyph value="glyph00512"/>
+ <Glyph value="glyph00513"/>
+ <Glyph value="glyph00514"/>
+ <Glyph value="glyph00515"/>
+ <Glyph value="glyph00516"/>
+ <Glyph value="glyph00517"/>
+ <Glyph value="glyph00518"/>
+ <Glyph value="glyph00519"/>
+ <Glyph value="glyph00520"/>
+ <Glyph value="glyph00521"/>
+ <Glyph value="glyph00522"/>
+ <Glyph value="glyph00523"/>
+ <Glyph value="glyph00524"/>
+ <Glyph value="glyph00525"/>
+ <Glyph value="glyph00526"/>
+ <Glyph value="glyph00527"/>
+ <Glyph value="glyph00528"/>
+ <Glyph value="glyph00529"/>
+ <Glyph value="glyph00530"/>
+ <Glyph value="glyph00531"/>
+ <Glyph value="glyph00532"/>
+ <Glyph value="glyph00533"/>
+ <Glyph value="glyph00534"/>
+ <Glyph value="glyph00535"/>
+ <Glyph value="glyph00536"/>
+ </InputCoverage>
+ <!-- LookAheadGlyphCount=0 -->
+ <!-- SubstCount=1 -->
+ <SubstLookupRecord index="0">
+ <SequenceIndex value="0"/>
+ <LookupListIndex value="36"/>
+ </SubstLookupRecord>
+ </ChainContextSubst>
+ </Lookup>
+ <Lookup index="35">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="glyph00470" out="tah-ar.medi.short"/>
+ <Substitution in="glyph00479" out="lam-ar.medi.short"/>
+ <Substitution in="glyph00512" out="tah-ar.medi.short2"/>
+ <Substitution in="glyph00521" out="lam-ar.medi.short2"/>
+ <Substitution in="lam-ar.init" out="lam-ar.init.short"/>
+ <Substitution in="lam-ar.init.hah" out="lam-ar.init.hah2"/>
+ <Substitution in="tah-ar.init" out="tah-ar.init.short"/>
+ </SingleSubst>
+ </Lookup>
+ <Lookup index="36">
+ <LookupType value="1"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <SingleSubst index="0">
+ <Substitution in="glyph00453" out="behDotless-ar.medi"/>
+ <Substitution in="glyph00454" out="behDotless-ar.medi.1"/>
+ <Substitution in="glyph00455" out="behDotless-ar.medi.high"/>
+ <Substitution in="glyph00456" out="behDotless-ar.medi.high.1"/>
+ <Substitution in="glyph00457" out="behDotless-ar.medi.yeh"/>
+ <Substitution in="glyph00458" out="hah-ar.medi"/>
+ <Substitution in="glyph00459" out="hah-ar.medi.1"/>
+ <Substitution in="glyph00460" out="hah-ar.medi.2"/>
+ <Substitution in="glyph00461" out="hah-ar.medi.3"/>
+ <Substitution in="glyph00462" out="seen-ar.medi"/>
+ <Substitution in="glyph00463" out="seen-ar.medi.1"/>
+ <Substitution in="glyph00464" out="seen-ar.medi.2"/>
+ <Substitution in="glyph00465" out="seen-ar.medi.3"/>
+ <Substitution in="glyph00466" out="seen-ar.medi.4"/>
+ <Substitution in="glyph00467" out="seen-ar.medi.5"/>
+ <Substitution in="glyph00468" out="seen-ar.medi.6"/>
+ <Substitution in="glyph00469" out="sad-ar.medi"/>
+ <Substitution in="glyph00470" out="tah-ar.medi"/>
+ <Substitution in="glyph00471" out="tah-ar.medi.short"/>
+ <Substitution in="glyph00472" out="tah-ar.medi.short2"/>
+ <Substitution in="glyph00473" out="ain-ar.medi"/>
+ <Substitution in="glyph00474" out="fehDotless-ar.medi"/>
+ <Substitution in="glyph00475" out="fehDotless-ar.medi.1"/>
+ <Substitution in="glyph00476" out="kaf-ar.medi"/>
+ <Substitution in="glyph00477" out="kaf-ar.medi.1"/>
+ <Substitution in="glyph00478" out="kaf-ar.medi.2"/>
+ <Substitution in="glyph00479" out="lam-ar.medi"/>
+ <Substitution in="glyph00480" out="lam-ar.medi.lellah"/>
+ <Substitution in="glyph00481" out="lam-ar.medi.short"/>
+ <Substitution in="glyph00482" out="lam-ar.medi.short2"/>
+ <Substitution in="glyph00483" out="lam-ar.medi.yeh"/>
+ <Substitution in="glyph00484" out="meem-ar.medi"/>
+ <Substitution in="glyph00485" out="meem-ar.medi.1"/>
+ <Substitution in="glyph00486" out="heh-ar.medi"/>
+ <Substitution in="glyph00487" out="heh-ar.medi.1"/>
+ <Substitution in="glyph00488" out="heh-ar.medi.2"/>
+ <Substitution in="glyph00489" out="heh-ar.medi.3"/>
+ <Substitution in="glyph00490" out="heh-ar.medi.4"/>
+ <Substitution in="glyph00491" out="heh-ar.medi.5"/>
+ <Substitution in="glyph00492" out="heh-ar.medi.6"/>
+ <Substitution in="glyph00493" out="heh-ar.medi.7"/>
+ <Substitution in="glyph00494" out="kashida-ar"/>
+ <Substitution in="glyph00495" out="behDotless-ar.medi"/>
+ <Substitution in="glyph00496" out="behDotless-ar.medi.1"/>
+ <Substitution in="glyph00497" out="behDotless-ar.medi.high"/>
+ <Substitution in="glyph00498" out="behDotless-ar.medi.high.1"/>
+ <Substitution in="glyph00499" out="behDotless-ar.medi.yeh"/>
+ <Substitution in="glyph00500" out="hah-ar.medi"/>
+ <Substitution in="glyph00501" out="hah-ar.medi.1"/>
+ <Substitution in="glyph00502" out="hah-ar.medi.2"/>
+ <Substitution in="glyph00503" out="hah-ar.medi.3"/>
+ <Substitution in="glyph00504" out="seen-ar.medi"/>
+ <Substitution in="glyph00505" out="seen-ar.medi.1"/>
+ <Substitution in="glyph00506" out="seen-ar.medi.2"/>
+ <Substitution in="glyph00507" out="seen-ar.medi.3"/>
+ <Substitution in="glyph00508" out="seen-ar.medi.4"/>
+ <Substitution in="glyph00509" out="seen-ar.medi.5"/>
+ <Substitution in="glyph00510" out="seen-ar.medi.6"/>
+ <Substitution in="glyph00511" out="sad-ar.medi"/>
+ <Substitution in="glyph00512" out="tah-ar.medi"/>
+ <Substitution in="glyph00513" out="tah-ar.medi.short"/>
+ <Substitution in="glyph00514" out="tah-ar.medi.short2"/>
+ <Substitution in="glyph00515" out="ain-ar.medi"/>
+ <Substitution in="glyph00516" out="fehDotless-ar.medi"/>
+ <Substitution in="glyph00517" out="fehDotless-ar.medi.1"/>
+ <Substitution in="glyph00518" out="kaf-ar.medi"/>
+ <Substitution in="glyph00519" out="kaf-ar.medi.1"/>
+ <Substitution in="glyph00520" out="kaf-ar.medi.2"/>
+ <Substitution in="glyph00521" out="lam-ar.medi"/>
+ <Substitution in="glyph00522" out="lam-ar.medi.lellah"/>
+ <Substitution in="glyph00523" out="lam-ar.medi.short"/>
+ <Substitution in="glyph00524" out="lam-ar.medi.short2"/>
+ <Substitution in="glyph00525" out="lam-ar.medi.yeh"/>
+ <Substitution in="glyph00526" out="meem-ar.medi"/>
+ <Substitution in="glyph00527" out="meem-ar.medi.1"/>
+ <Substitution in="glyph00528" out="heh-ar.medi"/>
+ <Substitution in="glyph00529" out="heh-ar.medi.1"/>
+ <Substitution in="glyph00530" out="heh-ar.medi.2"/>
+ <Substitution in="glyph00531" out="heh-ar.medi.3"/>
+ <Substitution in="glyph00532" out="heh-ar.medi.4"/>
+ <Substitution in="glyph00533" out="heh-ar.medi.5"/>
+ <Substitution in="glyph00534" out="heh-ar.medi.6"/>
+ <Substitution in="glyph00535" out="heh-ar.medi.7"/>
+ <Substitution in="glyph00536" out="kashida-ar"/>
+ <Substitution in="lam-ar.init" out="lam-ar.init.short2"/>
+ <Substitution in="lam-ar.init.hah" out="lam-ar.init.hah2"/>
+ <Substitution in="tah-ar.init" out="tah-ar.init.short2"/>
+ </SingleSubst>
+ </Lookup>
+ </LookupList>
+ </GSUB>
+
+ <hmtx>
+ <mtx name=".notdef" width="330" lsb="40"/>
+ <mtx name="a" width="240" lsb="0"/>
+ <mtx name="ain-ar" width="680" lsb="0"/>
+ <mtx name="ain-ar.1" width="529" lsb="0"/>
+ <mtx name="ain-ar.2" width="529" lsb="0"/>
+ <mtx name="ain-ar.3" width="330" lsb="0"/>
+ <mtx name="ain-ar.fina" width="304" lsb="0"/>
+ <mtx name="ain-ar.init" width="330" lsb="-20"/>
+ <mtx name="ain-ar.init.1" width="280" lsb="-20"/>
+ <mtx name="ain-ar.medi" width="242" lsb="-20"/>
+ <mtx name="alef-ar" width="360" lsb="0"/>
+ <mtx name="alef-ar.1" width="200" lsb="0"/>
+ <mtx name="alef-ar.2" width="280" lsb="0"/>
+ <mtx name="alef-ar.3" width="120" lsb="-40"/>
+ <mtx name="alef-ar.fina" width="120" lsb="0"/>
+ <mtx name="alefHamzaabove-ar" width="360" lsb="0"/>
+ <mtx name="alefHamzabelow-ar" width="360" lsb="0"/>
+ <mtx name="alefMadda-ar" width="360" lsb="0"/>
+ <mtx name="alefMaksura-ar" width="247" lsb="-33"/>
+ <mtx name="alefMaksura-ar.1" width="247" lsb="-33"/>
+ <mtx name="alefMaksura-ar.2" width="242" lsb="0"/>
+ <mtx name="alefMaksura-ar.3" width="242" lsb="0"/>
+ <mtx name="alefMaksura-ar.4" width="242" lsb="0"/>
+ <mtx name="alefMaksura-ar.5" width="242" lsb="0"/>
+ <mtx name="alefMaksura-ar.6" width="242" lsb="0"/>
+ <mtx name="alefMaksura-ar.fina" width="207" lsb="-33"/>
+ <mtx name="alefMaksura-ar.fina.0" width="207" lsb="-33"/>
+ <mtx name="alefMaksura-ar.fina.1" width="207" lsb="-33"/>
+ <mtx name="alefMaksura-ar.fina.2" width="207" lsb="0"/>
+ <mtx name="alefMaksura-ar.fina.3" width="207" lsb="0"/>
+ <mtx name="alefMaksura-ar.fina.4" width="207" lsb="0"/>
+ <mtx name="alefMaksura-ar.fina.5" width="207" lsb="0"/>
+ <mtx name="alefMaksura-ar.fina.6" width="207" lsb="0"/>
+ <mtx name="alefMaksura-ar.fina.tooth" width="280" lsb="-40"/>
+ <mtx name="alefWasla-ar" width="360" lsb="0"/>
+ <mtx name="b" width="240" lsb="0"/>
+ <mtx name="backslash" width="276" lsb="0"/>
+ <mtx name="beh-ar" width="600" lsb="0"/>
+ <mtx name="behDotless-ar" width="600" lsb="0"/>
+ <mtx name="behDotless-ar.fina" width="600" lsb="0"/>
+ <mtx name="behDotless-ar.fina.1" width="600" lsb="0"/>
+ <mtx name="behDotless-ar.init" width="120" lsb="-20"/>
+ <mtx name="behDotless-ar.init.hah" width="80" lsb="-20"/>
+ <mtx name="behDotless-ar.medi" width="120" lsb="-20"/>
+ <mtx name="behDotless-ar.medi.1" width="150" lsb="-20"/>
+ <mtx name="behDotless-ar.medi.high" width="120" lsb="-20"/>
+ <mtx name="behDotless-ar.medi.high.1" width="120" lsb="-20"/>
+ <mtx name="behDotless-ar.medi.yeh" width="120" lsb="0"/>
+ <mtx name="braceleft" width="208" lsb="0"/>
+ <mtx name="braceright" width="208" lsb="0"/>
+ <mtx name="bracketleft" width="150" lsb="0"/>
+ <mtx name="bracketright" width="150" lsb="0"/>
+ <mtx name="bullet" width="157" lsb="0"/>
+ <mtx name="c" width="180" lsb="0"/>
+ <mtx name="colon" width="120" lsb="0"/>
+ <mtx name="comma" width="120" lsb="0"/>
+ <mtx name="comma-ar" width="120" lsb="0"/>
+ <mtx name="d" width="240" lsb="0"/>
+ <mtx name="dad-ar" width="740" lsb="-130"/>
+ <mtx name="dal-ar" width="600" lsb="0"/>
+ <mtx name="dal-ar.fina" width="600" lsb="0"/>
+ <mtx name="ddal-ar" width="600" lsb="0"/>
+ <mtx name="dotabove-ar" width="0" lsb="0"/>
+ <mtx name="dotabove-ar.alt1" width="0" lsb="0"/>
+ <mtx name="dotbelow-ar" width="0" lsb="0"/>
+ <mtx name="dotbelow-ar.alt1" width="0" lsb="0"/>
+ <mtx name="e" width="240" lsb="0"/>
+ <mtx name="eight" width="250" lsb="0"/>
+ <mtx name="eight-ar" width="250" lsb="0"/>
+ <mtx name="eight-ar.1" width="346" lsb="0"/>
+ <mtx name="eight-ar.2" width="366" lsb="0"/>
+ <mtx name="eight-ar.dnom" width="187" lsb="0"/>
+ <mtx name="eight-ar.numr" width="187" lsb="0"/>
+ <mtx name="eight-persian" width="250" lsb="0"/>
+ <mtx name="eight-persian.dnom" width="187" lsb="0"/>
+ <mtx name="eight-persian.numr" width="187" lsb="0"/>
+ <mtx name="eight.dnom" width="187" lsb="0"/>
+ <mtx name="eight.numr" width="187" lsb="0"/>
+ <mtx name="ellipsis" width="360" lsb="0"/>
+ <mtx name="emdash" width="560" lsb="0"/>
+ <mtx name="empty" width="0" lsb="0"/>
+ <mtx name="endash" width="300" lsb="0"/>
+ <mtx name="exclam" width="144" lsb="0"/>
+ <mtx name="exclamdown" width="144" lsb="0"/>
+ <mtx name="f" width="120" lsb="-45"/>
+ <mtx name="feh-ar" width="613" lsb="0"/>
+ <mtx name="fehAfrican-ar" width="613" lsb="0"/>
+ <mtx name="fehDotless-ar" width="613" lsb="0"/>
+ <mtx name="fehDotless-ar.1" width="600" lsb="0"/>
+ <mtx name="fehDotless-ar.2" width="653" lsb="0"/>
+ <mtx name="fehDotless-ar.3" width="640" lsb="0"/>
+ <mtx name="fehDotless-ar.fina" width="613" lsb="0"/>
+ <mtx name="fehDotless-ar.fina.1" width="600" lsb="0"/>
+ <mtx name="fehDotless-ar.fina.2" width="653" lsb="0"/>
+ <mtx name="fehDotless-ar.fina.3" width="640" lsb="0"/>
+ <mtx name="fehDotless-ar.init" width="253" lsb="-20"/>
+ <mtx name="fehDotless-ar.init.1" width="240" lsb="-20"/>
+ <mtx name="fehDotless-ar.medi" width="248" lsb="-20"/>
+ <mtx name="fehDotless-ar.medi.1" width="240" lsb="-20"/>
+ <mtx name="fehDotmovedbelow-ar" width="613" lsb="0"/>
+ <mtx name="five" width="250" lsb="0"/>
+ <mtx name="five-ar" width="250" lsb="0"/>
+ <mtx name="five-ar.dnom" width="187" lsb="0"/>
+ <mtx name="five-ar.numr" width="187" lsb="0"/>
+ <mtx name="five-persian" width="250" lsb="0"/>
+ <mtx name="five-persian.dnom" width="187" lsb="0"/>
+ <mtx name="five-persian.numr" width="187" lsb="0"/>
+ <mtx name="five.dnom" width="187" lsb="0"/>
+ <mtx name="five.numr" width="187" lsb="0"/>
+ <mtx name="four" width="250" lsb="0"/>
+ <mtx name="four-ar" width="350" lsb="0"/>
+ <mtx name="four-ar.1" width="350" lsb="0"/>
+ <mtx name="four-ar.2" width="250" lsb="0"/>
+ <mtx name="four-ar.dnom" width="257" lsb="0"/>
+ <mtx name="four-ar.numr" width="257" lsb="0"/>
+ <mtx name="four-ar.osf" width="350" lsb="0"/>
+ <mtx name="four-ar.osf.1" width="350" lsb="0"/>
+ <mtx name="four-ar.osf.2" width="250" lsb="0"/>
+ <mtx name="four-persian" width="350" lsb="0"/>
+ <mtx name="four-persian.dnom" width="257" lsb="0"/>
+ <mtx name="four-persian.numr" width="257" lsb="0"/>
+ <mtx name="four-persian.urdu" width="320" lsb="0"/>
+ <mtx name="four.dnom" width="187" lsb="0"/>
+ <mtx name="four.numr" width="187" lsb="0"/>
+ <mtx name="fraction" width="80" lsb="-153"/>
+ <mtx name="fullstop-ar" width="190" lsb="0"/>
+ <mtx name="g" width="240" lsb="-50"/>
+ <mtx name="g.1" width="240" lsb="-50"/>
+ <mtx name="gaf-ar" width="640" lsb="0"/>
+ <mtx name="ghain-ar" width="680" lsb="0"/>
+ <mtx name="guillemetleft" width="204" lsb="0"/>
+ <mtx name="guillemetright" width="204" lsb="0"/>
+ <mtx name="guilsinglleft" width="122" lsb="0"/>
+ <mtx name="guilsinglright" width="122" lsb="0"/>
+ <mtx name="h" width="240" lsb="0"/>
+ <mtx name="h.1" width="240" lsb="0"/>
+ <mtx name="hah-ar" width="640" lsb="0"/>
+ <mtx name="hah-ar.1" width="660" lsb="0"/>
+ <mtx name="hah-ar.2" width="680" lsb="0"/>
+ <mtx name="hah-ar.3" width="490" lsb="0"/>
+ <mtx name="hah-ar.4" width="607" lsb="0"/>
+ <mtx name="hah-ar.5" width="627" lsb="0"/>
+ <mtx name="hah-ar.fina" width="311" lsb="0"/>
+ <mtx name="hah-ar.fina.1" width="490" lsb="0"/>
+ <mtx name="hah-ar.init" width="400" lsb="-20"/>
+ <mtx name="hah-ar.init.1" width="420" lsb="-20"/>
+ <mtx name="hah-ar.init.2" width="440" lsb="-20"/>
+ <mtx name="hah-ar.medi" width="191" lsb="-20"/>
+ <mtx name="hah-ar.medi.1" width="400" lsb="-20"/>
+ <mtx name="hah-ar.medi.2" width="420" lsb="-20"/>
+ <mtx name="hah-ar.medi.3" width="440" lsb="-20"/>
+ <mtx name="hamza-ar" width="296" lsb="40"/>
+ <mtx name="hamzaabove-ar" width="0" lsb="0"/>
+ <mtx name="hamzabelow-ar" width="0" lsb="0"/>
+ <mtx name="heh-ar" width="240" lsb="0"/>
+ <mtx name="heh-ar.1" width="240" lsb="0"/>
+ <mtx name="heh-ar.2" width="240" lsb="0"/>
+ <mtx name="heh-ar.fina" width="240" lsb="0"/>
+ <mtx name="heh-ar.fina.1" width="240" lsb="0"/>
+ <mtx name="heh-ar.fina.2" width="240" lsb="0"/>
+ <mtx name="heh-ar.init" width="240" lsb="-50"/>
+ <mtx name="heh-ar.init.1" width="240" lsb="-50"/>
+ <mtx name="heh-ar.init.2" width="240" lsb="-20"/>
+ <mtx name="heh-ar.init.3" width="240" lsb="-20"/>
+ <mtx name="heh-ar.init.4" width="240" lsb="-20"/>
+ <mtx name="heh-ar.init.5" width="240" lsb="-20"/>
+ <mtx name="heh-ar.init.6" width="240" lsb="-20"/>
+ <mtx name="heh-ar.init.7" width="240" lsb="-20"/>
+ <mtx name="heh-ar.medi" width="240" lsb="-50"/>
+ <mtx name="heh-ar.medi.1" width="240" lsb="-50"/>
+ <mtx name="heh-ar.medi.2" width="240" lsb="-20"/>
+ <mtx name="heh-ar.medi.3" width="240" lsb="-20"/>
+ <mtx name="heh-ar.medi.4" width="240" lsb="-20"/>
+ <mtx name="heh-ar.medi.5" width="240" lsb="-20"/>
+ <mtx name="heh-ar.medi.6" width="240" lsb="-20"/>
+ <mtx name="heh-ar.medi.7" width="240" lsb="-20"/>
+ <mtx name="hehDoachashmee-ar" width="240" lsb="-50"/>
+ <mtx name="hehgoal-ar" width="240" lsb="0"/>
+ <mtx name="hehgoalHamzaabove-ar" width="240" lsb="0"/>
+ <mtx name="hyphen" width="170" lsb="0"/>
+ <mtx name="i" width="200" lsb="0"/>
+ <mtx name="j" width="120" lsb="-40"/>
+ <mtx name="jeem-ar" width="640" lsb="0"/>
+ <mtx name="jeh-ar" width="312" lsb="-63"/>
+ <mtx name="k" width="260" lsb="0"/>
+ <mtx name="k.1" width="260" lsb="0"/>
+ <mtx name="kaf-ar" width="640" lsb="0"/>
+ <mtx name="kaf-ar.1" width="640" lsb="0"/>
+ <mtx name="kaf-ar.2" width="640" lsb="0"/>
+ <mtx name="kaf-ar.fina" width="640" lsb="0"/>
+ <mtx name="kaf-ar.fina.1" width="640" lsb="0"/>
+ <mtx name="kaf-ar.fina.2" width="640" lsb="0"/>
+ <mtx name="kaf-ar.init" width="580" lsb="-20"/>
+ <mtx name="kaf-ar.init.1" width="600" lsb="-18"/>
+ <mtx name="kaf-ar.init.2" width="600" lsb="-20"/>
+ <mtx name="kaf-ar.medi" width="580" lsb="-20"/>
+ <mtx name="kaf-ar.medi.1" width="600" lsb="-20"/>
+ <mtx name="kaf-ar.medi.2" width="600" lsb="-18"/>
+ <mtx name="kashida-ar" width="80" lsb="-20"/>
+ <mtx name="keheh-ar" width="640" lsb="0"/>
+ <mtx name="khah-ar" width="640" lsb="0"/>
+ <mtx name="l" width="200" lsb="0"/>
+ <mtx name="lam-ar" width="190" lsb="-130"/>
+ <mtx name="lam-ar.fina" width="190" lsb="-130"/>
+ <mtx name="lam-ar.init" width="120" lsb="-20"/>
+ <mtx name="lam-ar.init.hah" width="80" lsb="-20"/>
+ <mtx name="lam-ar.init.hah2" width="80" lsb="-20"/>
+ <mtx name="lam-ar.init.lellah" width="120" lsb="-20"/>
+ <mtx name="lam-ar.init.short" width="120" lsb="-20"/>
+ <mtx name="lam-ar.init.short2" width="120" lsb="-20"/>
+ <mtx name="lam-ar.medi" width="120" lsb="-20"/>
+ <mtx name="lam-ar.medi.lellah" width="120" lsb="-20"/>
+ <mtx name="lam-ar.medi.short" width="120" lsb="-20"/>
+ <mtx name="lam-ar.medi.short2" width="120" lsb="-20"/>
+ <mtx name="lam-ar.medi.yeh" width="120" lsb="0"/>
+ <mtx name="lam_alef-ar" width="360" lsb="-40"/>
+ <mtx name="lam_alef-ar.1" width="255" lsb="-242"/>
+ <mtx name="lam_alef-ar.2" width="320" lsb="0"/>
+ <mtx name="lam_alef-ar.3" width="320" lsb="0"/>
+ <mtx name="lam_alef-ar.4" width="400" lsb="0"/>
+ <mtx name="lam_alef-ar.5" width="400" lsb="0"/>
+ <mtx name="lam_alef-ar.fina" width="360" lsb="-40"/>
+ <mtx name="lam_alef-ar.fina.1" width="255" lsb="-242"/>
+ <mtx name="lam_alef-ar.fina.2" width="320" lsb="0"/>
+ <mtx name="lam_alef-ar.fina.3" width="320" lsb="0"/>
+ <mtx name="lam_alef-ar.fina.4" width="400" lsb="0"/>
+ <mtx name="lam_alef-ar.fina.5" width="400" lsb="0"/>
+ <mtx name="m" width="360" lsb="0"/>
+ <mtx name="m.1" width="360" lsb="0"/>
+ <mtx name="meem-ar" width="440" lsb="0"/>
+ <mtx name="meem-ar.1" width="280" lsb="0"/>
+ <mtx name="meem-ar.2" width="278" lsb="0"/>
+ <mtx name="meem-ar.fina" width="440" lsb="0"/>
+ <mtx name="meem-ar.fina.1" width="280" lsb="0"/>
+ <mtx name="meem-ar.fina.2" width="278" lsb="0"/>
+ <mtx name="meem-ar.init" width="240" lsb="-20"/>
+ <mtx name="meem-ar.medi" width="240" lsb="-20"/>
+ <mtx name="meem-ar.medi.1" width="240" lsb="-20"/>
+ <mtx name="n" width="240" lsb="0"/>
+ <mtx name="n.1" width="240" lsb="0"/>
+ <mtx name="nine" width="250" lsb="0"/>
+ <mtx name="nine-ar" width="250" lsb="0"/>
+ <mtx name="nine-ar.dnom" width="187" lsb="0"/>
+ <mtx name="nine-ar.numr" width="187" lsb="0"/>
+ <mtx name="nine-ar.osf" width="250" lsb="0"/>
+ <mtx name="nine-persian" width="250" lsb="0"/>
+ <mtx name="nine-persian.dnom" width="187" lsb="0"/>
+ <mtx name="nine-persian.numr" width="187" lsb="0"/>
+ <mtx name="nine.dnom" width="187" lsb="0"/>
+ <mtx name="nine.numr" width="187" lsb="0"/>
+ <mtx name="noon-ar" width="190" lsb="-130"/>
+ <mtx name="noonAfrican-ar" width="190" lsb="-130"/>
+ <mtx name="noonghunna-ar" width="190" lsb="-130"/>
+ <mtx name="noonghunna-ar.fina" width="190" lsb="-130"/>
+ <mtx name="o" width="240" lsb="0"/>
+ <mtx name="one" width="110" lsb="0"/>
+ <mtx name="one-ar" width="110" lsb="0"/>
+ <mtx name="one-ar.dnom" width="89" lsb="0"/>
+ <mtx name="one-ar.numr" width="89" lsb="0"/>
+ <mtx name="one-ar.osf" width="110" lsb="0"/>
+ <mtx name="one-persian" width="110" lsb="0"/>
+ <mtx name="one-persian.dnom" width="89" lsb="0"/>
+ <mtx name="one-persian.numr" width="89" lsb="0"/>
+ <mtx name="one.dnom" width="89" lsb="0"/>
+ <mtx name="one.numr" width="89" lsb="0"/>
+ <mtx name="p" width="240" lsb="0"/>
+ <mtx name="p.1" width="240" lsb="0"/>
+ <mtx name="parenleft" width="162" lsb="0"/>
+ <mtx name="parenright" width="162" lsb="0"/>
+ <mtx name="peh-ar" width="600" lsb="0"/>
+ <mtx name="percent" width="276" lsb="0"/>
+ <mtx name="percent-ar" width="276" lsb="0"/>
+ <mtx name="period" width="120" lsb="0"/>
+ <mtx name="periodcentered" width="120" lsb="0"/>
+ <mtx name="q" width="240" lsb="0"/>
+ <mtx name="q.1" width="240" lsb="0"/>
+ <mtx name="qaf-ar" width="296" lsb="-64"/>
+ <mtx name="qafAfrican-ar" width="296" lsb="-64"/>
+ <mtx name="qafDotabove-ar" width="296" lsb="-64"/>
+ <mtx name="qafDotless-ar" width="296" lsb="-64"/>
+ <mtx name="qafDotless-ar.fina" width="256" lsb="-64"/>
+ <mtx name="question" width="270" lsb="0"/>
+ <mtx name="question-ar" width="270" lsb="0"/>
+ <mtx name="questiondown" width="270" lsb="0"/>
+ <mtx name="quotedbl" width="160" lsb="0"/>
+ <mtx name="quotedblbase" width="180" lsb="0"/>
+ <mtx name="quotedblleft" width="180" lsb="0"/>
+ <mtx name="quotedblright" width="180" lsb="0"/>
+ <mtx name="quoteleft" width="115" lsb="0"/>
+ <mtx name="quoteright" width="115" lsb="0"/>
+ <mtx name="quotesinglbase" width="115" lsb="0"/>
+ <mtx name="quotesingle" width="80" lsb="0"/>
+ <mtx name="r" width="217" lsb="0"/>
+ <mtx name="r.1" width="217" lsb="0"/>
+ <mtx name="r.2" width="217" lsb="0"/>
+ <mtx name="reh-ar" width="312" lsb="-63"/>
+ <mtx name="reh-ar.1" width="312" lsb="-63"/>
+ <mtx name="reh-ar.2" width="400" lsb="0"/>
+ <mtx name="reh-ar.3" width="400" lsb="0"/>
+ <mtx name="reh-ar.fina" width="283" lsb="-63"/>
+ <mtx name="reh-ar.fina.1" width="283" lsb="-63"/>
+ <mtx name="rreh-ar" width="312" lsb="-63"/>
+ <mtx name="s" width="238" lsb="0"/>
+ <mtx name="sad-ar" width="740" lsb="-130"/>
+ <mtx name="sad-ar.1" width="740" lsb="-130"/>
+ <mtx name="sad-ar.fina" width="740" lsb="-130"/>
+ <mtx name="sad-ar.fina.1" width="740" lsb="-130"/>
+ <mtx name="sad-ar.init" width="670" lsb="-20"/>
+ <mtx name="sad-ar.medi" width="670" lsb="-20"/>
+ <mtx name="seen-ar" width="430" lsb="-130"/>
+ <mtx name="seen-ar.1" width="430" lsb="-130"/>
+ <mtx name="seen-ar.2" width="430" lsb="-130"/>
+ <mtx name="seen-ar.3" width="430" lsb="-130"/>
+ <mtx name="seen-ar.4" width="430" lsb="-130"/>
+ <mtx name="seen-ar.5" width="430" lsb="-130"/>
+ <mtx name="seen-ar.6" width="370" lsb="-130"/>
+ <mtx name="seen-ar.fina" width="430" lsb="-130"/>
+ <mtx name="seen-ar.fina.1" width="430" lsb="-130"/>
+ <mtx name="seen-ar.fina.2" width="430" lsb="-130"/>
+ <mtx name="seen-ar.fina.3" width="430" lsb="-130"/>
+ <mtx name="seen-ar.fina.4" width="430" lsb="-130"/>
+ <mtx name="seen-ar.fina.5" width="430" lsb="-130"/>
+ <mtx name="seen-ar.init" width="360" lsb="-20"/>
+ <mtx name="seen-ar.init.1" width="360" lsb="-20"/>
+ <mtx name="seen-ar.init.2" width="360" lsb="-20"/>
+ <mtx name="seen-ar.init.3" width="360" lsb="-20"/>
+ <mtx name="seen-ar.init.4" width="360" lsb="-20"/>
+ <mtx name="seen-ar.init.5" width="360" lsb="-20"/>
+ <mtx name="seen-ar.init.6" width="340" lsb="-20"/>
+ <mtx name="seen-ar.medi" width="360" lsb="-20"/>
+ <mtx name="seen-ar.medi.1" width="360" lsb="-20"/>
+ <mtx name="seen-ar.medi.2" width="360" lsb="-20"/>
+ <mtx name="seen-ar.medi.3" width="360" lsb="-20"/>
+ <mtx name="seen-ar.medi.4" width="360" lsb="-20"/>
+ <mtx name="seen-ar.medi.5" width="360" lsb="-20"/>
+ <mtx name="seen-ar.medi.6" width="370" lsb="-20"/>
+ <mtx name="semicolon" width="120" lsb="0"/>
+ <mtx name="semicolon-ar" width="120" lsb="0"/>
+ <mtx name="seven" width="250" lsb="0"/>
+ <mtx name="seven-ar" width="250" lsb="0"/>
+ <mtx name="seven-ar.1" width="346" lsb="0"/>
+ <mtx name="seven-ar.2" width="366" lsb="0"/>
+ <mtx name="seven-ar.dnom" width="187" lsb="0"/>
+ <mtx name="seven-ar.numr" width="187" lsb="0"/>
+ <mtx name="seven-persian" width="250" lsb="0"/>
+ <mtx name="seven-persian.dnom" width="187" lsb="0"/>
+ <mtx name="seven-persian.numr" width="187" lsb="0"/>
+ <mtx name="seven-persian.urdu" width="250" lsb="0"/>
+ <mtx name="seven.dnom" width="187" lsb="0"/>
+ <mtx name="seven.numr" width="187" lsb="0"/>
+ <mtx name="sheen-ar" width="430" lsb="-130"/>
+ <mtx name="six" width="250" lsb="0"/>
+ <mtx name="six-ar" width="250" lsb="0"/>
+ <mtx name="six-ar.1" width="250" lsb="0"/>
+ <mtx name="six-ar.dnom" width="187" lsb="0"/>
+ <mtx name="six-ar.numr" width="187" lsb="0"/>
+ <mtx name="six-ar.osf" width="250" lsb="0"/>
+ <mtx name="six-ar.osf.1" width="250" lsb="0"/>
+ <mtx name="six-persian" width="250" lsb="0"/>
+ <mtx name="six-persian.dnom" width="187" lsb="0"/>
+ <mtx name="six-persian.numr" width="187" lsb="0"/>
+ <mtx name="six.dnom" width="187" lsb="0"/>
+ <mtx name="six.numr" width="187" lsb="0"/>
+ <mtx name="slash" width="276" lsb="0"/>
+ <mtx name="space" width="0" lsb="0"/>
+ <mtx name="space.alt" width="40" lsb="0"/>
+ <mtx name="space.latn" width="80" lsb="0"/>
+ <mtx name="t" width="200" lsb="-20"/>
+ <mtx name="tah-ar" width="750" lsb="0"/>
+ <mtx name="tah-ar.fina" width="750" lsb="0"/>
+ <mtx name="tah-ar.init" width="670" lsb="-20"/>
+ <mtx name="tah-ar.init.short" width="670" lsb="-20"/>
+ <mtx name="tah-ar.init.short2" width="670" lsb="-20"/>
+ <mtx name="tah-ar.medi" width="670" lsb="-20"/>
+ <mtx name="tah-ar.medi.short" width="670" lsb="-20"/>
+ <mtx name="tah-ar.medi.short2" width="670" lsb="-20"/>
+ <mtx name="tahabove-ar" width="0" lsb="0"/>
+ <mtx name="tcheh-ar" width="640" lsb="0"/>
+ <mtx name="teh-ar" width="600" lsb="0"/>
+ <mtx name="tehMarbuta-ar" width="240" lsb="0"/>
+ <mtx name="tehMarbutagoal-ar" width="240" lsb="0"/>
+ <mtx name="thal-ar" width="600" lsb="0"/>
+ <mtx name="theh-ar" width="600" lsb="0"/>
+ <mtx name="three" width="250" lsb="0"/>
+ <mtx name="three-ar" width="350" lsb="0"/>
+ <mtx name="three-ar.1" width="350" lsb="0"/>
+ <mtx name="three-ar.dnom" width="257" lsb="0"/>
+ <mtx name="three-ar.numr" width="257" lsb="0"/>
+ <mtx name="three-ar.osf" width="350" lsb="0"/>
+ <mtx name="three-ar.osf.1" width="350" lsb="0"/>
+ <mtx name="three-persian" width="350" lsb="0"/>
+ <mtx name="three-persian.dnom" width="257" lsb="0"/>
+ <mtx name="three-persian.numr" width="257" lsb="0"/>
+ <mtx name="three.dnom" width="187" lsb="0"/>
+ <mtx name="three.numr" width="187" lsb="0"/>
+ <mtx name="threedotsdownbelow-ar" width="0" lsb="0"/>
+ <mtx name="threedotsdownbelow-ar.alt1" width="0" lsb="0"/>
+ <mtx name="threedotsupabove-ar" width="0" lsb="0"/>
+ <mtx name="threedotsupabove-ar.alt1" width="0" lsb="0"/>
+ <mtx name="tteh-ar" width="600" lsb="0"/>
+ <mtx name="two" width="250" lsb="0"/>
+ <mtx name="two-ar" width="250" lsb="0"/>
+ <mtx name="two-ar.1" width="250" lsb="0"/>
+ <mtx name="two-ar.dnom" width="187" lsb="0"/>
+ <mtx name="two-ar.numr" width="187" lsb="0"/>
+ <mtx name="two-ar.osf" width="250" lsb="0"/>
+ <mtx name="two-ar.osf.1" width="250" lsb="0"/>
+ <mtx name="two-persian" width="250" lsb="0"/>
+ <mtx name="two-persian.dnom" width="187" lsb="0"/>
+ <mtx name="two-persian.numr" width="187" lsb="0"/>
+ <mtx name="two.dnom" width="187" lsb="0"/>
+ <mtx name="two.numr" width="187" lsb="0"/>
+ <mtx name="twodotshorizontalabove-ar" width="0" lsb="0"/>
+ <mtx name="twodotshorizontalabove-ar.alt1" width="0" lsb="0"/>
+ <mtx name="twodotshorizontalbelow-ar" width="0" lsb="0"/>
+ <mtx name="twodotshorizontalbelow-ar.alt1" width="0" lsb="0"/>
+ <mtx name="twodotsverticalabove-ar" width="0" lsb="0"/>
+ <mtx name="twodotsverticalabove-ar.alt1" width="0" lsb="0"/>
+ <mtx name="twodotsverticalbelow-ar" width="0" lsb="0"/>
+ <mtx name="twodotsverticalbelow-ar.alt1" width="0" lsb="0"/>
+ <mtx name="u" width="240" lsb="0"/>
+ <mtx name="u.1" width="240" lsb="0"/>
+ <mtx name="underscore" width="130" lsb="-40"/>
+ <mtx name="v" width="214" lsb="-20"/>
+ <mtx name="veh-ar" width="613" lsb="0"/>
+ <mtx name="w" width="351" lsb="-20"/>
+ <mtx name="waw-ar" width="270" lsb="-50"/>
+ <mtx name="waw-ar.1" width="270" lsb="-50"/>
+ <mtx name="waw-ar.2" width="333" lsb="0"/>
+ <mtx name="waw-ar.3" width="320" lsb="0"/>
+ <mtx name="waw-ar.fina" width="280" lsb="-50"/>
+ <mtx name="waw-ar.fina.1" width="270" lsb="-50"/>
+ <mtx name="wawHamzaabove-ar" width="270" lsb="-50"/>
+ <mtx name="x" width="254" lsb="0"/>
+ <mtx name="y" width="240" lsb="-50"/>
+ <mtx name="y.1" width="240" lsb="-50"/>
+ <mtx name="yeh-ar" width="247" lsb="-33"/>
+ <mtx name="yeh-farsi" width="247" lsb="-33"/>
+ <mtx name="yehHamzaabove-ar" width="247" lsb="-33"/>
+ <mtx name="yehbarree-ar" width="242" lsb="0"/>
+ <mtx name="yehbarreeHamzaabove-ar" width="242" lsb="-2"/>
+ <mtx name="z" width="311" lsb="0"/>
+ <mtx name="zah-ar" width="750" lsb="0"/>
+ <mtx name="zain-ar" width="312" lsb="-63"/>
+ <mtx name="zero" width="250" lsb="0"/>
+ <mtx name="zero-ar" width="110" lsb="0"/>
+ <mtx name="zero-ar.dnom" width="89" lsb="0"/>
+ <mtx name="zero-ar.numr" width="89" lsb="0"/>
+ <mtx name="zero-persian" width="110" lsb="0"/>
+ <mtx name="zero-persian.dnom" width="89" lsb="0"/>
+ <mtx name="zero-persian.numr" width="89" lsb="0"/>
+ <mtx name="zero.dnom" width="187" lsb="0"/>
+ <mtx name="zero.numr" width="187" lsb="0"/>
+ </hmtx>
+
+ <meta>
+ <text tag="dlng">
+ Arab
+ </text>
+ <text tag="slng">
+ Arab
+ </text>
+ </meta>
+
+</ttFont>
diff --git a/Tests/ttLib/removeOverlaps_test.py b/Tests/ttLib/removeOverlaps_test.py
new file mode 100644
index 00000000..1320c9be
--- /dev/null
+++ b/Tests/ttLib/removeOverlaps_test.py
@@ -0,0 +1,51 @@
+import logging
+import pytest
+
+pathops = pytest.importorskip("pathops")
+
+from fontTools.ttLib.removeOverlaps import _simplify, _round_path
+
+
+def test_pathops_simplify_bug_workaround(caplog):
+ # Paths extracted from Noto Sans Ethiopic instance that fails skia-pathops
+ # https://github.com/google/fonts/issues/3365
+ # https://bugs.chromium.org/p/skia/issues/detail?id=11958
+ path = pathops.Path()
+ path.moveTo(550.461, 0)
+ path.lineTo(550.461, 366.308)
+ path.lineTo(713.229, 366.308)
+ path.lineTo(713.229, 0)
+ path.close()
+ path.moveTo(574.46, 0)
+ path.lineTo(574.46, 276.231)
+ path.lineTo(737.768, 276.231)
+ path.quadTo(820.075, 276.231, 859.806, 242.654)
+ path.quadTo(899.537, 209.077, 899.537, 144.154)
+ path.quadTo(899.537, 79, 853.46, 39.5)
+ path.quadTo(807.383, 0, 712.383, 0)
+ path.close()
+
+ # check that it fails without workaround
+ with pytest.raises(pathops.PathOpsError):
+ pathops.simplify(path)
+
+ # check our workaround works (but with a warning)
+ with caplog.at_level(logging.DEBUG, logger="fontTools.ttLib.removeOverlaps"):
+ result = _simplify(path, debugGlyphName="a")
+
+ assert "skia-pathops failed to simplify 'a' with float coordinates" in caplog.text
+
+ expected = pathops.Path()
+ expected.moveTo(550, 0)
+ expected.lineTo(550, 366)
+ expected.lineTo(713, 366)
+ expected.lineTo(713, 276)
+ expected.lineTo(738, 276)
+ expected.quadTo(820, 276, 860, 243)
+ expected.quadTo(900, 209, 900, 144)
+ expected.quadTo(900, 79, 853, 40)
+ expected.quadTo(807.242, 0.211, 713, 0.001)
+ expected.lineTo(713, 0)
+ expected.close()
+
+ assert expected == _round_path(result, round=lambda v: round(v, 3))
diff --git a/Tests/ttLib/tables/C_O_L_R_test.py b/Tests/ttLib/tables/C_O_L_R_test.py
index 4855f58f..aaf33003 100644
--- a/Tests/ttLib/tables/C_O_L_R_test.py
+++ b/Tests/ttLib/tables/C_O_L_R_test.py
@@ -50,7 +50,9 @@ def diff_binary_fragments(font_bytes, expected_fragments):
for expected_bytes, description in expected_fragments:
actual_bytes = font_bytes[pos : pos + len(expected_bytes)]
if actual_bytes != expected_bytes:
- print(f'{description} (previous "{prev_desc}", actual_bytes: {"".join("%02x" % v for v in actual_bytes)} bytes: {str(font_bytes[pos:pos+16])}')
+ print(
+ f'{description} (previous "{prev_desc}", actual_bytes: {"".join("%02x" % v for v in actual_bytes)} bytes: {str(font_bytes[pos:pos+16])}'
+ )
errors += 1
pos += len(expected_bytes)
prev_desc = description
@@ -102,13 +104,15 @@ COLR_V1_SAMPLE = (
(b"\x00\x01", "Version (1)"),
(b"\x00\x01", "BaseGlyphRecordCount (1)"),
(
- b"\x00\x00\x00\x1a",
- "Offset to BaseGlyphRecordArray from beginning of table (26)",
+ b"\x00\x00\x00\x22",
+ "Offset to BaseGlyphRecordArray from beginning of table (34)",
),
- (b"\x00\x00\x00 ", "Offset to LayerRecordArray from beginning of table (32)"),
+ (b"\x00\x00\x00\x28", "Offset to LayerRecordArray from beginning of table (40)"),
(b"\x00\x03", "LayerRecordCount (3)"),
- (b"\x00\x00\x00,", "Offset to BaseGlyphV1List from beginning of table (44)"),
- (b"\x00\x00\x00\xac", "Offset to LayerV1List from beginning of table (172)"),
+ (b"\x00\x00\x00\x34", "Offset to BaseGlyphList from beginning of table (52)"),
+ (b"\x00\x00\x00\x9f", "Offset to LayerList from beginning of table (159)"),
+ (b"\x00\x00\x01\x62", "Offset to ClipList (354)"),
+ (b"\x00\x00\x00\x00", "Offset to DeltaSetIndexMap (NULL)"),
(b"\x00\x00\x00\x00", "Offset to VarStore (NULL)"),
(b"\x00\x06", "BaseGlyphRecord[0].BaseGlyph (6)"),
(b"\x00\x00", "BaseGlyphRecord[0].FirstLayerIndex (0)"),
@@ -119,92 +123,93 @@ COLR_V1_SAMPLE = (
(b"\x00\x01", "LayerRecord[1].PaletteIndex (1)"),
(b"\x00\t", "LayerRecord[2].LayerGlyph (9)"),
(b"\x00\x02", "LayerRecord[2].PaletteIndex (2)"),
- # BaseGlyphV1List
- (b"\x00\x00\x00\x03", "BaseGlyphV1List.BaseGlyphCount (3)"),
- (b"\x00\n", "BaseGlyphV1List.BaseGlyphV1Record[0].BaseGlyph (10)"),
+ # BaseGlyphList
+ (b"\x00\x00\x00\x03", "BaseGlyphList.BaseGlyphCount (3)"),
+ (b"\x00\n", "BaseGlyphList.BaseGlyphPaintRecord[0].BaseGlyph (10)"),
(
b"\x00\x00\x00\x16",
- "Offset to Paint table from beginning of BaseGlyphV1List (22)",
+ "Offset to Paint table from beginning of BaseGlyphList (22)",
),
- (b"\x00\x0e", "BaseGlyphV1List.BaseGlyphV1Record[1].BaseGlyph (14)"),
+ (b"\x00\x0e", "BaseGlyphList.BaseGlyphPaintRecord[1].BaseGlyph (14)"),
(
b"\x00\x00\x00\x1c",
- "Offset to Paint table from beginning of BaseGlyphV1List (28)",
+ "Offset to Paint table from beginning of BaseGlyphList (28)",
),
- (b"\x00\x0f", "BaseGlyphV1List.BaseGlyphV1Record[2].BaseGlyph (15)"),
+ (b"\x00\x0f", "BaseGlyphList.BaseGlyphPaintRecord[2].BaseGlyph (15)"),
(
- b"\x00\x00\x00\x5b",
- "Offset to Paint table from beginning of BaseGlyphV1List (91)",
+ b"\x00\x00\x00\x4a",
+ "Offset to Paint table from beginning of BaseGlyphList (74)",
),
- # BaseGlyphV1Record[0]
- (b"\x01", "BaseGlyphV1Record[0].Paint.Format (1)"),
- (b"\x04", "BaseGlyphV1Record[0].Paint.NumLayers (4)"),
- (b"\x00\x00\x00\x00", "BaseGlyphV1Record[0].Paint.FirstLayerIndex (0)"),
- # BaseGlyphV1Record[1]
- (b"\x14", "BaseGlyphV1Record[1].Paint.Format (20)"),
- (b"\x00\x00<", "Offset to SourcePaint from beginning of PaintComposite (60)"),
- (b"\x03", "BaseGlyphV1Record[1].Paint.CompositeMode [SRC_OVER] (3)"),
+ # BaseGlyphPaintRecord[0]
+ (b"\x01", "BaseGlyphPaintRecord[0].Paint.Format (1)"),
+ (b"\x04", "BaseGlyphPaintRecord[0].Paint.NumLayers (4)"),
+ (b"\x00\x00\x00\x00", "BaseGlyphPaintRecord[0].Paint.FirstLayerIndex (0)"),
+ # BaseGlyphPaintRecord[1]
+ (b"\x20", "BaseGlyphPaintRecord[1].Paint.Format (32)"),
+ (b"\x00\x00\x0f", "Offset to SourcePaint from beginning of PaintComposite (15)"),
+ (b"\x03", "BaseGlyphPaintRecord[1].Paint.CompositeMode [SRC_OVER] (3)"),
(b"\x00\x00\x08", "Offset to BackdropPaint from beginning of PaintComposite (8)"),
- (b"\x0d", "BaseGlyphV1Record[1].Paint.BackdropPaint.Format (13)"),
- (b"\x00\x00\x34", "Offset to Paint from beginning of PaintVarTransform (52)"),
- (b"\x00\x01\x00\x00\x00\x00\x00\x00", "Affine2x3.xx.value (1.0)"),
- (b"\x00\x00\x00\x00\x00\x00\x00\x00", "Affine2x3.xy.value (0.0)"),
- (b"\x00\x00\x00\x00\x00\x00\x00\x00", "Affine2x3.yx.value (0.0)"),
- (b"\x00\x01\x00\x00\x00\x00\x00\x00", "Affine2x3.yy.value (1.0)"),
- (b"\x01\x2c\x00\x00\x00\x00\x00\x00", "Affine2x3.dx.value (300.0)"),
- (b"\x00\x00\x00\x00\x00\x00\x00\x00", "Affine2x3.dy.value (0.0)"),
- (b"\x0b", "BaseGlyphV1Record[1].Paint.SourcePaint.Format (11)"),
- (b"\x00\n", "BaseGlyphV1Record[1].Paint.SourcePaint.Glyph (10)"),
- # BaseGlyphV1Record[2]
- (b"\x0a", "BaseGlyphV1Record[2].Paint.Format (10)"),
+ (b"\x0d", "BaseGlyphPaintRecord[1].Paint.BackdropPaint.Format (13)"),
+ (b"\x00\x00\x07", "Offset to Paint from beginning of PaintVarTransform (7)"),
+ (b"\x00\x00\x0a", "Offset to VarAffine2x3 from beginning of PaintVarTransform (10)"),
+ (b"\x0b", "BaseGlyphPaintRecord[1].Paint.BackdropPaint.Format (11)"),
+ (b"\x00\x0a", "BaseGlyphPaintRecord[1].Paint.BackdropPaint.Glyph (10)"),
+ (b"\x00\x01\x00\x00", "VarAffine2x3.xx (1.0)"),
+ (b"\x00\x00\x00\x00", "VarAffine2x3.xy (0.0)"),
+ (b"\x00\x00\x00\x00", "VarAffine2x3.yx (0.0)"),
+ (b"\x00\x01\x00\x00", "VarAffine2x3.yy (1.0)"),
+ (b"\x01\x2c\x00\x00", "VarAffine2x3.dx (300.0)"),
+ (b"\x00\x00\x00\x00", "VarAffine2x3.dy (0.0)"),
+ (b"\x00\x00\x00\x00", "VarIndexBase (0)"),
+ (b"\x0a", "BaseGlyphPaintRecord[1].Paint.SourcePaint.Format (10)"),
(b"\x00\x00\x06", "Offset to Paint subtable from beginning of PaintGlyph (6)"),
- (b"\x00\x0b", "BaseGlyphV1Record[2].Paint.Glyph (11)"),
- (b"\x08", "BaseGlyphV1Record[2].Paint.Paint.Format (8)"),
- (b"\x00\x00\x10", "Offset to ColorLine from beginning of PaintSweepGradient (16)"),
+ (b"\x00\x0b", "BaseGlyphPaintRecord[1].Paint.SourcePaint.Glyph (11)"),
+ (b"\x08", "BaseGlyphPaintRecord[1].Paint.SourcePaint.Paint.Format (8)"),
+ (b"\x00\x00\x0c", "Offset to ColorLine from beginning of PaintSweepGradient (12)"),
(b"\x01\x03", "centerX (259)"),
(b"\x01\x2c", "centerY (300)"),
- (b"\x00\x2d\x00\x00", "startAngle (45.0)"),
- (b"\x00\x87\x00\x00", "endAngle (135.0)"),
+ (b"\x10\x00", "startAngle (0.25)"),
+ (b"\x30\x00", "endAngle (0.75)"),
(b"\x00", "ColorLine.Extend (0; pad)"),
(b"\x00\x02", "ColorLine.StopCount (2)"),
(b"\x00\x00", "ColorLine.ColorStop[0].StopOffset (0.0)"),
- (b"\x00\x03", "ColorLine.ColorStop[0].Color.PaletteIndex (3)"),
- (b"@\x00", "ColorLine.ColorStop[0].Color.Alpha (1.0)"),
+ (b"\x00\x03", "ColorLine.ColorStop[0].PaletteIndex (3)"),
+ (b"@\x00", "ColorLine.ColorStop[0].Alpha (1.0)"),
(b"@\x00", "ColorLine.ColorStop[1].StopOffset (1.0)"),
- (b"\x00\x05", "ColorLine.ColorStop[1].Color.PaletteIndex (5)"),
- (b"@\x00", "ColorLine.ColorStop[1].Color.Alpha (1.0)"),
- # LayerV1List
- (b"\x00\x00\x00\x04", "LayerV1List.LayerCount (4)"),
+ (b"\x00\x05", "ColorLine.ColorStop[1].PaletteIndex (5)"),
+ (b"@\x00", "ColorLine.ColorStop[1].Alpha (1.0)"),
+ # LayerList
+ (b"\x00\x00\x00\x04", "LayerList.LayerCount (4)"),
(
b"\x00\x00\x00\x14",
- "First Offset to Paint table from beginning of LayerV1List (20)",
+ "First Offset to Paint table from beginning of LayerList (20)",
),
(
b"\x00\x00\x00\x23",
- "Second Offset to Paint table from beginning of LayerV1List (35)",
+ "Second Offset to Paint table from beginning of LayerList (35)",
),
(
b"\x00\x00\x00\x4e",
- "Third Offset to Paint table from beginning of LayerV1List (78)",
+ "Third Offset to Paint table from beginning of LayerList (78)",
),
(
- b"\x00\x00\x00\xb7",
- "Fourth Offset to Paint table from beginning of LayerV1List (183)",
+ b"\x00\x00\x00\x9e",
+ "Fourth Offset to Paint table from beginning of LayerList (158)",
),
- # PaintGlyph glyph00011
- (b"\x0a", "LayerV1List.Paint[0].Format (10)"),
- (b"\x00\x00\x06", "Offset24 to Paint subtable from beginning of PaintGlyph (6)"),
- (b"\x00\x0b", "LayerV1List.Paint[0].Glyph (glyph00011)"),
+ # BaseGlyphPaintRecord[2]
+ (b"\x0a", "BaseGlyphPaintRecord[2].Paint.Format (10)"),
+ (b"\x00\x00\x06", "Offset to Paint subtable from beginning of PaintGlyph (6)"),
+ (b"\x00\x0b", "BaseGlyphPaintRecord[2].Paint.Glyph (11)"),
# PaintVarSolid
- (b"\x03", "LayerV1List.Paint[0].Paint.Format (3)"),
- (b"\x00\x02", "Paint.Color.PaletteIndex (2)"),
- (b" \x00", "Paint.Color.Alpha.value (0.5)"),
- (b"\x00\x00\x00\x00", "Paint.Color.Alpha.varIdx (0)"),
+ (b"\x03", "LayerList.Paint[0].Paint.Format (3)"),
+ (b"\x00\x02", "Paint.PaletteIndex (2)"),
+ (b" \x00", "Paint.Alpha.value (0.5)"),
+ (b"\x00\x00\x00\x06", "VarIndexBase (6)"),
# PaintGlyph glyph00012
- (b"\x0a", "LayerV1List.Paint[1].Format (10)"),
+ (b"\x0a", "LayerList.Paint[1].Format (10)"),
(b"\x00\x00\x06", "Offset to Paint subtable from beginning of PaintGlyph (6)"),
- (b"\x00\x0c", "LayerV1List.Paint[1].Glyph (glyph00012)"),
- (b"\x04", "LayerV1List.Paint[1].Paint.Format (4)"),
+ (b"\x00\x0c", "LayerList.Paint[1].Glyph (glyph00012)"),
+ (b"\x04", "LayerList.Paint[1].Paint.Format (4)"),
(b"\x00\x00\x10", "Offset to ColorLine from beginning of PaintLinearGradient (16)"),
(b"\x00\x01", "Paint.x0 (1)"),
(b"\x00\x02", "Paint.y0 (2)"),
@@ -215,68 +220,105 @@ COLR_V1_SAMPLE = (
(b"\x01", "ColorLine.Extend (1; repeat)"),
(b"\x00\x03", "ColorLine.StopCount (3)"),
(b"\x00\x00", "ColorLine.ColorStop[0].StopOffset (0.0)"),
- (b"\x00\x03", "ColorLine.ColorStop[0].Color.PaletteIndex (3)"),
- (b"@\x00", "ColorLine.ColorStop[0].Color.Alpha (1.0)"),
+ (b"\x00\x03", "ColorLine.ColorStop[0].PaletteIndex (3)"),
+ (b"@\x00", "ColorLine.ColorStop[0].Alpha (1.0)"),
(b" \x00", "ColorLine.ColorStop[1].StopOffset (0.5)"),
- (b"\x00\x04", "ColorLine.ColorStop[1].Color.PaletteIndex (4)"),
- (b"@\x00", "ColorLine.ColorStop[1].Color.Alpha (1.0)"),
+ (b"\x00\x04", "ColorLine.ColorStop[1].PaletteIndex (4)"),
+ (b"@\x00", "ColorLine.ColorStop[1].Alpha (1.0)"),
(b"@\x00", "ColorLine.ColorStop[2].StopOffset (1.0)"),
- (b"\x00\x05", "ColorLine.ColorStop[2].Color.PaletteIndex (5)"),
- (b"@\x00", "ColorLine.ColorStop[2].Color.Alpha (1.0)"),
+ (b"\x00\x05", "ColorLine.ColorStop[2].PaletteIndex (5)"),
+ (b"@\x00", "ColorLine.ColorStop[2].Alpha (1.0)"),
# PaintGlyph glyph00013
- (b"\x0a", "LayerV1List.Paint[2].Format (10)"),
+ (b"\x0a", "LayerList.Paint[2].Format (10)"),
(b"\x00\x00\x06", "Offset to Paint subtable from beginning of PaintGlyph (6)"),
- (b"\x00\r", "LayerV1List.Paint[2].Glyph (13)"),
- (b"\x0c", "LayerV1List.Paint[2].Paint.Format (12)"),
- (b"\x00\x00\x1c", "Offset to Paint subtable from beginning of PaintTransform (28)"),
+ (b"\x00\x0d", "LayerList.Paint[2].Glyph (13)"),
+ (b"\x0c", "LayerList.Paint[2].Paint.Format (12)"),
+ (b"\x00\x00\x07", "Offset to Paint subtable from beginning of PaintTransform (7)"),
+ (b"\x00\x00\x32", "Offset to Affine2x3 subtable from beginning of PaintTransform (50)"),
+ (b"\x07", "LayerList.Paint[2].Paint.Paint.Format (7)"),
+ (b"\x00\x00\x14", "Offset to ColorLine from beginning of PaintVarRadialGradient (20)"),
+ (b"\x00\x07", "Paint.x0.value (7)"),
+ (b"\x00\x08", "Paint.y0.value (8)"),
+ (b"\x00\t", "Paint.r0.value (9)"),
+ (b"\x00\n", "Paint.x1.value (10)"),
+ (b"\x00\x0b", "Paint.y1.value (11)"),
+ (b"\x00\x0c", "Paint.r1.value (12)"),
+ (b"\xff\xff\xff\xff", "VarIndexBase (0xFFFFFFFF)"),
+ (b"\x00", "ColorLine.Extend (0; pad)"),
+ (b"\x00\x02", "ColorLine.StopCount (2)"),
+ (b"\x00\x00", "ColorLine.ColorStop[0].StopOffset.value (0.0)"),
+ (b"\x00\x06", "ColorLine.ColorStop[0].PaletteIndex (6)"),
+ (b"@\x00", "ColorLine.ColorStop[0].Alpha.value (1.0)"),
+ (b"\xff\xff\xff\xff", "VarIndexBase (0xFFFFFFFF)"),
+ (b"@\x00", "ColorLine.ColorStop[1].StopOffset.value (1.0)"),
+ (b"\x00\x07", "ColorLine.ColorStop[1].PaletteIndex (7)"),
+ (b"\x19\x9a", "ColorLine.ColorStop[1].Alpha.value (0.4)"),
+
+ (b"\x00\x00\x00\x07", "VarIndexBase (7)"),
(b"\xff\xf3\x00\x00", "Affine2x3.xx (-13)"),
(b"\x00\x0e\x00\x00", "Affine2x3.xy (14)"),
(b"\x00\x0f\x00\x00", "Affine2x3.yx (15)"),
(b"\xff\xef\x00\x00", "Affine2x3.yy (-17)"),
(b"\x00\x12\x00\x00", "Affine2x3.yy (18)"),
(b"\x00\x13\x00\x00", "Affine2x3.yy (19)"),
- (b"\x07", "LayerV1List.Paint[2].Paint.Paint.Format (7)"),
- (b"\x00\x00(", "Offset to ColorLine from beginning of PaintVarRadialGradient (40)"),
- (b"\x00\x07\x00\x00\x00\x00", "Paint.x0.value (7)"),
- (b"\x00\x08\x00\x00\x00\x00", "Paint.y0.value (8)"),
- (b"\x00\t\x00\x00\x00\x00", "Paint.r0.value (9)"),
- (b"\x00\n\x00\x00\x00\x00", "Paint.x1.value (10)"),
- (b"\x00\x0b\x00\x00\x00\x00", "Paint.y1.value (11)"),
- (b"\x00\x0c\x00\x00\x00\x00", "Paint.r1.value (12)"),
- (b"\x00", "ColorLine.Extend (0; pad)"),
- (b"\x00\x02", "ColorLine.StopCount (2)"),
- (b"\x00\x00\x00\x00\x00\x00", "ColorLine.ColorStop[0].StopOffset.value (0.0)"),
- (b"\x00\x06", "ColorLine.ColorStop[0].Color.PaletteIndex (6)"),
- (b"@\x00\x00\x00\x00\x00", "ColorLine.ColorStop[0].Color.Alpha.value (1.0)"),
- (b"@\x00\x00\x00\x00\x00", "ColorLine.ColorStop[1].StopOffset.value (1.0)"),
- (b"\x00\x07", "ColorLine.ColorStop[1].Color.PaletteIndex (7)"),
- (b"\x19\x9a\x00\x00\x00\x00", "ColorLine.ColorStop[1].Color.Alpha.value (0.4)"),
+
# PaintTranslate
- (b"\x0e", "LayerV1List.Paint[3].Format (14)"),
- (b"\x00\x00\x0c", "Offset to Paint subtable from beginning of PaintTranslate (12)"),
- (b"\x01\x01\x00\x00", "dx (257)"),
- (b"\x01\x02\x00\x00", "dy (258)"),
- # PaintRotate
- (b"\x10", "LayerV1List.Paint[3].Paint.Format (16)"),
- (b"\x00\x00\x10", "Offset to Paint subtable from beginning of PaintRotate (16)"),
- (b"\x00\x2d\x00\x00", "angle (45)"),
- (b"\x00\xff\x00\x00", "centerX (255)"),
- (b"\x01\x00\x00\x00", "centerY (256)"),
+ (b"\x0e", "LayerList.Paint[3].Format (14)"),
+ (b"\x00\x00\x08", "Offset to Paint subtable from beginning of PaintTranslate (8)"),
+ (b"\x01\x01", "dx (257)"),
+ (b"\x01\x02", "dy (258)"),
+
+ # PaintRotateAroundCenter
+ (b"\x1a", "LayerList.Paint[3].Paint.Format (26)"),
+ (
+ b"\x00\x00\x0a",
+ "Offset to Paint subtable from beginning of PaintRotateAroundCenter (11)",
+ ),
+ (b"\x10\x00", "angle (0.25)"),
+ (b"\x00\xff", "centerX (255)"),
+ (b"\x01\x00", "centerY (256)"),
+
# PaintSkew
- (b"\x12", "LayerV1List.Paint[3].Paint.Paint.Format (18)"),
- (b"\x00\x00\x14", "Offset to Paint subtable from beginning of PaintSkew (20)"),
- (b"\xff\xf5\x00\x00", "xSkewAngle (-11)"),
- (b"\x00\x05\x00\x00", "ySkewAngle (5)"),
- (b"\x00\xfd\x00\x00", "centerX.value (253)"),
- (b"\x00\xfe\x00\x00", "centerY.value (254)"),
+ (b"\x1c", "LayerList.Paint[3].Paint.Paint.Format (28)"),
+ (
+ b"\x00\x00\x08",
+ "Offset to Paint subtable from beginning of PaintSkew (8)",
+ ),
+ (b"\xfc\x17", "xSkewAngle (-0.0611)"),
+ (b"\x01\xc7", "ySkewAngle (0.0278)"),
+
# PaintGlyph
- (b"\x0a", "LayerV1List.Paint[3].Paint.Paint.Paint.Format (10)"),
+ (b"\x0a", "LayerList.Paint[3].Paint.Paint.Paint.Format (10)"),
(b"\x00\x00\x06", "Offset to Paint subtable from beginning of PaintGlyph (6)"),
- (b"\x00\x0b", "LayerV1List.Paint[2].Glyph (11)"),
+ (b"\x00\x0b", "LayerList.Paint[2].Glyph (11)"),
+
# PaintSolid
- (b"\x02", "LayerV1List.Paint[0].Paint.Paint.Paint.Paint.Format (2)"),
- (b"\x00\x02", "Paint.Color.PaletteIndex (2)"),
- (b" \x00", "Paint.Color.Alpha (0.5)"),
+ (b"\x02", "LayerList.Paint[0].Paint.Paint.Paint.Paint.Format (2)"),
+ (b"\x00\x02", "Paint.PaletteIndex (2)"),
+ (b" \x00", "Paint.Alpha (0.5)"),
+
+ # ClipList
+ (b'\x01', "ClipList.Format (1)"),
+ (b'\x00\x00\x00\x02', "ClipList.ClipCount (2)"),
+ (b'\x00\x0a', "ClipRecord[0].StartGlyphID (10)"),
+ (b'\x00\x0a', "ClipRecord[0].EndGlyphID (10)"),
+ (b'\x00\x00\x13', "Offset to ClipBox subtable from beginning of ClipList (19)"),
+ (b'\x00\x0e', "ClipRecord[1].StartGlyphID (14)"),
+ (b'\x00\x0f', "ClipRecord[1].EndGlyphID (15)"),
+ (b'\x00\x00\x20', "Offset to ClipBox subtable from beginning of ClipList (32)"),
+
+ (b'\x02', "ClipBox.Format (2)"),
+ (b'\x00\x00', "ClipBox.xMin (0)"),
+ (b'\x00\x00', "ClipBox.yMin (0)"),
+ (b'\x01\xf4', "ClipBox.xMax (500)"),
+ (b'\x01\xf4', "ClipBox.yMax (500)"),
+ (b'\x00\x00\x00\t', "ClipBox.VarIndexBase (9)"),
+
+ (b'\x01', "ClipBox.Format (1)"),
+ (b'\x00\x00', "ClipBox.xMin (0)"),
+ (b'\x00\x00', "ClipBox.yMin (0)"),
+ (b'\x03\xe8', "ClipBox.xMax (1000)"),
+ (b'\x03\xe8', "ClipBox.yMax (1000)"),
)
COLR_V1_DATA = b"".join(t[0] for t in COLR_V1_SAMPLE)
@@ -306,18 +348,18 @@ COLR_V1_XML = [
" </LayerRecord>",
"</LayerRecordArray>",
"<!-- LayerRecordCount=3 -->",
- "<BaseGlyphV1List>",
+ "<BaseGlyphList>",
" <!-- BaseGlyphCount=3 -->",
- ' <BaseGlyphV1Record index="0">',
+ ' <BaseGlyphPaintRecord index="0">',
' <BaseGlyph value="glyph00010"/>',
' <Paint Format="1"><!-- PaintColrLayers -->',
' <NumLayers value="4"/>',
' <FirstLayerIndex value="0"/>',
" </Paint>",
- " </BaseGlyphV1Record>",
- ' <BaseGlyphV1Record index="1">',
+ " </BaseGlyphPaintRecord>",
+ ' <BaseGlyphPaintRecord index="1">',
' <BaseGlyph value="glyph00014"/>',
- ' <Paint Format="20"><!-- PaintComposite -->',
+ ' <Paint Format="32"><!-- PaintComposite -->',
' <SourcePaint Format="11"><!-- PaintColrGlyph -->',
' <Glyph value="glyph00010"/>',
" </SourcePaint>",
@@ -333,11 +375,12 @@ COLR_V1_XML = [
' <yy value="1.0"/>',
' <dx value="300.0"/>',
' <dy value="0.0"/>',
+ ' <VarIndexBase value="0"/>',
" </Transform>",
" </BackdropPaint>",
" </Paint>",
- " </BaseGlyphV1Record>",
- ' <BaseGlyphV1Record index="2">',
+ " </BaseGlyphPaintRecord>",
+ ' <BaseGlyphPaintRecord index="2">',
' <BaseGlyph value="glyph00015"/>',
' <Paint Format="10"><!-- PaintGlyph -->',
' <Paint Format="8"><!-- PaintSweepGradient -->',
@@ -346,17 +389,13 @@ COLR_V1_XML = [
" <!-- StopCount=2 -->",
' <ColorStop index="0">',
' <StopOffset value="0.0"/>',
- " <Color>",
- ' <PaletteIndex value="3"/>',
- ' <Alpha value="1.0"/>',
- " </Color>",
+ ' <PaletteIndex value="3"/>',
+ ' <Alpha value="1.0"/>',
" </ColorStop>",
' <ColorStop index="1">',
' <StopOffset value="1.0"/>',
- " <Color>",
- ' <PaletteIndex value="5"/>',
- ' <Alpha value="1.0"/>',
- " </Color>",
+ ' <PaletteIndex value="5"/>',
+ ' <Alpha value="1.0"/>',
" </ColorStop>",
" </ColorLine>",
' <centerX value="259"/>',
@@ -366,16 +405,15 @@ COLR_V1_XML = [
" </Paint>",
' <Glyph value="glyph00011"/>',
" </Paint>",
- " </BaseGlyphV1Record>",
- "</BaseGlyphV1List>",
- "<LayerV1List>",
+ " </BaseGlyphPaintRecord>",
+ "</BaseGlyphList>",
+ "<LayerList>",
" <!-- LayerCount=4 -->",
' <Paint index="0" Format="10"><!-- PaintGlyph -->',
' <Paint Format="3"><!-- PaintVarSolid -->',
- " <Color>",
- ' <PaletteIndex value="2"/>',
- ' <Alpha value="0.5"/>',
- " </Color>",
+ ' <PaletteIndex value="2"/>',
+ ' <Alpha value="0.5"/>',
+ ' <VarIndexBase value="6"/>',
" </Paint>",
' <Glyph value="glyph00011"/>',
" </Paint>",
@@ -386,24 +424,18 @@ COLR_V1_XML = [
" <!-- StopCount=3 -->",
' <ColorStop index="0">',
' <StopOffset value="0.0"/>',
- " <Color>",
- ' <PaletteIndex value="3"/>',
- ' <Alpha value="1.0"/>',
- " </Color>",
+ ' <PaletteIndex value="3"/>',
+ ' <Alpha value="1.0"/>',
" </ColorStop>",
' <ColorStop index="1">',
' <StopOffset value="0.5"/>',
- " <Color>",
- ' <PaletteIndex value="4"/>',
- ' <Alpha value="1.0"/>',
- " </Color>",
+ ' <PaletteIndex value="4"/>',
+ ' <Alpha value="1.0"/>',
" </ColorStop>",
' <ColorStop index="2">',
' <StopOffset value="1.0"/>',
- " <Color>",
- ' <PaletteIndex value="5"/>',
- ' <Alpha value="1.0"/>',
- " </Color>",
+ ' <PaletteIndex value="5"/>',
+ ' <Alpha value="1.0"/>',
" </ColorStop>",
" </ColorLine>",
' <x0 value="1"/>',
@@ -423,17 +455,15 @@ COLR_V1_XML = [
" <!-- StopCount=2 -->",
' <ColorStop index="0">',
' <StopOffset value="0.0"/>',
- " <Color>",
- ' <PaletteIndex value="6"/>',
- ' <Alpha value="1.0"/>',
- " </Color>",
+ ' <PaletteIndex value="6"/>',
+ ' <Alpha value="1.0"/>',
+ " <VarIndexBase/>",
" </ColorStop>",
' <ColorStop index="1">',
' <StopOffset value="1.0"/>',
- " <Color>",
- ' <PaletteIndex value="7"/>',
- ' <Alpha value="0.4"/>',
- " </Color>",
+ ' <PaletteIndex value="7"/>',
+ ' <Alpha value="0.4"/>',
+ ' <VarIndexBase value="7"/>',
" </ColorStop>",
" </ColorLine>",
' <x0 value="7"/>',
@@ -442,6 +472,7 @@ COLR_V1_XML = [
' <x1 value="10"/>',
' <y1 value="11"/>',
' <r1 value="12"/>',
+ " <VarIndexBase/>",
" </Paint>",
" <Transform>",
' <xx value="-13.0"/>',
@@ -455,30 +486,99 @@ COLR_V1_XML = [
' <Glyph value="glyph00013"/>',
" </Paint>",
' <Paint index="3" Format="14"><!-- PaintTranslate -->',
- ' <Paint Format="16"><!-- PaintRotate -->',
- ' <Paint Format="18"><!-- PaintSkew -->',
+ ' <Paint Format="26"><!-- PaintRotateAroundCenter -->',
+ ' <Paint Format="28"><!-- PaintSkew -->',
' <Paint Format="10"><!-- PaintGlyph -->',
' <Paint Format="2"><!-- PaintSolid -->',
- " <Color>",
- ' <PaletteIndex value="2"/>',
- ' <Alpha value="0.5"/>',
- " </Color>",
+ ' <PaletteIndex value="2"/>',
+ ' <Alpha value="0.5"/>',
" </Paint>",
' <Glyph value="glyph00011"/>',
" </Paint>",
' <xSkewAngle value="-11.0"/>',
' <ySkewAngle value="5.0"/>',
- ' <centerX value="253.0"/>',
- ' <centerY value="254.0"/>',
" </Paint>",
' <angle value="45.0"/>',
- ' <centerX value="255.0"/>',
- ' <centerY value="256.0"/>',
+ ' <centerX value="255"/>',
+ ' <centerY value="256"/>',
" </Paint>",
- ' <dx value="257.0"/>',
- ' <dy value="258.0"/>',
+ ' <dx value="257"/>',
+ ' <dy value="258"/>',
" </Paint>",
- "</LayerV1List>",
+ "</LayerList>",
+ '<ClipList Format="1">',
+ " <Clip>",
+ ' <Glyph value="glyph00010"/>',
+ ' <ClipBox Format="2">',
+ ' <xMin value="0"/>',
+ ' <yMin value="0"/>',
+ ' <xMax value="500"/>',
+ ' <yMax value="500"/>',
+ ' <VarIndexBase value="9"/>',
+ " </ClipBox>",
+ " </Clip>",
+ " <Clip>",
+ ' <Glyph value="glyph00014"/>',
+ ' <Glyph value="glyph00015"/>',
+ ' <ClipBox Format="1">',
+ ' <xMin value="0"/>',
+ ' <yMin value="0"/>',
+ ' <xMax value="1000"/>',
+ ' <yMax value="1000"/>',
+ " </ClipBox>",
+ " </Clip>",
+ "</ClipList>",
+]
+
+COLR_V1_VAR_XML = [
+ '<VarIndexMap Format="0">',
+ ' <Map index="0" outer="1" inner="1"/>',
+ ' <Map index="1" outer="1" inner="0"/>',
+ ' <Map index="2" outer="1" inner="0"/>',
+ ' <Map index="3" outer="1" inner="1"/>',
+ ' <Map index="4" outer="1" inner="0"/>',
+ ' <Map index="5" outer="1" inner="0"/>',
+ ' <Map index="6" outer="0" inner="2"/>',
+ ' <Map index="7" outer="0" inner="0"/>',
+ ' <Map index="8" outer="0" inner="1"/>',
+ ' <Map index="9" outer="1" inner="0"/>',
+ ' <Map index="10" outer="1" inner="0"/>',
+ ' <Map index="11" outer="0" inner="3"/>',
+ ' <Map index="12" outer="0" inner="3"/>',
+ "</VarIndexMap>",
+ '<VarStore Format="1">',
+ ' <Format value="1"/>',
+ " <VarRegionList>",
+ " <!-- RegionAxisCount=1 -->",
+ " <!-- RegionCount=1 -->",
+ ' <Region index="0">',
+ ' <VarRegionAxis index="0">',
+ ' <StartCoord value="0.0"/>',
+ ' <PeakCoord value="1.0"/>',
+ ' <EndCoord value="1.0"/>',
+ " </VarRegionAxis>",
+ " </Region>",
+ " </VarRegionList>",
+ " <!-- VarDataCount=2 -->",
+ ' <VarData index="0">',
+ " <!-- ItemCount=4 -->",
+ ' <NumShorts value="1"/>',
+ " <!-- VarRegionCount=1 -->",
+ ' <VarRegionIndex index="0" value="0"/>',
+ ' <Item index="0" value="[-3277]"/>',
+ ' <Item index="1" value="[6553]"/>',
+ ' <Item index="2" value="[8192]"/>',
+ ' <Item index="3" value="[500]"/>',
+ " </VarData>",
+ ' <VarData index="1">',
+ " <!-- ItemCount=2 -->",
+ ' <NumShorts value="32769"/>',
+ " <!-- VarRegionCount=1 -->",
+ ' <VarRegionIndex index="0" value="0"/>',
+ ' <Item index="0" value="[0]"/>',
+ ' <Item index="1" value="[65536]"/>',
+ " </VarData>",
+ "</VarStore>",
]
@@ -510,3 +610,16 @@ class COLR_V1_Test(object):
colr = table_C_O_L_R_()
colr.decompile(compiled, font)
assert getXML(colr.toXML, font) == COLR_V1_XML
+
+
+class COLR_V1_Variable_Test(object):
+ def test_round_trip_xml(self, font):
+ colr = table_C_O_L_R_()
+ xml = COLR_V1_XML + COLR_V1_VAR_XML
+ for name, attrs, content in parseXML(xml):
+ colr.fromXML(name, attrs, content, font)
+ compiled = colr.compile(font)
+
+ colr = table_C_O_L_R_()
+ colr.decompile(compiled, font)
+ assert getXML(colr.toXML, font) == xml
diff --git a/Tests/ttLib/tables/M_V_A_R_test.py b/Tests/ttLib/tables/M_V_A_R_test.py
index 3972d8c3..a8b092e0 100644
--- a/Tests/ttLib/tables/M_V_A_R_test.py
+++ b/Tests/ttLib/tables/M_V_A_R_test.py
@@ -8,8 +8,8 @@ import unittest
MVAR_DATA = deHexStr(
'0001 0000 ' # 0: version=1.0
'0000 0008 ' # 4: reserved=0, valueRecordSize=8
- '0007 ' # 8: valueRecordCount=7
- '0044 ' # 10: offsetToItemVariationStore=68
+ '0009 ' # 8: valueRecordCount=9
+ '0054 ' # 10: offsetToItemVariationStore=84
'6861 7363 ' # 12: ValueRecord.valueTag="hasc"
'0000 ' # 16: ValueRecord.deltaSetOuterIndex
'0003 ' # 18: ValueRecord.deltaSetInnerIndex
@@ -31,30 +31,36 @@ MVAR_DATA = deHexStr(
'7370 796F ' # 60: ValueRecord.valueTag="spyo"
'0000 ' # 64: ValueRecord.deltaSetOuterIndex
'0002 ' # 66: ValueRecord.deltaSetInnerIndex
- '0001 ' # 68: VarStore.format=1
- '0000 000C ' # 70: VarStore.offsetToVariationRegionList=12
- '0001 ' # 74: VarStore.itemVariationDataCount=1
- '0000 0016 ' # 76: VarStore.itemVariationDataOffsets[0]=22
- '0001 ' # 80: VarRegionList.axisCount=1
- '0001 ' # 82: VarRegionList.regionCount=1
- '0000 ' # 84: variationRegions[0].regionAxes[0].startCoord=0.0
- '4000 ' # 86: variationRegions[0].regionAxes[0].peakCoord=1.0
- '4000 ' # 88: variationRegions[0].regionAxes[0].endCoord=1.0
- '0004 ' # 90: VarData.ItemCount=4
- '0001 ' # 92: VarData.NumShorts=1
- '0001 ' # 94: VarData.VarRegionCount=1
- '0000 ' # 96: VarData.VarRegionIndex[0]=0
- 'FF38 ' # 98: VarData.deltaSets[0]=-200
- 'FFCE ' # 100: VarData.deltaSets[0]=-50
- '0064 ' # 102: VarData.deltaSets[0]=100
- '00C8 ' # 104: VarData.deltaSets[0]=200
+ '7465 7374 ' # 68: ValueRecord.valueTag="test"
+ '0000 ' # 72: ValueRecord.deltaSetOuterIndex
+ '0002 ' # 74: ValueRecord.deltaSetInnerIndex
+ '7465 7332 ' # 76: ValueRecord.valueTag="tes2"
+ '0000 ' # 78: ValueRecord.deltaSetOuterIndex
+ '0002 ' # 82: ValueRecord.deltaSetInnerIndex
+ '0001 ' # 84: VarStore.format=1
+ '0000 000C ' # 86: VarStore.offsetToVariationRegionList=12
+ '0001 ' # 90: VarStore.itemVariationDataCount=1
+ '0000 0016 ' # 92: VarStore.itemVariationDataOffsets[0]=22
+ '0001 ' # 96: VarRegionList.axisCount=1
+ '0001 ' # 98: VarRegionList.regionCount=1
+ '0000 ' # 100: variationRegions[0].regionAxes[0].startCoord=0.0
+ '4000 ' # 102: variationRegions[0].regionAxes[0].peakCoord=1.0
+ '4000 ' # 104: variationRegions[0].regionAxes[0].endCoord=1.0
+ '0004 ' # 106: VarData.ItemCount=4
+ '0001 ' # 108: VarData.NumShorts=1
+ '0001 ' # 110: VarData.VarRegionCount=1
+ '0000 ' # 112: VarData.VarRegionIndex[0]=0
+ 'FF38 ' # 114: VarData.deltaSets[0]=-200
+ 'FFCE ' # 116: VarData.deltaSets[0]=-50
+ '0064 ' # 118: VarData.deltaSets[0]=100
+ '00C8 ' # 120: VarData.deltaSets[0]=200
)
MVAR_XML = [
'<Version value="0x00010000"/>',
'<Reserved value="0"/>',
'<ValueRecordSize value="8"/>',
- '<!-- ValueRecordCount=7 -->',
+ '<!-- ValueRecordCount=9 -->',
'<VarStore Format="1">',
' <Format value="1"/>',
' <VarRegionList>',
@@ -108,6 +114,14 @@ MVAR_XML = [
' <ValueTag value="spyo"/>',
' <VarIdx value="2"/>',
'</ValueRecord>',
+ '<ValueRecord index="7">',
+ ' <ValueTag value="test"/>',
+ ' <VarIdx value="2"/>',
+ '</ValueRecord>',
+ '<ValueRecord index="8">',
+ ' <ValueTag value="tes2"/>',
+ ' <VarIdx value="2"/>',
+ '</ValueRecord>',
]
@@ -123,6 +137,13 @@ class MVARTest(unittest.TestCase):
mvar.decompile(MVAR_DATA, font)
self.assertEqual(getXML(mvar.toXML), MVAR_XML)
+
+ def test_decompile_toXML_lazy(self):
+ mvar = newTable('MVAR')
+ font = TTFont(lazy=True)
+ mvar.decompile(MVAR_DATA, font)
+ self.assertEqual(getXML(mvar.toXML), MVAR_XML)
+
def test_compile_fromXML(self):
mvar = newTable('MVAR')
font = TTFont()
diff --git a/Tests/ttLib/tables/S_V_G__test.py b/Tests/ttLib/tables/S_V_G__test.py
new file mode 100644
index 00000000..91b0f23a
--- /dev/null
+++ b/Tests/ttLib/tables/S_V_G__test.py
@@ -0,0 +1,131 @@
+import struct
+
+from fontTools.misc import etree
+from fontTools.misc.testTools import getXML, parseXML
+from fontTools.ttLib import TTFont
+from fontTools.ttLib.tables.S_V_G_ import table_S_V_G_
+
+import pytest
+
+
+def dump(table, ttFont=None):
+ print("\n".join(getXML(table.toXML, ttFont)))
+
+
+def strip_xml_whitespace(xml_string):
+ def strip_or_none(text):
+ text = text.strip() if text else None
+ return text if text else None
+
+ tree = etree.fromstring(xml_string)
+ for e in tree.iter("*"):
+ e.text = strip_or_none(e.text)
+ e.tail = strip_or_none(e.tail)
+ return etree.tostring(tree, encoding="utf-8")
+
+
+SVG_DOCS = [
+ strip_xml_whitespace(svg)
+ for svg in (
+ b"""\
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
+ <defs>
+ <rect x="100" y="-200" width="300" height="400" id="p1"/>
+ </defs>
+ <g id="glyph1">
+ <use xlink:href="#p1" fill="#red"/>
+ </g>
+ <g id="glyph2">
+ <use xlink:href="#p1" fill="#blue"/>
+ </g>
+ <g id="glyph4">
+ <use xlink:href="#p1" fill="#green"/>
+ </g>
+ </svg>""",
+ b"""\
+ <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
+ <g id="glyph3">
+ <path d="M0,0 L100,0 L50,100 Z"/>
+ </g>
+ </svg>""",
+ )
+]
+
+
+OTSVG_DATA = b"".join(
+ [
+ # SVG table header
+ b"\x00\x00" # version (0)
+ b"\x00\x00\x00\x0a" # offset to SVGDocumentList (10)
+ b"\x00\x00\x00\x00" # reserved (0)
+ # SVGDocumentList
+ b"\x00\x03" # number of SVGDocumentRecords (3)
+ # SVGDocumentRecord[0]
+ b"\x00\x01" # startGlyphID (1)
+ b"\x00\x02" # endGlyphID (2)
+ b"\x00\x00\x00\x26" # svgDocOffset (2 + 12*3 == 38 == 0x26)
+ + struct.pack(">L", len(SVG_DOCS[0])) # svgDocLength
+ # SVGDocumentRecord[1]
+ + b"\x00\x03" # startGlyphID (3)
+ b"\x00\x03" # endGlyphID (3)
+ + struct.pack(">L", 0x26 + len(SVG_DOCS[0])) # svgDocOffset
+ + struct.pack(">L", len(SVG_DOCS[1])) # svgDocLength
+ # SVGDocumentRecord[2]
+ + b"\x00\x04" # startGlyphID (4)
+ b"\x00\x04" # endGlyphID (4)
+ b"\x00\x00\x00\x26" # svgDocOffset (38); records 0 and 2 point to same SVG doc
+ + struct.pack(">L", len(SVG_DOCS[0])) # svgDocLength
+ ]
+ + SVG_DOCS
+)
+
+OTSVG_TTX = [
+ '<svgDoc endGlyphID="2" startGlyphID="1">',
+ f" <![CDATA[{SVG_DOCS[0].decode()}]]>",
+ "</svgDoc>",
+ '<svgDoc endGlyphID="3" startGlyphID="3">',
+ f" <![CDATA[{SVG_DOCS[1].decode()}]]>",
+ "</svgDoc>",
+ '<svgDoc endGlyphID="4" startGlyphID="4">',
+ f" <![CDATA[{SVG_DOCS[0].decode()}]]>",
+ "</svgDoc>",
+]
+
+
+@pytest.fixture
+def font():
+ font = TTFont()
+ font.setGlyphOrder([".notdef"] + ["glyph%05d" % i for i in range(1, 30)])
+ return font
+
+
+def test_decompile_and_compile(font):
+ table = table_S_V_G_()
+ table.decompile(OTSVG_DATA, font)
+ assert table.compile(font) == OTSVG_DATA
+
+
+def test_decompile_and_dump_ttx(font):
+ table = table_S_V_G_()
+ table.decompile(OTSVG_DATA, font)
+
+ dump(table, font)
+ assert getXML(table.toXML, font) == OTSVG_TTX
+
+
+def test_load_from_ttx_and_compile(font):
+ table = table_S_V_G_()
+ for name, attrs, content in parseXML(OTSVG_TTX):
+ table.fromXML(name, attrs, content, font)
+ assert table.compile(font) == OTSVG_DATA
+
+
+def test_round_trip_ttx(font):
+ table = table_S_V_G_()
+ for name, attrs, content in parseXML(OTSVG_TTX):
+ table.fromXML(name, attrs, content, font)
+ compiled = table.compile(font)
+
+ table = table_S_V_G_()
+ table.decompile(compiled, font)
+ assert getXML(table.toXML, font) == OTSVG_TTX
diff --git a/Tests/ttLib/tables/T_S_I__1_test.py b/Tests/ttLib/tables/T_S_I__1_test.py
index 3a565adc..b792221e 100644
--- a/Tests/ttLib/tables/T_S_I__1_test.py
+++ b/Tests/ttLib/tables/T_S_I__1_test.py
@@ -1,5 +1,5 @@
-from fontTools.misc.py23 import tobytes
from fontTools.misc.loggingTools import CapturingLogHandler
+from fontTools.misc.textTools import tobytes
from fontTools.ttLib import TTFont, TTLibError
from fontTools.ttLib.tables.T_S_I__0 import table_T_S_I__0
from fontTools.ttLib.tables.T_S_I__1 import table_T_S_I__1
diff --git a/Tests/ttLib/tables/TupleVariation_test.py b/Tests/ttLib/tables/TupleVariation_test.py
index d7a0bc8a..99b94918 100644
--- a/Tests/ttLib/tables/TupleVariation_test.py
+++ b/Tests/ttLib/tables/TupleVariation_test.py
@@ -231,8 +231,7 @@ class TupleVariationTest(unittest.TestCase):
[(7,4), (8,5), (9,6)])
axisTags = ["wght", "wdth"]
sharedPeakIndices = { var.compileCoord(axisTags): 0x77 }
- tup, deltas, _ = var.compile(axisTags, sharedPeakIndices,
- sharedPoints={0,1,2})
+ tup, deltas = var.compile(axisTags, sharedPeakIndices, pointData=b'')
# len(deltas)=8; flags=None; tupleIndex=0x77
# embeddedPeaks=[]; intermediateCoord=[]
self.assertEqual("00 08 00 77", hexencode(tup))
@@ -246,8 +245,7 @@ class TupleVariationTest(unittest.TestCase):
[(7,4), (8,5), (9,6)])
axisTags = ["wght", "wdth"]
sharedPeakIndices = { var.compileCoord(axisTags): 0x77 }
- tup, deltas, _ = var.compile(axisTags, sharedPeakIndices,
- sharedPoints={0,1,2})
+ tup, deltas = var.compile(axisTags, sharedPeakIndices, pointData=b'')
# len(deltas)=8; flags=INTERMEDIATE_REGION; tupleIndex=0x77
# embeddedPeak=[]; intermediateCoord=[(0.3, 0.1), (0.7, 0.9)]
self.assertEqual("00 08 40 77 13 33 06 66 2C CD 39 9A", hexencode(tup))
@@ -261,8 +259,7 @@ class TupleVariationTest(unittest.TestCase):
[(7,4), (8,5), (9,6)])
axisTags = ["wght", "wdth"]
sharedPeakIndices = { var.compileCoord(axisTags): 0x77 }
- tup, deltas, _ = var.compile(axisTags, sharedPeakIndices,
- sharedPoints=None)
+ tup, deltas = var.compile(axisTags, sharedPeakIndices)
# len(deltas)=9; flags=PRIVATE_POINT_NUMBERS; tupleIndex=0x77
# embeddedPeak=[]; intermediateCoord=[]
self.assertEqual("00 09 20 77", hexencode(tup))
@@ -277,8 +274,7 @@ class TupleVariationTest(unittest.TestCase):
[(7,4), (8,5), (9,6)])
axisTags = ["wght", "wdth"]
sharedPeakIndices = { var.compileCoord(axisTags): 0x77 }
- tuple, deltas, _ = var.compile(axisTags,
- sharedPeakIndices, sharedPoints=None)
+ tuple, deltas = var.compile(axisTags, sharedPeakIndices)
# len(deltas)=9; flags=PRIVATE_POINT_NUMBERS; tupleIndex=0x77
# embeddedPeak=[]; intermediateCoord=[(0.0, 0.0), (1.0, 1.0)]
self.assertEqual("00 09 60 77 00 00 00 00 40 00 40 00",
@@ -292,8 +288,7 @@ class TupleVariationTest(unittest.TestCase):
var = TupleVariation(
{"wght": (0.0, 0.5, 0.5), "wdth": (0.0, 0.8, 0.8)},
[(7,4), (8,5), (9,6)])
- tup, deltas, _ = var.compile(axisTags=["wght", "wdth"],
- sharedCoordIndices={}, sharedPoints={0, 1, 2})
+ tup, deltas = var.compile(axisTags=["wght", "wdth"], pointData=b'')
# len(deltas)=8; flags=EMBEDDED_PEAK_TUPLE
# embeddedPeak=[(0.5, 0.8)]; intermediateCoord=[]
self.assertEqual("00 08 80 00 20 00 33 33", hexencode(tup))
@@ -305,8 +300,7 @@ class TupleVariationTest(unittest.TestCase):
var = TupleVariation(
{"wght": (0.0, 0.5, 0.5), "wdth": (0.0, 0.8, 0.8)},
[3, 1, 4])
- tup, deltas, _ = var.compile(axisTags=["wght", "wdth"],
- sharedCoordIndices={}, sharedPoints={0, 1, 2})
+ tup, deltas = var.compile(axisTags=["wght", "wdth"], pointData=b'')
# len(deltas)=4; flags=EMBEDDED_PEAK_TUPLE
# embeddedPeak=[(0.5, 0.8)]; intermediateCoord=[]
self.assertEqual("00 04 80 00 20 00 33 33", hexencode(tup))
@@ -317,9 +311,7 @@ class TupleVariationTest(unittest.TestCase):
var = TupleVariation(
{"wght": (0.0, 0.5, 1.0), "wdth": (0.0, 0.8, 0.8)},
[(7,4), (8,5), (9,6)])
- tup, deltas, _ = var.compile(axisTags=["wght", "wdth"],
- sharedCoordIndices={},
- sharedPoints={0, 1, 2})
+ tup, deltas = var.compile(axisTags=["wght", "wdth"], pointData=b'')
# len(deltas)=8; flags=EMBEDDED_PEAK_TUPLE
# embeddedPeak=[(0.5, 0.8)]; intermediateCoord=[(0.0, 0.0), (1.0, 0.8)]
self.assertEqual("00 08 C0 00 20 00 33 33 00 00 00 00 40 00 33 33",
@@ -332,8 +324,7 @@ class TupleVariationTest(unittest.TestCase):
var = TupleVariation(
{"wght": (0.0, 0.5, 0.5), "wdth": (0.0, 0.8, 0.8)},
[(7,4), (8,5), (9,6)])
- tup, deltas, _ = var.compile(
- axisTags=["wght", "wdth"], sharedCoordIndices={}, sharedPoints=None)
+ tup, deltas = var.compile(axisTags=["wght", "wdth"])
# len(deltas)=9; flags=PRIVATE_POINT_NUMBERS|EMBEDDED_PEAK_TUPLE
# embeddedPeak=[(0.5, 0.8)]; intermediateCoord=[]
self.assertEqual("00 09 A0 00 20 00 33 33", hexencode(tup))
@@ -346,8 +337,7 @@ class TupleVariationTest(unittest.TestCase):
var = TupleVariation(
{"wght": (0.0, 0.5, 0.5), "wdth": (0.0, 0.8, 0.8)},
[7, 8, 9])
- tup, deltas, _ = var.compile(
- axisTags=["wght", "wdth"], sharedCoordIndices={}, sharedPoints=None)
+ tup, deltas = var.compile(axisTags=["wght", "wdth"])
# len(deltas)=5; flags=PRIVATE_POINT_NUMBERS|EMBEDDED_PEAK_TUPLE
# embeddedPeak=[(0.5, 0.8)]; intermediateCoord=[]
self.assertEqual("00 05 A0 00 20 00 33 33", hexencode(tup))
@@ -359,9 +349,7 @@ class TupleVariationTest(unittest.TestCase):
var = TupleVariation(
{"wght": (0.4, 0.5, 0.6), "wdth": (0.7, 0.8, 0.9)},
[(7,4), (8,5), (9,6)])
- tup, deltas, _ = var.compile(
- axisTags = ["wght", "wdth"],
- sharedCoordIndices={}, sharedPoints=None)
+ tup, deltas = var.compile(axisTags = ["wght", "wdth"])
# len(deltas)=9;
# flags=PRIVATE_POINT_NUMBERS|INTERMEDIATE_REGION|EMBEDDED_PEAK_TUPLE
# embeddedPeak=(0.5, 0.8); intermediateCoord=[(0.4, 0.7), (0.6, 0.9)]
@@ -376,9 +364,7 @@ class TupleVariationTest(unittest.TestCase):
var = TupleVariation(
{"wght": (0.4, 0.5, 0.6), "wdth": (0.7, 0.8, 0.9)},
[7, 8, 9])
- tup, deltas, _ = var.compile(
- axisTags = ["wght", "wdth"],
- sharedCoordIndices={}, sharedPoints=None)
+ tup, deltas = var.compile(axisTags = ["wght", "wdth"])
# len(deltas)=5;
# flags=PRIVATE_POINT_NUMBERS|INTERMEDIATE_REGION|EMBEDDED_PEAK_TUPLE
# embeddedPeak=(0.5, 0.8); intermediateCoord=[(0.4, 0.7), (0.6, 0.9)]
@@ -415,8 +401,8 @@ class TupleVariationTest(unittest.TestCase):
self.assertEqual("7F B9 80 35", hexencode(var.compileCoord(["wght", "wdth"])))
def test_compilePoints(self):
- compilePoints = lambda p: TupleVariation.compilePoints(set(p), numPointsInGlyph=999)
- self.assertEqual("00", hexencode(compilePoints(range(999)))) # all points in glyph
+ compilePoints = lambda p: TupleVariation.compilePoints(set(p))
+ self.assertEqual("00", hexencode(compilePoints(set()))) # all points in glyph
self.assertEqual("01 00 07", hexencode(compilePoints([7])))
self.assertEqual("01 80 FF FF", hexencode(compilePoints([65535])))
self.assertEqual("02 01 09 06", hexencode(compilePoints([9, 15])))
@@ -488,7 +474,7 @@ class TupleVariationTest(unittest.TestCase):
def test_decompilePoints_roundTrip(self):
numPointsInGlyph = 500 # greater than 255, so we also exercise code path for 16-bit encoding
- compile = lambda points: TupleVariation.compilePoints(points, numPointsInGlyph)
+ compile = lambda points: TupleVariation.compilePoints(points)
decompile = lambda data: set(TupleVariation.decompilePoints_(numPointsInGlyph, data, 0, "gvar")[0])
for i in range(50):
points = set(random.sample(range(numPointsInGlyph), 30))
@@ -496,18 +482,17 @@ class TupleVariationTest(unittest.TestCase):
"failed round-trip decompile/compilePoints; points=%s" % points)
allPoints = set(range(numPointsInGlyph))
self.assertSetEqual(allPoints, decompile(compile(allPoints)))
+ self.assertSetEqual(allPoints, decompile(compile(set())))
def test_compileDeltas_points(self):
- var = TupleVariation({}, [(0,0), (1, 0), (2, 0), None, (4, 0), (5, 0)])
- points = {1, 2, 3, 4}
+ var = TupleVariation({}, [None, (1, 0), (2, 0), None, (4, 0), None])
# deltaX for points: [1, 2, 4]; deltaY for points: [0, 0, 0]
- self.assertEqual("02 01 02 04 82", hexencode(var.compileDeltas(points)))
+ self.assertEqual("02 01 02 04 82", hexencode(var.compileDeltas()))
def test_compileDeltas_constants(self):
- var = TupleVariation({}, [0, 1, 2, None, 4, 5])
- cvts = {1, 2, 3, 4}
+ var = TupleVariation({}, [None, 1, 2, None, 4, None])
# delta for cvts: [1, 2, 4]
- self.assertEqual("02 01 02 04", hexencode(var.compileDeltas(cvts)))
+ self.assertEqual("02 01 02 04", hexencode(var.compileDeltas()))
def test_compileDeltaValues(self):
compileDeltaValues = lambda values: hexencode(TupleVariation.compileDeltaValues_(values))
@@ -549,11 +534,6 @@ class TupleVariationTest(unittest.TestCase):
# words, zeroes
self.assertEqual("40 66 66 80", compileDeltaValues([0x6666, 0]))
self.assertEqual("40 66 66 81", compileDeltaValues([0x6666, 0, 0]))
- # bytes or words from floats
- self.assertEqual("00 01", compileDeltaValues([1.1]))
- self.assertEqual("00 02", compileDeltaValues([1.9]))
- self.assertEqual("40 66 66", compileDeltaValues([0x6666 + 0.1]))
- self.assertEqual("40 66 66", compileDeltaValues([0x6665 + 0.9]))
def test_decompileDeltas(self):
decompileDeltas = TupleVariation.decompileDeltas_
@@ -579,8 +559,12 @@ class TupleVariationTest(unittest.TestCase):
self.assertListEqual(deltas, decompile(compile(deltas)))
def test_compileSharedTuples(self):
- # Below, the peak coordinate {"wght": 1.0, "wdth": 0.7} appears
- # three times; {"wght": 1.0, "wdth": 0.8} appears twice.
+ # Below, the peak coordinate {"wght": 1.0, "wdth": 0.8} appears
+ # three times (most frequent sorted first); {"wght": 1.0, "wdth": 0.5}
+ # and {"wght": 1.0, "wdth": 0.7} both appears two times (tie) and
+ # are sorted alphanumerically to ensure determinism.
+ # The peak coordinate {"wght": 1.0, "wdth": 0.9} appears only once
+ # and is thus ignored.
# Because the start and end of variation ranges is not encoded
# into the shared pool, they should get ignored.
deltas = [None] * 4
@@ -599,7 +583,7 @@ class TupleVariationTest(unittest.TestCase):
}, deltas),
TupleVariation({
"wght": (1.0, 1.0, 1.0),
- "wdth": (0.3, 0.7, 1.0)
+ "wdth": (0.3, 0.5, 1.0)
}, deltas),
TupleVariation({
"wght": (1.0, 1.0, 1.0),
@@ -608,11 +592,19 @@ class TupleVariationTest(unittest.TestCase):
TupleVariation({
"wght": (1.0, 1.0, 1.0),
"wdth": (0.3, 0.9, 1.0)
- }, deltas)
+ }, deltas),
+ TupleVariation({
+ "wght": (1.0, 1.0, 1.0),
+ "wdth": (0.4, 0.8, 1.0)
+ }, deltas),
+ TupleVariation({
+ "wght": (1.0, 1.0, 1.0),
+ "wdth": (0.5, 0.5, 1.0)
+ }, deltas),
]
result = compileSharedTuples(["wght", "wdth"], variations)
self.assertEqual([hexencode(c) for c in result],
- ["40 00 2C CD", "40 00 33 33"])
+ ["40 00 33 33", "40 00 20 00", "40 00 2C CD"])
def test_decompileSharedTuples_Skia(self):
sharedTuples = decompileSharedTuples(
diff --git a/Tests/ttLib/tables/_g_l_y_f_test.py b/Tests/ttLib/tables/_g_l_y_f_test.py
index 531bb82a..84f30dc6 100644
--- a/Tests/ttLib/tables/_g_l_y_f_test.py
+++ b/Tests/ttLib/tables/_g_l_y_f_test.py
@@ -173,10 +173,9 @@ class GlyphCoordinatesTest(object):
assert g[0][0] == otRound(afloat)
def test__checkFloat_overflow(self):
- g = GlyphCoordinates([(1, 1)], typecode="h")
+ g = GlyphCoordinates([(1, 1)])
g.append((0x8000, 0))
- assert g.array.typecode == "d"
- assert g.array == array.array("d", [1.0, 1.0, 32768.0, 0.0])
+ assert list(g.array) == [1.0, 1.0, 32768.0, 0.0]
CURR_DIR = os.path.abspath(os.path.dirname(os.path.realpath(__file__)))
@@ -363,6 +362,23 @@ class GlyfTableTest(unittest.TestCase):
self.assertEqual(font["glyf"][".notdef"].numberOfContours, 0)
self.assertEqual(font["glyf"]["space"].numberOfContours, 0)
+ def test_getPhantomPoints(self):
+ # https://github.com/fonttools/fonttools/issues/2295
+ font = TTFont()
+ glyphNames = [".notdef"]
+ font.setGlyphOrder(glyphNames)
+ font["loca"] = newTable("loca")
+ font["loca"].locations = [0] * (len(glyphNames) + 1)
+ font["glyf"] = newTable("glyf")
+ font["glyf"].decompile(b"\x00", font)
+ font["hmtx"] = newTable("hmtx")
+ font["hmtx"].metrics = {".notdef": (100,0)}
+ font["head"] = newTable("head")
+ font["head"].unitsPerEm = 1000
+ self.assertEqual(
+ font["glyf"].getPhantomPoints(".notdef", font, 0),
+ [(0, 0), (100, 0), (0, 0), (0, -1000)]
+ )
class GlyphTest:
diff --git a/Tests/ttLib/tables/_l_t_a_g_test.py b/Tests/ttLib/tables/_l_t_a_g_test.py
index fc9be82a..29119903 100644
--- a/Tests/ttLib/tables/_l_t_a_g_test.py
+++ b/Tests/ttLib/tables/_l_t_a_g_test.py
@@ -1,7 +1,6 @@
from fontTools.misc.testTools import parseXML
from fontTools.misc.xmlWriter import XMLWriter
from io import BytesIO
-import os
import struct
import unittest
from fontTools.ttLib import newTable
@@ -46,14 +45,14 @@ class Test_l_t_a_g(unittest.TestCase):
table = newTable("ltag")
table.decompile(self.DATA_, ttFont=None)
table.toXML(writer, ttFont=None)
- expected = os.linesep.join([
+ expected = "\n".join([
'<?xml version="1.0" encoding="UTF-8"?>',
'<version value="1"/>',
'<flags value="0"/>',
'<LanguageTag tag="en"/>',
'<LanguageTag tag="zh-Hant"/>',
'<LanguageTag tag="zh"/>'
- ]) + os.linesep
+ ]) + "\n"
self.assertEqual(expected.encode("utf_8"), writer.file.getvalue())
diff --git a/Tests/ttLib/tables/_m_o_r_x_test.py b/Tests/ttLib/tables/_m_o_r_x_test.py
index 0b807f82..d65619ca 100644
--- a/Tests/ttLib/tables/_m_o_r_x_test.py
+++ b/Tests/ttLib/tables/_m_o_r_x_test.py
@@ -1,6 +1,5 @@
-from fontTools.misc.py23 import bytechr, bytesjoin
from fontTools.misc.testTools import FakeFont, getXML, parseXML
-from fontTools.misc.textTools import deHexStr, hexStr
+from fontTools.misc.textTools import bytechr, bytesjoin, deHexStr, hexStr
from fontTools.ttLib import newTable
import unittest
diff --git a/Tests/ttLib/tables/_n_a_m_e_test.py b/Tests/ttLib/tables/_n_a_m_e_test.py
index 8e829704..5e8a0c2b 100644
--- a/Tests/ttLib/tables/_n_a_m_e_test.py
+++ b/Tests/ttLib/tables/_n_a_m_e_test.py
@@ -1,12 +1,12 @@
-from fontTools.misc.py23 import bytesjoin, tostr
from fontTools.misc import sstruct
from fontTools.misc.loggingTools import CapturingLogHandler
from fontTools.misc.testTools import FakeFont
+from fontTools.misc.textTools import bytesjoin, tostr
from fontTools.misc.xmlWriter import XMLWriter
from io import BytesIO
import struct
import unittest
-from fontTools.ttLib import newTable
+from fontTools.ttLib import TTFont, newTable
from fontTools.ttLib.tables._n_a_m_e import (
table__n_a_m_e, NameRecord, nameRecordFormat, nameRecordSize, makeName, log)
@@ -305,6 +305,17 @@ class NameTableTest(unittest.TestCase):
self.assertGreaterEqual(nameID, 256)
self.assertEqual(nameID, table.findMultilingualName(names, minNameID=256))
+ def test_addMultilingualName_name_inconsistencies(self):
+ # Check what happens, when there are
+ # inconsistencies in the name table
+ table = table__n_a_m_e()
+ table.setName('Weight', 270, 3, 1, 0x409)
+ names = {'en': 'Weight', }
+ nameID = table.addMultilingualName(names, minNameID=256)
+ # Because there is an inconsistency in the names,
+ # addMultilingualName adds a new name ID
+ self.assertEqual(271, nameID)
+
def test_decompile_badOffset(self):
# https://github.com/fonttools/fonttools/issues/525
table = table__n_a_m_e()
@@ -450,6 +461,103 @@ class NameRecordTest(unittest.TestCase):
self.assertEqual(name.getEncoding(None), None)
self.assertEqual(name.getEncoding(default=None), None)
+ def test_get_family_name(self):
+ name = table__n_a_m_e()
+ name.names = [
+ makeName("Copyright", 0, 1, 0, 0),
+ makeName("Family Name ID 1", 1, 1, 0, 0),
+ makeName("SubFamily Name ID 2", 2, 1, 0, 0),
+ makeName("Unique Name ID 3", 3, 1, 0, 0),
+ makeName("Full Name ID 4", 4, 1, 0, 0),
+ makeName("PS Name ID 6", 6, 1, 0, 0),
+ makeName("Version Name ID 5", 5, 1, 0, 0),
+ makeName("Trademark Name ID 7", 7, 1, 0, 0),
+ ]
+
+ result_value = name.getBestFamilyName()
+ self.assertEqual("Family Name ID 1", result_value)
+
+ expected_value = "Family Name ID 16"
+ name.setName(expected_value, 16, 1, 0, 0)
+ result_value = name.getBestFamilyName()
+ self.assertEqual(expected_value, result_value)
+
+ expected_value = "Family Name ID 21"
+ name.setName(expected_value, 21, 1, 0, 0)
+ result_value = name.getBestFamilyName()
+ self.assertEqual(expected_value, result_value)
+
+ def test_get_subfamily_name(self):
+ name = table__n_a_m_e()
+ name.names = [
+ makeName("Copyright", 0, 1, 0, 0),
+ makeName("Family Name ID 1", 1, 1, 0, 0),
+ makeName("SubFamily Name ID 2", 2, 1, 0, 0),
+ makeName("Unique Name ID 3", 3, 1, 0, 0),
+ makeName("Full Name ID 4", 4, 1, 0, 0),
+ makeName("PS Name ID 6", 6, 1, 0, 0),
+ makeName("Version Name ID 5", 5, 1, 0, 0),
+ makeName("Trademark Name ID 7", 7, 1, 0, 0),
+ ]
+
+ result_value = name.getBestSubFamilyName()
+ self.assertEqual("SubFamily Name ID 2", result_value)
+
+ expected_value = "Family Name ID 17"
+ name.setName(expected_value, 17, 1, 0, 0)
+ result_value = name.getBestSubFamilyName()
+ self.assertEqual(expected_value, result_value)
+
+ expected_value = "Family Name ID 22"
+ name.setName(expected_value, 22, 1, 0, 0)
+ result_value = name.getBestSubFamilyName()
+ self.assertEqual(expected_value, result_value)
+
+ def test_get_nice_full_name(self):
+ name = table__n_a_m_e()
+ name.names = [
+ makeName("NID 1", 1, 1, 0, 0),
+ makeName("NID 2", 2, 1, 0, 0),
+ makeName("NID 4", 4, 1, 0, 0),
+ makeName("NID 6", 6, 1, 0, 0),
+ ]
+
+ result_value = name.getBestFullName()
+ self.assertEqual("NID 1 NID 2", result_value)
+
+ expected_value = "NID 1 NID 2"
+ # expection is still NID 1 NID 2,
+ # because name ID 17 is missing
+ name.setName("NID 16", 16, 1, 0, 0)
+ result_value = name.getBestFullName()
+ self.assertEqual(expected_value, result_value)
+
+ name.setName('NID 17', 17, 1, 0, 0)
+ result_value = name.getBestFullName()
+ self.assertEqual("NID 16 NID 17", result_value)
+
+ expected_value = "NID 16 NID 17"
+ # expection is still NID 16 NID 17,
+ # because name ID 21 is missing
+ name.setName('NID 21', 21, 1, 0, 0)
+ result_value = name.getBestFullName()
+ self.assertEqual(expected_value, result_value)
+
+ name.setName('NID 22', 22, 1, 0, 0)
+ result_value = name.getBestFullName()
+ self.assertEqual("NID 21 NID 22", result_value)
+
+ for NID in [2, 16, 17, 21, 22]:
+ name.removeNames(NID)
+
+ result_value = name.getBestFullName()
+ self.assertEqual("NID 4", result_value)
+
+ name.setName('Regular', 2, 1, 0, 0)
+ result_value = name.getBestFullName()
+ self.assertEqual("NID 1", result_value)
+
+
if __name__ == "__main__":
import sys
sys.exit(unittest.main())
diff --git a/Tests/ttLib/tables/otTables_test.py b/Tests/ttLib/tables/otTables_test.py
index 9202aa55..3f74b7a9 100644
--- a/Tests/ttLib/tables/otTables_test.py
+++ b/Tests/ttLib/tables/otTables_test.py
@@ -1,4 +1,4 @@
-from fontTools.misc.testTools import getXML, parseXML, FakeFont
+from fontTools.misc.testTools import getXML, parseXML, parseXmlInto, FakeFont
from fontTools.misc.textTools import deHexStr, hexStr
from fontTools.misc.xmlWriter import XMLWriter
from fontTools.ttLib.tables.otBase import OTTableReader, OTTableWriter
@@ -512,8 +512,11 @@ class InsertionMorphActionTest(unittest.TestCase):
for name, attrs, content in parseXML(self.MORPH_ACTION_XML):
a.fromXML(name, attrs, content, self.font)
writer = OTTableWriter()
- a.compile(writer, self.font,
- actionIndex={('B', 'C'): 9, ('B', 'A', 'D'): 7})
+ a.compile(
+ writer,
+ self.font,
+ actionIndex={('B', 'C'): 9, ('B', 'A', 'D'): 7},
+ )
self.assertEqual(hexStr(writer.getAllData()), "1234fc4300090007")
def testCompileActions_empty(self):
@@ -551,13 +554,11 @@ class SplitMultipleSubstTest:
from fontTools.ttLib.tables.otBase import OverflowErrorRecord
oldSubTable = buildMultipleSubstSubtable({'e': 1, 'a': 2, 'b': 3, 'c': 4, 'd': 5})
- oldSubTable.Format = 1
newSubTable = otTables.MultipleSubst()
ok = otTables.splitMultipleSubst(oldSubTable, newSubTable, OverflowErrorRecord((None, None, None, itemName, itemRecord)))
assert ok
- assert oldSubTable.Format == newSubTable.Format
return oldSubTable.mapping, newSubTable.mapping
def test_Coverage(self):
@@ -577,113 +578,142 @@ class SplitMultipleSubstTest:
def test_splitMarkBasePos():
- from fontTools.otlLib.builder import buildAnchor, buildMarkBasePosSubtable
-
- marks = {
- "acutecomb": (0, buildAnchor(0, 600)),
- "gravecomb": (0, buildAnchor(0, 590)),
- "cedillacomb": (1, buildAnchor(0, 0)),
- }
- bases = {
- "a": {
- 0: buildAnchor(350, 500),
- 1: None,
- },
- "c": {
- 0: buildAnchor(300, 700),
- 1: buildAnchor(300, 0),
- },
- }
- glyphOrder = ["a", "c", "acutecomb", "gravecomb", "cedillacomb"]
- glyphMap = {g: i for i, g in enumerate(glyphOrder)}
-
- oldSubTable = buildMarkBasePosSubtable(marks, bases, glyphMap)
- newSubTable = otTables.MarkBasePos()
-
- ok = otTables.splitMarkBasePos(oldSubTable, newSubTable, overflowRecord=None)
-
- assert ok
-
- assert getXML(oldSubTable.toXML) == [
- '<MarkBasePos Format="1">',
- ' <MarkCoverage>',
- ' <Glyph value="acutecomb"/>',
- ' <Glyph value="gravecomb"/>',
- ' </MarkCoverage>',
- ' <BaseCoverage>',
- ' <Glyph value="a"/>',
- ' <Glyph value="c"/>',
- ' </BaseCoverage>',
- ' <!-- ClassCount=1 -->',
- ' <MarkArray>',
- ' <!-- MarkCount=2 -->',
- ' <MarkRecord index="0">',
- ' <Class value="0"/>',
- ' <MarkAnchor Format="1">',
- ' <XCoordinate value="0"/>',
- ' <YCoordinate value="600"/>',
- ' </MarkAnchor>',
- ' </MarkRecord>',
- ' <MarkRecord index="1">',
- ' <Class value="0"/>',
- ' <MarkAnchor Format="1">',
- ' <XCoordinate value="0"/>',
- ' <YCoordinate value="590"/>',
- ' </MarkAnchor>',
- ' </MarkRecord>',
- ' </MarkArray>',
- ' <BaseArray>',
- ' <!-- BaseCount=2 -->',
- ' <BaseRecord index="0">',
- ' <BaseAnchor index="0" Format="1">',
- ' <XCoordinate value="350"/>',
- ' <YCoordinate value="500"/>',
- ' </BaseAnchor>',
- ' </BaseRecord>',
- ' <BaseRecord index="1">',
- ' <BaseAnchor index="0" Format="1">',
- ' <XCoordinate value="300"/>',
- ' <YCoordinate value="700"/>',
- ' </BaseAnchor>',
- ' </BaseRecord>',
- ' </BaseArray>',
- '</MarkBasePos>',
- ]
-
- assert getXML(newSubTable.toXML) == [
- '<MarkBasePos Format="1">',
- ' <MarkCoverage>',
- ' <Glyph value="cedillacomb"/>',
- ' </MarkCoverage>',
- ' <BaseCoverage>',
- ' <Glyph value="a"/>',
- ' <Glyph value="c"/>',
- ' </BaseCoverage>',
- ' <!-- ClassCount=1 -->',
- ' <MarkArray>',
- ' <!-- MarkCount=1 -->',
- ' <MarkRecord index="0">',
- ' <Class value="0"/>',
- ' <MarkAnchor Format="1">',
- ' <XCoordinate value="0"/>',
- ' <YCoordinate value="0"/>',
- ' </MarkAnchor>',
- ' </MarkRecord>',
- ' </MarkArray>',
- ' <BaseArray>',
- ' <!-- BaseCount=2 -->',
- ' <BaseRecord index="0">',
- ' <BaseAnchor index="0" empty="1"/>',
- ' </BaseRecord>',
- ' <BaseRecord index="1">',
- ' <BaseAnchor index="0" Format="1">',
- ' <XCoordinate value="300"/>',
- ' <YCoordinate value="0"/>',
- ' </BaseAnchor>',
- ' </BaseRecord>',
- ' </BaseArray>',
- '</MarkBasePos>',
- ]
+ from fontTools.otlLib.builder import buildAnchor, buildMarkBasePosSubtable
+
+ marks = {
+ "acutecomb": (0, buildAnchor(0, 600)),
+ "gravecomb": (0, buildAnchor(0, 590)),
+ "cedillacomb": (1, buildAnchor(0, 0)),
+ }
+ bases = {
+ "a": {
+ 0: buildAnchor(350, 500),
+ 1: None,
+ },
+ "c": {
+ 0: buildAnchor(300, 700),
+ 1: buildAnchor(300, 0),
+ },
+ }
+ glyphOrder = ["a", "c", "acutecomb", "gravecomb", "cedillacomb"]
+ glyphMap = {g: i for i, g in enumerate(glyphOrder)}
+
+ oldSubTable = buildMarkBasePosSubtable(marks, bases, glyphMap)
+ newSubTable = otTables.MarkBasePos()
+
+ ok = otTables.splitMarkBasePos(oldSubTable, newSubTable, overflowRecord=None)
+
+ assert ok
+
+ assert getXML(oldSubTable.toXML) == [
+ '<MarkBasePos Format="1">',
+ ' <MarkCoverage>',
+ ' <Glyph value="acutecomb"/>',
+ ' <Glyph value="gravecomb"/>',
+ ' </MarkCoverage>',
+ ' <BaseCoverage>',
+ ' <Glyph value="a"/>',
+ ' <Glyph value="c"/>',
+ ' </BaseCoverage>',
+ ' <!-- ClassCount=1 -->',
+ ' <MarkArray>',
+ ' <!-- MarkCount=2 -->',
+ ' <MarkRecord index="0">',
+ ' <Class value="0"/>',
+ ' <MarkAnchor Format="1">',
+ ' <XCoordinate value="0"/>',
+ ' <YCoordinate value="600"/>',
+ ' </MarkAnchor>',
+ ' </MarkRecord>',
+ ' <MarkRecord index="1">',
+ ' <Class value="0"/>',
+ ' <MarkAnchor Format="1">',
+ ' <XCoordinate value="0"/>',
+ ' <YCoordinate value="590"/>',
+ ' </MarkAnchor>',
+ ' </MarkRecord>',
+ ' </MarkArray>',
+ ' <BaseArray>',
+ ' <!-- BaseCount=2 -->',
+ ' <BaseRecord index="0">',
+ ' <BaseAnchor index="0" Format="1">',
+ ' <XCoordinate value="350"/>',
+ ' <YCoordinate value="500"/>',
+ ' </BaseAnchor>',
+ ' </BaseRecord>',
+ ' <BaseRecord index="1">',
+ ' <BaseAnchor index="0" Format="1">',
+ ' <XCoordinate value="300"/>',
+ ' <YCoordinate value="700"/>',
+ ' </BaseAnchor>',
+ ' </BaseRecord>',
+ ' </BaseArray>',
+ '</MarkBasePos>',
+ ]
+
+ assert getXML(newSubTable.toXML) == [
+ '<MarkBasePos Format="1">',
+ ' <MarkCoverage>',
+ ' <Glyph value="cedillacomb"/>',
+ ' </MarkCoverage>',
+ ' <BaseCoverage>',
+ ' <Glyph value="a"/>',
+ ' <Glyph value="c"/>',
+ ' </BaseCoverage>',
+ ' <!-- ClassCount=1 -->',
+ ' <MarkArray>',
+ ' <!-- MarkCount=1 -->',
+ ' <MarkRecord index="0">',
+ ' <Class value="0"/>',
+ ' <MarkAnchor Format="1">',
+ ' <XCoordinate value="0"/>',
+ ' <YCoordinate value="0"/>',
+ ' </MarkAnchor>',
+ ' </MarkRecord>',
+ ' </MarkArray>',
+ ' <BaseArray>',
+ ' <!-- BaseCount=2 -->',
+ ' <BaseRecord index="0">',
+ ' <BaseAnchor index="0" empty="1"/>',
+ ' </BaseRecord>',
+ ' <BaseRecord index="1">',
+ ' <BaseAnchor index="0" Format="1">',
+ ' <XCoordinate value="300"/>',
+ ' <YCoordinate value="0"/>',
+ ' </BaseAnchor>',
+ ' </BaseRecord>',
+ ' </BaseArray>',
+ '</MarkBasePos>',
+ ]
+
+
+class ColrV1Test(unittest.TestCase):
+ def setUp(self):
+ self.font = FakeFont(['.notdef', 'meh'])
+
+ def test_traverseEmptyPaintColrLayersNeedsNoLayerList(self):
+ colr = parseXmlInto(
+ self.font,
+ otTables.COLR(),
+ '''
+ <Version value="1"/>
+ <BaseGlyphList>
+ <BaseGlyphPaintRecord index="0">
+ <BaseGlyph value="meh"/>
+ <Paint Format="1"><!-- PaintColrLayers -->
+ <NumLayers value="0"/>
+ <FirstLayerIndex value="42"/>
+ </Paint>
+ </BaseGlyphPaintRecord>
+ </BaseGlyphList>
+ ''',
+ )
+ paint = colr.BaseGlyphList.BaseGlyphPaintRecord[0].Paint
+
+ # Just want to confirm we don't crash
+ visited = []
+ paint.traverse(colr, lambda p: visited.append(p))
+ assert len(visited) == 1
if __name__ == "__main__":
diff --git a/Tests/ttLib/tables/tables_test.py b/Tests/ttLib/tables/tables_test.py
index f66323fb..be8c63e3 100644
--- a/Tests/ttLib/tables/tables_test.py
+++ b/Tests/ttLib/tables/tables_test.py
@@ -254,7 +254,7 @@ def read_expected_ttx(testfile, tableTag):
def dump_ttx(font, tableTag):
f = StringIO()
- font.saveXML(f, newlinestr='\n', tables=[tableTag])
+ font.saveXML(f, tables=[tableTag])
return ttLibVersion_RE.sub('', f.getvalue())
diff --git a/Tests/ttLib/tables/ttProgram_test.py b/Tests/ttLib/tables/ttProgram_test.py
index be6e86a0..13d1ba87 100644
--- a/Tests/ttLib/tables/ttProgram_test.py
+++ b/Tests/ttLib/tables/ttProgram_test.py
@@ -104,7 +104,7 @@ class ProgramTest(unittest.TestCase):
p.fromBytecode(BYTECODE)
ttfont = TestFont()
buf = StringIO()
- writer = XMLWriter(buf, newlinestr='\n')
+ writer = XMLWriter(buf)
try:
p.toXML(writer, ttfont)
finally:
diff --git a/Tests/ttLib/ttCollection_test.py b/Tests/ttLib/ttCollection_test.py
new file mode 100644
index 00000000..91a1117d
--- /dev/null
+++ b/Tests/ttLib/ttCollection_test.py
@@ -0,0 +1,27 @@
+import os
+from pathlib import Path
+from fontTools.ttLib import TTCollection
+import pytest
+
+TTX_DATA_DIR = Path(__file__).parent.parent / "ttx" / "data"
+
+
+@pytest.fixture(params=[None, True, False])
+def lazy(request):
+ return request.param
+
+
+def test_lazy_open_path(lazy):
+ ttc_path = TTX_DATA_DIR / "TestTTC.ttc"
+ with TTCollection(ttc_path, lazy=lazy) as collection:
+ assert len(collection) == 2
+ assert collection[0]["maxp"].numGlyphs == 6
+ assert collection[1]["maxp"].numGlyphs == 6
+
+
+def test_lazy_open_file(lazy):
+ with (TTX_DATA_DIR / "TestTTC.ttc").open("rb") as file:
+ collection = TTCollection(file, lazy=lazy)
+ assert len(collection) == 2
+ assert collection[0]["maxp"].numGlyphs == 6
+ assert collection[1]["maxp"].numGlyphs == 6
diff --git a/Tests/ttLib/ttFont_test.py b/Tests/ttLib/ttFont_test.py
index 47cedeb7..e0e82b24 100644
--- a/Tests/ttLib/ttFont_test.py
+++ b/Tests/ttLib/ttFont_test.py
@@ -1,6 +1,15 @@
import io
+import os
+import re
+import random
+from fontTools.feaLib.builder import addOpenTypeFeaturesFromString
from fontTools.ttLib import TTFont, newTable, registerCustomTableClass, unregisterCustomTableClass
from fontTools.ttLib.tables.DefaultTable import DefaultTable
+from fontTools.ttLib.tables._c_m_a_p import CmapSubtable
+import pytest
+
+
+DATA_DIR = os.path.join(os.path.abspath(os.path.dirname(__file__)), "data")
class CustomTableClass(DefaultTable):
@@ -20,6 +29,13 @@ table_C_U_S_T_ = CustomTableClass # alias for testing
TABLETAG = "CUST"
+def normalize_TTX(string):
+ string = re.sub(' ttLibVersion=".*"', "", string)
+ string = re.sub('checkSumAdjustment value=".*"', "", string)
+ string = re.sub('modified value=".*"', "", string)
+ return string
+
+
def test_registerCustomTableClass():
font = TTFont()
font[TABLETAG] = newTable(TABLETAG)
@@ -46,3 +62,153 @@ def test_registerCustomTableClassStandardName():
assert font[TABLETAG].compile(font) == b"\x04\x05\x06"
finally:
unregisterCustomTableClass(TABLETAG)
+
+
+ttxTTF = r"""<?xml version="1.0" encoding="UTF-8"?>
+<ttFont sfntVersion="\x00\x01\x00\x00" ttLibVersion="4.9.0">
+ <hmtx>
+ <mtx name=".notdef" width="300" lsb="0"/>
+ </hmtx>
+</ttFont>
+"""
+
+
+ttxOTF = """<?xml version="1.0" encoding="UTF-8"?>
+<ttFont sfntVersion="OTTO" ttLibVersion="4.9.0">
+ <hmtx>
+ <mtx name=".notdef" width="300" lsb="0"/>
+ </hmtx>
+</ttFont>
+"""
+
+
+def test_sfntVersionFromTTX():
+ # https://github.com/fonttools/fonttools/issues/2370
+ font = TTFont()
+ assert font.sfntVersion == "\x00\x01\x00\x00"
+ ttx = io.StringIO(ttxOTF)
+ # Font is "empty", TTX file will determine sfntVersion
+ font.importXML(ttx)
+ assert font.sfntVersion == "OTTO"
+ ttx = io.StringIO(ttxTTF)
+ # Font is not "empty", sfntVersion in TTX file will be ignored
+ font.importXML(ttx)
+ assert font.sfntVersion == "OTTO"
+
+
+def test_virtualGlyphId():
+ otfpath = os.path.join(DATA_DIR, "TestVGID-Regular.otf")
+ ttxpath = os.path.join(DATA_DIR, "TestVGID-Regular.ttx")
+
+ otf = TTFont(otfpath)
+
+ ttx = TTFont()
+ ttx.importXML(ttxpath)
+
+ with open(ttxpath, encoding="utf-8") as fp:
+ xml = normalize_TTX(fp.read()).splitlines()
+
+ for font in (otf, ttx):
+ GSUB = font["GSUB"].table
+ assert GSUB.LookupList.LookupCount == 37
+ lookup = GSUB.LookupList.Lookup[32]
+ assert lookup.LookupType == 8
+ subtable = lookup.SubTable[0]
+ assert subtable.LookAheadGlyphCount == 1
+ lookahead = subtable.LookAheadCoverage[0]
+ assert len(lookahead.glyphs) == 46
+ assert "glyph00453" in lookahead.glyphs
+
+ out = io.StringIO()
+ font.saveXML(out)
+ outxml = normalize_TTX(out.getvalue()).splitlines()
+ assert xml == outxml
+
+
+def test_setGlyphOrder_also_updates_glyf_glyphOrder():
+ # https://github.com/fonttools/fonttools/issues/2060#issuecomment-1063932428
+ font = TTFont()
+ font.importXML(os.path.join(DATA_DIR, "TestTTF-Regular.ttx"))
+ current_order = font.getGlyphOrder()
+
+ assert current_order == font["glyf"].glyphOrder
+
+ new_order = list(current_order)
+ while new_order == current_order:
+ random.shuffle(new_order)
+
+ font.setGlyphOrder(new_order)
+
+ assert font.getGlyphOrder() == new_order
+ assert font["glyf"].glyphOrder == new_order
+
+
+@pytest.mark.parametrize("lazy", [None, True, False])
+def test_ensureDecompiled(lazy):
+ # test that no matter the lazy value, ensureDecompiled decompiles all tables
+ font = TTFont()
+ font.importXML(os.path.join(DATA_DIR, "TestTTF-Regular.ttx"))
+ # test font has no OTL so we add some, as an example of otData-driven tables
+ addOpenTypeFeaturesFromString(
+ font,
+ """
+ feature calt {
+ sub period' period' period' space by ellipsis;
+ } calt;
+
+ feature dist {
+ pos period period -30;
+ } dist;
+ """
+ )
+ # also add an additional cmap subtable that will be lazily-loaded
+ cm = CmapSubtable.newSubtable(14)
+ cm.platformID = 0
+ cm.platEncID = 5
+ cm.language = 0
+ cm.cmap = {}
+ cm.uvsDict = {0xFE00: [(0x002e, None)]}
+ font["cmap"].tables.append(cm)
+
+ # save and reload, potentially lazily
+ buf = io.BytesIO()
+ font.save(buf)
+ buf.seek(0)
+ font = TTFont(buf, lazy=lazy)
+
+ # check no table is loaded until/unless requested, no matter the laziness
+ for tag in font.keys():
+ assert not font.isLoaded(tag)
+
+ if lazy is not False:
+ # additional cmap doesn't get decompiled automatically unless lazy=False;
+ # can't use hasattr or else cmap's maginc __getattr__ kicks in...
+ cm = next(st for st in font["cmap"].tables if st.__dict__["format"] == 14)
+ assert cm.data is not None
+ assert "uvsDict" not in cm.__dict__
+ # glyf glyphs are not expanded unless lazy=False
+ assert font["glyf"].glyphs["period"].data is not None
+ assert not hasattr(font["glyf"].glyphs["period"], "coordinates")
+
+ if lazy is True:
+ # OTL tables hold a 'reader' to lazily load when lazy=True
+ assert "reader" in font["GSUB"].table.LookupList.__dict__
+ assert "reader" in font["GPOS"].table.LookupList.__dict__
+
+ font.ensureDecompiled()
+
+ # all tables are decompiled now
+ for tag in font.keys():
+ assert font.isLoaded(tag)
+ # including the additional cmap
+ cm = next(st for st in font["cmap"].tables if st.__dict__["format"] == 14)
+ assert cm.data is None
+ assert "uvsDict" in cm.__dict__
+ # expanded glyf glyphs lost the 'data' attribute
+ assert not hasattr(font["glyf"].glyphs["period"], "data")
+ assert hasattr(font["glyf"].glyphs["period"], "coordinates")
+ # and OTL tables have read their 'reader'
+ assert "reader" not in font["GSUB"].table.LookupList.__dict__
+ assert "Lookup" in font["GSUB"].table.LookupList.__dict__
+ assert "reader" not in font["GPOS"].table.LookupList.__dict__
+ assert "Lookup" in font["GPOS"].table.LookupList.__dict__
diff --git a/Tests/ttLib/woff2_test.py b/Tests/ttLib/woff2_test.py
index c0d60cee..7fe40dd1 100644
--- a/Tests/ttLib/woff2_test.py
+++ b/Tests/ttLib/woff2_test.py
@@ -1,4 +1,3 @@
-from fontTools.misc.py23 import Tag, bytechr, byteord
from fontTools import ttLib
from fontTools.ttLib import woff2
from fontTools.ttLib.tables import _g_l_y_f
@@ -10,6 +9,7 @@ from fontTools.ttLib.woff2 import (
WOFF2HmtxTable, WOFF2Writer, unpackBase128, unpack255UShort, pack255UShort)
import unittest
from fontTools.misc import sstruct
+from fontTools.misc.textTools import Tag, bytechr, byteord
from fontTools import fontBuilder
from fontTools.pens.ttGlyphPen import TTGlyphPen
from io import BytesIO
diff --git a/Tests/ttx/ttx_test.py b/Tests/ttx/ttx_test.py
index c2463474..ef8d8789 100644
--- a/Tests/ttx/ttx_test.py
+++ b/Tests/ttx/ttx_test.py
@@ -436,12 +436,6 @@ def test_options_b():
tto = ttx.Options([("-b", "")], 1)
assert tto.recalcBBoxes is False
-
-def test_options_a():
- tto = ttx.Options([("-a", "")], 1)
- assert tto.allowVID is True
-
-
def test_options_e():
tto = ttx.Options([("-e", "")], 1)
assert tto.ignoreDecompileErrors is False
@@ -967,10 +961,6 @@ def test_main_keyboard_interrupt(tmpdir, monkeypatch, caplog):
assert "(Cancelled.)" in caplog.text
-@pytest.mark.skipif(
- sys.platform == "win32",
- reason="waitForKeyPress function causes test to hang on Windows platform",
-)
def test_main_system_exit(tmpdir, monkeypatch):
with pytest.raises(SystemExit):
inpath = os.path.join("Tests", "ttx", "data", "TestTTF.ttx")
@@ -997,10 +987,6 @@ def test_main_ttlib_error(tmpdir, monkeypatch, caplog):
assert "Test error" in caplog.text
-@pytest.mark.skipif(
- sys.platform == "win32",
- reason="waitForKeyPress function causes test to hang on Windows platform",
-)
def test_main_base_exception(tmpdir, monkeypatch, caplog):
with pytest.raises(SystemExit):
inpath = os.path.join("Tests", "ttx", "data", "TestTTF.ttx")
diff --git a/Tests/ufoLib/UFOZ_test.py b/Tests/ufoLib/UFOZ_test.py
index 51362106..6ea39e9a 100644
--- a/Tests/ufoLib/UFOZ_test.py
+++ b/Tests/ufoLib/UFOZ_test.py
@@ -1,7 +1,7 @@
-from fontTools.misc.py23 import tostr
from fontTools.ufoLib import UFOReader, UFOWriter, UFOFileStructure
from fontTools.ufoLib.errors import UFOLibError, GlifLibError
from fontTools.misc import plistlib
+from fontTools.misc.textTools import tostr
import sys
import os
import fs.osfs
diff --git a/Tests/ufoLib/filenames_test.py b/Tests/ufoLib/filenames_test.py
index a9415a1c..bad41353 100644
--- a/Tests/ufoLib/filenames_test.py
+++ b/Tests/ufoLib/filenames_test.py
@@ -29,6 +29,16 @@ class TestFilenames(unittest.TestCase):
self.assertEqual(userNameToFileName("con.alt"), "_con.alt")
self.assertEqual(userNameToFileName("alt.con"), "alt._con")
+ self.assertEqual(
+ # Test output for ASCII range (up until 0x7F), except for illegal
+ # characters.
+ userNameToFileName("".join([chr(i) for i in range(0, 0x80)])),
+ "________________________________"
+ " !_#$%&'____,-._0123456789_;_=__"
+ "@A_B_C_D_E_F_G_H_I_J_K_L_M_N_O_P_Q_R_S_T_U_V_W_X_Y_Z_"
+ "___^_`abcdefghijklmnopqrstuvwxyz{_}~_",
+ )
+
def test_userNameToFileName_ValueError(self):
with self.assertRaises(ValueError):
userNameToFileName(b"a")
diff --git a/Tests/ufoLib/glifLib_test.py b/Tests/ufoLib/glifLib_test.py
index 3af0256c..485c2bd9 100644
--- a/Tests/ufoLib/glifLib_test.py
+++ b/Tests/ufoLib/glifLib_test.py
@@ -159,6 +159,8 @@ class FileNameTest:
dst.writeGlyph("a", glyph)
dst.writeGlyph("A", glyph)
dst.writeGlyph("a_", glyph)
+ dst.deleteGlyph("a_")
+ dst.writeGlyph("a_", glyph)
dst.writeGlyph("A_", glyph)
dst.writeGlyph("i_j", glyph)
diff --git a/Tests/unicodedata_test.py b/Tests/unicodedata_test.py
index 05f7de68..5cdb3404 100644
--- a/Tests/unicodedata_test.py
+++ b/Tests/unicodedata_test.py
@@ -198,7 +198,7 @@ def test_block():
assert unicodedata.block("\x7F") == "Basic Latin"
assert unicodedata.block("\x80") == "Latin-1 Supplement"
assert unicodedata.block("\u1c90") == "Georgian Extended"
- assert unicodedata.block("\u0870") == "No_Block"
+ assert unicodedata.block("\u0870") == "Arabic Extended-B"
def test_ot_tags_from_script():
@@ -230,6 +230,9 @@ def test_ot_tag_to_script():
assert unicodedata.ot_tag_to_script("vai ") == "Vaii"
assert unicodedata.ot_tag_to_script("lao ") == "Laoo"
assert unicodedata.ot_tag_to_script("yi") == "Yiii"
+ # both 'hang' and 'jamo' tags map to the Hangul script
+ assert unicodedata.ot_tag_to_script("hang") == "Hang"
+ assert unicodedata.ot_tag_to_script("jamo") == "Hang"
for invalid_value in ("", " ", "z zz", "zzzzz"):
with pytest.raises(ValueError, match="invalid OpenType tag"):
@@ -240,6 +243,7 @@ def test_script_horizontal_direction():
assert unicodedata.script_horizontal_direction("Latn") == "LTR"
assert unicodedata.script_horizontal_direction("Arab") == "RTL"
assert unicodedata.script_horizontal_direction("Thaa") == "RTL"
+ assert unicodedata.script_horizontal_direction("Ougr") == "RTL"
with pytest.raises(KeyError):
unicodedata.script_horizontal_direction("Azzz")
diff --git a/Tests/varLib/builder_test.py b/Tests/varLib/builder_test.py
index 80607eaa..6cad103a 100644
--- a/Tests/varLib/builder_test.py
+++ b/Tests/varLib/builder_test.py
@@ -8,12 +8,20 @@ import pytest
([0], [[128]], 1),
([0, 1, 2], [[128, 1, 2], [3, -129, 5], [6, 7, 8]], 2),
([0, 1, 2], [[0, 128, 2], [3, 4, 5], [6, 7, -129]], 3),
+ ([0], [[32768]], 0x8001),
+ ([0, 1, 2], [[32768, 1, 2], [3, -129, 5], [6, 7, 8]], 0x8001),
+ ([0, 1, 2], [[32768, 1, 2], [3, -32769, 5], [6, 7, 8]], 0x8002),
+ ([0, 1, 2], [[0, 32768, 2], [3, 4, 5], [6, 7, -32769]], 0x8003),
], ids=[
"0_regions_0_deltas",
"1_region_1_uint8",
"1_region_1_short",
"3_regions_2_shorts_ordered",
"3_regions_2_shorts_unordered",
+ "1_region_1_long",
+ "3_regions_1_long_ordered",
+ "3_regions_2_longs_ordered",
+ "3_regions_2_longs_unordered",
])
def test_buildVarData_no_optimize(region_indices, items, expected_num_shorts):
data = buildVarData(region_indices, items, optimize=False)
@@ -41,6 +49,16 @@ def test_buildVarData_no_optimize(region_indices, items, expected_num_shorts):
[0, 1, 2], [[0, 1, 128], [3, -129, 5], [256, 7, 8]]),
([0, 1, 2], [[0, 128, 2], [0, 4, 5], [0, 7, 8]], 1,
[1, 2], [[128, 2], [4, 5], [7, 8]]),
+ ([0, 1, 2], [[0, 32768, 2], [3, 4, 5], [6, 7, 8]], 0x8001,
+ [1, 0, 2], [[32768, 0, 2], [4, 3, 5], [7, 6, 8]]),
+ ([0, 1, 2], [[0, 1, 32768], [3, 4, 5], [6, -32769, 8]], 0x8002,
+ [1, 2, 0], [[1, 32768, 0], [4, 5, 3], [-32769, 8, 6]]),
+ ([0, 1, 2], [[32768, 1, -32769], [3, 4, 5], [6, 7, 8]], 0x8002,
+ [0, 2, 1], [[32768, -32769, 1], [3, 5, 4], [6, 8, 7]]),
+ ([0, 1, 2], [[0, 1, 32768], [3, -32769, 5], [65536, 7, 8]], 0x8003,
+ [0, 1, 2], [[0, 1, 32768], [3, -32769, 5], [65536, 7, 8]]),
+ ([0, 1, 2], [[0, 32768, 2], [0, 4, 5], [0, 7, 8]], 0x8001,
+ [1, 2], [[32768, 2], [4, 5], [7, 8]]),
], ids=[
"0/3_shorts_no_reorder",
"1/3_shorts_reorder",
@@ -48,6 +66,11 @@ def test_buildVarData_no_optimize(region_indices, items, expected_num_shorts):
"2/3_shorts_same_row_reorder",
"3/3_shorts_no_reorder",
"1/3_shorts_1/3_zeroes",
+ "1/3_longs_reorder",
+ "2/3_longs_reorder",
+ "2/3_longs_same_row_reorder",
+ "3/3_longs_no_reorder",
+ "1/3_longs_1/3_zeroes",
])
def test_buildVarData_optimize(
region_indices, items, expected_num_shorts, expected_regions,
diff --git a/Tests/varLib/instancer/data/PartialInstancerTest4-VF.ttx b/Tests/varLib/instancer/data/PartialInstancerTest4-VF.ttx
new file mode 100644
index 00000000..8d445b01
--- /dev/null
+++ b/Tests/varLib/instancer/data/PartialInstancerTest4-VF.ttx
@@ -0,0 +1,463 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ttFont sfntVersion="\x00\x01\x00\x00" ttLibVersion="4.24">
+
+ <GlyphOrder>
+ <!-- The 'id' attribute is only for humans; it is ignored when parsed. -->
+ <GlyphID id="0" name=".notdef"/>
+ <GlyphID id="1" name="T"/>
+ <GlyphID id="2" name="o"/>
+ <GlyphID id="3" name="space"/>
+ </GlyphOrder>
+
+ <head>
+ <!-- Most of this table will be recalculated by the compiler -->
+ <tableVersion value="1.0"/>
+ <fontRevision value="1.0"/>
+ <checkSumAdjustment value="0x95e7c646"/>
+ <magicNumber value="0x5f0f3cf5"/>
+ <flags value="00000000 00000011"/>
+ <unitsPerEm value="1000"/>
+ <created value="Tue May 25 09:10:37 2021"/>
+ <modified value="Tue May 25 10:10:18 2021"/>
+ <xMin value="32"/>
+ <yMin value="-200"/>
+ <xMax value="567"/>
+ <yMax value="800"/>
+ <macStyle value="00000000 00000000"/>
+ <lowestRecPPEM value="6"/>
+ <fontDirectionHint value="2"/>
+ <indexToLocFormat value="0"/>
+ <glyphDataFormat value="0"/>
+ </head>
+
+ <hhea>
+ <tableVersion value="0x00010000"/>
+ <ascent value="1000"/>
+ <descent value="-200"/>
+ <lineGap value="0"/>
+ <advanceWidthMax value="600"/>
+ <minLeftSideBearing value="32"/>
+ <minRightSideBearing value="33"/>
+ <xMaxExtent value="567"/>
+ <caretSlopeRise value="1"/>
+ <caretSlopeRun value="0"/>
+ <caretOffset value="0"/>
+ <reserved0 value="0"/>
+ <reserved1 value="0"/>
+ <reserved2 value="0"/>
+ <reserved3 value="0"/>
+ <metricDataFormat value="0"/>
+ <numberOfHMetrics value="2"/>
+ </hhea>
+
+ <maxp>
+ <!-- Most of this table will be recalculated by the compiler -->
+ <tableVersion value="0x10000"/>
+ <numGlyphs value="4"/>
+ <maxPoints value="32"/>
+ <maxContours value="2"/>
+ <maxCompositePoints value="0"/>
+ <maxCompositeContours value="0"/>
+ <maxZones value="1"/>
+ <maxTwilightPoints value="0"/>
+ <maxStorage value="0"/>
+ <maxFunctionDefs value="0"/>
+ <maxInstructionDefs value="0"/>
+ <maxStackElements value="0"/>
+ <maxSizeOfInstructions value="0"/>
+ <maxComponentElements value="0"/>
+ <maxComponentDepth value="0"/>
+ </maxp>
+
+ <OS_2>
+ <!-- The fields 'usFirstCharIndex' and 'usLastCharIndex'
+ will be recalculated by the compiler -->
+ <version value="4"/>
+ <xAvgCharWidth value="575"/>
+ <usWeightClass value="400"/>
+ <usWidthClass value="5"/>
+ <fsType value="00000000 00001000"/>
+ <ySubscriptXSize value="650"/>
+ <ySubscriptYSize value="600"/>
+ <ySubscriptXOffset value="0"/>
+ <ySubscriptYOffset value="75"/>
+ <ySuperscriptXSize value="650"/>
+ <ySuperscriptYSize value="600"/>
+ <ySuperscriptXOffset value="0"/>
+ <ySuperscriptYOffset value="350"/>
+ <yStrikeoutSize value="50"/>
+ <yStrikeoutPosition value="300"/>
+ <sFamilyClass value="0"/>
+ <panose>
+ <bFamilyType value="0"/>
+ <bSerifStyle value="0"/>
+ <bWeight value="0"/>
+ <bProportion value="0"/>
+ <bContrast value="0"/>
+ <bStrokeVariation value="0"/>
+ <bArmStyle value="0"/>
+ <bLetterForm value="0"/>
+ <bMidline value="0"/>
+ <bXHeight value="0"/>
+ </panose>
+ <ulUnicodeRange1 value="00000000 00000000 00000000 00000001"/>
+ <ulUnicodeRange2 value="00000000 00000000 00000000 00000000"/>
+ <ulUnicodeRange3 value="00000000 00000000 00000000 00000000"/>
+ <ulUnicodeRange4 value="00000000 00000000 00000000 00000000"/>
+ <achVendID value="NONE"/>
+ <fsSelection value="00000000 01000000"/>
+ <usFirstCharIndex value="32"/>
+ <usLastCharIndex value="111"/>
+ <sTypoAscender value="800"/>
+ <sTypoDescender value="-200"/>
+ <sTypoLineGap value="200"/>
+ <usWinAscent value="1000"/>
+ <usWinDescent value="200"/>
+ <ulCodePageRange1 value="00000000 00000000 00000000 00000001"/>
+ <ulCodePageRange2 value="00000000 00000000 00000000 00000000"/>
+ <sxHeight value="500"/>
+ <sCapHeight value="700"/>
+ <usDefaultChar value="0"/>
+ <usBreakChar value="32"/>
+ <usMaxContext value="2"/>
+ </OS_2>
+
+ <hmtx>
+ <mtx name=".notdef" width="500" lsb="50"/>
+ <mtx name="T" width="600" lsb="32"/>
+ <mtx name="o" width="600" lsb="58"/>
+ <mtx name="space" width="600" lsb="0"/>
+ </hmtx>
+
+ <cmap>
+ <tableVersion version="0"/>
+ <cmap_format_4 platformID="0" platEncID="3" language="0">
+ <map code="0x20" name="space"/><!-- SPACE -->
+ <map code="0x54" name="T"/><!-- LATIN CAPITAL LETTER T -->
+ <map code="0x6f" name="o"/><!-- LATIN SMALL LETTER O -->
+ </cmap_format_4>
+ <cmap_format_4 platformID="3" platEncID="1" language="0">
+ <map code="0x20" name="space"/><!-- SPACE -->
+ <map code="0x54" name="T"/><!-- LATIN CAPITAL LETTER T -->
+ <map code="0x6f" name="o"/><!-- LATIN SMALL LETTER O -->
+ </cmap_format_4>
+ </cmap>
+
+ <loca>
+ <!-- The 'loca' table will be calculated by the compiler -->
+ </loca>
+
+ <glyf>
+
+ <!-- The xMin, yMin, xMax and yMax values
+ will be recalculated by the compiler. -->
+
+ <TTGlyph name=".notdef" xMin="50" yMin="-200" xMax="450" yMax="800">
+ <contour>
+ <pt x="50" y="-200" on="1"/>
+ <pt x="50" y="800" on="1"/>
+ <pt x="450" y="800" on="1"/>
+ <pt x="450" y="-200" on="1"/>
+ </contour>
+ <contour>
+ <pt x="100" y="-150" on="1"/>
+ <pt x="400" y="-150" on="1"/>
+ <pt x="400" y="750" on="1"/>
+ <pt x="100" y="750" on="1"/>
+ </contour>
+ <instructions/>
+ </TTGlyph>
+
+ <TTGlyph name="T" xMin="32" yMin="0" xMax="567" yMax="710">
+ <contour>
+ <pt x="32" y="710" on="1"/>
+ <pt x="567" y="710" on="1"/>
+ <pt x="567" y="627" on="1"/>
+ <pt x="32" y="627" on="1"/>
+ </contour>
+ <contour>
+ <pt x="230" y="710" on="1"/>
+ <pt x="370" y="710" on="1"/>
+ <pt x="370" y="0" on="1"/>
+ <pt x="230" y="0" on="1"/>
+ </contour>
+ <instructions/>
+ </TTGlyph>
+
+ <TTGlyph name="o" xMin="58" yMin="-15" xMax="542" yMax="533">
+ <contour>
+ <pt x="300" y="-15" on="1"/>
+ <pt x="233" y="-15" on="0"/>
+ <pt x="123" y="59" on="0"/>
+ <pt x="58" y="184" on="0"/>
+ <pt x="58" y="259" on="1"/>
+ <pt x="58" y="335" on="0"/>
+ <pt x="123" y="459" on="0"/>
+ <pt x="233" y="533" on="0"/>
+ <pt x="300" y="533" on="1"/>
+ <pt x="367" y="533" on="0"/>
+ <pt x="477" y="459" on="0"/>
+ <pt x="542" y="335" on="0"/>
+ <pt x="542" y="259" on="1"/>
+ <pt x="542" y="184" on="0"/>
+ <pt x="477" y="59" on="0"/>
+ <pt x="367" y="-15" on="0"/>
+ </contour>
+ <contour>
+ <pt x="300" y="50" on="1"/>
+ <pt x="343" y="50" on="0"/>
+ <pt x="413" y="107" on="0"/>
+ <pt x="455" y="202" on="0"/>
+ <pt x="455" y="260" on="1"/>
+ <pt x="455" y="318" on="0"/>
+ <pt x="413" y="413" on="0"/>
+ <pt x="343" y="470" on="0"/>
+ <pt x="300" y="470" on="1"/>
+ <pt x="257" y="470" on="0"/>
+ <pt x="187" y="413" on="0"/>
+ <pt x="145" y="318" on="0"/>
+ <pt x="145" y="260" on="1"/>
+ <pt x="145" y="202" on="0"/>
+ <pt x="187" y="107" on="0"/>
+ <pt x="257" y="50" on="0"/>
+ </contour>
+ <instructions/>
+ </TTGlyph>
+
+ <TTGlyph name="space"/><!-- contains no outline data -->
+
+ </glyf>
+
+ <name>
+ <namerecord nameID="256" platformID="1" platEncID="0" langID="0x0" unicode="True">
+ Weight
+ </namerecord>
+ <namerecord nameID="257" platformID="1" platEncID="0" langID="0x0" unicode="True">
+ Regular
+ </namerecord>
+ <namerecord nameID="258" platformID="1" platEncID="0" langID="0x0" unicode="True">
+ Bold
+ </namerecord>
+ <namerecord nameID="1" platformID="3" platEncID="1" langID="0x409">
+ New Font
+ </namerecord>
+ <namerecord nameID="2" platformID="3" platEncID="1" langID="0x409">
+ Regular
+ </namerecord>
+ <namerecord nameID="3" platformID="3" platEncID="1" langID="0x409">
+ 1.000;NONE;NewFont-Regular
+ </namerecord>
+ <namerecord nameID="4" platformID="3" platEncID="1" langID="0x409">
+ New Font Regular
+ </namerecord>
+ <namerecord nameID="5" platformID="3" platEncID="1" langID="0x409">
+ Version 1.000
+ </namerecord>
+ <namerecord nameID="6" platformID="3" platEncID="1" langID="0x409">
+ NewFont-Regular
+ </namerecord>
+ <namerecord nameID="256" platformID="3" platEncID="1" langID="0x409">
+ Weight
+ </namerecord>
+ <namerecord nameID="257" platformID="3" platEncID="1" langID="0x409">
+ Regular
+ </namerecord>
+ <namerecord nameID="258" platformID="3" platEncID="1" langID="0x409">
+ Bold
+ </namerecord>
+ </name>
+
+ <post>
+ <formatType value="2.0"/>
+ <italicAngle value="0.0"/>
+ <underlinePosition value="-100"/>
+ <underlineThickness value="50"/>
+ <isFixedPitch value="0"/>
+ <minMemType42 value="0"/>
+ <maxMemType42 value="0"/>
+ <minMemType1 value="0"/>
+ <maxMemType1 value="0"/>
+ <psNames>
+ <!-- This file uses unique glyph names based on the information
+ found in the 'post' table. Since these names might not be unique,
+ we have to invent artificial names in case of clashes. In order to
+ be able to retain the original information, we need a name to
+ ps name mapping for those cases where they differ. That's what
+ you see below.
+ -->
+ </psNames>
+ <extraNames>
+ <!-- following are the name that are not taken from the standard Mac glyph order -->
+ </extraNames>
+ </post>
+
+ <GDEF>
+ <Version value="0x00010003"/>
+ <VarStore Format="1">
+ <Format value="1"/>
+ <VarRegionList>
+ <!-- RegionAxisCount=1 -->
+ <!-- RegionCount=1 -->
+ <Region index="0">
+ <VarRegionAxis index="0">
+ <StartCoord value="0.0"/>
+ <PeakCoord value="1.0"/>
+ <EndCoord value="1.0"/>
+ </VarRegionAxis>
+ </Region>
+ </VarRegionList>
+ <!-- VarDataCount=1 -->
+ <VarData index="0">
+ <!-- ItemCount=1 -->
+ <NumShorts value="0"/>
+ <!-- VarRegionCount=1 -->
+ <VarRegionIndex index="0" value="0"/>
+ <Item index="0" value="[-50]"/>
+ </VarData>
+ </VarStore>
+ </GDEF>
+
+ <GPOS>
+ <Version value="0x00010000"/>
+ <ScriptList>
+ <!-- ScriptCount=1 -->
+ <ScriptRecord index="0">
+ <ScriptTag value="DFLT"/>
+ <Script>
+ <DefaultLangSys>
+ <ReqFeatureIndex value="65535"/>
+ <!-- FeatureCount=1 -->
+ <FeatureIndex index="0" value="0"/>
+ </DefaultLangSys>
+ <!-- LangSysCount=0 -->
+ </Script>
+ </ScriptRecord>
+ </ScriptList>
+ <FeatureList>
+ <!-- FeatureCount=1 -->
+ <FeatureRecord index="0">
+ <FeatureTag value="kern"/>
+ <Feature>
+ <!-- LookupCount=1 -->
+ <LookupListIndex index="0" value="0"/>
+ </Feature>
+ </FeatureRecord>
+ </FeatureList>
+ <LookupList>
+ <!-- LookupCount=1 -->
+ <Lookup index="0">
+ <LookupType value="2"/>
+ <LookupFlag value="8"/><!-- ignoreMarks -->
+ <!-- SubTableCount=1 -->
+ <PairPos index="0" Format="1">
+ <Coverage>
+ <Glyph value="T"/>
+ </Coverage>
+ <ValueFormat1 value="64"/>
+ <ValueFormat2 value="0"/>
+ <!-- PairSetCount=1 -->
+ <PairSet index="0">
+ <!-- PairValueCount=1 -->
+ <PairValueRecord index="0">
+ <SecondGlyph value="o"/>
+ <Value1>
+ <XAdvDevice>
+ <StartSize value="0"/>
+ <EndSize value="0"/>
+ <DeltaFormat value="32768"/>
+ </XAdvDevice>
+ </Value1>
+ </PairValueRecord>
+ </PairSet>
+ </PairPos>
+ </Lookup>
+ </LookupList>
+ </GPOS>
+
+ <fvar>
+
+ <!-- Weight -->
+ <Axis>
+ <AxisTag>wght</AxisTag>
+ <Flags>0x0</Flags>
+ <MinValue>400.0</MinValue>
+ <DefaultValue>400.0</DefaultValue>
+ <MaxValue>700.0</MaxValue>
+ <AxisNameID>256</AxisNameID>
+ </Axis>
+
+ <!-- Regular -->
+ <NamedInstance flags="0x0" subfamilyNameID="257">
+ <coord axis="wght" value="400.0"/>
+ </NamedInstance>
+
+ <!-- Bold -->
+ <NamedInstance flags="0x0" subfamilyNameID="258">
+ <coord axis="wght" value="700.0"/>
+ </NamedInstance>
+ </fvar>
+
+ <gvar>
+ <version value="1"/>
+ <reserved value="0"/>
+ <glyphVariations glyph="T">
+ <tuple>
+ <coord axis="wght" value="1.0"/>
+ <delta pt="0" x="0" y="0"/>
+ <delta pt="1" x="0" y="0"/>
+ <delta pt="2" x="0" y="-27"/>
+ <delta pt="3" x="0" y="-27"/>
+ <delta pt="4" x="-30" y="0"/>
+ <delta pt="5" x="28" y="0"/>
+ <delta pt="6" x="28" y="0"/>
+ <delta pt="7" x="-30" y="0"/>
+ <delta pt="8" x="0" y="0"/>
+ <delta pt="9" x="0" y="0"/>
+ <delta pt="10" x="0" y="0"/>
+ <delta pt="11" x="0" y="0"/>
+ </tuple>
+ </glyphVariations>
+ <glyphVariations glyph="o">
+ <tuple>
+ <coord axis="wght" value="1.0"/>
+ <delta pt="0" x="0" y="0"/>
+ <delta pt="1" x="0" y="0"/>
+ <delta pt="2" x="0" y="0"/>
+ <delta pt="3" x="0" y="0"/>
+ <delta pt="4" x="0" y="0"/>
+ <delta pt="5" x="0" y="0"/>
+ <delta pt="6" x="0" y="0"/>
+ <delta pt="7" x="0" y="0"/>
+ <delta pt="8" x="0" y="0"/>
+ <delta pt="9" x="0" y="0"/>
+ <delta pt="10" x="0" y="0"/>
+ <delta pt="11" x="0" y="0"/>
+ <delta pt="12" x="0" y="0"/>
+ <delta pt="13" x="0" y="0"/>
+ <delta pt="14" x="0" y="0"/>
+ <delta pt="15" x="0" y="0"/>
+ <delta pt="16" x="0" y="30"/>
+ <delta pt="17" x="0" y="30"/>
+ <delta pt="18" x="-15" y="15"/>
+ <delta pt="19" x="-30" y="0"/>
+ <delta pt="20" x="-30" y="0"/>
+ <delta pt="21" x="-30" y="0"/>
+ <delta pt="22" x="-15" y="-15"/>
+ <delta pt="23" x="0" y="-30"/>
+ <delta pt="24" x="0" y="-30"/>
+ <delta pt="25" x="0" y="-30"/>
+ <delta pt="26" x="15" y="-15"/>
+ <delta pt="27" x="30" y="0"/>
+ <delta pt="28" x="30" y="0"/>
+ <delta pt="29" x="30" y="0"/>
+ <delta pt="30" x="15" y="15"/>
+ <delta pt="31" x="0" y="30"/>
+ <delta pt="32" x="0" y="0"/>
+ <delta pt="33" x="0" y="0"/>
+ <delta pt="34" x="0" y="0"/>
+ <delta pt="35" x="0" y="0"/>
+ </tuple>
+ </glyphVariations>
+ </gvar>
+
+</ttFont>
diff --git a/Tests/varLib/instancer/data/SinglePos.ttx b/Tests/varLib/instancer/data/SinglePos.ttx
new file mode 100644
index 00000000..64ffd9f5
--- /dev/null
+++ b/Tests/varLib/instancer/data/SinglePos.ttx
@@ -0,0 +1,249 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ttFont sfntVersion="\x00\x01\x00\x00" ttLibVersion="4.31">
+
+ <GlyphOrder>
+ <!-- The 'id' attribute is only for humans; it is ignored when parsed. -->
+ <GlyphID id="0" name=".notdef"/>
+ <GlyphID id="1" name="glyph00001"/>
+ </GlyphOrder>
+
+ <head>
+ <!-- Most of this table will be recalculated by the compiler -->
+ <tableVersion value="1.0"/>
+ <fontRevision value="1.02"/>
+ <checkSumAdjustment value="0x80d638b3"/>
+ <magicNumber value="0x5f0f3cf5"/>
+ <flags value="00000000 00000011"/>
+ <unitsPerEm value="1000"/>
+ <created value="Tue Feb 22 10:53:52 2022"/>
+ <modified value="Sat Mar 19 18:41:47 2022"/>
+ <xMin value="-80"/>
+ <yMin value="-550"/>
+ <xMax value="13679"/>
+ <yMax value="1461"/>
+ <macStyle value="00000000 00000000"/>
+ <lowestRecPPEM value="6"/>
+ <fontDirectionHint value="2"/>
+ <indexToLocFormat value="0"/>
+ <glyphDataFormat value="0"/>
+ </head>
+
+ <maxp>
+ <!-- Most of this table will be recalculated by the compiler -->
+ <tableVersion value="0x10000"/>
+ <numGlyphs value="2"/>
+ <maxPoints value="1008"/>
+ <maxContours value="61"/>
+ <maxCompositePoints value="332"/>
+ <maxCompositeContours value="27"/>
+ <maxZones value="1"/>
+ <maxTwilightPoints value="0"/>
+ <maxStorage value="0"/>
+ <maxFunctionDefs value="0"/>
+ <maxInstructionDefs value="0"/>
+ <maxStackElements value="0"/>
+ <maxSizeOfInstructions value="0"/>
+ <maxComponentElements value="3"/>
+ <maxComponentDepth value="5"/>
+ </maxp>
+
+ <name>
+ <namerecord nameID="266" platformID="1" platEncID="0" langID="0x0" unicode="True">
+ Optical Size
+ </namerecord>
+ <namerecord nameID="267" platformID="1" platEncID="0" langID="0x0" unicode="True">
+ Weight
+ </namerecord>
+ </name>
+
+ <GDEF>
+ <Version value="0x00010003"/>
+ <VarStore Format="1">
+ <Format value="1"/>
+ <VarRegionList>
+ <!-- RegionAxisCount=2 -->
+ <!-- RegionCount=3 -->
+ <Region index="0">
+ <VarRegionAxis index="0">
+ <StartCoord value="-1.0"/>
+ <PeakCoord value="-1.0"/>
+ <EndCoord value="0.0"/>
+ </VarRegionAxis>
+ <VarRegionAxis index="1">
+ <StartCoord value="0.0"/>
+ <PeakCoord value="0.0"/>
+ <EndCoord value="0.0"/>
+ </VarRegionAxis>
+ </Region>
+ <Region index="1">
+ <VarRegionAxis index="0">
+ <StartCoord value="0.0"/>
+ <PeakCoord value="0.0"/>
+ <EndCoord value="0.0"/>
+ </VarRegionAxis>
+ <VarRegionAxis index="1">
+ <StartCoord value="0.0"/>
+ <PeakCoord value="1.0"/>
+ <EndCoord value="1.0"/>
+ </VarRegionAxis>
+ </Region>
+ <Region index="2">
+ <VarRegionAxis index="0">
+ <StartCoord value="-1.0"/>
+ <PeakCoord value="-1.0"/>
+ <EndCoord value="0.0"/>
+ </VarRegionAxis>
+ <VarRegionAxis index="1">
+ <StartCoord value="0.0"/>
+ <PeakCoord value="1.0"/>
+ <EndCoord value="1.0"/>
+ </VarRegionAxis>
+ </Region>
+ </VarRegionList>
+ <!-- VarDataCount=3 -->
+ <VarData index="0">
+ <!-- ItemCount=27 -->
+ <NumShorts value="0"/>
+ <!-- VarRegionCount=1 -->
+ <VarRegionIndex index="0" value="1"/>
+ <Item index="0" value="[-126]"/>
+ <Item index="1" value="[-67]"/>
+ <Item index="2" value="[-51]"/>
+ <Item index="3" value="[-50]"/>
+ <Item index="4" value="[-37]"/>
+ <Item index="5" value="[-36]"/>
+ <Item index="6" value="[-27]"/>
+ <Item index="7" value="[-24]"/>
+ <Item index="8" value="[-23]"/>
+ <Item index="9" value="[-22]"/>
+ <Item index="10" value="[-21]"/>
+ <Item index="11" value="[-19]"/>
+ <Item index="12" value="[-18]"/>
+ <Item index="13" value="[-17]"/>
+ <Item index="14" value="[-16]"/>
+ <Item index="15" value="[-10]"/>
+ <Item index="16" value="[-6]"/>
+ <Item index="17" value="[-5]"/>
+ <Item index="18" value="[-4]"/>
+ <Item index="19" value="[-2]"/>
+ <Item index="20" value="[-1]"/>
+ <Item index="21" value="[4]"/>
+ <Item index="22" value="[6]"/>
+ <Item index="23" value="[7]"/>
+ <Item index="24" value="[21]"/>
+ <Item index="25" value="[22]"/>
+ <Item index="26" value="[40]"/>
+ </VarData>
+ <VarData index="1">
+ <!-- ItemCount=19 -->
+ <NumShorts value="0"/>
+ <!-- VarRegionCount=3 -->
+ <VarRegionIndex index="0" value="0"/>
+ <VarRegionIndex index="1" value="1"/>
+ <VarRegionIndex index="2" value="2"/>
+ <Item index="0" value="[-70, -20, 20]"/>
+ <Item index="1" value="[-60, -50, 20]"/>
+ <Item index="2" value="[-60, -37, 20]"/>
+ <Item index="3" value="[-60, -36, 20]"/>
+ <Item index="4" value="[-60, -27, 20]"/>
+ <Item index="5" value="[-60, -24, 20]"/>
+ <Item index="6" value="[-60, -17, 20]"/>
+ <Item index="7" value="[-60, -2, 20]"/>
+ <Item index="8" value="[-60, -1, 20]"/>
+ <Item index="9" value="[-51, -51, 51]"/>
+ <Item index="10" value="[-51, -22, 9]"/>
+ <Item index="11" value="[-38, -24, 24]"/>
+ <Item index="12" value="[-38, -23, 23]"/>
+ <Item index="13" value="[-30, -22, 22]"/>
+ <Item index="14" value="[-30, -21, 21]"/>
+ <Item index="15" value="[-5, -5, 5]"/>
+ <Item index="16" value="[1, -6, -1]"/>
+ <Item index="17" value="[43, 25, -18]"/>
+ <Item index="18" value="[50, 22, -10]"/>
+ </VarData>
+ <VarData index="2">
+ <!-- ItemCount=3 -->
+ <NumShorts value="0"/>
+ <!-- VarRegionCount=3 -->
+ <VarRegionIndex index="0" value="0"/>
+ <VarRegionIndex index="1" value="1"/>
+ <VarRegionIndex index="2" value="2"/>
+ <Item index="0" value="[0, 6, -6]"/>
+ <Item index="1" value="[7, 0, -7]"/>
+ <Item index="2" value="[20, 8, 0]"/>
+ </VarData>
+ </VarStore>
+ </GDEF>
+
+ <GPOS>
+ <Version value="0x00010000"/>
+ <ScriptList>
+ <!-- ScriptCount=0 -->
+ </ScriptList>
+ <FeatureList>
+ <!-- FeatureCount=0 -->
+ </FeatureList>
+ <LookupList>
+ <!-- LookupCount=2 -->
+ <Lookup index="0">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="glyph00001"/>
+ </Coverage>
+ <ValueFormat value="1"/>
+ <Value XPlacement="-80"/>
+ </SinglePos>
+ </Lookup>
+ <Lookup index="1">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="glyph00001"/>
+ </Coverage>
+ <ValueFormat value="2"/>
+ <Value YPlacement="-260"/>
+ </SinglePos>
+ </Lookup>
+ </LookupList>
+ </GPOS>
+
+ <avar>
+ <segment axis="opsz">
+ <mapping from="-1.0" to="-1.0"/>
+ <mapping from="-0.01" to="-0.9"/>
+ <mapping from="0.0" to="0.0"/>
+ <mapping from="1.0" to="1.0"/>
+ </segment>
+ <segment axis="wght">
+ <mapping from="-1.0" to="-1.0"/>
+ <mapping from="0.0" to="0.0"/>
+ <mapping from="0.3333" to="0.4943"/>
+ <mapping from="1.0" to="1.0"/>
+ </segment>
+ </avar>
+
+ <fvar>
+ <Axis>
+ <AxisTag>opsz</AxisTag>
+ <Flags>0x0</Flags>
+ <MinValue>17.0</MinValue>
+ <DefaultValue>18.0</DefaultValue>
+ <MaxValue>18.0</MaxValue>
+ <AxisNameID>256</AxisNameID>
+ </Axis>
+ <Axis>
+ <AxisTag>wght</AxisTag>
+ <Flags>0x0</Flags>
+ <MinValue>400.0</MinValue>
+ <DefaultValue>400.0</DefaultValue>
+ <MaxValue>700.0</MaxValue>
+ <AxisNameID>257</AxisNameID>
+ </Axis>
+ </fvar>
+
+</ttFont>
diff --git a/Tests/varLib/instancer/data/test_results/SinglePos-VF-instance-280,18.ttx b/Tests/varLib/instancer/data/test_results/SinglePos-VF-instance-280,18.ttx
new file mode 100644
index 00000000..2c284ba0
--- /dev/null
+++ b/Tests/varLib/instancer/data/test_results/SinglePos-VF-instance-280,18.ttx
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ttFont sfntVersion="\x00\x01\x00\x00" ttLibVersion="4.31">
+
+ <GlyphOrder>
+ <!-- The 'id' attribute is only for humans; it is ignored when parsed. -->
+ <GlyphID id="0" name=".notdef"/>
+ <GlyphID id="1" name="glyph00001"/>
+ </GlyphOrder>
+
+ <head>
+ <!-- Most of this table will be recalculated by the compiler -->
+ <tableVersion value="1.0"/>
+ <fontRevision value="1.02"/>
+ <checkSumAdjustment value="0xf6586296"/>
+ <magicNumber value="0x5f0f3cf5"/>
+ <flags value="00000000 00000011"/>
+ <unitsPerEm value="1000"/>
+ <created value="Tue Feb 22 10:53:52 2022"/>
+ <modified value="Sat Mar 19 18:41:47 2022"/>
+ <xMin value="-80"/>
+ <yMin value="-550"/>
+ <xMax value="13679"/>
+ <yMax value="1461"/>
+ <macStyle value="00000000 00000000"/>
+ <lowestRecPPEM value="6"/>
+ <fontDirectionHint value="2"/>
+ <indexToLocFormat value="0"/>
+ <glyphDataFormat value="0"/>
+ </head>
+
+ <maxp>
+ <!-- Most of this table will be recalculated by the compiler -->
+ <tableVersion value="0x10000"/>
+ <numGlyphs value="2"/>
+ <maxPoints value="1008"/>
+ <maxContours value="61"/>
+ <maxCompositePoints value="332"/>
+ <maxCompositeContours value="27"/>
+ <maxZones value="1"/>
+ <maxTwilightPoints value="0"/>
+ <maxStorage value="0"/>
+ <maxFunctionDefs value="0"/>
+ <maxInstructionDefs value="0"/>
+ <maxStackElements value="0"/>
+ <maxSizeOfInstructions value="0"/>
+ <maxComponentElements value="3"/>
+ <maxComponentDepth value="5"/>
+ </maxp>
+
+ <name>
+ <namerecord nameID="266" platformID="1" platEncID="0" langID="0x0" unicode="True">
+ Optical Size
+ </namerecord>
+ <namerecord nameID="267" platformID="1" platEncID="0" langID="0x0" unicode="True">
+ Weight
+ </namerecord>
+ </name>
+
+ <GPOS>
+ <Version value="0x00010000"/>
+ <ScriptList>
+ <!-- ScriptCount=0 -->
+ </ScriptList>
+ <FeatureList>
+ <!-- FeatureCount=0 -->
+ </FeatureList>
+ <LookupList>
+ <!-- LookupCount=2 -->
+ <Lookup index="0">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="glyph00001"/>
+ </Coverage>
+ <ValueFormat value="1"/>
+ <Value XPlacement="-80"/>
+ </SinglePos>
+ </Lookup>
+ <Lookup index="1">
+ <LookupType value="1"/>
+ <LookupFlag value="0"/>
+ <!-- SubTableCount=1 -->
+ <SinglePos index="0" Format="1">
+ <Coverage>
+ <Glyph value="glyph00001"/>
+ </Coverage>
+ <ValueFormat value="2"/>
+ <Value YPlacement="-260"/>
+ </SinglePos>
+ </Lookup>
+ </LookupList>
+ </GPOS>
+
+</ttFont>
diff --git a/Tests/varLib/instancer/instancer_test.py b/Tests/varLib/instancer/instancer_test.py
index cb7e8547..bb2d1758 100644
--- a/Tests/varLib/instancer/instancer_test.py
+++ b/Tests/varLib/instancer/instancer_test.py
@@ -1,5 +1,5 @@
-from fontTools.misc.py23 import Tag
from fontTools.misc.fixedTools import floatToFixedToFloat
+from fontTools.misc.textTools import Tag
from fontTools import ttLib
from fontTools import designspaceLib
from fontTools.feaLib.builder import addOpenTypeFeaturesFromString
@@ -936,6 +936,30 @@ class InstantiateOTLTest(object):
assert not hasattr(valueRec1, "XAdvDevice")
assert valueRec1.XAdvance == v2
+ def test_GPOS_ValueRecord_XAdvDevice_wtihout_XAdvance(self):
+ # Test VF contains a PairPos adjustment in which the default instance
+ # has no XAdvance but there are deltas in XAdvDevice (VariationIndex).
+ vf = ttLib.TTFont()
+ vf.importXML(os.path.join(TESTDATA, "PartialInstancerTest4-VF.ttx"))
+ pairPos = vf["GPOS"].table.LookupList.Lookup[0].SubTable[0]
+ assert pairPos.ValueFormat1 == 0x40
+ valueRec1 = pairPos.PairSet[0].PairValueRecord[0].Value1
+ assert not hasattr(valueRec1, "XAdvance")
+ assert valueRec1.XAdvDevice.DeltaFormat == 0x8000
+ outer = valueRec1.XAdvDevice.StartSize
+ inner = valueRec1.XAdvDevice.EndSize
+ assert vf["GDEF"].table.VarStore.VarData[outer].Item[inner] == [-50]
+
+ # check that MutatorMerger for ValueRecord doesn't raise AttributeError
+ # when XAdvDevice is present but there's no corresponding XAdvance.
+ instancer.instantiateOTL(vf, {"wght": 0.5})
+
+ pairPos = vf["GPOS"].table.LookupList.Lookup[0].SubTable[0]
+ assert pairPos.ValueFormat1 == 0x4
+ valueRec1 = pairPos.PairSet[0].PairValueRecord[0].Value1
+ assert not hasattr(valueRec1, "XAdvDevice")
+ assert valueRec1.XAdvance == -25
+
class InstantiateAvarTest(object):
@pytest.mark.parametrize("location", [{"wght": 0.0}, {"wdth": 0.0}])
@@ -1387,7 +1411,7 @@ def _dump_ttx(ttFont):
tmp.seek(0)
ttFont2 = ttLib.TTFont(tmp, recalcBBoxes=False, recalcTimestamp=False)
s = StringIO()
- ttFont2.saveXML(s, newlinestr="\n")
+ ttFont2.saveXML(s)
return _strip_ttLibVersion(s.getvalue())
@@ -1452,6 +1476,23 @@ class InstantiateVariableFontTest(object):
assert _dump_ttx(instance) == expected
+ def test_singlepos(self):
+ varfont = ttLib.TTFont(recalcTimestamp=False)
+ varfont.importXML(os.path.join(TESTDATA, "SinglePos.ttx"))
+
+ location = {"wght": 280, "opsz": 18}
+
+ instance = instancer.instantiateVariableFont(
+ varfont, location,
+ )
+
+ expected = _get_expected_instance_ttx(
+ "SinglePos", *location.values()
+ )
+
+ assert _dump_ttx(instance) == expected
+
+
def _conditionSetAsDict(conditionSet, axisOrder):
result = {}
diff --git a/Tests/varLib/interpolate_layout_test.py b/Tests/varLib/interpolate_layout_test.py
index d7134d79..18dc3a75 100644
--- a/Tests/varLib/interpolate_layout_test.py
+++ b/Tests/varLib/interpolate_layout_test.py
@@ -61,12 +61,11 @@ class InterpolateLayoutTest(unittest.TestCase):
lines = []
with open(path, "r", encoding="utf-8") as ttx:
for line in ttx.readlines():
- # Elide ttFont attributes because ttLibVersion may change,
- # and use os-native line separators so we can run difflib.
+ # Elide ttFont attributes because ttLibVersion may change.
if line.startswith("<ttFont "):
- lines.append("<ttFont>" + os.linesep)
+ lines.append("<ttFont>\n")
else:
- lines.append(line.rstrip() + os.linesep)
+ lines.append(line.rstrip() + "\n")
return lines
def expect_ttx(self, font, expected_ttx, tables):
diff --git a/Tests/varLib/mutator_test.py b/Tests/varLib/mutator_test.py
index abe5d027..03ad870f 100644
--- a/Tests/varLib/mutator_test.py
+++ b/Tests/varLib/mutator_test.py
@@ -59,12 +59,11 @@ class MutatorTest(unittest.TestCase):
lines = []
with open(path, "r", encoding="utf-8") as ttx:
for line in ttx.readlines():
- # Elide ttFont attributes because ttLibVersion may change,
- # and use os-native line separators so we can run difflib.
+ # Elide ttFont attributes because ttLibVersion may change.
if line.startswith("<ttFont "):
- lines.append("<ttFont>" + os.linesep)
+ lines.append("<ttFont>\n")
else:
- lines.append(line.rstrip() + os.linesep)
+ lines.append(line.rstrip() + "\n")
return lines
def expect_ttx(self, font, expected_ttx, tables):
diff --git a/Tests/varLib/varLib_test.py b/Tests/varLib/varLib_test.py
index b8e7183b..484a2e22 100644
--- a/Tests/varLib/varLib_test.py
+++ b/Tests/varLib/varLib_test.py
@@ -84,12 +84,11 @@ class BuildTest(unittest.TestCase):
lines = []
with open(path, "r", encoding="utf-8") as ttx:
for line in ttx.readlines():
- # Elide ttFont attributes because ttLibVersion may change,
- # and use os-native line separators so we can run difflib.
+ # Elide ttFont attributes because ttLibVersion may change.
if line.startswith("<ttFont "):
- lines.append("<ttFont>" + os.linesep)
+ lines.append("<ttFont>\n")
else:
- lines.append(line.rstrip() + os.linesep)
+ lines.append(line.rstrip() + "\n")
return lines
def expect_ttx(self, font, expected_ttx, tables):
diff --git a/Tests/varLib/varStore_test.py b/Tests/varLib/varStore_test.py
new file mode 100644
index 00000000..a1bdd123
--- /dev/null
+++ b/Tests/varLib/varStore_test.py
@@ -0,0 +1,82 @@
+import pytest
+from fontTools.varLib.models import VariationModel
+from fontTools.varLib.varStore import OnlineVarStoreBuilder, VarStoreInstancer
+from fontTools.ttLib import TTFont, newTable
+from fontTools.ttLib.tables._f_v_a_r import Axis
+from fontTools.ttLib.tables.otBase import OTTableReader, OTTableWriter
+from fontTools.ttLib.tables.otTables import VarStore
+
+
+@pytest.mark.parametrize(
+ "locations, masterValues",
+ [
+ (
+ [{}, {"a": 1}],
+ [
+ [10, 20],
+ [100, 2000],
+ [100, 22000],
+ ],
+ ),
+ (
+ [{}, {"a": 1}, {"b": 1}, {"a": 1, "b": 1}],
+ [
+ [10, 20, 40, 60],
+ [100, 2000, 400, 6000],
+ [7100, 22000, 4000, 30000],
+ ],
+ ),
+ (
+ [{}, {"a": 1}],
+ [
+ [10, 20],
+ [42000, 100],
+ [100, 52000],
+ ],
+ ),
+ (
+ [{}, {"a": 1}, {"b": 1}, {"a": 1, "b": 1}],
+ [
+ [10, 20, 40, 60],
+ [40000, 42000, 400, 6000],
+ [100, 22000, 4000, 173000],
+ ],
+ ),
+ ],
+)
+def test_onlineVarStoreBuilder(locations, masterValues):
+ axisTags = sorted({k for loc in locations for k in loc})
+ model = VariationModel(locations)
+ builder = OnlineVarStoreBuilder(axisTags)
+ builder.setModel(model)
+ varIdxs = []
+ for masters in masterValues:
+ _, varIdx = builder.storeMasters(masters)
+ varIdxs.append(varIdx)
+
+ varStore = builder.finish()
+ mapping = varStore.optimize()
+ varIdxs = [mapping[varIdx] for varIdx in varIdxs]
+
+ dummyFont = TTFont()
+ writer = OTTableWriter()
+ varStore.compile(writer, dummyFont)
+ data = writer.getAllData()
+ reader = OTTableReader(data)
+ varStore = VarStore()
+ varStore.decompile(reader, dummyFont)
+
+ fvarAxes = [buildAxis(axisTag) for axisTag in axisTags]
+ instancer = VarStoreInstancer(varStore, fvarAxes)
+ for masters, varIdx in zip(masterValues, varIdxs):
+ base, *rest = masters
+ for expectedValue, loc in zip(masters, locations):
+ instancer.setLocation(loc)
+ value = base + instancer[varIdx]
+ assert expectedValue == value
+
+
+def buildAxis(axisTag):
+ axis = Axis()
+ axis.axisTag = axisTag
+ return axis
diff --git a/mypy.ini b/mypy.ini
index 7e37b03f..0a04cfb2 100644
--- a/mypy.ini
+++ b/mypy.ini
@@ -1,5 +1,5 @@
[mypy]
-python_version = 3.6
+python_version = 3.7
files = Lib/fontTools/misc/plistlib
follow_imports = silent
ignore_missing_imports = True
diff --git a/requirements.txt b/requirements.txt
index 680ffbb5..d061b779 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,13 +1,14 @@
# we use the official Brotli module on CPython and the CFFI-based
# extension 'brotlipy' on PyPy
brotli==1.0.9; platform_python_implementation != "PyPy"
-brotlipy==0.7.0; platform_python_implementation == "PyPy"
-unicodedata2==13.0.0.post2; python_version < '3.9' and platform_python_implementation != "PyPy"
-scipy==1.5.4; platform_python_implementation != "PyPy"
+brotlicffi==1.0.9.2; platform_python_implementation == "PyPy"
+unicodedata2==14.0.0; python_version < '3.11'
+scipy==1.7.3; platform_python_implementation != "PyPy"
munkres==1.1.4; platform_python_implementation == "PyPy"
-zopfli==0.1.6
-fs==2.4.11
-skia-pathops==0.5.1.post1; platform_python_implementation != "PyPy"
+zopfli==0.1.9
+fs==2.4.14
+skia-pathops==0.7.2; platform_python_implementation != "PyPy"
# this is only required to run Tests/cu2qu/{ufo,cli}_test.py
-ufoLib2==0.6.2
-pyobjc==6.2.2; sys_platform == "darwin"
+ufoLib2==0.13.0
+pyobjc==8.1; sys_platform == "darwin"
+freetype-py==2.2.0
diff --git a/setup.cfg b/setup.cfg
index 230175c6..7c7fc00c 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,5 +1,5 @@
[bumpversion]
-current_version = 4.22.0
+current_version = 4.31.2
commit = True
tag = False
tag_name = {new_version}
@@ -52,3 +52,10 @@ filterwarnings =
ignore:writePlist:DeprecationWarning:plistlib_test
ignore:some_function:DeprecationWarning:fontTools.ufoLib.utils
ignore::DeprecationWarning:fontTools.varLib.designspace
+
+[tool:interrogate]
+ignore-semiprivate = true
+ignore-private = true
+ignore-nested-functions = true
+ignore-regex = ^(from|to)XML$,^(de)?compile$
+ignore-module = true
diff --git a/setup.py b/setup.py
index d1c5a4f6..2f30ef4f 100755
--- a/setup.py
+++ b/setup.py
@@ -90,11 +90,9 @@ extras_require = {
# of the Unicode Character Database instead of the built-in unicodedata
# which varies between python versions and may be outdated.
"unicode": [
- # the unicodedata2 extension module doesn't work on PyPy.
- # Python 3.9 already has Unicode 13.0, so the backport is not needed.
+ # Python 3.11 already has Unicode 14.0, so the backport is not needed.
(
- "unicodedata2 >= 13.0.0; "
- "python_version < '3.9' and platform_python_implementation != 'PyPy'"
+ "unicodedata2 >= 14.0.0; python_version < '3.11'"
),
],
# for graphite type tables in ttLib/tables (Silf, Glat, Gloc)
@@ -441,7 +439,7 @@ if ext_modules:
setup_params = dict(
name="fonttools",
- version="4.22.0",
+ version="4.31.2",
description="Tools to manipulate font files",
author="Just van Rossum",
author_email="just@letterror.com",
@@ -450,7 +448,7 @@ setup_params = dict(
url="http://github.com/fonttools/fonttools",
license="MIT",
platforms=["Any"],
- python_requires=">=3.6",
+ python_requires=">=3.7",
long_description=long_description,
package_dir={'': 'Lib'},
packages=find_packages("Lib"),
diff --git a/tox.ini b/tox.ini
index bcbeeedd..22b1de74 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,6 +1,6 @@
[tox]
minversion = 3.0
-envlist = mypy, py3{6,7,8,9}-cov, htmlcov
+envlist = mypy, py3{7,8,9}-cov, htmlcov
skip_missing_interpreters=true
[testenv]
@@ -16,7 +16,7 @@ deps =
pytest
pytest-randomly
-rrequirements.txt
- !nolxml: lxml==4.6.1
+ !nolxml: lxml==4.6.4
extras =
ufo
woff