├── .github ├── dependabot.yml └── workflows │ └── main.yml ├── .gitignore ├── CHANGELOG.md ├── Cargo.toml ├── HARFBUZZ.md ├── LICENSE ├── README.md ├── benches ├── fonts │ ├── Amiri-LICENSE-OFL.txt │ ├── Amiri-Regular.ttf │ ├── NotoNastaliqUrdu-Regular.ttf │ ├── NotoSansDevanagari-LICENSE-OFL.txt │ ├── NotoSansDevanagari-Regular.ttf │ ├── Roboto-LICENSE-APACHE.txt │ ├── Roboto-Regular.ttf │ └── SourceSerifVariable-Roman.ttf ├── shaping.rs └── texts │ ├── duployan.txt │ ├── en-2letters.txt │ ├── en-thelittleprince.txt │ ├── en-words.txt │ ├── fa-thelittleprince.txt │ ├── fa-words.txt │ ├── hi-words.txt │ └── react-dom.txt ├── clippy.toml ├── docs └── ragel.md ├── examples └── shape.rs ├── rustfmt.toml ├── scripts ├── .gitignore ├── README.md ├── gen-arabic-table.py ├── gen-indic-table.py ├── gen-shaping-tests.py ├── gen-tag-table.py ├── gen-unicode-is-emoji-ext-pict.py ├── gen-vowel-constraints.py └── ms-use │ ├── COPYING │ ├── IndicPositionalCategory-Additional.txt │ ├── IndicShapingInvalidCluster.txt │ └── IndicSyllabicCategory-Additional.txt ├── src ├── digest_u32_set.rs ├── hb │ ├── aat │ │ ├── layout.rs │ │ ├── layout_common.rs │ │ ├── layout_kerx_table.rs │ │ ├── layout_morx_table.rs │ │ ├── layout_trak_table.rs │ │ ├── map.rs │ │ └── mod.rs │ ├── algs.rs │ ├── buffer.rs │ ├── cache.rs │ ├── charmap.rs │ ├── common.rs │ ├── face.rs │ ├── glyph_metrics.rs │ ├── glyph_names.rs │ ├── kerning.rs │ ├── machine_cursor.rs │ ├── mod.rs │ ├── ot │ │ ├── contextual.rs │ │ ├── gpos │ │ │ ├── cursive.rs │ │ │ ├── mark.rs │ │ │ ├── mod.rs │ │ │ ├── pair.rs │ │ │ └── single.rs │ │ ├── gsub │ │ │ ├── alternate.rs │ │ │ ├── ligature.rs │ │ │ ├── mod.rs │ │ │ ├── multiple.rs │ │ │ ├── reverse_chain.rs │ │ │ └── single.rs │ │ ├── lookup.rs │ │ └── mod.rs │ ├── ot_layout.rs │ ├── ot_layout_common.rs │ ├── ot_layout_gpos_table.rs │ ├── ot_layout_gsub_table.rs │ ├── ot_layout_gsubgpos.rs │ ├── ot_map.rs │ ├── ot_shape.rs │ ├── ot_shape_fallback.rs │ ├── ot_shape_normalize.rs │ ├── ot_shape_plan.rs │ ├── ot_shaper.rs │ ├── ot_shaper_arabic.rs │ ├── ot_shaper_arabic_table.rs │ ├── ot_shaper_hangul.rs │ ├── ot_shaper_hebrew.rs │ ├── ot_shaper_indic.rs │ ├── ot_shaper_indic_machine.rl │ ├── ot_shaper_indic_machine.rs │ ├── ot_shaper_indic_table.rs │ ├── ot_shaper_khmer.rs │ ├── ot_shaper_khmer_machine.rl │ ├── ot_shaper_khmer_machine.rs │ ├── ot_shaper_myanmar.rs │ ├── ot_shaper_myanmar_machine.rl │ ├── ot_shaper_myanmar_machine.rs │ ├── ot_shaper_syllabic.rs │ ├── ot_shaper_thai.rs │ ├── ot_shaper_use.rs │ ├── ot_shaper_use_machine.rl │ ├── ot_shaper_use_machine.rs │ ├── ot_shaper_use_table.rs │ ├── ot_shaper_vowel_constraints.rs │ ├── set_digest.rs │ ├── tables.rs │ ├── tag.rs │ ├── tag_table.rs │ ├── text_parser.rs │ ├── ucd_table.rs │ └── unicode.rs └── lib.rs └── tests ├── custom ├── bugs.tests ├── colr.tests ├── fuzzer.tests ├── glyph-flags.tests └── macos.tests ├── fonts ├── aots │ ├── classdef1_font2.otf │ ├── classdef1_font3.otf │ ├── classdef1_font4.otf │ ├── classdef2_font1.otf │ ├── classdef2_font2.otf │ ├── classdef2_font3.otf │ ├── classdef2_font4.otf │ ├── cmap0_font1.otf │ ├── cmap10_font1.otf │ ├── cmap10_font2.otf │ ├── cmap12_font1.otf │ ├── cmap4_font1.otf │ ├── cmap4_font2.otf │ ├── cmap4_font3.otf │ ├── cmap4_font4.otf │ ├── cmap6_font1.otf │ ├── cmap6_font2.otf │ ├── gpos1_1_lookupflag_f1.otf │ ├── gpos1_1_simple_f1.otf │ ├── gpos1_1_simple_f2.otf │ ├── gpos1_1_simple_f3.otf │ ├── gpos1_2_font1.otf │ ├── gpos1_2_font2.otf │ ├── gpos2_1_font6.otf │ ├── gpos2_1_font7.otf │ ├── gpos2_1_lookupflag_f1.otf │ ├── gpos2_1_lookupflag_f2.otf │ ├── gpos2_1_next_glyph_f1.otf │ ├── gpos2_1_next_glyph_f2.otf │ ├── gpos2_1_simple_f1.otf │ ├── gpos2_2_font1.otf │ ├── gpos2_2_font2.otf │ ├── gpos2_2_font3.otf │ ├── gpos2_2_font4.otf │ ├── gpos2_2_font5.otf │ ├── gpos3_font1.otf │ ├── gpos3_font3.otf │ ├── gpos4_lookupflag_f1.otf │ ├── gpos4_lookupflag_f2.otf │ ├── gpos4_simple_1.otf │ ├── gpos5_font1.otf │ ├── gpos6_font1.otf │ ├── gpos7_1_font1.otf │ ├── gpos9_font1.otf │ ├── gpos9_font2.otf │ ├── gpos_chaining1_boundary_f1.otf │ ├── gpos_chaining1_boundary_f2.otf │ ├── gpos_chaining1_boundary_f3.otf │ ├── gpos_chaining1_boundary_f4.otf │ ├── gpos_chaining1_lookupflag_f1.otf │ ├── gpos_chaining1_multiple_subrules_f1.otf │ ├── gpos_chaining1_multiple_subrules_f2.otf │ ├── gpos_chaining1_next_glyph_f1.otf │ ├── gpos_chaining1_simple_f1.otf │ ├── gpos_chaining1_simple_f2.otf │ ├── gpos_chaining1_successive_f1.otf │ ├── gpos_chaining2_boundary_f1.otf │ ├── gpos_chaining2_boundary_f2.otf │ ├── gpos_chaining2_boundary_f3.otf │ ├── gpos_chaining2_boundary_f4.otf │ ├── gpos_chaining2_lookupflag_f1.otf │ ├── gpos_chaining2_multiple_subrules_f1.otf │ ├── gpos_chaining2_multiple_subrules_f2.otf │ ├── gpos_chaining2_next_glyph_f1.otf │ ├── gpos_chaining2_simple_f1.otf │ ├── gpos_chaining2_simple_f2.otf │ ├── gpos_chaining2_successive_f1.otf │ ├── gpos_chaining3_boundary_f1.otf │ ├── gpos_chaining3_boundary_f2.otf │ ├── gpos_chaining3_boundary_f3.otf │ ├── gpos_chaining3_boundary_f4.otf │ ├── gpos_chaining3_lookupflag_f1.otf │ ├── gpos_chaining3_next_glyph_f1.otf │ ├── gpos_chaining3_simple_f1.otf │ ├── gpos_chaining3_simple_f2.otf │ ├── gpos_chaining3_successive_f1.otf │ ├── gpos_context1_boundary_f1.otf │ ├── gpos_context1_boundary_f2.otf │ ├── gpos_context1_expansion_f1.otf │ ├── gpos_context1_lookupflag_f1.otf │ ├── gpos_context1_lookupflag_f2.otf │ ├── gpos_context1_multiple_subrules_f1.otf │ ├── gpos_context1_multiple_subrules_f2.otf │ ├── gpos_context1_next_glyph_f1.otf │ ├── gpos_context1_simple_f1.otf │ ├── gpos_context1_simple_f2.otf │ ├── gpos_context1_successive_f1.otf │ ├── gpos_context2_boundary_f1.otf │ ├── gpos_context2_boundary_f2.otf │ ├── gpos_context2_classes_f1.otf │ ├── gpos_context2_classes_f2.otf │ ├── gpos_context2_expansion_f1.otf │ ├── gpos_context2_lookupflag_f1.otf │ ├── gpos_context2_lookupflag_f2.otf │ ├── gpos_context2_multiple_subrules_f1.otf │ ├── gpos_context2_multiple_subrules_f2.otf │ ├── gpos_context2_next_glyph_f1.otf │ ├── gpos_context2_simple_f1.otf │ ├── gpos_context2_simple_f2.otf │ ├── gpos_context2_successive_f1.otf │ ├── gpos_context3_boundary_f1.otf │ ├── gpos_context3_boundary_f2.otf │ ├── gpos_context3_lookupflag_f1.otf │ ├── gpos_context3_lookupflag_f2.otf │ ├── gpos_context3_next_glyph_f1.otf │ ├── gpos_context3_simple_f1.otf │ ├── gpos_context3_successive_f1.otf │ ├── gsub1_1_lookupflag_f1.otf │ ├── gsub1_1_modulo_f1.otf │ ├── gsub1_1_simple_f1.otf │ ├── gsub1_2_lookupflag_f1.otf │ ├── gsub1_2_simple_f1.otf │ ├── gsub2_1_lookupflag_f1.otf │ ├── gsub2_1_multiple_sequences_f1.otf │ ├── gsub2_1_simple_f1.otf │ ├── gsub3_1_lookupflag_f1.otf │ ├── gsub3_1_multiple_f1.otf │ ├── gsub3_1_simple_f1.otf │ ├── gsub4_1_lookupflag_f1.otf │ ├── gsub4_1_multiple_ligatures_f1.otf │ ├── gsub4_1_multiple_ligatures_f2.otf │ ├── gsub4_1_multiple_ligsets_f1.otf │ ├── gsub4_1_simple_f1.otf │ ├── gsub7_font1.otf │ ├── gsub7_font2.otf │ ├── gsub_chaining1_boundary_f1.otf │ ├── gsub_chaining1_boundary_f2.otf │ ├── gsub_chaining1_boundary_f3.otf │ ├── gsub_chaining1_boundary_f4.otf │ ├── gsub_chaining1_lookupflag_f1.otf │ ├── gsub_chaining1_multiple_subrules_f1.otf │ ├── gsub_chaining1_multiple_subrules_f2.otf │ ├── gsub_chaining1_next_glyph_f1.otf │ ├── gsub_chaining1_simple_f1.otf │ ├── gsub_chaining1_simple_f2.otf │ ├── gsub_chaining1_successive_f1.otf │ ├── gsub_chaining2_boundary_f1.otf │ ├── gsub_chaining2_boundary_f2.otf │ ├── gsub_chaining2_boundary_f3.otf │ ├── gsub_chaining2_boundary_f4.otf │ ├── gsub_chaining2_lookupflag_f1.otf │ ├── gsub_chaining2_multiple_subrules_f1.otf │ ├── gsub_chaining2_multiple_subrules_f2.otf │ ├── gsub_chaining2_next_glyph_f1.otf │ ├── gsub_chaining2_simple_f1.otf │ ├── gsub_chaining2_simple_f2.otf │ ├── gsub_chaining2_successive_f1.otf │ ├── gsub_chaining3_boundary_f1.otf │ ├── gsub_chaining3_boundary_f2.otf │ ├── gsub_chaining3_boundary_f3.otf │ ├── gsub_chaining3_boundary_f4.otf │ ├── gsub_chaining3_lookupflag_f1.otf │ ├── gsub_chaining3_next_glyph_f1.otf │ ├── gsub_chaining3_simple_f1.otf │ ├── gsub_chaining3_simple_f2.otf │ ├── gsub_chaining3_successive_f1.otf │ ├── gsub_context1_boundary_f1.otf │ ├── gsub_context1_boundary_f2.otf │ ├── gsub_context1_expansion_f1.otf │ ├── gsub_context1_lookupflag_f1.otf │ ├── gsub_context1_lookupflag_f2.otf │ ├── gsub_context1_multiple_subrules_f1.otf │ ├── gsub_context1_multiple_subrules_f2.otf │ ├── gsub_context1_next_glyph_f1.otf │ ├── gsub_context1_simple_f1.otf │ ├── gsub_context1_simple_f2.otf │ ├── gsub_context1_successive_f1.otf │ ├── gsub_context2_boundary_f1.otf │ ├── gsub_context2_boundary_f2.otf │ ├── gsub_context2_classes_f1.otf │ ├── gsub_context2_classes_f2.otf │ ├── gsub_context2_expansion_f1.otf │ ├── gsub_context2_lookupflag_f1.otf │ ├── gsub_context2_lookupflag_f2.otf │ ├── gsub_context2_multiple_subrules_f1.otf │ ├── gsub_context2_multiple_subrules_f2.otf │ ├── gsub_context2_next_glyph_f1.otf │ ├── gsub_context2_simple_f1.otf │ ├── gsub_context2_simple_f2.otf │ ├── gsub_context2_successive_f1.otf │ ├── gsub_context3_boundary_f1.otf │ ├── gsub_context3_boundary_f2.otf │ ├── gsub_context3_lookupflag_f1.otf │ ├── gsub_context3_lookupflag_f2.otf │ ├── gsub_context3_next_glyph_f1.otf │ ├── gsub_context3_simple_f1.otf │ ├── gsub_context3_successive_f1.otf │ ├── lookupflag_ignore_attach_f1.otf │ ├── lookupflag_ignore_base_f1.otf │ ├── lookupflag_ignore_combination_f1.otf │ ├── lookupflag_ignore_ligatures_f1.otf │ └── lookupflag_ignore_marks_f1.otf ├── in-house │ ├── 03e3f463c3a985bc42096620cc415342818454fb.ttf │ ├── 051d92f8bc6ff724511b296c27623f824de256e9.ttf │ ├── 065b01e54f35f0d849fd43bd5b936212739a50cb.ttf │ ├── 074a5ae6b19de8f29772fdd5df2d3d833f81f5e6.ttf │ ├── 07f054357ff8638bac3711b422a1e31180bba863.ttf │ ├── 086d83239e8f958391ff6cdd8fda9376a4bd3673.ttf │ ├── 08b4b136f418add748dc641eb4a83033476f1170.ttf │ ├── 15dfc433a135a658b9f4b1a861b5cdd9658ccbb9.ttf │ ├── 1735326da89f0818cd8c51a0600e9789812c0f94.ttf │ ├── 190a621e48d4af1fffd8144bd41d2027e9a32fbf.ttf │ ├── 191826b9643e3f124d865d617ae609db6a2ce203.ttf │ ├── 1a3d8f381387dd29be1e897e4b5100ac8b4829e1.ttf │ ├── 1a5face3fcbd929d228235c2f72bbd6f8eb37424.ttf │ ├── 1b66a1f4b076b734caa6397b3e57231af1feaafb.ttf │ ├── 1c04a16f32a39c26c851b7fc014d2e8d298ba2b8.ttf │ ├── 1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf │ ├── 1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf │ ├── 1ed7e9064f008f62de6ff0207bb4dd29409597a5.ttf │ ├── 21b7fb9c1eeae260473809fbc1fe330f66a507cd.ttf │ ├── 226bc2deab3846f1a682085f70c67d0421014144.ttf │ ├── 23406a60ab081c4fb15e1596ea1cd4f27ae8443e.ttf │ ├── 24b8d24d00ae86f49791b746da4c9d3f717a51a8.ttf │ ├── 2681c1c72d6484ed3410417f521b1b819b4e2392.ttf │ ├── 270b89df543a7e48e206a2d830c0e10e5265c630.ttf │ ├── 28f497629c04ceb15546c9a70e0730125ed6698d.ttf │ ├── 298c9e1d955f10f6f72c6915c3c6ff9bf9695cec.ttf │ ├── 2a670df15b73a5dc75a5cc491bde5ac93c5077dc.ttf │ ├── 2c25beb56d9c556622d56b0b5d02b4670c034f89.ttf │ ├── 2de1ab4907ab688c0cfc236b0bf51151db38bf2e.ttf │ ├── 3105b51976b879032c66aa93a634b3b3672cd344.ttf │ ├── 341421e629668b1a1242245d39238ca48432d35d.ttf │ ├── 3493e92eaded2661cadde752a39f9d58b11f0326.ttf │ ├── 34da9aab7bee86c4dfc3b85e423435822fdf4b62.ttf │ ├── 37033cc5cf37bb223d7355153016b6ccece93b28.ttf │ ├── 373e67bf41ca264e260a9716162b71a23549e885.ttf │ ├── 3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf │ ├── 3b791518a9ba89675df02f1eefbc9026a50648a6.ttf │ ├── 3c96e7a303c58475a8c750bf4289bbe73784f37d.ttf │ ├── 3cae6bfe5b57c07ba81ddbd54c02fe4f3a1e3bf6.ttf │ ├── 3cc01fede4debd4b7794ccb1b16cdb9987ea7571.ttf │ ├── 3cf6f8ac6d647473a43a3100e7494b202b2cfafe.ttf │ ├── 3d0b77a2360aa6faa1385aaa510509ab70dfbeff.ttf │ ├── 3e46c3b84c1370a06594736c7f8acebf810bbb3b.ttf │ ├── 3f24aff8b768e586162e9b9d03b15c36508dd2ae.ttf │ ├── 41071178fbce4956d151f50967af458dbf555f7b.ttf │ ├── 43ef465752be9af900745f72fe29cb853a1401a5.ttf │ ├── 45855bc8d46332b39c4ab9e2ee1a26b1f896da6b.ttf │ ├── 46669c8860cbfea13562a6ca0d83130ee571137b.ttf │ ├── 49c9f7485c1392fa09a1b801bc2ffea79275f22e.ttf │ ├── 4afb0e8b9a86bb9bd73a1247de4e33fbe3c1fd93.ttf │ ├── 4cbbc461be066fccc611dcc634af6e8cb2705537.ttf │ ├── 4cce528e99f600ed9c25a2b69e32eb94a03b4ae8.ttf │ ├── 4d4206e30b2dbf1c1ef492a8eae1c9e7829ebad8.ttf │ ├── 4fac3929fc3332834e93673780ec0fe94342d193.ttf │ ├── 5028afb650b1bb718ed2131e872fbcce57828fff.ttf │ ├── 507637795ce4f2975593da54d12b46f76c7cc4cc.ttf │ ├── 53374c7ca3657be37efde7ed02ae34229a56ae1f.ttf │ ├── 53a91c20e33a596f2be17fb68b382d6b7eb85d5c.ttf │ ├── 54674a3111d209fb6be0ed31745314b7a8d2c244.ttf │ ├── 55c88ebbe938680b08f92c3de20713183e0c7481.ttf │ ├── 55e2910dbc9ef5dd89f4e146e7e0152169545b6a.ttf │ ├── 56cfd0e18d07f41c38e9598545a6d369127fc6f9.ttf │ ├── 573d3a3177c9a8646e94c8a0d7b224334340946a.ttf │ ├── 57a9d9f83020155cbb1d2be1f43d82388cbecc88.ttf │ ├── 59a585a63b3df608fbeef00956c8c108deec7de6.ttf │ ├── 5af5361ed4d1e8305780b100e1730cb09132f8d1.ttf │ ├── 5bb74492f5e0ffa1fbb72e4c881be035120b6513.ttf │ ├── 5bbf3712e6f79775c66a4407837a90e591efbef2.ttf │ ├── 5dfad7735c6a67085f1b90d4d497e32907db4c78.ttf │ ├── 5f73fff1ffc07b5a99a90c0909609f2b09fef274.ttf │ ├── 604026ae5aaca83c49cd8416909d71ba3e1c1194.ttf │ ├── 63a539a90a371ccf028dc2dcced9b63b07163be7.ttf │ ├── 63e224dcb3d559d590f80c83b832cfca789e5dcc.ttf │ ├── 65984dfce552a785f564422aadf4715fa07795ad.ttf │ ├── 65d1b9099cfb3191931d8d6112d7a03d979d579f.ttf │ ├── 663aef6b019dbf45ffd74089e2b5f2496ceceb18.ttf │ ├── 6677074106f94a2644da6aaaacd5bbd48cbdc7de.ttf │ ├── 6991b13ce889466be6de3f66e891de2bc0f117ee.ttf │ ├── 6f36d056bad6d478fc0bf7397bd52dc3bd197d5f.ttf │ ├── 6ff0fbead4462d9f229167b4e6839eceb8465058.ttf │ ├── 738d9f3b8c2dfd03875bf35a61d28fd78faf17c8.ttf │ ├── 73e84dac2fc6a2d1bc9250d1414353661088937d.ttf │ ├── 755160ddba002332349fda3eb999e629d63dccf6.ttf │ ├── 757ebd573617a24aa9dfbf0b885c54875c6fe06b.ttf │ ├── 7a37dc4d5bf018456aea291cee06daf004c0221c.ttf │ ├── 7bbd3175734d5d291e1c15271ec0cbb97b626ebf.ttf │ ├── 7c24183f26d60df414578a0a9f5e79ab9d32a22b.ttf │ ├── 7d18685e1529e4ceaad5b6095dfab2f9789e5bce.ttf │ ├── 7e14e7883ed152baa158b80e207b66114c823a8b.ttf │ ├── 8099955657a54e9ee38a6ba1d6f950ce58e3cc25.ttf │ ├── 8116e5d8fedfbec74e45dc350d2416d810bed8c4.ttf │ ├── 813c2f8e5512187fd982417a7fb4286728e6f4a8.ttf │ ├── 81c368a33816fb20e9f647e8f24e2180f4720263.ttf │ ├── 8228d035fcd65d62ec9728fb34f42c63be93a5d3.ttf │ ├── 82f4f3b57bb55344e72e70231380202a52af5805.ttf │ ├── 8339c821814d9bad7c77169332327ad8b0f33c81.ttf │ ├── 8454d22037f892e76614e1645d066689a0200e61.ttf │ ├── 85414f2552b654585b7a8d13dcc3e8fd9f7970a3.ttf │ ├── 856ff9562451293cbeff6f396d4e3877c4f0a436.ttf │ ├── 85fe0be440c64ac77699e21c2f1bd933a919167e.ttf │ ├── 86cdd983c4e4c4d7f27dd405d6ceb7d4b9ed3d35.ttf │ ├── 872d2955d326bd6676a06f66b8238ebbaabc212f.ttf │ ├── 87f85d17d26f1fe9ad28d7365101958edaefb967.ttf │ ├── 881642af1667ae30a54e58de8be904566d00508f.ttf │ ├── 8a9fea2a7384f2116e5b84a9b31f83be7850ce21.ttf │ ├── 8d9c4b193808b8bde94389ba7831c1fc6f9e794e.ttf │ ├── 932ad5132c2761297c74e9976fe25b08e5ffa10b.ttf │ ├── 94a5d6fb15a27521fba9ea4aee9cb39b2d03322a.ttf │ ├── 96490dd2ff81233b335a650e7eb660e0e7b2eeea.ttf │ ├── 98b7887cff91f722b92a8ff800120954606354f9.ttf │ ├── 9d8c53cb64b8747abdd2b70755cce2ee0eb42ef7.ttf │ ├── 9fc3e6960b3520e5304033ef5fd540285f72f14d.ttf │ ├── AdobeBlank2.ttf │ ├── DFONT.dfont │ ├── FallbackPlus-Javanese-no-GDEF.otf │ ├── HBTest-VF.ttf │ ├── MORXTwentyeight.ttf │ ├── NotoNastaliqUrdu-Regular.ttf │ ├── NotoSans-VF.abc.ttf │ ├── NotoSansCJK-VF.abc.otf │ ├── NotoSansCJK-VF.abc.ttf │ ├── NotoSerifHK-subset.ttf │ ├── TRAK.ttf │ ├── TTC.ttc │ ├── a014549f766436cf55b2ceb40e462038938ee899.ttf │ ├── a02a7f0ad42c2922cb37ad1358c9df4eb81f1bca.ttf │ ├── a232bb734d4c6c898a44506547d19768f0eba6a6.ttf │ ├── a34a7b00f22ffb5fd7eef6933b81c7e71bc2cdfb.ttf │ ├── a56745bac8449d0ad94918b2bb5930716ba02fe3.ttf │ ├── a59fd13f1525a91cbe529c882e93d9d1fbb80463.ttf │ ├── a6b17da98b9f1565ba428719777bbf94a66403c1.ttf │ ├── a6c76d1bafde4a0b1026ebcc932d2e5c6fd02442.ttf │ ├── a706511c65fb278fda87eaf2180ca6684a80f423.ttf │ ├── a919b33197965846f21074b24e30250d67277bce.ttf │ ├── a98e908e2ed21b22228ea59ebcc0f05034c86f2e.ttf │ ├── ab14b4eb9d7a67e293f51d30d719add06c9d6e06.ttf │ ├── ab40c89624a6104e5d0a2308e448a989302f515b.ttf │ ├── ad01ab2ea1cb1a4d3a2783e2675112ef11ae6404.ttf │ ├── af3086380b743099c54a3b11b96766039ea62fcd.ttf │ ├── af85624080af5627fb050f570d148a62f04fda74.ttf │ ├── b082211be29a3e2cf91f0fd43497e40b2a27b344.ttf │ ├── b121d4306b2e3add5abbaad21d95fcf04aacbd64.ttf │ ├── b151cfcdaa77585d77f17a42158e0873fc8e2633.ttf │ ├── b3075ca42b27dde7341c2d0ae16703c5b6640df0.ttf │ ├── b31e6c52a31edadc16f1bec9efe6019e2d59824a.ttf │ ├── b6031119874ae9ff1dd65383a335e361c0962220.ttf │ ├── b722a7d09e60421f3efbc706ad348ab47b88567b.ttf │ ├── b895f8ff06493cc893ec44de380690ca0074edfa.ttf │ ├── bb0c53752e85c3d28973ebc913287b8987d3dfe8.ttf │ ├── bb9473d2403488714043bcfb946c9f78b86ad627.ttf │ ├── bbc24004e776f348a0f72287d24b0124867ee750.ttf │ ├── be10ea33f28a139f3305db2302af6220f2f9a583.ttf │ ├── bef923f4ccb474f961c43b63a9c74b7d9b7a023f.ttf │ ├── bf39b0e91ef9807f15a9e283a21a14a209fd2cfc.ttf │ ├── bf962d3202883a820aed019d9b5c1838c2ff69c6.ttf │ ├── c4e48b0886ef460f532fb49f00047ec92c432ec0.ttf │ ├── c825900b8a5b6571f0eb6c8c25c6512880bc42e9.ttf │ ├── cc5f3d2d717fb6bd4dfae1c16d48a2cb8e12233b.ttf │ ├── cee442574141a0304e780b27dd872519f7d229db.ttf │ ├── d0430ea499348c420946f6abc2efc84fdf8f00e3.ttf │ ├── d23d76ea0909c14972796937ba072b5a40c1e257.ttf │ ├── d3129450fafe5e5c98cfc25a4e71809b1b4d2855.ttf │ ├── d629e7fedc0b350222d7987345fe61613fa3929a.ttf │ ├── d9b8bc10985f24796826c29f7ccba3d0ae11ec02.ttf │ ├── dcf774ca21062e7439f98658b18974ea8b956d0c.ttf │ ├── e207635780b42f898d58654b65098763e340f5c7.ttf │ ├── e2b17207c4b7ad78d843e1b0c4d00b09398a1137.ttf │ ├── e39391c77a6321c2ac7a2d644de0396470cd4bfe.ttf │ ├── e5ff44940364c2247abed50bdda30d2ef5aedfe4.ttf │ ├── e6185e88b04432fbf373594d5971686bb7dd698d.ttf │ ├── e68a88939e0f06e34d2bc911f09b70890289c8fd.ttf │ ├── e716f6bd00a108d186b7e9f47b4515565f784f36.ttf │ ├── e8691822f6a705e3e9fb48a0405c645b1a036590.ttf │ ├── ea3f63620511b2097200d23774ffef197e829e69.ttf │ ├── ec404b8524cd56efa5d25524cc8541a0b6604b4f.ttf │ ├── ee39587d13b2afa5499cc79e45780aa79293bbd4.ttf │ ├── ef86fe710cfea877bbe0dbb6946a1f88d0661031.ttf │ ├── f22416c692720a7d46fadf4af99f4c9e094f00b9.ttf │ ├── f443753e8ffe8e8aae606cfba158e00334b6efb1.ttf │ ├── f499fbc23865022234775c43503bba2e63978fe1.ttf │ ├── f4ba5a767ef56a40133844507efb98fee5635e71.ttf │ ├── f518eb6f6b5eec2946c9fbbbde44e45d46f5e2ac.ttf │ ├── f70f345188472b93f565d1d7fae8c668dd6a3244.ttf │ ├── f75c4b05a0a4d67c1a808081ae3d74a9c66509e8.ttf │ ├── f79eb71df4e4c9c273b67b89a06e5ff9e3c1f834.ttf │ ├── f9b1dd4dcb515e757789a22cb4241107746fd3d0.ttf │ ├── fbb6c84c9e1fe0c39e152fbe845e51fd81f6748e.ttf │ ├── fcbaa518d3cce441ed37ae3b1fed6a19e9b54efd.ttf │ ├── fcdcffbdf1c4c97c05308d7600e4c283eb47dbca.ttf │ ├── fcea341ba6489536390384d8403ce5287ba71a4a.ttf │ ├── fd07ea46e4d8368ada1776208c07fd596f727852.ttf │ └── ffa0f5d2d9025486d8469d8b1fdd983e7632499b.ttf ├── rb_custom │ ├── AdobeBlank-Regular-OFL.txt │ ├── AdobeBlank-Regular.ttf │ ├── BungeeTint-Regular-OFL.txt │ ├── BungeeTint-Regular.ttf │ ├── LaBelleAurore-OFL.txt │ ├── LaBelleAurore.ttf │ ├── LineFont-OFL.txt │ ├── Linefont.ttf │ ├── NotoSans-OFL.txt │ ├── NotoSansCJK.subset1.otf │ ├── NotoSansMalayalam.subset1.ttf │ ├── NotoSansMyanmarUI-Regular.subset1.otf │ ├── NotoSansSinhala.subset1.otf │ ├── OpenSans-OFL.txt │ ├── OpenSans.subset1.ttf │ ├── PT_Sans-Caption-Web-Regular-OFL.txt │ ├── PT_Sans-Caption-Web-Regular.ttf │ ├── Rasa-OFL.txt │ ├── Rasa.subset1.otf │ └── test_glyphs-glyf_colr_1_no_cliplist.ttf └── text-rendering-tests │ ├── AdobeVFPrototype-Subset.otf │ ├── ArefRuqaa-Wasm.ttf │ ├── Calculator-Regular.ttf │ ├── FDArrayTest257.otf │ ├── FDArrayTest65535.otf │ ├── NotoSansBalinese-Regular.ttf │ ├── NotoSansKannada-Regular.ttf │ ├── NotoSerifKannada-Regular.ttf │ ├── TestAVAR.ttf │ ├── TestCFFThree.otf │ ├── TestCMAP13.ttf │ ├── TestCMAP14.otf │ ├── TestCMAPMacTurkish.ttf │ ├── TestCVARGVAROne.ttf │ ├── TestCVARGVARTwo.ttf │ ├── TestGLYFOne.ttf │ ├── TestGPOSFour.ttf │ ├── TestGPOSOne.ttf │ ├── TestGPOSThree.ttf │ ├── TestGPOSTwo.otf │ ├── TestGSUBOne.otf │ ├── TestGSUBThree.ttf │ ├── TestGVAREight.ttf │ ├── TestGVARFour.ttf │ ├── TestGVARNine.ttf │ ├── TestGVAROne.ttf │ ├── TestGVARThree.ttf │ ├── TestGVARTwo.ttf │ ├── TestHVAROne.otf │ ├── TestHVARTwo.ttf │ ├── TestKERNOne.otf │ ├── TestMORXEight.ttf │ ├── TestMORXEighteen.ttf │ ├── TestMORXEleven.ttf │ ├── TestMORXForty.ttf │ ├── TestMORXFour.ttf │ ├── TestMORXFourteen.ttf │ ├── TestMORXFourtyone.ttf │ ├── TestMORXNine.ttf │ ├── TestMORXOne.ttf │ ├── TestMORXSeventeen.ttf │ ├── TestMORXSixteen.ttf │ ├── TestMORXTen.ttf │ ├── TestMORXThirteen.ttf │ ├── TestMORXThirtyeight.ttf │ ├── TestMORXThirtyfive.ttf │ ├── TestMORXThirtyfour.ttf │ ├── TestMORXThirtynine.ttf │ ├── TestMORXThirtyone.ttf │ ├── TestMORXThirtyseven.ttf │ ├── TestMORXThirtysix.ttf │ ├── TestMORXThirtythree.ttf │ ├── TestMORXThirtytwo.ttf │ ├── TestMORXThree.ttf │ ├── TestMORXTwelve.ttf │ ├── TestMORXTwenty.ttf │ ├── TestMORXTwentyeight.ttf │ ├── TestMORXTwentyfive.ttf │ ├── TestMORXTwentyfour.ttf │ ├── TestMORXTwentynine.ttf │ ├── TestMORXTwentyone.ttf │ ├── TestMORXTwentyseven.ttf │ ├── TestMORXTwentysix.ttf │ ├── TestMORXTwentythree.ttf │ ├── TestMORXTwentytwo.ttf │ ├── TestMORXTwo.ttf │ ├── TestSFNTOne.otf │ ├── TestSFNTTwo.ttf │ ├── TestShapeAran.ttf │ ├── TestShapeEthi.ttf │ ├── TestShapeLana.ttf │ └── Zycon.ttf └── shaping ├── aots.rs ├── custom.rs ├── in_house.rs ├── macos.rs ├── main.rs └── text_rendering_tests.rs /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | 4 | # Maintain dependencies for GitHub Actions 5 | - package-ecosystem: github-actions 6 | directory: "/" 7 | schedule: 8 | interval: weekly 9 | groups: 10 | all-actions-version-updates: 11 | applies-to: version-updates 12 | patterns: 13 | - "*" 14 | all-actions-security-updates: 15 | applies-to: security-updates 16 | patterns: 17 | - "*" 18 | 19 | # Update Rust dependencies 20 | - package-ecosystem: cargo 21 | directory: "/" 22 | schedule: 23 | interval: daily 24 | time: "02:00" 25 | open-pull-requests-limit: 10 26 | groups: 27 | all-cargo-version-updates: 28 | applies-to: version-updates 29 | patterns: 30 | - "*" 31 | all-cargo-security-updates: 32 | applies-to: security-updates 33 | patterns: 34 | - "*" 35 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: Rust 2 | 3 | on: 4 | push: 5 | branches: [main] 6 | tags: ["*.*.*"] 7 | pull_request: 8 | 9 | env: 10 | CARGO_TERM_COLOR: always 11 | 12 | jobs: 13 | build: 14 | runs-on: ${{ matrix.os }} 15 | strategy: 16 | matrix: 17 | os: [ubuntu-latest, macos-15] 18 | rust: [stable] 19 | steps: 20 | - name: Checkout 21 | uses: actions/checkout@v5 22 | 23 | - name: Build without std 24 | run: cargo build --no-default-features 25 | 26 | - name: Build with std 27 | run: cargo build 28 | 29 | - name: MSRV Build (Rust 1.82) 30 | run: cargo +1.82 build 31 | 32 | - name: Run tests 33 | run: cargo test --verbose 34 | 35 | - name: Rustfmt 36 | run: cargo fmt --all -- --check 37 | 38 | - name: Clippy 39 | run: cargo clippy --all-features --all-targets -- -D warnings 40 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | /benches/target 3 | .directory 4 | .DS_Store 5 | /src/complex/*.ri 6 | .vscode 7 | /Cargo.lock 8 | benches/Cargo.lock 9 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | All notable changes to this project will be documented in this file. 4 | 5 | The format is based on [Keep a Changelog](http://keepachangelog.com/) 6 | and this project adheres to [Semantic Versioning](http://semver.org/). 7 | 8 | ## [Unreleased] 9 | 10 | ## [0.3.2] - 2025-10-15 11 | 12 | This release matches HarfBuzz [v12.1.0][harfbuzz-12.1.0], and has an MSRV (minimum supported Rust version) of 1.82. 13 | 14 | - Fix "would apply" logic for chained sequence context format 3. This bug was preventing accurate classification of 15 | characters in Indic syllables for some fonts. 16 | - Various optimizations. 17 | 18 | ## [0.3.1] - 2025-09-12 19 | 20 | This release matches HarfBuzz [v11.5.0][harfbuzz-11.5.0], and has an MSRV (minimum supported Rust version) of 1.82. 21 | 22 | - Actually bump MSRV from 1.80 to 1.82. 23 | 24 | ## [0.3.0] - 2025-09-12 25 | 26 | This release matches HarfBuzz [v11.5.0][harfbuzz-11.5.0], and has an MSRV (minimum supported Rust version) of 1.82. 27 | 28 | - Update to read-fonts 0.35.0. 29 | - Bump MSRV from 1.80 to 1.82. 30 | 31 | ## [0.2.1] - 2025-09-12 32 | 33 | This release matches HarfBuzz [v11.5.0][harfbuzz-11.5.0], and has an MSRV (minimum supported Rust version) of 1.80. 34 | 35 | - Update to Unicode 17.0. 36 | - Fix panic when processing chained sequence context format 3. 37 | - Add accessors for script, language and direction to `ShapePlan`. 38 | - Various optimizations. 39 | 40 | ## [0.2.0] - 2025-08-29 41 | 42 | This release matches HarfBuzz [v11.4.4][harfbuzz-11.4.4], and has an MSRV (minimum supported Rust version) of 1.80. 43 | 44 | - Major optimizations to speed up AAT shaping. 45 | 46 | ## [0.1.2] - 2025-08-20 47 | 48 | This release matches HarfBuzz [v11.3.3][harfbuzz-11.3.3], and has an MSRV (minimum supported Rust version) of 1.80. 49 | 50 | - Major optimizations to speed up shaping. 51 | - Initial support for shape plan caching in the form of `ShapePlanKey`. 52 | 53 | ## [0.1.1] - 2025-08-11 54 | 55 | This release matches HarfBuzz [v11.3.3][harfbuzz-11.3.3], and has an MSRV (minimum supported Rust version) of 1.75. 56 | 57 | - Major optimizations to speed up shaping. 58 | 59 | ## [0.1.0] - 2025-06-10 60 | 61 | This release matches HarfBuzz [v11.2.1][harfbuzz-11.2.1], and has an MSRV (minimum supported Rust version) of 1.75. 62 | 63 | - Initial Release of HarfRuzz. 64 | 65 | HarfRust is a fork of RustyBuzz. 66 | See [their changelog](https://github.com/harfbuzz/rustybuzz/blob/main/CHANGELOG.md) for details of prior releases. 67 | 68 | [Unreleased]: https://github.com/harfbuzz/harfrust/compare/0.3.2...HEAD 69 | [0.3.2]: https://github.com/harfbuzz/harfrust/compare/0.3.1...0.3.2 70 | [0.3.1]: https://github.com/harfbuzz/harfrust/compare/0.3.0...0.3.1 71 | [0.3.0]: https://github.com/harfbuzz/harfrust/compare/0.2.1...0.3.0 72 | [0.2.1]: https://github.com/harfbuzz/harfrust/compare/0.2.0...0.2.1 73 | [0.2.0]: https://github.com/harfbuzz/harfrust/compare/0.1.2...0.2.0 74 | [0.1.2]: https://github.com/harfbuzz/harfrust/compare/0.1.1...0.1.2 75 | [0.1.1]: https://github.com/harfbuzz/harfrust/compare/0.1.0...0.1.1 76 | 77 | [0.1.0]: https://github.com/harfbuzz/harfrust/compare/8c52723ff75e91a33ae36e527baed871097e64bf...0.1.0 78 | 79 | [harfbuzz-11.2.1]: https://github.com/harfbuzz/harfbuzz/releases/tag/11.2.1 80 | [harfbuzz-11.3.3]: https://github.com/harfbuzz/harfbuzz/releases/tag/11.3.3 81 | [harfbuzz-11.4.4]: https://github.com/harfbuzz/harfbuzz/releases/tag/11.4.4 82 | [harfbuzz-11.5.0]: https://github.com/harfbuzz/harfbuzz/releases/tag/11.5.0 83 | [harfbuzz-12.1.0]: https://github.com/harfbuzz/harfbuzz/releases/tag/12.1.0 84 | 85 | [@khaledhosny]: https://github.com/khaledhosny 86 | 87 | [#65]: https://github.com/harfbuzz/harfrust/pull/65 88 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "harfrust" 3 | version = "0.3.2" 4 | edition = "2021" 5 | rust-version = "1.82" # should match https://github.com/googlefonts/fontations/blob/main/Cargo.toml 6 | description = "A complete HarfBuzz shaping algorithm port to Rust." 7 | repository = "https://github.com/harfbuzz/harfrust" 8 | license = "MIT" 9 | keywords = ["text", "shaping", "opentype", "truetype"] 10 | categories = ["text-processing"] 11 | exclude = ["benches/", "tests/"] 12 | 13 | [dependencies] 14 | bitflags = "2.9" 15 | bytemuck = { version = "1.22", features = ["extern_crate_alloc"] } 16 | core_maths = "0.1" # only for no_std builds 17 | read-fonts = { version = "0.35.0", default-features = false, features = ["libm"] } 18 | # read-fonts = { git = "https://github.com/googlefonts/fontations", default-features = false, features = ["libm"] } 19 | smallvec = "1.14" 20 | 21 | [features] 22 | default = ["std"] 23 | std = ["read-fonts/std"] 24 | 25 | [dev-dependencies] 26 | criterion = "0.7.0" 27 | harfbuzz_rs = { git = "https://github.com/harfbuzz/harfbuzz_rs/", rev = "66dae27" } 28 | libc = "0.2" 29 | pico-args = { version = "0.5", features = ["eq-separator"] } 30 | 31 | [lib] 32 | bench = false 33 | 34 | [[bench]] 35 | name = "shaping" 36 | harness = false 37 | 38 | [profile.release] 39 | strip = true 40 | lto = "fat" 41 | overflow-checks = false 42 | codegen-units = 1 43 | 44 | [profile.bench] 45 | inherits = "release" 46 | 47 | [lints.rust] 48 | unused_qualifications = "warn" 49 | 50 | [lints.clippy] 51 | cargo = { level = "warn", priority = -1 } 52 | pedantic = { level = "warn", priority = -1 } 53 | # Reviewed Lints 54 | redundant_closure_for_method_calls = "allow" # use for Result and Into, allow the rest 55 | # These are the currently triggering clippy lints, which should be fixed in the subsequent PRs. 56 | # This list was generated with this command: 57 | # cargo clippy --all-targets --workspace --all-features --message-format=json --quiet | jq -r '.message.code.code | select(. != null and startswith("clippy::"))' | sort | uniq -c | sort -h -r 58 | match_same_arms = "allow" # 396 59 | used_underscore_items = "allow" # 366 60 | cast_lossless = "allow" # 274 61 | cast_sign_loss = "allow" # 192 62 | used_underscore_binding = "allow" # 160 63 | cast_possible_truncation = "allow" # 160 64 | wildcard_imports = "allow" # 72 65 | cast_possible_wrap = "allow" # 66 66 | must_use_candidate = "allow" # 62 67 | if_not_else = "allow" # 29 68 | too_many_lines = "allow" # 26 69 | doc_markdown = "allow" # 26 70 | struct_excessive_bools = "allow" # 14 71 | many_single_char_names = "allow" # 14 72 | mut_mut = "allow" # 10 73 | similar_names = "allow" # 8 74 | items_after_statements = "allow" # 8 75 | unnested_or_patterns = "allow" # 6 76 | unnecessary_wraps = "allow" # 6 77 | unnecessary_semicolon = "allow" # 6 78 | trivially_copy_pass_by_ref = "allow" # 4 79 | return_self_not_must_use = "allow" # 4 80 | redundant_else = "allow" # 4 81 | range_plus_one = "allow" # 4 82 | needless_continue = "allow" # 4 83 | missing_panics_doc = "allow" # 3 84 | ref_option = "allow" # 2 85 | needless_pass_by_value = "allow" # 2 86 | inconsistent_struct_constructor = "allow" # 2 87 | fn_params_excessive_bools = "allow" # 2 88 | default_trait_access = "allow" # 2 89 | cast_precision_loss = "allow" # 2 90 | ptr_as_ptr = "allow" # 1 91 | large_stack_arrays = "allow" # 1 92 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) HarfBuzz developers 4 | Copyright (c) 2020 Yevhenii Reizner 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in all 14 | copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | SOFTWARE. 23 | -------------------------------------------------------------------------------- /benches/fonts/Amiri-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/benches/fonts/Amiri-Regular.ttf -------------------------------------------------------------------------------- /benches/fonts/NotoNastaliqUrdu-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/benches/fonts/NotoNastaliqUrdu-Regular.ttf -------------------------------------------------------------------------------- /benches/fonts/NotoSansDevanagari-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/benches/fonts/NotoSansDevanagari-Regular.ttf -------------------------------------------------------------------------------- /benches/fonts/Roboto-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/benches/fonts/Roboto-Regular.ttf -------------------------------------------------------------------------------- /benches/fonts/SourceSerifVariable-Roman.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/benches/fonts/SourceSerifVariable-Roman.ttf -------------------------------------------------------------------------------- /clippy.toml: -------------------------------------------------------------------------------- 1 | allow-unwrap-in-tests = true 2 | avoid-breaking-exported-api = false 3 | -------------------------------------------------------------------------------- /docs/ragel.md: -------------------------------------------------------------------------------- 1 | # State machines generation using ragel 2 | 3 | HarfBuzz uses [ragel](https://github.com/adrian-thurston/ragel) to generate 4 | state machines for some shapers. 5 | The produced C code is rather low-level and relies on `goto` a lot, 6 | therefore converting it to Rust by hand is rather problematic. 7 | And this is the code that updates relatively often. 8 | 9 | Can we use `ragel` to generate Rust code directly? Not using the stable `ragel`. 10 | But the latest development branch does have a native Rust support. 11 | Therefore to use `ragel` directly, we have to use the latest devel version and modify 12 | ragel scripts a bit. 13 | 14 | ## Build ragel 15 | 16 | `ragel` is a C++ project that uses the dreadful `autotools`. 17 | Good luck building it on Windows. But on Unix-like OSes it should be relatively easy. 18 | 19 | It also requires a 3rdparty dependency of 20 | [colm](https://github.com/adrian-thurston/colm), which we have to build first. 21 | 22 | In case of macOS, we would need: 23 | 24 | ```sh 25 | brew install automake autoconf libtool 26 | ``` 27 | 28 | And now we can build `ragel`: 29 | 30 | ```sh 31 | # build `colm` first 32 | git clone https://github.com/adrian-thurston/colm 33 | cd colm 34 | ./autogen.sh 35 | ./configure --prefix=/path/to/colm/install # prefer a custom path to /usr/local 36 | make 37 | make install 38 | 39 | cd .. 40 | git clone https://github.com/adrian-thurston/ragel 41 | ./autogen.sh 42 | # --with-colm takes the same path we used above 43 | ./configure --prefix=/path/to/ragel/install --with-colm=/path/to/colm/install 44 | make 45 | make install 46 | ``` 47 | 48 | ## Running ragel 49 | 50 | Now we can convert our ragel scripts using: 51 | 52 | ```sh 53 | /path/to/ragel/install/bin/ragel-rust -e -F1 src/hb/ot_shape_complex_indic_machine.rl # or any other .rl file 54 | ``` 55 | 56 | That's it! 57 | 58 | PS: `ragel` will create temporary `*.ri` files. They can be safely removed. 59 | 60 | ## Code format 61 | 62 | `ragel` uses strange code formatting for the Rust output, therefore running `cargo fmt` 63 | is required. 64 | 65 | ## The Universal state machine 66 | 67 | The `universal_machine.rl` is special since we have to modify its output manually 68 | because we cannot express our needs via `ragel` directly. 69 | 70 | The change is simple. After the `universal_machine.rs` is generated, Rust will complain about 71 | about some variables set to 0. Like `ts = 0;`. 72 | In all those cases `0` should simply be replaced with `p0`. 73 | There are no better solution for now... 74 | -------------------------------------------------------------------------------- /rustfmt.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/rustfmt.toml -------------------------------------------------------------------------------- /scripts/.gitignore: -------------------------------------------------------------------------------- 1 | ArabicShaping.txt 2 | Blocks.txt 3 | DerivedCoreProperties.txt 4 | IndicPositionalCategory.txt 5 | IndicSyllabicCategory.txt 6 | Scripts.txt 7 | UnicodeData.txt 8 | -------------------------------------------------------------------------------- /scripts/README.md: -------------------------------------------------------------------------------- 1 | ## Usage 2 | 3 | ```sh 4 | python3 gen-universal-table.py > ../src/hb/ot_shaper_use_table.rs 5 | 6 | python3 ./gen-vowel-constraints.py > ../src/complex/vowel_constraints.rs 7 | rustfmt ../src/complex/vowel_constraints.rs 8 | ``` 9 | -------------------------------------------------------------------------------- /scripts/gen-unicode-is-emoji-ext-pict.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import urllib.request 4 | import os 5 | 6 | URL = 'https://www.unicode.org/Public/UCD/latest/ucd/emoji/emoji-data.txt' 7 | FILE_NAME = 'emoji-data.txt' 8 | 9 | if not os.path.exists(FILE_NAME): 10 | urllib.request.urlretrieve(URL, FILE_NAME) 11 | 12 | is_ext_pict_section = False 13 | ranges = [] 14 | with open(FILE_NAME) as f: 15 | for line in f: 16 | line = line.strip() 17 | 18 | if not is_ext_pict_section: 19 | if line == '# All omitted code points have Extended_Pictographic=No': 20 | is_ext_pict_section = True 21 | continue 22 | 23 | if not line: 24 | continue 25 | 26 | if line.startswith('#'): 27 | continue 28 | 29 | range, _ = line.split(' ; ') 30 | range = range.strip() 31 | 32 | if '..' in range: 33 | start, end = range.split('..') 34 | ranges.append([start, end]) 35 | else: 36 | ranges.append([range, range]) 37 | 38 | # Merge ranges. 39 | idx = 0 40 | while idx < len(ranges)-1: 41 | if int(ranges[idx][1], 16) + 1 == int(ranges[idx+1][0], 16): 42 | ranges[idx][1] = ranges[idx+1][1] 43 | del ranges[idx+1] 44 | else: 45 | idx += 1; 46 | 47 | for range in ranges: 48 | if range[0] == range[1]: 49 | print('0x{} => true,'.format(range[0], range[1])) 50 | else: 51 | print('0x{}..=0x{} => true,'.format(range[0], range[1])) 52 | -------------------------------------------------------------------------------- /scripts/ms-use/COPYING: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) Microsoft Corporation. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE 22 | -------------------------------------------------------------------------------- /src/digest_u32_set.rs: -------------------------------------------------------------------------------- 1 | use crate::hb::set_digest::hb_set_digest_t; 2 | 3 | pub(crate) struct DigestU32Set(hb_set_digest_t); 4 | 5 | impl DigestU32Set { 6 | pub(crate) fn default() -> Self { 7 | Self(hb_set_digest_t::new()) 8 | } 9 | pub(crate) fn insert(&mut self, value: u32) { 10 | self.0.add(value); 11 | } 12 | pub(crate) fn insert_range(&mut self, range: core::ops::RangeInclusive) { 13 | self.0.add_range(*range.start(), *range.end()); 14 | } 15 | pub(crate) fn clear(&mut self) { 16 | self.0.clear(); 17 | } 18 | pub(crate) fn extend_unsorted>(&mut self, iter: U) { 19 | for value in iter { 20 | self.0.add(value); 21 | } 22 | } 23 | pub(crate) fn contains(&self, value: u32) -> bool { 24 | self.0.may_have(value) 25 | } 26 | pub(crate) fn intersects_set(&self, other: &Self) -> bool { 27 | self.0.may_intersect(&other.0) 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/hb/aat/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod layout; 2 | pub mod layout_common; 3 | pub mod layout_kerx_table; 4 | pub mod layout_morx_table; 5 | pub mod layout_trak_table; 6 | pub mod map; 7 | 8 | use crate::hb::aat::layout_kerx_table::KerxSubtableCache; 9 | use crate::hb::aat::layout_morx_table::MorxSubtableCache; 10 | use crate::hb::kerning::KernSubtableCache; 11 | use crate::hb::tables::TableOffsets; 12 | use alloc::vec::Vec; 13 | use read_fonts::{ 14 | tables::{ankr::Ankr, feat::Feat, kern::Kern, kerx::Kerx, morx::Morx, trak::Trak}, 15 | FontRef, TableProvider, 16 | }; 17 | 18 | #[derive(Default)] 19 | pub struct AatCache { 20 | pub morx: Vec, 21 | pub kern: Vec, 22 | pub kerx: Vec, 23 | } 24 | 25 | impl AatCache { 26 | #[allow(unused)] 27 | pub fn new(font: &FontRef) -> Self { 28 | let mut cache = Self::default(); 29 | let num_glyphs = font 30 | .maxp() 31 | .map(|maxp| maxp.num_glyphs() as u32) 32 | .unwrap_or_default(); 33 | if let Ok(morx) = font.morx() { 34 | let chains = morx.chains(); 35 | for chain in morx.chains().iter() { 36 | let Ok(chain) = chain else { 37 | continue; 38 | }; 39 | for subtable in chain.subtables().iter() { 40 | let Ok(subtable) = subtable else { 41 | continue; 42 | }; 43 | cache 44 | .morx 45 | .push(MorxSubtableCache::new(&subtable, num_glyphs)); 46 | } 47 | } 48 | } 49 | if let Ok(kern) = font.kern() { 50 | for subtable in kern.subtables() { 51 | let Ok(subtable) = subtable else { 52 | continue; 53 | }; 54 | cache 55 | .kern 56 | .push(KernSubtableCache::new(&subtable, num_glyphs)); 57 | } 58 | } 59 | if let Ok(kerx) = font.kerx() { 60 | for subtable in kerx.subtables().iter() { 61 | let Ok(subtable) = subtable else { 62 | continue; 63 | }; 64 | cache 65 | .kerx 66 | .push(KerxSubtableCache::new(&subtable, num_glyphs)); 67 | } 68 | } 69 | cache 70 | } 71 | } 72 | 73 | #[derive(Clone, Default)] 74 | pub struct AatTables<'a> { 75 | pub morx: Option<(Morx<'a>, &'a [MorxSubtableCache])>, 76 | pub ankr: Option>, 77 | pub kern: Option<(Kern<'a>, &'a [KernSubtableCache])>, 78 | pub kerx: Option<(Kerx<'a>, &'a [KerxSubtableCache])>, 79 | pub trak: Option>, 80 | pub feat: Option>, 81 | } 82 | 83 | impl<'a> AatTables<'a> { 84 | pub fn new(font: &FontRef<'a>, cache: &'a AatCache, table_offsets: &TableOffsets) -> Self { 85 | let morx = table_offsets 86 | .morx 87 | .resolve_table(font) 88 | .map(|table| (table, cache.morx.as_slice())); 89 | let ankr = table_offsets.ankr.resolve_table(font); 90 | let kern = table_offsets 91 | .kern 92 | .resolve_table(font) 93 | .map(|table| (table, cache.kern.as_slice())); 94 | let kerx = table_offsets 95 | .kerx 96 | .resolve_table(font) 97 | .map(|table| (table, cache.kerx.as_slice())); 98 | let trak = table_offsets.trak.resolve_table(font); 99 | let feat = table_offsets.feat.resolve_table(font); 100 | Self { 101 | morx, 102 | ankr, 103 | kern, 104 | kerx, 105 | trak, 106 | feat, 107 | } 108 | } 109 | } 110 | -------------------------------------------------------------------------------- /src/hb/algs.rs: -------------------------------------------------------------------------------- 1 | // FLAG macro in harfbuzz. 2 | #[inline] 3 | pub const fn rb_flag(x: u32) -> u32 { 4 | 1 << x 5 | } 6 | 7 | // FLAG_UNSAFE macro in harfbuzz. 8 | #[inline] 9 | pub fn rb_flag_unsafe(x: u32) -> u32 { 10 | if x < 32 { 11 | 1 << x 12 | } else { 13 | 0 14 | } 15 | } 16 | 17 | // FLAG_RANGE macro in harfbuzz. 18 | #[inline] 19 | pub fn rb_flag_range(x: u32, y: u32) -> u32 { 20 | (x < y) as u32 + rb_flag(y + 1) - rb_flag(x) 21 | } 22 | 23 | // FLAG64 macro in harfbuzz. 24 | #[inline] 25 | pub const fn rb_flag64(x: u32) -> u64 { 26 | 1 << x as u64 27 | } 28 | 29 | // FLAG64_UNSAFE macro in harfbuzz. 30 | #[inline] 31 | pub fn rb_flag64_unsafe(x: u32) -> u64 { 32 | if x < 64 { 33 | 1 << (x as u64) 34 | } else { 35 | 0 36 | } 37 | } 38 | 39 | /* Encodes three unsigned integers in one 64-bit number. If the inputs have more than 21 bits, 40 | * values will be truncated / overlap, and might not decode exactly. */ 41 | #[allow(non_snake_case, dead_code)] 42 | pub const fn HB_CODEPOINT_ENCODE3(x: u32, y: u32, z: u32) -> u64 { 43 | ((x as u64) << 42) | ((y as u64) << 21) | (z as u64) 44 | } 45 | #[allow(non_snake_case, dead_code)] 46 | pub const fn HB_CODEPOINT_DECODE3_1(v: u64) -> u32 { 47 | (v >> 42) as u32 48 | } 49 | #[allow(non_snake_case, dead_code)] 50 | pub const fn HB_CODEPOINT_DECODE3_2(v: u64) -> u32 { 51 | ((v >> 21) & 0x001F_FFFF) as u32 52 | } 53 | #[allow(non_snake_case, dead_code)] 54 | pub const fn HB_CODEPOINT_DECODE3_3(v: u64) -> u32 { 55 | (v & 0x001F_FFFF) as u32 56 | } 57 | 58 | /* Custom encoding used by hb-ucd. */ 59 | #[allow(non_snake_case, dead_code)] 60 | pub const fn HB_CODEPOINT_ENCODE3_11_7_14(x: u32, y: u32, z: u32) -> u32 { 61 | ((x & 0x07FF) << 21) | ((y & 0x007F) << 14) | (z & 0x3FFF) 62 | } 63 | #[allow(non_snake_case, dead_code)] 64 | pub const fn HB_CODEPOINT_DECODE3_11_7_14_1(v: u32) -> u32 { 65 | v >> 21 66 | } 67 | #[allow(non_snake_case, dead_code)] 68 | pub const fn HB_CODEPOINT_DECODE3_11_7_14_2(v: u32) -> u32 { 69 | ((v >> 14) & 0x007F) | 0x0300 70 | } 71 | #[allow(non_snake_case, dead_code)] 72 | pub const fn HB_CODEPOINT_DECODE3_11_7_14_3(v: u32) -> u32 { 73 | v & 0x3FFF 74 | } 75 | -------------------------------------------------------------------------------- /src/hb/cache.rs: -------------------------------------------------------------------------------- 1 | use core::sync::atomic::{AtomicU16, AtomicU32, Ordering}; 2 | 3 | /// Trait for atomics used in cache storage 4 | pub trait AtomicStorage: Sized { 5 | const BITS: usize; 6 | fn get(&self) -> u32; 7 | fn set(&self, val: u32); 8 | fn default() -> Self; 9 | } 10 | 11 | /// Implement AtomicStorage directly for AtomicU16 12 | impl AtomicStorage for AtomicU16 { 13 | const BITS: usize = 16; 14 | 15 | fn get(&self) -> u32 { 16 | self.load(Ordering::Relaxed) as u32 17 | } 18 | 19 | fn set(&self, val: u32) { 20 | self.store(val as u16, Ordering::Relaxed); 21 | } 22 | 23 | fn default() -> Self { 24 | Self::new(u16::MAX) 25 | } 26 | } 27 | 28 | /// Implement AtomicStorage directly for AtomicU32 29 | impl AtomicStorage for AtomicU32 { 30 | const BITS: usize = 32; 31 | 32 | fn get(&self) -> u32 { 33 | self.load(Ordering::Relaxed) 34 | } 35 | 36 | fn set(&self, val: u32) { 37 | self.store(val, Ordering::Relaxed); 38 | } 39 | 40 | fn default() -> Self { 41 | Self::new(u32::MAX) 42 | } 43 | } 44 | 45 | /// Selects correct type from STORAGE_BITS 46 | pub trait SelectAtomic { 47 | type Type: AtomicStorage; 48 | } 49 | impl SelectAtomic<16> for () { 50 | type Type = AtomicU16; 51 | } 52 | impl SelectAtomic<32> for () { 53 | type Type = AtomicU32; 54 | } 55 | 56 | /// Public wrapper 57 | pub type hb_cache_t< 58 | const KEY_BITS: usize, 59 | const VALUE_BITS: usize, 60 | const CACHE_SIZE: usize, 61 | const STORAGE_BITS: usize, 62 | > = hb_cache_core_t>::Type>; 63 | 64 | /// Core cache 65 | #[derive(Debug)] 66 | pub struct hb_cache_core_t< 67 | const KEY_BITS: usize, 68 | const VALUE_BITS: usize, 69 | const CACHE_SIZE: usize, 70 | T: AtomicStorage, 71 | > { 72 | values: [T; CACHE_SIZE], 73 | } 74 | 75 | impl 76 | hb_cache_core_t 77 | { 78 | pub const MAX_VALUE: u32 = (1 << VALUE_BITS) - 1; 79 | 80 | pub fn new() -> Self { 81 | debug_assert!( 82 | CACHE_SIZE.is_power_of_two(), 83 | "CACHE_SIZE must be a power of two" 84 | ); 85 | 86 | let cache_bits = CACHE_SIZE.ilog2() as usize; 87 | 88 | debug_assert!( 89 | KEY_BITS >= cache_bits, 90 | "KEY_BITS must be >= log2(CACHE_SIZE)" 91 | ); 92 | debug_assert!( 93 | KEY_BITS + VALUE_BITS <= cache_bits + T::BITS, 94 | "KEY_BITS + VALUE_BITS must fit in CACHE_BITS + T::BITS" 95 | ); 96 | 97 | Self { 98 | values: core::array::from_fn(|_| T::default()), 99 | } 100 | } 101 | 102 | #[inline] 103 | pub fn get(&self, key: u32) -> Option { 104 | let index = (key as usize) & (CACHE_SIZE - 1); 105 | let stored = self.values[index].get(); 106 | let tag = stored >> VALUE_BITS; 107 | let expected_tag = key >> (CACHE_SIZE as u32).ilog2(); 108 | 109 | if stored == T::default().get() || tag != expected_tag { 110 | return None; 111 | } 112 | 113 | Some(stored & ((1 << VALUE_BITS) - 1)) 114 | } 115 | 116 | #[inline] 117 | pub fn set(&self, key: u32, value: u32) { 118 | if (key >> KEY_BITS) != 0 || (value >> VALUE_BITS) != 0 { 119 | return; 120 | } 121 | self.set_unchecked(key, value); 122 | } 123 | 124 | #[inline] 125 | pub fn set_unchecked(&self, key: u32, value: u32) { 126 | let index = (key as usize) & (CACHE_SIZE - 1); 127 | let packed = ((key >> (CACHE_SIZE as u32).ilog2()) << VALUE_BITS) | value; 128 | self.values[index].set(packed); 129 | } 130 | } 131 | -------------------------------------------------------------------------------- /src/hb/glyph_names.rs: -------------------------------------------------------------------------------- 1 | use read_fonts::{ 2 | tables::{cff::Cff, post::Post, postscript::Charset}, 3 | FontRef, TableProvider, 4 | }; 5 | 6 | #[derive(Clone)] 7 | pub(crate) enum GlyphNames<'a> { 8 | None, 9 | Cff(Cff<'a>, Charset<'a>), 10 | Post(Post<'a>), 11 | } 12 | 13 | impl<'a> GlyphNames<'a> { 14 | pub fn new(font: &FontRef<'a>) -> Self { 15 | if let Some((cff, charset)) = font 16 | .cff() 17 | .ok() 18 | .and_then(|cff| Some((cff.clone(), cff.charset(0).ok()??))) 19 | { 20 | Self::Cff(cff, charset) 21 | } else if let Ok(post) = font.post() { 22 | Self::Post(post) 23 | } else { 24 | Self::None 25 | } 26 | } 27 | 28 | pub fn get(&self, glyph_id: u32) -> Option<&str> { 29 | let name = match self { 30 | Self::Cff(cff, charset) => { 31 | let sid = charset.string_id(glyph_id.into()).ok()?; 32 | core::str::from_utf8(cff.string(sid)?.bytes()).ok() 33 | } 34 | Self::Post(post) => { 35 | let gid: u16 = glyph_id.try_into().ok()?; 36 | post.glyph_name(gid.into()) 37 | } 38 | Self::None => None, 39 | }?; 40 | (!name.is_empty()).then_some(name) 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/hb/machine_cursor.rs: -------------------------------------------------------------------------------- 1 | use core::ops::{Add, AddAssign, Sub, SubAssign}; 2 | 3 | // Similar to machine_index_t in harfbuzz, but Rust specific. 4 | #[derive(Debug)] 5 | pub struct MachineCursor<'a, T, F> { 6 | data: &'a [T], 7 | pred: F, 8 | pos: usize, 9 | } 10 | 11 | impl<'a, T, F> MachineCursor<'a, T, F> 12 | where 13 | F: Fn(&[T], usize) -> bool, 14 | { 15 | pub fn new(data: &'a [T], pred: F) -> Self { 16 | let pos = (0..data.len()) 17 | .find(|i| pred(data, *i)) 18 | .unwrap_or(data.len()); 19 | Self { data, pred, pos } 20 | } 21 | 22 | fn advance1(&mut self) { 23 | self.pos = (self.pos + 1..self.data.len()) 24 | .find(|q| (self.pred)(self.data, *q)) 25 | .unwrap_or(self.data.len()); 26 | } 27 | 28 | fn recede1(&mut self) { 29 | self.pos = (0..self.pos) 30 | .rev() 31 | .find(|q| (self.pred)(self.data, *q)) 32 | .unwrap_or(0); 33 | } 34 | 35 | pub fn index(&self) -> usize { 36 | self.pos 37 | } 38 | 39 | pub fn end(&self) -> Self 40 | where 41 | F: Clone, 42 | { 43 | Self { 44 | data: self.data, 45 | pred: self.pred.clone(), 46 | pos: self.data.len(), 47 | } 48 | } 49 | } 50 | 51 | impl Add for MachineCursor<'_, T, F> 52 | where 53 | F: Fn(&[T], usize) -> bool, 54 | { 55 | type Output = Self; 56 | 57 | fn add(mut self, rhs: usize) -> Self::Output { 58 | for _ in 0..rhs { 59 | self.advance1(); 60 | } 61 | self 62 | } 63 | } 64 | 65 | impl Sub for MachineCursor<'_, T, F> 66 | where 67 | F: Fn(&[T], usize) -> bool, 68 | { 69 | type Output = Self; 70 | 71 | fn sub(mut self, rhs: usize) -> Self::Output { 72 | for _ in 0..rhs { 73 | self.recede1(); 74 | } 75 | self 76 | } 77 | } 78 | 79 | impl AddAssign for MachineCursor<'_, T, F> 80 | where 81 | F: Fn(&[T], usize) -> bool, 82 | { 83 | fn add_assign(&mut self, rhs: usize) { 84 | for _ in 0..rhs { 85 | self.advance1(); 86 | } 87 | } 88 | } 89 | 90 | impl SubAssign for MachineCursor<'_, T, F> 91 | where 92 | F: Fn(&[T], usize) -> bool, 93 | { 94 | fn sub_assign(&mut self, rhs: usize) { 95 | for _ in 0..rhs { 96 | self.recede1(); 97 | } 98 | } 99 | } 100 | 101 | impl PartialEq for MachineCursor<'_, T, F> { 102 | fn eq(&self, other: &Self) -> bool { 103 | self.pos == other.pos 104 | } 105 | } 106 | 107 | impl Clone for MachineCursor<'_, T, F> 108 | where 109 | F: Clone, 110 | { 111 | fn clone(&self) -> Self { 112 | Self { 113 | data: self.data, 114 | pred: self.pred.clone(), 115 | pos: self.pos, 116 | } 117 | } 118 | } 119 | 120 | impl Copy for MachineCursor<'_, T, F> where F: Copy {} 121 | -------------------------------------------------------------------------------- /src/hb/mod.rs: -------------------------------------------------------------------------------- 1 | // Match harfbuzz code style. 2 | #![allow(non_camel_case_types)] 3 | #![allow(non_upper_case_globals)] 4 | #![allow(non_snake_case)] 5 | #![allow(clippy::collapsible_if)] 6 | #![allow(clippy::collapsible_else_if)] 7 | #![allow(clippy::comparison_chain)] 8 | #![allow(clippy::needless_range_loop)] 9 | #![allow(clippy::non_canonical_partial_ord_impl)] 10 | #![allow(clippy::upper_case_acronyms)] 11 | #![allow(clippy::too_many_arguments)] 12 | #![allow(clippy::wildcard_in_or_patterns)] 13 | #![allow(clippy::identity_op)] 14 | #![allow(clippy::inline_always)] 15 | #![allow(clippy::mut_range_bound)] 16 | #![allow(clippy::enum_variant_names)] 17 | #![allow(clippy::manual_range_patterns)] 18 | #![allow(clippy::type_complexity)] 19 | #![allow(clippy::wrong_self_convention)] 20 | #![allow(clippy::match_like_matches_macro)] 21 | #![allow(clippy::manual_range_contains)] 22 | 23 | mod algs; 24 | #[macro_use] 25 | pub mod buffer; 26 | mod aat; 27 | mod cache; 28 | mod charmap; 29 | pub mod common; 30 | pub mod face; 31 | mod glyph_metrics; 32 | mod glyph_names; 33 | mod kerning; 34 | mod machine_cursor; 35 | mod ot; 36 | mod ot_layout; 37 | mod ot_layout_common; 38 | mod ot_layout_gpos_table; 39 | mod ot_layout_gsub_table; 40 | mod ot_layout_gsubgpos; 41 | mod ot_map; 42 | mod ot_shape; 43 | mod ot_shape_fallback; 44 | mod ot_shape_normalize; 45 | pub mod ot_shape_plan; 46 | mod ot_shaper; 47 | mod ot_shaper_arabic; 48 | mod ot_shaper_arabic_table; 49 | mod ot_shaper_hangul; 50 | mod ot_shaper_hebrew; 51 | mod ot_shaper_indic; 52 | mod ot_shaper_indic_machine; 53 | #[rustfmt::skip] 54 | mod ot_shaper_indic_table; 55 | mod ot_shaper_khmer; 56 | mod ot_shaper_khmer_machine; 57 | mod ot_shaper_myanmar; 58 | mod ot_shaper_myanmar_machine; 59 | mod ot_shaper_syllabic; 60 | mod ot_shaper_thai; 61 | mod ot_shaper_use; 62 | mod ot_shaper_use_machine; 63 | #[rustfmt::skip] 64 | mod ot_shaper_use_table; 65 | mod ot_shaper_vowel_constraints; 66 | pub(crate) mod set_digest; 67 | mod tables; 68 | mod tag; 69 | mod tag_table; 70 | mod text_parser; 71 | #[rustfmt::skip] 72 | mod ucd_table; 73 | mod unicode; 74 | 75 | use read_fonts::types::Tag as hb_tag_t; 76 | 77 | use self::buffer::GlyphInfo; 78 | use self::face::hb_font_t; 79 | 80 | type hb_mask_t = u32; 81 | 82 | use self::common::{script, Direction, Feature, Language, Script}; 83 | -------------------------------------------------------------------------------- /src/hb/ot/gpos/mod.rs: -------------------------------------------------------------------------------- 1 | //! OpenType GPOS lookups. 2 | 3 | use crate::hb::ot_layout_gsubgpos::OT::hb_ot_apply_context_t; 4 | use read_fonts::{ 5 | tables::{gpos::ValueFormat, variations::DeltaSetIndex}, 6 | FontData, 7 | }; 8 | 9 | mod cursive; 10 | mod mark; 11 | mod pair; 12 | mod single; 13 | 14 | #[allow(unused_assignments)] 15 | fn apply_value( 16 | ctx: &mut hb_ot_apply_context_t, 17 | idx: usize, 18 | data: &FontData, 19 | mut offset: usize, 20 | format: ValueFormat, 21 | ) -> Option { 22 | let pos = &mut ctx.buffer.pos[idx]; 23 | let is_horizontal = ctx.buffer.direction.is_horizontal(); 24 | let mut worked = false; 25 | macro_rules! read_value { 26 | () => {{ 27 | let value = data.read_at::(offset).ok()? as i32; 28 | worked |= value != 0; 29 | offset += 2; 30 | value 31 | }}; 32 | } 33 | if format.contains(ValueFormat::X_PLACEMENT) { 34 | pos.x_offset += read_value!(); 35 | } 36 | if format.contains(ValueFormat::Y_PLACEMENT) { 37 | pos.y_offset += read_value!(); 38 | } 39 | if format.contains(ValueFormat::X_ADVANCE) { 40 | if is_horizontal { 41 | pos.x_advance += read_value!(); 42 | } else { 43 | offset += 2; 44 | } 45 | } 46 | if format.contains(ValueFormat::Y_ADVANCE) { 47 | if !is_horizontal { 48 | pos.y_advance -= read_value!(); 49 | } else { 50 | offset += 2; 51 | } 52 | } 53 | if !format.contains(ValueFormat::ANY_DEVICE_OR_VARIDX) { 54 | return Some(worked); 55 | } 56 | if let Some(vs) = &ctx.face.ot_tables.var_store { 57 | let coords = ctx.face.ot_tables.coords; 58 | macro_rules! read_delta { 59 | () => {{ 60 | let rec_offset = data.read_at::(offset).ok()? as usize; 61 | offset += 2; 62 | let mut value = 0; 63 | // Offset is nullable 64 | if rec_offset != 0 { 65 | let format = data.read_at::(rec_offset + 4).ok()?; 66 | // DeltaFormat specifier for a VariationIndex table 67 | // See 68 | const VARIATION_INDEX_FORMAT: u16 = 0x8000; 69 | if format == VARIATION_INDEX_FORMAT { 70 | let outer = data.read_at::(rec_offset).ok()?; 71 | let inner = data.read_at::(rec_offset + 2).ok()?; 72 | value = vs 73 | .compute_delta(DeltaSetIndex { outer, inner }, coords) 74 | .unwrap_or_default(); 75 | worked |= value != 0; 76 | } 77 | } 78 | value 79 | }}; 80 | } 81 | if format.contains(ValueFormat::X_PLACEMENT_DEVICE) { 82 | pos.x_offset += read_delta!(); 83 | } 84 | if format.contains(ValueFormat::Y_PLACEMENT_DEVICE) { 85 | pos.y_offset += read_delta!(); 86 | } 87 | if format.contains(ValueFormat::X_ADVANCE_DEVICE) { 88 | if is_horizontal { 89 | pos.x_advance += read_delta!(); 90 | } else { 91 | offset += 2; 92 | } 93 | } 94 | if format.contains(ValueFormat::Y_ADVANCE_DEVICE) { 95 | if !is_horizontal { 96 | pos.y_advance -= read_delta!(); 97 | } else { 98 | offset += 2; 99 | } 100 | } 101 | } 102 | Some(worked) 103 | } 104 | -------------------------------------------------------------------------------- /src/hb/ot/gpos/single.rs: -------------------------------------------------------------------------------- 1 | use crate::hb::ot_layout_gsubgpos::Apply; 2 | use crate::hb::ot_layout_gsubgpos::OT::hb_ot_apply_context_t; 3 | use read_fonts::tables::gpos::{SinglePosFormat1, SinglePosFormat2}; 4 | 5 | impl Apply for SinglePosFormat1<'_> { 6 | fn apply(&self, ctx: &mut hb_ot_apply_context_t) -> Option<()> { 7 | let glyph = ctx.buffer.cur(0).as_glyph(); 8 | self.coverage().ok()?.get(glyph)?; 9 | let format = self.value_format(); 10 | let offset = self.shape().value_record_byte_range().start; 11 | super::apply_value(ctx, ctx.buffer.idx, &self.offset_data(), offset, format); 12 | ctx.buffer.idx += 1; 13 | Some(()) 14 | } 15 | } 16 | 17 | impl Apply for SinglePosFormat2<'_> { 18 | fn apply(&self, ctx: &mut hb_ot_apply_context_t) -> Option<()> { 19 | let glyph = ctx.buffer.cur(0).as_glyph(); 20 | let index = self.coverage().ok()?.get(glyph)? as usize; 21 | let format = self.value_format(); 22 | let offset = 23 | self.shape().value_records_byte_range().start + (format.record_byte_len() * index); 24 | super::apply_value(ctx, ctx.buffer.idx, &self.offset_data(), offset, format); 25 | ctx.buffer.idx += 1; 26 | Some(()) 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/hb/ot/gsub/alternate.rs: -------------------------------------------------------------------------------- 1 | use crate::hb::ot_layout_gsubgpos::OT::hb_ot_apply_context_t; 2 | use crate::hb::ot_layout_gsubgpos::{Apply, WouldApply, WouldApplyContext}; 3 | use read_fonts::tables::gsub::{AlternateSet, AlternateSubstFormat1}; 4 | 5 | impl Apply for AlternateSet<'_> { 6 | fn apply(&self, ctx: &mut hb_ot_apply_context_t) -> Option<()> { 7 | let alternates = self.alternate_glyph_ids(); 8 | let len = alternates.len() as u16; 9 | if len == 0 { 10 | return None; 11 | } 12 | 13 | let glyph_mask = ctx.buffer.cur(0).mask; 14 | 15 | // Note: This breaks badly if two features enabled this lookup together. 16 | let shift = ctx.lookup_mask().trailing_zeros(); 17 | let mut alt_index = (ctx.lookup_mask() & glyph_mask) >> shift; 18 | 19 | // If alt_index is MAX_VALUE, randomize feature if it is the rand feature. 20 | if alt_index == crate::hb::ot_map::hb_ot_map_t::MAX_VALUE && ctx.random { 21 | // Maybe we can do better than unsafe-to-break all; but since we are 22 | // changing random state, it would be hard to track that. Good 'nough. 23 | ctx.buffer.unsafe_to_break(Some(0), Some(ctx.buffer.len)); 24 | alt_index = ctx.random_number() % u32::from(len) + 1; 25 | } 26 | 27 | let idx = u16::try_from(alt_index).ok()?.checked_sub(1)?; 28 | ctx.replace_glyph(alternates.get(idx as usize)?.get().into()); 29 | 30 | Some(()) 31 | } 32 | } 33 | 34 | impl WouldApply for AlternateSubstFormat1<'_> { 35 | fn would_apply(&self, ctx: &WouldApplyContext) -> bool { 36 | ctx.glyphs.len() == 1 37 | && self 38 | .coverage() 39 | .is_ok_and(|cov| cov.get(ctx.glyphs[0]).is_some()) 40 | } 41 | } 42 | 43 | impl Apply for AlternateSubstFormat1<'_> { 44 | fn apply(&self, ctx: &mut hb_ot_apply_context_t) -> Option<()> { 45 | let glyph = ctx.buffer.cur(0).as_glyph(); 46 | let index = self.coverage().ok()?.get(glyph)?; 47 | let set = self.alternate_sets().get(index as usize).ok()?; 48 | set.apply(ctx) 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/hb/ot/gsub/mod.rs: -------------------------------------------------------------------------------- 1 | //! OpenType GSUB lookups. 2 | 3 | mod alternate; 4 | mod ligature; 5 | mod multiple; 6 | mod reverse_chain; 7 | mod single; 8 | -------------------------------------------------------------------------------- /src/hb/ot/gsub/multiple.rs: -------------------------------------------------------------------------------- 1 | use crate::hb::buffer::GlyphPropsFlags; 2 | use crate::hb::ot_layout_gsubgpos::OT::hb_ot_apply_context_t; 3 | use crate::hb::ot_layout_gsubgpos::{Apply, WouldApply, WouldApplyContext}; 4 | use read_fonts::tables::gsub::MultipleSubstFormat1; 5 | 6 | impl WouldApply for MultipleSubstFormat1<'_> { 7 | fn would_apply(&self, ctx: &WouldApplyContext) -> bool { 8 | ctx.glyphs.len() == 1 9 | && self 10 | .coverage() 11 | .is_ok_and(|cov| cov.get(ctx.glyphs[0]).is_some()) 12 | } 13 | } 14 | 15 | impl Apply for MultipleSubstFormat1<'_> { 16 | fn apply(&self, ctx: &mut hb_ot_apply_context_t) -> Option<()> { 17 | let gid = ctx.buffer.cur(0).as_glyph(); 18 | let index = self.coverage().ok()?.get(gid)? as usize; 19 | let substs = self.sequences().get(index).ok()?.substitute_glyph_ids(); 20 | match substs.len() { 21 | // Spec disallows this, but Uniscribe allows it. 22 | // https://github.com/harfbuzz/harfbuzz/issues/253 23 | 0 => ctx.buffer.delete_glyph(), 24 | 25 | // Special-case to make it in-place and not consider this 26 | // as a "multiplied" substitution. 27 | 1 => ctx.replace_glyph(substs.first()?.get().into()), 28 | 29 | _ => { 30 | let class = if ctx.buffer.cur(0).is_ligature() { 31 | GlyphPropsFlags::BASE_GLYPH 32 | } else { 33 | GlyphPropsFlags::empty() 34 | }; 35 | let lig_id = ctx.buffer.cur(0).lig_id(); 36 | 37 | for (i, subst) in substs.iter().enumerate() { 38 | let subst = subst.get().into(); 39 | // If is attached to a ligature, don't disturb that. 40 | // https://github.com/harfbuzz/harfbuzz/issues/3069 41 | if lig_id == 0 { 42 | // Index is truncated to 4 bits anway, so we can safely cast to u8. 43 | ctx.buffer.cur_mut(0).set_lig_props_for_component(i as u8); 44 | } 45 | ctx.output_glyph_for_component(subst, class); 46 | } 47 | 48 | ctx.buffer.skip_glyph(); 49 | } 50 | } 51 | Some(()) 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /src/hb/ot/gsub/reverse_chain.rs: -------------------------------------------------------------------------------- 1 | use crate::hb::buffer::GlyphInfo; 2 | use crate::hb::ot_layout::MAX_NESTING_LEVEL; 3 | use crate::hb::ot_layout_gsubgpos::OT::hb_ot_apply_context_t; 4 | use crate::hb::ot_layout_gsubgpos::{ 5 | match_backtrack, match_lookahead, Apply, WouldApply, WouldApplyContext, 6 | }; 7 | use read_fonts::tables::gsub::ReverseChainSingleSubstFormat1; 8 | 9 | impl WouldApply for ReverseChainSingleSubstFormat1<'_> { 10 | fn would_apply(&self, ctx: &WouldApplyContext) -> bool { 11 | ctx.glyphs.len() == 1 12 | && self 13 | .coverage() 14 | .ok() 15 | .and_then(|coverage| coverage.get(ctx.glyphs[0])) 16 | .is_some() 17 | } 18 | } 19 | 20 | impl Apply for ReverseChainSingleSubstFormat1<'_> { 21 | fn apply(&self, ctx: &mut hb_ot_apply_context_t) -> Option<()> { 22 | // No chaining to this type. 23 | if ctx.nesting_level_left != MAX_NESTING_LEVEL { 24 | return None; 25 | } 26 | 27 | let glyph = ctx.buffer.cur(0).as_glyph(); 28 | let coverage = self.coverage().ok()?; 29 | let index = coverage.get(glyph)? as usize; 30 | let substitutes = self.substitute_glyph_ids(); 31 | if index >= substitutes.len() { 32 | return None; 33 | } 34 | 35 | let subst = substitutes.get(index)?.get(); 36 | 37 | let backtrack_coverages = self.backtrack_coverages(); 38 | let lookahead_coverages = self.lookahead_coverages(); 39 | 40 | let f1 = |info: &mut GlyphInfo, index| { 41 | backtrack_coverages 42 | .get(index as usize) 43 | .ok() 44 | .and_then(|coverage| coverage.get(info.glyph_id)) 45 | .is_some() 46 | }; 47 | 48 | let f2 = |info: &mut GlyphInfo, index| { 49 | lookahead_coverages 50 | .get(index as usize) 51 | .ok() 52 | .and_then(|coverage| coverage.get(info.glyph_id)) 53 | .is_some() 54 | }; 55 | 56 | let mut start_index = 0; 57 | let mut end_index = 0; 58 | 59 | if match_backtrack(ctx, backtrack_coverages.len() as u16, f1, &mut start_index) { 60 | if match_lookahead( 61 | ctx, 62 | lookahead_coverages.len() as u16, 63 | f2, 64 | ctx.buffer.idx + 1, 65 | &mut end_index, 66 | ) { 67 | ctx.buffer 68 | .unsafe_to_break_from_outbuffer(Some(start_index), Some(end_index)); 69 | ctx.replace_glyph_inplace(subst.into()); 70 | 71 | // Note: We DON'T decrease buffer.idx. The main loop does it 72 | // for us. This is useful for preventing surprises if someone 73 | // calls us through a Context lookup. 74 | return Some(()); 75 | } 76 | } 77 | 78 | ctx.buffer 79 | .unsafe_to_concat_from_outbuffer(Some(start_index), Some(end_index)); 80 | None 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /src/hb/ot/gsub/single.rs: -------------------------------------------------------------------------------- 1 | use crate::hb::ot_layout_gsubgpos::OT::hb_ot_apply_context_t; 2 | use crate::hb::ot_layout_gsubgpos::{Apply, WouldApply, WouldApplyContext}; 3 | use read_fonts::tables::gsub::{SingleSubstFormat1, SingleSubstFormat2}; 4 | 5 | impl WouldApply for SingleSubstFormat1<'_> { 6 | fn would_apply(&self, ctx: &WouldApplyContext) -> bool { 7 | let gid = ctx.glyphs[0]; 8 | ctx.glyphs.len() == 1 && self.coverage().is_ok_and(|cov| cov.get(gid).is_some()) 9 | } 10 | } 11 | 12 | impl Apply for SingleSubstFormat1<'_> { 13 | fn apply(&self, ctx: &mut hb_ot_apply_context_t) -> Option<()> { 14 | let glyph = ctx.buffer.cur(0).as_glyph(); 15 | self.coverage().ok()?.get(glyph)?; 16 | let subst = (glyph.to_u32() as i32 + self.delta_glyph_id() as i32) as u16; 17 | ctx.replace_glyph(subst.into()); 18 | Some(()) 19 | } 20 | } 21 | 22 | impl WouldApply for SingleSubstFormat2<'_> { 23 | fn would_apply(&self, ctx: &WouldApplyContext) -> bool { 24 | ctx.glyphs.len() == 1 25 | && self 26 | .coverage() 27 | .is_ok_and(|cov| cov.get(ctx.glyphs[0]).is_some()) 28 | } 29 | } 30 | 31 | impl Apply for SingleSubstFormat2<'_> { 32 | fn apply(&self, ctx: &mut hb_ot_apply_context_t) -> Option<()> { 33 | let glyph = ctx.buffer.cur(0).as_glyph(); 34 | let index = self.coverage().ok()?.get(glyph)? as usize; 35 | let subst = self.substitute_glyph_ids().get(index)?.get().to_u16(); 36 | ctx.replace_glyph(subst.into()); 37 | Some(()) 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/hb/ot_layout_common.rs: -------------------------------------------------------------------------------- 1 | #[allow(dead_code)] 2 | pub mod lookup_flags { 3 | pub const RIGHT_TO_LEFT: u16 = 0x0001; 4 | pub const IGNORE_BASE_GLYPHS: u16 = 0x0002; 5 | pub const IGNORE_LIGATURES: u16 = 0x0004; 6 | pub const IGNORE_MARKS: u16 = 0x0008; 7 | pub const IGNORE_FLAGS: u16 = 0x000E; 8 | pub const USE_MARK_FILTERING_SET: u16 = 0x0010; 9 | pub const MARK_ATTACHMENT_TYPE_MASK: u16 = 0xFF00; 10 | } 11 | -------------------------------------------------------------------------------- /src/hb/ot_layout_gsub_table.rs: -------------------------------------------------------------------------------- 1 | use super::buffer::hb_buffer_t; 2 | use super::hb_font_t; 3 | use super::ot_layout::*; 4 | use super::ot_shape_plan::hb_ot_shape_plan_t; 5 | 6 | pub fn substitute(plan: &hb_ot_shape_plan_t, face: &hb_font_t, buffer: &mut hb_buffer_t) { 7 | apply_layout_table(plan, face, buffer, face.ot_tables.gsub.as_ref()); 8 | } 9 | -------------------------------------------------------------------------------- /src/hb/ot_shaper_khmer_machine.rl: -------------------------------------------------------------------------------- 1 | #![allow( 2 | dead_code, 3 | non_upper_case_globals, 4 | unused_assignments, 5 | unused_parens, 6 | while_true, 7 | clippy::assign_op_pattern, 8 | clippy::collapsible_if, 9 | clippy::comparison_chain, 10 | clippy::double_parens, 11 | clippy::unnecessary_cast, 12 | clippy::single_match, 13 | clippy::never_loop 14 | )] 15 | 16 | use super::buffer::{HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE, hb_buffer_t}; 17 | 18 | %%{ 19 | machine khmer_syllable_machine; 20 | alphtype u8; 21 | write data; 22 | }%% 23 | 24 | // IMPORTANT: Before updating any values here, make sure to read the comment in `ot_category_t`. 25 | %%{ 26 | 27 | # We use category H for spec category Coeng 28 | 29 | 30 | C = 1; 31 | V = 2; 32 | H = 4; 33 | ZWNJ = 5; 34 | ZWJ = 6; 35 | PLACEHOLDER = 10; 36 | DOTTEDCIRCLE = 11; 37 | Ra = 15; 38 | 39 | VAbv = 20; 40 | VBlw = 21; 41 | VPre = 22; 42 | VPst = 23; 43 | 44 | Robatic = 25; 45 | Xgroup = 26; 46 | Ygroup = 27; 47 | 48 | c = (C | Ra | V); 49 | cn = c.((ZWJ|ZWNJ)?.Robatic)?; 50 | joiner = (ZWJ | ZWNJ); 51 | xgroup = (joiner*.Xgroup)*; 52 | ygroup = Ygroup*; 53 | 54 | # This grammar was experimentally extracted from what Uniscribe allows. 55 | 56 | matra_group = VPre? xgroup VBlw? xgroup (joiner?.VAbv)? xgroup VPst?; 57 | syllable_tail = xgroup matra_group xgroup (H.c)? ygroup; 58 | 59 | 60 | broken_cluster = Robatic? (H.cn)* (H | syllable_tail); 61 | consonant_syllable = (cn|PLACEHOLDER|DOTTEDCIRCLE) broken_cluster; 62 | other = any; 63 | 64 | main := |* 65 | consonant_syllable => { found_syllable!(SyllableType::ConsonantSyllable); }; 66 | broken_cluster => { found_syllable!(SyllableType::BrokenCluster); buffer.scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }; 67 | other => { found_syllable!(SyllableType::NonKhmerCluster); }; 68 | *|; 69 | 70 | 71 | }%% 72 | 73 | #[derive(Clone, Copy)] 74 | pub enum SyllableType { 75 | ConsonantSyllable = 0, 76 | BrokenCluster, 77 | NonKhmerCluster, 78 | } 79 | 80 | pub fn find_syllables_khmer(buffer: &mut hb_buffer_t) { 81 | let mut cs = 0; 82 | let mut ts = 0; 83 | let mut te = 0; 84 | let mut act = 0; 85 | let mut p = 0; 86 | let pe = buffer.len; 87 | let eof = buffer.len; 88 | let mut syllable_serial = 1u8; 89 | 90 | macro_rules! found_syllable { 91 | ($kind:expr) => {{ 92 | found_syllable(ts, te, &mut syllable_serial, $kind, buffer); 93 | }} 94 | } 95 | 96 | %%{ 97 | write init; 98 | getkey (buffer.info[p].khmer_category() as u8); 99 | write exec; 100 | }%% 101 | } 102 | 103 | #[inline] 104 | fn found_syllable( 105 | start: usize, 106 | end: usize, 107 | syllable_serial: &mut u8, 108 | kind: SyllableType, 109 | buffer: &mut hb_buffer_t, 110 | ) { 111 | for i in start..end { 112 | buffer.info[i].set_syllable((*syllable_serial << 4) | kind as u8); 113 | } 114 | 115 | *syllable_serial += 1; 116 | 117 | if *syllable_serial == 16 { 118 | *syllable_serial = 1; 119 | } 120 | } 121 | -------------------------------------------------------------------------------- /src/hb/ot_shaper_myanmar_machine.rl: -------------------------------------------------------------------------------- 1 | #![allow( 2 | dead_code, 3 | non_upper_case_globals, 4 | unused_assignments, 5 | unused_parens, 6 | while_true, 7 | clippy::assign_op_pattern, 8 | clippy::collapsible_if, 9 | clippy::comparison_chain, 10 | clippy::double_parens, 11 | clippy::unnecessary_cast, 12 | clippy::single_match, 13 | clippy::never_loop 14 | )] 15 | 16 | use super::buffer::{HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE, hb_buffer_t}; 17 | 18 | %%{ 19 | machine myanmar_syllable_machine; 20 | alphtype u8; 21 | write data; 22 | }%% 23 | 24 | // IMPORTANT: Before updating any values here, make sure to read the comment in `ot_category_t`. 25 | %%{ 26 | 27 | # Spec category D is folded into GB; D0 is not implemented by Uniscribe and as such folded into D 28 | # Spec category P is folded into GB 29 | 30 | C = 1; 31 | IV = 2; 32 | DB = 3; # Dot below = OT_N 33 | H = 4; 34 | ZWNJ = 5; 35 | ZWJ = 6; 36 | SM = 8; # Visarga and Shan tones 37 | GB = 10; # = OT_PLACEHOLDER 38 | DOTTEDCIRCLE = 11; 39 | A = 9; 40 | Ra = 15; 41 | CS = 18; 42 | SMPst = 57; 43 | 44 | VAbv = 20; 45 | VBlw = 21; 46 | VPre = 22; 47 | VPst = 23; 48 | 49 | # 32+ are for Myanmar-specific values 50 | As = 32; # Asat 51 | MH = 35; # Medial Ha 52 | MR = 36; # Medial Ra 53 | MW = 37; # Medial Wa, Shan Wa 54 | MY = 38; # Medial Ya, Mon Na, Mon Ma 55 | PT = 39; # Pwo and other tones 56 | VS = 40; # Variation selectors 57 | ML = 41; # Medial Mon La 58 | 59 | j = ZWJ|ZWNJ; # Joiners 60 | k = (Ra As H); # Kinzi 61 | 62 | sm = SM | SMPst; 63 | c = C|Ra; # is_consonant 64 | 65 | medial_group = MY? As? MR? ((MW MH? ML? | MH ML? | ML) As?)?; 66 | main_vowel_group = (VPre.VS?)* VAbv* VBlw* A* (DB As?)?; 67 | post_vowel_group = VPst MH? ML? As* VAbv* A* (DB As?)?; 68 | tone_group = sm | PT A* DB? As?; 69 | 70 | complex_syllable_tail = As* medial_group main_vowel_group post_vowel_group* tone_group* j?; 71 | syllable_tail = (H (c|IV).VS?)* (H | complex_syllable_tail); 72 | 73 | consonant_syllable = (k|CS)? (c|IV|GB|DOTTEDCIRCLE).VS? syllable_tail; 74 | broken_cluster = k? VS? syllable_tail; 75 | other = any; 76 | 77 | main := |* 78 | consonant_syllable => { found_syllable!(SyllableType::ConsonantSyllable); }; 79 | j | SMPst => { found_syllable!(SyllableType::NonMyanmarCluster); }; 80 | broken_cluster => { found_syllable!(SyllableType::BrokenCluster); buffer.scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }; 81 | other => { found_syllable!(SyllableType::NonMyanmarCluster); }; 82 | *|; 83 | 84 | 85 | }%% 86 | 87 | #[derive(Clone, Copy)] 88 | pub enum SyllableType { 89 | ConsonantSyllable = 0, 90 | PunctuationCluster, 91 | BrokenCluster, 92 | NonMyanmarCluster, 93 | } 94 | 95 | pub fn find_syllables_myanmar(buffer: &mut hb_buffer_t) { 96 | let mut cs = 0; 97 | let mut ts = 0; 98 | let mut te; 99 | let mut act = 0; 100 | let mut p = 0; 101 | let pe = buffer.len; 102 | let eof = buffer.len; 103 | let mut syllable_serial = 1u8; 104 | 105 | macro_rules! found_syllable { 106 | ($kind:expr) => {{ 107 | found_syllable(ts, te, &mut syllable_serial, $kind, buffer); 108 | }} 109 | } 110 | 111 | %%{ 112 | write init; 113 | getkey (buffer.info[p].myanmar_category() as u8); 114 | write exec; 115 | }%% 116 | } 117 | 118 | #[inline] 119 | fn found_syllable( 120 | start: usize, 121 | end: usize, 122 | syllable_serial: &mut u8, 123 | kind: SyllableType, 124 | buffer: &mut hb_buffer_t, 125 | ) { 126 | for i in start..end { 127 | buffer.info[i].set_syllable((*syllable_serial << 4) | kind as u8); 128 | } 129 | 130 | *syllable_serial += 1; 131 | 132 | if *syllable_serial == 16 { 133 | *syllable_serial = 1; 134 | } 135 | } 136 | -------------------------------------------------------------------------------- /src/hb/ot_shaper_syllabic.rs: -------------------------------------------------------------------------------- 1 | use super::buffer::*; 2 | use super::ot_shape_plan::hb_ot_shape_plan_t; 3 | use super::{hb_font_t, GlyphInfo}; 4 | use crate::BufferFlags; 5 | 6 | pub fn insert_dotted_circles( 7 | face: &hb_font_t, 8 | buffer: &mut hb_buffer_t, 9 | broken_syllable_type: u8, 10 | dottedcircle_category: u8, 11 | repha_category: Option, 12 | dottedcircle_position: Option, 13 | ) -> bool { 14 | if buffer 15 | .flags 16 | .contains(BufferFlags::DO_NOT_INSERT_DOTTED_CIRCLE) 17 | { 18 | return false; 19 | } 20 | 21 | if (buffer.scratch_flags & HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE) == 0 { 22 | return false; 23 | } 24 | 25 | let dottedcircle_glyph = match face.get_nominal_glyph(0x25CC) { 26 | Some(g) => g.to_u32(), 27 | None => return false, 28 | }; 29 | 30 | let mut dottedcircle = GlyphInfo { 31 | glyph_id: 0x25CC, 32 | ..GlyphInfo::default() 33 | }; 34 | dottedcircle.set_ot_shaper_var_u8_category(dottedcircle_category); 35 | if let Some(dottedcircle_position) = dottedcircle_position { 36 | dottedcircle.set_ot_shaper_var_u8_auxiliary(dottedcircle_position); 37 | } 38 | dottedcircle.glyph_id = dottedcircle_glyph; 39 | 40 | buffer.clear_output(); 41 | 42 | buffer.idx = 0; 43 | let mut last_syllable = 0; 44 | while buffer.idx < buffer.len { 45 | let syllable = buffer.cur(0).syllable(); 46 | if last_syllable != syllable && (syllable & 0x0F) == broken_syllable_type { 47 | last_syllable = syllable; 48 | 49 | let mut ginfo = dottedcircle; 50 | ginfo.cluster = buffer.cur(0).cluster; 51 | ginfo.mask = buffer.cur(0).mask; 52 | ginfo.set_syllable(buffer.cur(0).syllable()); 53 | 54 | // Insert dottedcircle after possible Repha. 55 | if let Some(repha_category) = repha_category { 56 | while buffer.idx < buffer.len 57 | && last_syllable == buffer.cur(0).syllable() 58 | && buffer.cur(0).ot_shaper_var_u8_category() == repha_category 59 | { 60 | buffer.next_glyph(); 61 | } 62 | } 63 | 64 | buffer.output_info(ginfo); 65 | } else { 66 | buffer.next_glyph(); 67 | } 68 | } 69 | 70 | buffer.sync(); 71 | 72 | true 73 | } 74 | 75 | pub(crate) fn syllabic_clear_var( 76 | _: &hb_ot_shape_plan_t, 77 | _: &hb_font_t, 78 | buffer: &mut hb_buffer_t, 79 | ) -> bool { 80 | for info in &mut buffer.info { 81 | info.set_syllable(0); 82 | } 83 | buffer.deallocate_var(GlyphInfo::SYLLABLE_VAR); 84 | 85 | false 86 | } 87 | -------------------------------------------------------------------------------- /tests/custom/bugs.tests: -------------------------------------------------------------------------------- 1 | tests/fonts/rb_custom/NotoSansCJK.subset1.otf;--direction rtl;U+4F60,U+597D,U+FF0C; 2 | tests/fonts/rb_custom/OpenSans.subset1.ttf;--variations=wght=500,wdth=80;U+0065; 3 | tests/fonts/rb_custom/NotoSansMalayalam.subset1.ttf;;U+0D38,U+0D4D,U+0D25; 4 | -------------------------------------------------------------------------------- /tests/custom/colr.tests: -------------------------------------------------------------------------------- 1 | tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F0100,U+F0101,U+F0102,U+F0103; 2 | tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F0200,U+F0201,U+F0202,U+F0203,U+F0204,U+F0205,U+F0206,U+F0207,U+F0208,U+F0209,U+F020A,U+F020B,U+F020C,U+F020D,U+F020E,U+F020F,U+F0210,U+F0211,U+F0212,U+F0213,U+F0214,U+F0215,U+F0216,U+F0217,U+F0218,U+F0219,U+F021A,U+F021B,U+F021C,U+F021D,U+F021E,U+F021F,U+F0220,U+F0221,U+F0222,U+F0223,U+F0224,U+F0225,U+F0226,U+F0227,U+F0228,U+F0229,U+F022A,U+F022B,U+F022C,U+F022D,U+F022E,U+F022F,U+F0230,U+F0231,U+F0232,U+F0233,U+F0234,U+F0235,U+F0236,U+F0237,U+F0238,U+F0239,U+F023A,U+F023B,U+F023C,U+F023D,U+F023E,U+F023F,U+F0240,U+F0241,U+F0242,U+F0243,U+F0244,U+F0245,U+F0246,U+F0247; 3 | tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F0300,U+F0301,U+F0302,U+F0303,U+F0304,U+F0305; 4 | tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F0500,U+F0501,U+F0502; 5 | tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F0503,U+F0504,U+F0505,U+F0506,U+F0507,U+F0508; 6 | tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F0600,U+F0601,U+F0602,U+F0603; 7 | tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F0700,U+F0701,U+F0702,U+F0703,U+F0704,U+F0705; 8 | tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F0800,U+F0801,U+F0802,U+F0803; 9 | tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F0900,U+F0901,U+F0902,U+F0903,U+F0904,U+F0905,U+F0906; 10 | tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F0A00,U+F0A01,U+F0A02,U+F0A03,U+F0A04,U+F0A05,U+F0A06,U+F0A07,U+F0A08,U+F0A09,U+F0A0A,U+F0A0B,U+F0A0C,U+F0A0D,U+F0A0E,U+F0A0F,U+F0A10,U+F0A11,U+F0A12,U+F0A13,U+F0A14,U+F0A15,U+F0A16,U+F0A17,U+F0A18,U+F0A19,U+F0A1A,U+F0A1B; 11 | tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F0B00,U+F0B01,U+F0B02,U+F0B03,U+F0B04,U+F0B05,U+F0B06,U+F0B07; 12 | tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F0C00,U+F0C01,U+F0C02,U+F0C03,U+F0C04,U+F0C05,U+F0C06,U+F0C07,U+F0C08,U+F0C09,U+F0C0A; 13 | tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F0D00; 14 | tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F0E00,U+F0E01; 15 | tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F0F00,U+F0F01,U+F0F02,U+F0F03,U+F0F04,U+F0F05,U+F0F06; 16 | tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F1000; 17 | tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F1100,U+F1101; 18 | tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F1200; 19 | tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F1300,U+F1301,U+F1302,U+F1303,U+F1304,U+F1305,U+F1306,U+F1307,U+F1308,U+F1309,U+F130A,U+F130B,U+F130C,U+F130D,U+F130E,U+F130F,U+F1310,U+F1311,U+F1312,U+F1313,U+F1314,U+F1315,U+F1316,U+F1317; 20 | tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf;--show-extents;U+F1400,U+F1401,U+F1402,U+F1403,U+F1404,U+F1405,U+F1406,U+F1407,U+F1408,U+F1409,U+F140A,U+F140B,U+F140C,U+F140D,U+F140E,U+F140F; 21 | tests/fonts/rb_custom/BungeeTint-Regular.ttf;--show-extents;U+0041,U+0042,U+0043,U+002C; -------------------------------------------------------------------------------- /tests/custom/fuzzer.tests: -------------------------------------------------------------------------------- 1 | tests/fonts/rb_custom/PT_Sans-Caption-Web-Regular.ttf;;U+1EA4,U+006E; 2 | tests/fonts/rb_custom/AdobeBlank-Regular.ttf;--no-glyph-names;U+0F42,U+0FB7; 3 | tests/fonts/rb_custom/Rasa.subset1.otf;;U+0A93,U+0ABC; 4 | tests/fonts/rb_custom/AdobeBlank-Regular.ttf;;U+104A,U+102F; 5 | tests/fonts/rb_custom/NotoSansMyanmarUI-Regular.subset1.otf;;U+1004,U+103A,U+1039,U+1002,U+101C; 6 | tests/fonts/rb_custom/NotoSansSinhala.subset1.otf;;U+0DC1,U+200D,U+0DCA,U+200D,U+0DBB,U+0DD3; 7 | tests/fonts/rb_custom/LaBelleAurore.ttf;;U+006B,U+0065,U+031D; 8 | tests/fonts/rb_custom/Linefont.ttf;--no-glyph-names;U+0054,U+021F; 9 | tests/fonts/rb_custom/Linefont.ttf;--no-glyph-names;U+021F,U+0061; -------------------------------------------------------------------------------- /tests/custom/glyph-flags.tests: -------------------------------------------------------------------------------- 1 | tests/fonts/aots/gpos_chaining1_boundary_f1.otf;--show-flags --features="test";U+0000,U+0014,U+0015,U+0016,U+0017,U+0000; 2 | tests/fonts/text-rendering-tests/TestMORXTwenty.ttf;--remove-default-ignorables --show-flags;U+0045,U+0045; 3 | tests/fonts/text-rendering-tests/TestMORXThirtyfive.ttf;--show-flags --ned --remove-default-ignorables;U+0058,U+0041; -------------------------------------------------------------------------------- /tests/fonts/aots/classdef1_font2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/classdef1_font2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/classdef1_font3.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/classdef1_font3.otf -------------------------------------------------------------------------------- /tests/fonts/aots/classdef1_font4.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/classdef1_font4.otf -------------------------------------------------------------------------------- /tests/fonts/aots/classdef2_font1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/classdef2_font1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/classdef2_font2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/classdef2_font2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/classdef2_font3.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/classdef2_font3.otf -------------------------------------------------------------------------------- /tests/fonts/aots/classdef2_font4.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/classdef2_font4.otf -------------------------------------------------------------------------------- /tests/fonts/aots/cmap0_font1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/cmap0_font1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/cmap10_font1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/cmap10_font1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/cmap10_font2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/cmap10_font2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/cmap12_font1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/cmap12_font1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/cmap4_font1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/cmap4_font1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/cmap4_font2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/cmap4_font2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/cmap4_font3.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/cmap4_font3.otf -------------------------------------------------------------------------------- /tests/fonts/aots/cmap4_font4.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/cmap4_font4.otf -------------------------------------------------------------------------------- /tests/fonts/aots/cmap6_font1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/cmap6_font1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/cmap6_font2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/cmap6_font2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos1_1_lookupflag_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos1_1_lookupflag_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos1_1_simple_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos1_1_simple_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos1_1_simple_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos1_1_simple_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos1_1_simple_f3.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos1_1_simple_f3.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos1_2_font1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos1_2_font1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos1_2_font2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos1_2_font2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos2_1_font6.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos2_1_font6.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos2_1_font7.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos2_1_font7.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos2_1_lookupflag_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos2_1_lookupflag_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos2_1_lookupflag_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos2_1_lookupflag_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos2_1_next_glyph_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos2_1_next_glyph_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos2_1_next_glyph_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos2_1_next_glyph_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos2_1_simple_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos2_1_simple_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos2_2_font1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos2_2_font1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos2_2_font2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos2_2_font2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos2_2_font3.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos2_2_font3.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos2_2_font4.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos2_2_font4.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos2_2_font5.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos2_2_font5.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos3_font1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos3_font1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos3_font3.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos3_font3.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos4_lookupflag_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos4_lookupflag_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos4_lookupflag_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos4_lookupflag_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos4_simple_1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos4_simple_1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos5_font1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos5_font1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos6_font1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos6_font1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos7_1_font1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos7_1_font1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos9_font1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos9_font1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos9_font2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos9_font2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_chaining1_boundary_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_chaining1_boundary_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_chaining1_boundary_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_chaining1_boundary_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_chaining1_boundary_f3.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_chaining1_boundary_f3.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_chaining1_boundary_f4.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_chaining1_boundary_f4.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_chaining1_lookupflag_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_chaining1_lookupflag_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_chaining1_multiple_subrules_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_chaining1_multiple_subrules_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_chaining1_multiple_subrules_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_chaining1_multiple_subrules_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_chaining1_next_glyph_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_chaining1_next_glyph_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_chaining1_simple_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_chaining1_simple_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_chaining1_simple_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_chaining1_simple_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_chaining1_successive_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_chaining1_successive_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_chaining2_boundary_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_chaining2_boundary_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_chaining2_boundary_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_chaining2_boundary_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_chaining2_boundary_f3.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_chaining2_boundary_f3.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_chaining2_boundary_f4.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_chaining2_boundary_f4.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_chaining2_lookupflag_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_chaining2_lookupflag_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_chaining2_multiple_subrules_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_chaining2_multiple_subrules_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_chaining2_multiple_subrules_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_chaining2_multiple_subrules_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_chaining2_next_glyph_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_chaining2_next_glyph_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_chaining2_simple_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_chaining2_simple_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_chaining2_simple_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_chaining2_simple_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_chaining2_successive_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_chaining2_successive_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_chaining3_boundary_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_chaining3_boundary_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_chaining3_boundary_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_chaining3_boundary_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_chaining3_boundary_f3.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_chaining3_boundary_f3.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_chaining3_boundary_f4.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_chaining3_boundary_f4.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_chaining3_lookupflag_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_chaining3_lookupflag_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_chaining3_next_glyph_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_chaining3_next_glyph_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_chaining3_simple_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_chaining3_simple_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_chaining3_simple_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_chaining3_simple_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_chaining3_successive_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_chaining3_successive_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_context1_boundary_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_context1_boundary_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_context1_boundary_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_context1_boundary_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_context1_expansion_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_context1_expansion_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_context1_lookupflag_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_context1_lookupflag_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_context1_lookupflag_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_context1_lookupflag_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_context1_multiple_subrules_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_context1_multiple_subrules_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_context1_multiple_subrules_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_context1_multiple_subrules_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_context1_next_glyph_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_context1_next_glyph_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_context1_simple_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_context1_simple_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_context1_simple_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_context1_simple_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_context1_successive_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_context1_successive_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_context2_boundary_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_context2_boundary_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_context2_boundary_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_context2_boundary_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_context2_classes_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_context2_classes_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_context2_classes_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_context2_classes_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_context2_expansion_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_context2_expansion_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_context2_lookupflag_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_context2_lookupflag_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_context2_lookupflag_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_context2_lookupflag_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_context2_multiple_subrules_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_context2_multiple_subrules_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_context2_multiple_subrules_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_context2_multiple_subrules_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_context2_next_glyph_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_context2_next_glyph_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_context2_simple_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_context2_simple_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_context2_simple_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_context2_simple_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_context2_successive_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_context2_successive_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_context3_boundary_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_context3_boundary_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_context3_boundary_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_context3_boundary_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_context3_lookupflag_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_context3_lookupflag_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_context3_lookupflag_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_context3_lookupflag_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_context3_next_glyph_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_context3_next_glyph_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_context3_simple_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_context3_simple_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gpos_context3_successive_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gpos_context3_successive_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub1_1_lookupflag_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub1_1_lookupflag_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub1_1_modulo_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub1_1_modulo_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub1_1_simple_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub1_1_simple_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub1_2_lookupflag_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub1_2_lookupflag_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub1_2_simple_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub1_2_simple_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub2_1_lookupflag_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub2_1_lookupflag_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub2_1_multiple_sequences_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub2_1_multiple_sequences_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub2_1_simple_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub2_1_simple_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub3_1_lookupflag_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub3_1_lookupflag_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub3_1_multiple_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub3_1_multiple_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub3_1_simple_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub3_1_simple_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub4_1_lookupflag_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub4_1_lookupflag_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub4_1_multiple_ligatures_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub4_1_multiple_ligatures_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub4_1_multiple_ligatures_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub4_1_multiple_ligatures_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub4_1_multiple_ligsets_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub4_1_multiple_ligsets_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub4_1_simple_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub4_1_simple_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub7_font1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub7_font1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub7_font2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub7_font2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_chaining1_boundary_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_chaining1_boundary_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_chaining1_boundary_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_chaining1_boundary_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_chaining1_boundary_f3.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_chaining1_boundary_f3.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_chaining1_boundary_f4.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_chaining1_boundary_f4.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_chaining1_lookupflag_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_chaining1_lookupflag_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_chaining1_multiple_subrules_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_chaining1_multiple_subrules_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_chaining1_multiple_subrules_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_chaining1_multiple_subrules_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_chaining1_next_glyph_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_chaining1_next_glyph_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_chaining1_simple_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_chaining1_simple_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_chaining1_simple_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_chaining1_simple_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_chaining1_successive_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_chaining1_successive_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_chaining2_boundary_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_chaining2_boundary_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_chaining2_boundary_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_chaining2_boundary_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_chaining2_boundary_f3.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_chaining2_boundary_f3.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_chaining2_boundary_f4.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_chaining2_boundary_f4.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_chaining2_lookupflag_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_chaining2_lookupflag_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_chaining2_multiple_subrules_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_chaining2_multiple_subrules_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_chaining2_multiple_subrules_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_chaining2_multiple_subrules_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_chaining2_next_glyph_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_chaining2_next_glyph_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_chaining2_simple_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_chaining2_simple_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_chaining2_simple_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_chaining2_simple_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_chaining2_successive_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_chaining2_successive_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_chaining3_boundary_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_chaining3_boundary_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_chaining3_boundary_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_chaining3_boundary_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_chaining3_boundary_f3.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_chaining3_boundary_f3.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_chaining3_boundary_f4.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_chaining3_boundary_f4.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_chaining3_lookupflag_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_chaining3_lookupflag_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_chaining3_next_glyph_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_chaining3_next_glyph_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_chaining3_simple_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_chaining3_simple_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_chaining3_simple_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_chaining3_simple_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_chaining3_successive_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_chaining3_successive_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_context1_boundary_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_context1_boundary_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_context1_boundary_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_context1_boundary_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_context1_expansion_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_context1_expansion_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_context1_lookupflag_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_context1_lookupflag_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_context1_lookupflag_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_context1_lookupflag_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_context1_multiple_subrules_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_context1_multiple_subrules_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_context1_multiple_subrules_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_context1_multiple_subrules_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_context1_next_glyph_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_context1_next_glyph_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_context1_simple_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_context1_simple_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_context1_simple_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_context1_simple_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_context1_successive_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_context1_successive_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_context2_boundary_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_context2_boundary_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_context2_boundary_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_context2_boundary_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_context2_classes_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_context2_classes_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_context2_classes_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_context2_classes_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_context2_expansion_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_context2_expansion_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_context2_lookupflag_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_context2_lookupflag_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_context2_lookupflag_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_context2_lookupflag_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_context2_multiple_subrules_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_context2_multiple_subrules_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_context2_multiple_subrules_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_context2_multiple_subrules_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_context2_next_glyph_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_context2_next_glyph_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_context2_simple_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_context2_simple_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_context2_simple_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_context2_simple_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_context2_successive_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_context2_successive_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_context3_boundary_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_context3_boundary_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_context3_boundary_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_context3_boundary_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_context3_lookupflag_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_context3_lookupflag_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_context3_lookupflag_f2.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_context3_lookupflag_f2.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_context3_next_glyph_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_context3_next_glyph_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_context3_simple_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_context3_simple_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/gsub_context3_successive_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/gsub_context3_successive_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/lookupflag_ignore_attach_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/lookupflag_ignore_attach_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/lookupflag_ignore_base_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/lookupflag_ignore_base_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/lookupflag_ignore_combination_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/lookupflag_ignore_combination_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/lookupflag_ignore_ligatures_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/lookupflag_ignore_ligatures_f1.otf -------------------------------------------------------------------------------- /tests/fonts/aots/lookupflag_ignore_marks_f1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/aots/lookupflag_ignore_marks_f1.otf -------------------------------------------------------------------------------- /tests/fonts/in-house/03e3f463c3a985bc42096620cc415342818454fb.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/03e3f463c3a985bc42096620cc415342818454fb.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/051d92f8bc6ff724511b296c27623f824de256e9.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/051d92f8bc6ff724511b296c27623f824de256e9.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/065b01e54f35f0d849fd43bd5b936212739a50cb.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/065b01e54f35f0d849fd43bd5b936212739a50cb.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/074a5ae6b19de8f29772fdd5df2d3d833f81f5e6.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/074a5ae6b19de8f29772fdd5df2d3d833f81f5e6.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/07f054357ff8638bac3711b422a1e31180bba863.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/07f054357ff8638bac3711b422a1e31180bba863.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/086d83239e8f958391ff6cdd8fda9376a4bd3673.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/086d83239e8f958391ff6cdd8fda9376a4bd3673.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/08b4b136f418add748dc641eb4a83033476f1170.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/08b4b136f418add748dc641eb4a83033476f1170.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/15dfc433a135a658b9f4b1a861b5cdd9658ccbb9.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/15dfc433a135a658b9f4b1a861b5cdd9658ccbb9.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/1735326da89f0818cd8c51a0600e9789812c0f94.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/1735326da89f0818cd8c51a0600e9789812c0f94.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/190a621e48d4af1fffd8144bd41d2027e9a32fbf.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/190a621e48d4af1fffd8144bd41d2027e9a32fbf.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/191826b9643e3f124d865d617ae609db6a2ce203.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/191826b9643e3f124d865d617ae609db6a2ce203.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/1a3d8f381387dd29be1e897e4b5100ac8b4829e1.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/1a3d8f381387dd29be1e897e4b5100ac8b4829e1.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/1a5face3fcbd929d228235c2f72bbd6f8eb37424.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/1a5face3fcbd929d228235c2f72bbd6f8eb37424.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/1b66a1f4b076b734caa6397b3e57231af1feaafb.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/1b66a1f4b076b734caa6397b3e57231af1feaafb.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/1c04a16f32a39c26c851b7fc014d2e8d298ba2b8.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/1c04a16f32a39c26c851b7fc014d2e8d298ba2b8.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/1c2c3fc37b2d4c3cb2ef726c6cdaaabd4b7f3eb9.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/1c2fb74c1b2aa173262734c1f616148f1648cfd6.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/1ed7e9064f008f62de6ff0207bb4dd29409597a5.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/1ed7e9064f008f62de6ff0207bb4dd29409597a5.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/21b7fb9c1eeae260473809fbc1fe330f66a507cd.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/21b7fb9c1eeae260473809fbc1fe330f66a507cd.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/226bc2deab3846f1a682085f70c67d0421014144.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/226bc2deab3846f1a682085f70c67d0421014144.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/23406a60ab081c4fb15e1596ea1cd4f27ae8443e.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/23406a60ab081c4fb15e1596ea1cd4f27ae8443e.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/24b8d24d00ae86f49791b746da4c9d3f717a51a8.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/24b8d24d00ae86f49791b746da4c9d3f717a51a8.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/2681c1c72d6484ed3410417f521b1b819b4e2392.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/2681c1c72d6484ed3410417f521b1b819b4e2392.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/270b89df543a7e48e206a2d830c0e10e5265c630.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/270b89df543a7e48e206a2d830c0e10e5265c630.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/28f497629c04ceb15546c9a70e0730125ed6698d.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/28f497629c04ceb15546c9a70e0730125ed6698d.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/298c9e1d955f10f6f72c6915c3c6ff9bf9695cec.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/298c9e1d955f10f6f72c6915c3c6ff9bf9695cec.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/2a670df15b73a5dc75a5cc491bde5ac93c5077dc.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/2a670df15b73a5dc75a5cc491bde5ac93c5077dc.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/2c25beb56d9c556622d56b0b5d02b4670c034f89.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/2c25beb56d9c556622d56b0b5d02b4670c034f89.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/2de1ab4907ab688c0cfc236b0bf51151db38bf2e.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/2de1ab4907ab688c0cfc236b0bf51151db38bf2e.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/3105b51976b879032c66aa93a634b3b3672cd344.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/3105b51976b879032c66aa93a634b3b3672cd344.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/341421e629668b1a1242245d39238ca48432d35d.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/341421e629668b1a1242245d39238ca48432d35d.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/3493e92eaded2661cadde752a39f9d58b11f0326.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/3493e92eaded2661cadde752a39f9d58b11f0326.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/34da9aab7bee86c4dfc3b85e423435822fdf4b62.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/34da9aab7bee86c4dfc3b85e423435822fdf4b62.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/37033cc5cf37bb223d7355153016b6ccece93b28.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/37033cc5cf37bb223d7355153016b6ccece93b28.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/373e67bf41ca264e260a9716162b71a23549e885.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/373e67bf41ca264e260a9716162b71a23549e885.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/3998336402905b8be8301ef7f47cf7e050cbb1bd.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/3b791518a9ba89675df02f1eefbc9026a50648a6.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/3b791518a9ba89675df02f1eefbc9026a50648a6.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/3c96e7a303c58475a8c750bf4289bbe73784f37d.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/3c96e7a303c58475a8c750bf4289bbe73784f37d.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/3cae6bfe5b57c07ba81ddbd54c02fe4f3a1e3bf6.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/3cae6bfe5b57c07ba81ddbd54c02fe4f3a1e3bf6.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/3cc01fede4debd4b7794ccb1b16cdb9987ea7571.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/3cc01fede4debd4b7794ccb1b16cdb9987ea7571.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/3cf6f8ac6d647473a43a3100e7494b202b2cfafe.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/3cf6f8ac6d647473a43a3100e7494b202b2cfafe.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/3d0b77a2360aa6faa1385aaa510509ab70dfbeff.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/3d0b77a2360aa6faa1385aaa510509ab70dfbeff.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/3e46c3b84c1370a06594736c7f8acebf810bbb3b.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/3e46c3b84c1370a06594736c7f8acebf810bbb3b.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/3f24aff8b768e586162e9b9d03b15c36508dd2ae.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/3f24aff8b768e586162e9b9d03b15c36508dd2ae.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/41071178fbce4956d151f50967af458dbf555f7b.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/41071178fbce4956d151f50967af458dbf555f7b.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/43ef465752be9af900745f72fe29cb853a1401a5.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/43ef465752be9af900745f72fe29cb853a1401a5.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/45855bc8d46332b39c4ab9e2ee1a26b1f896da6b.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/45855bc8d46332b39c4ab9e2ee1a26b1f896da6b.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/46669c8860cbfea13562a6ca0d83130ee571137b.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/46669c8860cbfea13562a6ca0d83130ee571137b.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/49c9f7485c1392fa09a1b801bc2ffea79275f22e.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/49c9f7485c1392fa09a1b801bc2ffea79275f22e.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/4afb0e8b9a86bb9bd73a1247de4e33fbe3c1fd93.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/4afb0e8b9a86bb9bd73a1247de4e33fbe3c1fd93.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/4cbbc461be066fccc611dcc634af6e8cb2705537.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/4cbbc461be066fccc611dcc634af6e8cb2705537.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/4cce528e99f600ed9c25a2b69e32eb94a03b4ae8.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/4cce528e99f600ed9c25a2b69e32eb94a03b4ae8.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/4d4206e30b2dbf1c1ef492a8eae1c9e7829ebad8.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/4d4206e30b2dbf1c1ef492a8eae1c9e7829ebad8.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/4fac3929fc3332834e93673780ec0fe94342d193.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/4fac3929fc3332834e93673780ec0fe94342d193.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/5028afb650b1bb718ed2131e872fbcce57828fff.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/5028afb650b1bb718ed2131e872fbcce57828fff.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/507637795ce4f2975593da54d12b46f76c7cc4cc.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/507637795ce4f2975593da54d12b46f76c7cc4cc.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/53374c7ca3657be37efde7ed02ae34229a56ae1f.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/53374c7ca3657be37efde7ed02ae34229a56ae1f.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/53a91c20e33a596f2be17fb68b382d6b7eb85d5c.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/53a91c20e33a596f2be17fb68b382d6b7eb85d5c.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/54674a3111d209fb6be0ed31745314b7a8d2c244.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/54674a3111d209fb6be0ed31745314b7a8d2c244.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/55c88ebbe938680b08f92c3de20713183e0c7481.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/55c88ebbe938680b08f92c3de20713183e0c7481.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/55e2910dbc9ef5dd89f4e146e7e0152169545b6a.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/55e2910dbc9ef5dd89f4e146e7e0152169545b6a.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/56cfd0e18d07f41c38e9598545a6d369127fc6f9.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/56cfd0e18d07f41c38e9598545a6d369127fc6f9.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/573d3a3177c9a8646e94c8a0d7b224334340946a.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/573d3a3177c9a8646e94c8a0d7b224334340946a.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/57a9d9f83020155cbb1d2be1f43d82388cbecc88.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/57a9d9f83020155cbb1d2be1f43d82388cbecc88.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/59a585a63b3df608fbeef00956c8c108deec7de6.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/59a585a63b3df608fbeef00956c8c108deec7de6.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/5af5361ed4d1e8305780b100e1730cb09132f8d1.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/5af5361ed4d1e8305780b100e1730cb09132f8d1.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/5bb74492f5e0ffa1fbb72e4c881be035120b6513.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/5bb74492f5e0ffa1fbb72e4c881be035120b6513.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/5bbf3712e6f79775c66a4407837a90e591efbef2.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/5bbf3712e6f79775c66a4407837a90e591efbef2.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/5dfad7735c6a67085f1b90d4d497e32907db4c78.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/5dfad7735c6a67085f1b90d4d497e32907db4c78.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/5f73fff1ffc07b5a99a90c0909609f2b09fef274.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/5f73fff1ffc07b5a99a90c0909609f2b09fef274.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/604026ae5aaca83c49cd8416909d71ba3e1c1194.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/604026ae5aaca83c49cd8416909d71ba3e1c1194.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/63a539a90a371ccf028dc2dcced9b63b07163be7.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/63a539a90a371ccf028dc2dcced9b63b07163be7.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/63e224dcb3d559d590f80c83b832cfca789e5dcc.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/63e224dcb3d559d590f80c83b832cfca789e5dcc.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/65984dfce552a785f564422aadf4715fa07795ad.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/65984dfce552a785f564422aadf4715fa07795ad.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/65d1b9099cfb3191931d8d6112d7a03d979d579f.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/65d1b9099cfb3191931d8d6112d7a03d979d579f.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/663aef6b019dbf45ffd74089e2b5f2496ceceb18.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/663aef6b019dbf45ffd74089e2b5f2496ceceb18.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/6677074106f94a2644da6aaaacd5bbd48cbdc7de.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/6677074106f94a2644da6aaaacd5bbd48cbdc7de.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/6991b13ce889466be6de3f66e891de2bc0f117ee.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/6991b13ce889466be6de3f66e891de2bc0f117ee.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/6f36d056bad6d478fc0bf7397bd52dc3bd197d5f.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/6f36d056bad6d478fc0bf7397bd52dc3bd197d5f.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/6ff0fbead4462d9f229167b4e6839eceb8465058.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/6ff0fbead4462d9f229167b4e6839eceb8465058.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/738d9f3b8c2dfd03875bf35a61d28fd78faf17c8.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/738d9f3b8c2dfd03875bf35a61d28fd78faf17c8.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/73e84dac2fc6a2d1bc9250d1414353661088937d.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/73e84dac2fc6a2d1bc9250d1414353661088937d.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/755160ddba002332349fda3eb999e629d63dccf6.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/755160ddba002332349fda3eb999e629d63dccf6.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/757ebd573617a24aa9dfbf0b885c54875c6fe06b.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/757ebd573617a24aa9dfbf0b885c54875c6fe06b.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/7a37dc4d5bf018456aea291cee06daf004c0221c.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/7a37dc4d5bf018456aea291cee06daf004c0221c.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/7bbd3175734d5d291e1c15271ec0cbb97b626ebf.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/7bbd3175734d5d291e1c15271ec0cbb97b626ebf.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/7c24183f26d60df414578a0a9f5e79ab9d32a22b.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/7c24183f26d60df414578a0a9f5e79ab9d32a22b.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/7d18685e1529e4ceaad5b6095dfab2f9789e5bce.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/7d18685e1529e4ceaad5b6095dfab2f9789e5bce.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/7e14e7883ed152baa158b80e207b66114c823a8b.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/7e14e7883ed152baa158b80e207b66114c823a8b.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/8099955657a54e9ee38a6ba1d6f950ce58e3cc25.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/8099955657a54e9ee38a6ba1d6f950ce58e3cc25.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/8116e5d8fedfbec74e45dc350d2416d810bed8c4.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/8116e5d8fedfbec74e45dc350d2416d810bed8c4.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/813c2f8e5512187fd982417a7fb4286728e6f4a8.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/813c2f8e5512187fd982417a7fb4286728e6f4a8.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/81c368a33816fb20e9f647e8f24e2180f4720263.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/81c368a33816fb20e9f647e8f24e2180f4720263.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/8228d035fcd65d62ec9728fb34f42c63be93a5d3.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/8228d035fcd65d62ec9728fb34f42c63be93a5d3.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/82f4f3b57bb55344e72e70231380202a52af5805.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/82f4f3b57bb55344e72e70231380202a52af5805.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/8339c821814d9bad7c77169332327ad8b0f33c81.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/8339c821814d9bad7c77169332327ad8b0f33c81.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/8454d22037f892e76614e1645d066689a0200e61.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/8454d22037f892e76614e1645d066689a0200e61.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/85414f2552b654585b7a8d13dcc3e8fd9f7970a3.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/85414f2552b654585b7a8d13dcc3e8fd9f7970a3.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/856ff9562451293cbeff6f396d4e3877c4f0a436.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/856ff9562451293cbeff6f396d4e3877c4f0a436.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/85fe0be440c64ac77699e21c2f1bd933a919167e.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/85fe0be440c64ac77699e21c2f1bd933a919167e.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/86cdd983c4e4c4d7f27dd405d6ceb7d4b9ed3d35.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/86cdd983c4e4c4d7f27dd405d6ceb7d4b9ed3d35.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/872d2955d326bd6676a06f66b8238ebbaabc212f.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/872d2955d326bd6676a06f66b8238ebbaabc212f.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/87f85d17d26f1fe9ad28d7365101958edaefb967.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/87f85d17d26f1fe9ad28d7365101958edaefb967.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/881642af1667ae30a54e58de8be904566d00508f.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/881642af1667ae30a54e58de8be904566d00508f.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/8a9fea2a7384f2116e5b84a9b31f83be7850ce21.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/8a9fea2a7384f2116e5b84a9b31f83be7850ce21.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/8d9c4b193808b8bde94389ba7831c1fc6f9e794e.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/8d9c4b193808b8bde94389ba7831c1fc6f9e794e.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/932ad5132c2761297c74e9976fe25b08e5ffa10b.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/932ad5132c2761297c74e9976fe25b08e5ffa10b.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/94a5d6fb15a27521fba9ea4aee9cb39b2d03322a.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/94a5d6fb15a27521fba9ea4aee9cb39b2d03322a.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/96490dd2ff81233b335a650e7eb660e0e7b2eeea.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/96490dd2ff81233b335a650e7eb660e0e7b2eeea.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/98b7887cff91f722b92a8ff800120954606354f9.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/98b7887cff91f722b92a8ff800120954606354f9.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/9d8c53cb64b8747abdd2b70755cce2ee0eb42ef7.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/9d8c53cb64b8747abdd2b70755cce2ee0eb42ef7.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/9fc3e6960b3520e5304033ef5fd540285f72f14d.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/9fc3e6960b3520e5304033ef5fd540285f72f14d.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/AdobeBlank2.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/AdobeBlank2.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/DFONT.dfont: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/DFONT.dfont -------------------------------------------------------------------------------- /tests/fonts/in-house/FallbackPlus-Javanese-no-GDEF.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/FallbackPlus-Javanese-no-GDEF.otf -------------------------------------------------------------------------------- /tests/fonts/in-house/HBTest-VF.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/HBTest-VF.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/MORXTwentyeight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/MORXTwentyeight.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/NotoNastaliqUrdu-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/NotoNastaliqUrdu-Regular.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/NotoSans-VF.abc.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/NotoSans-VF.abc.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/NotoSansCJK-VF.abc.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/NotoSansCJK-VF.abc.otf -------------------------------------------------------------------------------- /tests/fonts/in-house/NotoSansCJK-VF.abc.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/NotoSansCJK-VF.abc.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/NotoSerifHK-subset.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/NotoSerifHK-subset.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/TRAK.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/TRAK.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/TTC.ttc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/TTC.ttc -------------------------------------------------------------------------------- /tests/fonts/in-house/a014549f766436cf55b2ceb40e462038938ee899.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/a014549f766436cf55b2ceb40e462038938ee899.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/a02a7f0ad42c2922cb37ad1358c9df4eb81f1bca.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/a02a7f0ad42c2922cb37ad1358c9df4eb81f1bca.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/a232bb734d4c6c898a44506547d19768f0eba6a6.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/a232bb734d4c6c898a44506547d19768f0eba6a6.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/a34a7b00f22ffb5fd7eef6933b81c7e71bc2cdfb.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/a34a7b00f22ffb5fd7eef6933b81c7e71bc2cdfb.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/a56745bac8449d0ad94918b2bb5930716ba02fe3.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/a56745bac8449d0ad94918b2bb5930716ba02fe3.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/a59fd13f1525a91cbe529c882e93d9d1fbb80463.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/a59fd13f1525a91cbe529c882e93d9d1fbb80463.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/a6b17da98b9f1565ba428719777bbf94a66403c1.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/a6b17da98b9f1565ba428719777bbf94a66403c1.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/a6c76d1bafde4a0b1026ebcc932d2e5c6fd02442.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/a6c76d1bafde4a0b1026ebcc932d2e5c6fd02442.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/a706511c65fb278fda87eaf2180ca6684a80f423.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/a706511c65fb278fda87eaf2180ca6684a80f423.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/a919b33197965846f21074b24e30250d67277bce.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/a919b33197965846f21074b24e30250d67277bce.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/a98e908e2ed21b22228ea59ebcc0f05034c86f2e.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/a98e908e2ed21b22228ea59ebcc0f05034c86f2e.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/ab14b4eb9d7a67e293f51d30d719add06c9d6e06.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/ab14b4eb9d7a67e293f51d30d719add06c9d6e06.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/ab40c89624a6104e5d0a2308e448a989302f515b.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/ab40c89624a6104e5d0a2308e448a989302f515b.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/ad01ab2ea1cb1a4d3a2783e2675112ef11ae6404.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/ad01ab2ea1cb1a4d3a2783e2675112ef11ae6404.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/af3086380b743099c54a3b11b96766039ea62fcd.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/af3086380b743099c54a3b11b96766039ea62fcd.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/af85624080af5627fb050f570d148a62f04fda74.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/af85624080af5627fb050f570d148a62f04fda74.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/b082211be29a3e2cf91f0fd43497e40b2a27b344.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/b082211be29a3e2cf91f0fd43497e40b2a27b344.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/b121d4306b2e3add5abbaad21d95fcf04aacbd64.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/b121d4306b2e3add5abbaad21d95fcf04aacbd64.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/b151cfcdaa77585d77f17a42158e0873fc8e2633.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/b151cfcdaa77585d77f17a42158e0873fc8e2633.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/b3075ca42b27dde7341c2d0ae16703c5b6640df0.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/b3075ca42b27dde7341c2d0ae16703c5b6640df0.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/b31e6c52a31edadc16f1bec9efe6019e2d59824a.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/b31e6c52a31edadc16f1bec9efe6019e2d59824a.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/b6031119874ae9ff1dd65383a335e361c0962220.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/b6031119874ae9ff1dd65383a335e361c0962220.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/b722a7d09e60421f3efbc706ad348ab47b88567b.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/b722a7d09e60421f3efbc706ad348ab47b88567b.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/b895f8ff06493cc893ec44de380690ca0074edfa.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/b895f8ff06493cc893ec44de380690ca0074edfa.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/bb0c53752e85c3d28973ebc913287b8987d3dfe8.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/bb0c53752e85c3d28973ebc913287b8987d3dfe8.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/bb9473d2403488714043bcfb946c9f78b86ad627.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/bb9473d2403488714043bcfb946c9f78b86ad627.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/bbc24004e776f348a0f72287d24b0124867ee750.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/bbc24004e776f348a0f72287d24b0124867ee750.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/be10ea33f28a139f3305db2302af6220f2f9a583.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/be10ea33f28a139f3305db2302af6220f2f9a583.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/bef923f4ccb474f961c43b63a9c74b7d9b7a023f.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/bef923f4ccb474f961c43b63a9c74b7d9b7a023f.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/bf39b0e91ef9807f15a9e283a21a14a209fd2cfc.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/bf39b0e91ef9807f15a9e283a21a14a209fd2cfc.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/bf962d3202883a820aed019d9b5c1838c2ff69c6.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/bf962d3202883a820aed019d9b5c1838c2ff69c6.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/c4e48b0886ef460f532fb49f00047ec92c432ec0.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/c4e48b0886ef460f532fb49f00047ec92c432ec0.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/c825900b8a5b6571f0eb6c8c25c6512880bc42e9.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/c825900b8a5b6571f0eb6c8c25c6512880bc42e9.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/cc5f3d2d717fb6bd4dfae1c16d48a2cb8e12233b.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/cc5f3d2d717fb6bd4dfae1c16d48a2cb8e12233b.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/cee442574141a0304e780b27dd872519f7d229db.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/cee442574141a0304e780b27dd872519f7d229db.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/d0430ea499348c420946f6abc2efc84fdf8f00e3.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/d0430ea499348c420946f6abc2efc84fdf8f00e3.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/d23d76ea0909c14972796937ba072b5a40c1e257.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/d23d76ea0909c14972796937ba072b5a40c1e257.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/d3129450fafe5e5c98cfc25a4e71809b1b4d2855.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/d3129450fafe5e5c98cfc25a4e71809b1b4d2855.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/d629e7fedc0b350222d7987345fe61613fa3929a.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/d629e7fedc0b350222d7987345fe61613fa3929a.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/d9b8bc10985f24796826c29f7ccba3d0ae11ec02.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/d9b8bc10985f24796826c29f7ccba3d0ae11ec02.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/dcf774ca21062e7439f98658b18974ea8b956d0c.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/dcf774ca21062e7439f98658b18974ea8b956d0c.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/e207635780b42f898d58654b65098763e340f5c7.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/e207635780b42f898d58654b65098763e340f5c7.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/e2b17207c4b7ad78d843e1b0c4d00b09398a1137.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/e2b17207c4b7ad78d843e1b0c4d00b09398a1137.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/e39391c77a6321c2ac7a2d644de0396470cd4bfe.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/e39391c77a6321c2ac7a2d644de0396470cd4bfe.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/e5ff44940364c2247abed50bdda30d2ef5aedfe4.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/e5ff44940364c2247abed50bdda30d2ef5aedfe4.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/e6185e88b04432fbf373594d5971686bb7dd698d.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/e6185e88b04432fbf373594d5971686bb7dd698d.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/e68a88939e0f06e34d2bc911f09b70890289c8fd.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/e68a88939e0f06e34d2bc911f09b70890289c8fd.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/e716f6bd00a108d186b7e9f47b4515565f784f36.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/e716f6bd00a108d186b7e9f47b4515565f784f36.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/e8691822f6a705e3e9fb48a0405c645b1a036590.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/e8691822f6a705e3e9fb48a0405c645b1a036590.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/ea3f63620511b2097200d23774ffef197e829e69.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/ea3f63620511b2097200d23774ffef197e829e69.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/ec404b8524cd56efa5d25524cc8541a0b6604b4f.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/ec404b8524cd56efa5d25524cc8541a0b6604b4f.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/ee39587d13b2afa5499cc79e45780aa79293bbd4.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/ee39587d13b2afa5499cc79e45780aa79293bbd4.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/ef86fe710cfea877bbe0dbb6946a1f88d0661031.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/ef86fe710cfea877bbe0dbb6946a1f88d0661031.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/f22416c692720a7d46fadf4af99f4c9e094f00b9.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/f22416c692720a7d46fadf4af99f4c9e094f00b9.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/f443753e8ffe8e8aae606cfba158e00334b6efb1.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/f443753e8ffe8e8aae606cfba158e00334b6efb1.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/f499fbc23865022234775c43503bba2e63978fe1.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/f499fbc23865022234775c43503bba2e63978fe1.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/f4ba5a767ef56a40133844507efb98fee5635e71.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/f4ba5a767ef56a40133844507efb98fee5635e71.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/f518eb6f6b5eec2946c9fbbbde44e45d46f5e2ac.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/f518eb6f6b5eec2946c9fbbbde44e45d46f5e2ac.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/f70f345188472b93f565d1d7fae8c668dd6a3244.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/f70f345188472b93f565d1d7fae8c668dd6a3244.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/f75c4b05a0a4d67c1a808081ae3d74a9c66509e8.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/f75c4b05a0a4d67c1a808081ae3d74a9c66509e8.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/f79eb71df4e4c9c273b67b89a06e5ff9e3c1f834.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/f79eb71df4e4c9c273b67b89a06e5ff9e3c1f834.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/f9b1dd4dcb515e757789a22cb4241107746fd3d0.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/f9b1dd4dcb515e757789a22cb4241107746fd3d0.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/fbb6c84c9e1fe0c39e152fbe845e51fd81f6748e.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/fbb6c84c9e1fe0c39e152fbe845e51fd81f6748e.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/fcbaa518d3cce441ed37ae3b1fed6a19e9b54efd.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/fcbaa518d3cce441ed37ae3b1fed6a19e9b54efd.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/fcdcffbdf1c4c97c05308d7600e4c283eb47dbca.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/fcdcffbdf1c4c97c05308d7600e4c283eb47dbca.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/fcea341ba6489536390384d8403ce5287ba71a4a.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/fcea341ba6489536390384d8403ce5287ba71a4a.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/fd07ea46e4d8368ada1776208c07fd596f727852.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/fd07ea46e4d8368ada1776208c07fd596f727852.ttf -------------------------------------------------------------------------------- /tests/fonts/in-house/ffa0f5d2d9025486d8469d8b1fdd983e7632499b.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/in-house/ffa0f5d2d9025486d8469d8b1fdd983e7632499b.ttf -------------------------------------------------------------------------------- /tests/fonts/rb_custom/AdobeBlank-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/rb_custom/AdobeBlank-Regular.ttf -------------------------------------------------------------------------------- /tests/fonts/rb_custom/BungeeTint-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/rb_custom/BungeeTint-Regular.ttf -------------------------------------------------------------------------------- /tests/fonts/rb_custom/LaBelleAurore.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/rb_custom/LaBelleAurore.ttf -------------------------------------------------------------------------------- /tests/fonts/rb_custom/Linefont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/rb_custom/Linefont.ttf -------------------------------------------------------------------------------- /tests/fonts/rb_custom/NotoSansCJK.subset1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/rb_custom/NotoSansCJK.subset1.otf -------------------------------------------------------------------------------- /tests/fonts/rb_custom/NotoSansMalayalam.subset1.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/rb_custom/NotoSansMalayalam.subset1.ttf -------------------------------------------------------------------------------- /tests/fonts/rb_custom/NotoSansMyanmarUI-Regular.subset1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/rb_custom/NotoSansMyanmarUI-Regular.subset1.otf -------------------------------------------------------------------------------- /tests/fonts/rb_custom/NotoSansSinhala.subset1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/rb_custom/NotoSansSinhala.subset1.otf -------------------------------------------------------------------------------- /tests/fonts/rb_custom/OpenSans.subset1.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/rb_custom/OpenSans.subset1.ttf -------------------------------------------------------------------------------- /tests/fonts/rb_custom/PT_Sans-Caption-Web-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/rb_custom/PT_Sans-Caption-Web-Regular.ttf -------------------------------------------------------------------------------- /tests/fonts/rb_custom/Rasa.subset1.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/rb_custom/Rasa.subset1.otf -------------------------------------------------------------------------------- /tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/rb_custom/test_glyphs-glyf_colr_1_no_cliplist.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/AdobeVFPrototype-Subset.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/AdobeVFPrototype-Subset.otf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/ArefRuqaa-Wasm.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/ArefRuqaa-Wasm.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/Calculator-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/Calculator-Regular.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/FDArrayTest257.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/FDArrayTest257.otf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/FDArrayTest65535.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/FDArrayTest65535.otf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/NotoSansBalinese-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/NotoSansBalinese-Regular.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/NotoSansKannada-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/NotoSansKannada-Regular.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/NotoSerifKannada-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/NotoSerifKannada-Regular.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestAVAR.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestAVAR.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestCFFThree.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestCFFThree.otf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestCMAP13.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestCMAP13.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestCMAP14.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestCMAP14.otf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestCMAPMacTurkish.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestCMAPMacTurkish.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestCVARGVAROne.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestCVARGVAROne.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestCVARGVARTwo.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestCVARGVARTwo.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestGLYFOne.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestGLYFOne.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestGPOSFour.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestGPOSFour.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestGPOSOne.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestGPOSOne.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestGPOSThree.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestGPOSThree.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestGPOSTwo.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestGPOSTwo.otf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestGSUBOne.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestGSUBOne.otf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestGSUBThree.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestGSUBThree.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestGVAREight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestGVAREight.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestGVARFour.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestGVARFour.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestGVARNine.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestGVARNine.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestGVAROne.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestGVAROne.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestGVARThree.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestGVARThree.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestGVARTwo.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestGVARTwo.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestHVAROne.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestHVAROne.otf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestHVARTwo.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestHVARTwo.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestKERNOne.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestKERNOne.otf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestMORXEight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestMORXEight.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestMORXEighteen.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestMORXEighteen.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestMORXEleven.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestMORXEleven.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestMORXForty.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestMORXForty.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestMORXFour.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestMORXFour.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestMORXFourteen.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestMORXFourteen.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestMORXFourtyone.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestMORXFourtyone.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestMORXNine.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestMORXNine.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestMORXOne.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestMORXOne.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestMORXSeventeen.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestMORXSeventeen.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestMORXSixteen.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestMORXSixteen.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestMORXTen.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestMORXTen.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestMORXThirteen.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestMORXThirteen.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestMORXThirtyeight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestMORXThirtyeight.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestMORXThirtyfive.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestMORXThirtyfive.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestMORXThirtyfour.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestMORXThirtyfour.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestMORXThirtynine.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestMORXThirtynine.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestMORXThirtyone.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestMORXThirtyone.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestMORXThirtyseven.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestMORXThirtyseven.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestMORXThirtysix.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestMORXThirtysix.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestMORXThirtythree.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestMORXThirtythree.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestMORXThirtytwo.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestMORXThirtytwo.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestMORXThree.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestMORXThree.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestMORXTwelve.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestMORXTwelve.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestMORXTwenty.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestMORXTwenty.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestMORXTwentyeight.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestMORXTwentyeight.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestMORXTwentyfive.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestMORXTwentyfive.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestMORXTwentyfour.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestMORXTwentyfour.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestMORXTwentynine.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestMORXTwentynine.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestMORXTwentyone.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestMORXTwentyone.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestMORXTwentyseven.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestMORXTwentyseven.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestMORXTwentysix.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestMORXTwentysix.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestMORXTwentythree.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestMORXTwentythree.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestMORXTwentytwo.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestMORXTwentytwo.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestMORXTwo.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestMORXTwo.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestSFNTOne.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestSFNTOne.otf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestSFNTTwo.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestSFNTTwo.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestShapeAran.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestShapeAran.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestShapeEthi.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestShapeEthi.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/TestShapeLana.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/TestShapeLana.ttf -------------------------------------------------------------------------------- /tests/fonts/text-rendering-tests/Zycon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/harfbuzz/harfrust/ab3aaf88c4f4e77e846be1da817bdf1970875d25/tests/fonts/text-rendering-tests/Zycon.ttf --------------------------------------------------------------------------------