Name Description Size
addTable.py 379
ArabicPUASimplified.txt 10765
ArabicPUATraditional.txt 13768
check-c-linkage-decls.py 1196
check-externs.py 580
check-header-guards.py 1066
check-includes.py 1587
check-libstdc++.py 1105
check-static-inits.py 1667
check-symbols.py 2621
failing-alloc.c Based on https://software.intel.com/content/www/us/en/develop/articles/fast-random-number-generator-on-the-intel-pentiumr-4-processor.html 1908
fix_get_types.py 388
gen-arabic-joining-list.py usage: ./gen-arabic-joining-table.py ArabicShaping.txt Scripts.txt Input files: * https://unicode.org/Public/UCD/latest/ucd/ArabicShaping.txt * https://unicode.org/Public/UCD/latest/ucd/Scripts.txt 2402
gen-arabic-pua.py usage: ./gen-arabic-pua.py 896
gen-arabic-table.py usage: ./gen-arabic-table.py ArabicShaping.txt UnicodeData.txt Blocks.txt Input files: * https://unicode.org/Public/UCD/latest/ucd/ArabicShaping.txt * https://unicode.org/Public/UCD/latest/ucd/UnicodeData.txt * https://unicode.org/Public/UCD/latest/ucd/Blocks.txt 10092
gen-def.py hb_shape_justify hb_subset_repack_or_fail hb_subset_input_override_name_table 965
gen-emoji-table.py usage: ./gen-emoji-table.py emoji-data.txt emoji-test.txt Input file: * https://www.unicode.org/Public/UCD/latest/ucd/emoji/emoji-data.txt * https://www.unicode.org/Public/emoji/latest/emoji-test.txt 2470
gen-harfbuzzcc.py 772
gen-hb-version.py 1171
gen-indic-table.py usage: ./gen-indic-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt Blocks.txt Input files: * https://unicode.org/Public/UCD/latest/ucd/IndicSyllabicCategory.txt * https://unicode.org/Public/UCD/latest/ucd/IndicPositionalCategory.txt * https://unicode.org/Public/UCD/latest/ucd/Blocks.txt 17395
gen-os2-unicode-ranges.py Generates the code for a sorted unicode range array as used in hb-ot-os2-unicode-ranges.hh Input is a tab separated list of unicode ranges from the otspec (https://docs.microsoft.com/en-us/typography/opentype/spec/os2#ur). 1239
gen-ragel-artifacts.py 667
gen-tag-table.py Generator of the mapping from OpenType tags to BCP 47 tags and vice versa. It creates a ``const LangTag[]``, matching the tags from the OpenType languages system tag list to the language subtags of the BCP 47 language subtag registry, with some manual adjustments. The mappings are supplemented with macrolanguages' sublanguages and retired codes' replacements, according to BCP 47 and some manual additions where BCP 47 omits a retired code entirely. Also generated is a function, ``hb_ot_ambiguous_tag_to_language``, intended for use by ``hb_ot_tag_to_language``. It maps OpenType tags back to BCP 47 tags. Ambiguous OpenType tags (those that correspond to multiple BCP 47 tags) are listed here, except when the alphabetically first BCP 47 tag happens to be the chosen disambiguated tag. In that case, the fallback behavior will choose the right tag anyway. usage: ./gen-tag-table.py languagetags language-subtag-registry Input files: * https://docs.microsoft.com/en-us/typography/opentype/spec/languagetags * https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry 37569
gen-ucd-table.py usage: ./gen-ucd-table ucd.nounihan.grouped.xml [/path/to/hb-common.h] Input file: * https://unicode.org/Public/UCD/latest/ucdxml/ucd.nounihan.grouped.zip 5984
gen-use-table.py usage: ./gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt ArabicShaping.txt DerivedCoreProperties.txt UnicodeData.txt Blocks.txt Scripts.txt IndicSyllabicCategory-Additional.txt IndicPositionalCategory-Additional.txt Input files: * https://unicode.org/Public/UCD/latest/ucd/IndicSyllabicCategory.txt * https://unicode.org/Public/UCD/latest/ucd/IndicPositionalCategory.txt * https://unicode.org/Public/UCD/latest/ucd/ArabicShaping.txt * https://unicode.org/Public/UCD/latest/ucd/DerivedCoreProperties.txt * https://unicode.org/Public/UCD/latest/ucd/UnicodeData.txt * https://unicode.org/Public/UCD/latest/ucd/Blocks.txt * https://unicode.org/Public/UCD/latest/ucd/Scripts.txt * ms-use/IndicSyllabicCategory-Additional.txt * ms-use/IndicPositionalCategory-Additional.txt 14658
gen-vowel-constraints.py Generator of the function to prohibit certain vowel sequences. It creates ``_hb_preprocess_text_vowel_constraints``, which inserts dotted circles into sequences prohibited by the USE script development spec. This function should be used as the ``preprocess_text`` of an ``hb_ot_shaper_t``. usage: ./gen-vowel-constraints.py ms-use/IndicShapingInvalidCluster.txt Scripts.txt Input file: * https://unicode.org/Public/UCD/latest/ucd/Scripts.txt 7634
graph
harfbuzz-cairo.pc.in 299
harfbuzz-config.cmake.in 1455
harfbuzz-gobject.pc.in 291
harfbuzz-icu.pc.in 287
harfbuzz-subset.cc 1843
harfbuzz-subset.pc.in 265
harfbuzz.cc 1781
harfbuzz.pc.in 293
hb-aat-layout-ankr-table.hh ankr -- Anchor Point https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6ankr.html 2788
hb-aat-layout-bsln-table.hh bsln -- Baseline https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6bsln.html 4636
hb-aat-layout-common.hh Unused. For debug tracing only. 32219
hb-aat-layout-feat-table.hh feat -- Feature Name https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6feat.html 7972
hb-aat-layout-just-table.hh just -- Justification https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6just.html 12997
hb-aat-layout-kerx-table.hh kerx -- Extended Kerning https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6kerx.html 35233
hb-aat-layout-morx-table.hh morx -- Extended Glyph Metamorphosis https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6morx.html https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6mort.html 45439
hb-aat-layout-opbd-table.hh opbd -- Optical Bounds https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6opbd.html 5236
hb-aat-layout-trak-table.hh trak -- Tracking https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6trak.html 7119
hb-aat-layout.cc hb_aat_apply_context_t 26138
hb-aat-layout.h 57382
hb-aat-layout.hh HB_AAT_LAYOUT_HH 2377
hb-aat-ltag-table.hh ltag -- Language Tag https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6ltag.html 2650
hb-aat-map.cc Special case: Chain::compile_flags will fall back to the deprecated version of small-caps if necessary, so we need to check for that possibility. https://github.com/harfbuzz/harfbuzz/issues/2307 5812
hb-aat-map.hh For stable sorting only. 3512
hb-aat.h HB_AAT_H 1243
hb-algs.hh Flags 44997
hb-array.hh Constructors. 15049
hb-atomic.hh Atomic integers and pointers. 9012
hb-bimap.hh Bi-directional map 5411
hb-bit-page.hh Compiler-assisted vectorization. 10371
hb-bit-set-invertible.hh Might return false if array looks unsorted. Used for faster rejection of corrupt data. 10474
hb-bit-set.hh Allocations successful 27647
hb-blob.cc HAVE_UNISTD_H 20476
hb-blob.h hb_memory_mode_t: @HB_MEMORY_MODE_DUPLICATE: HarfBuzz immediately makes a copy of the data. @HB_MEMORY_MODE_READONLY: HarfBuzz client will never modify the data, and HarfBuzz will never modify the data. @HB_MEMORY_MODE_WRITABLE: HarfBuzz client made a copy of the data solely for HarfBuzz, so HarfBuzz may modify the data. @HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE: See above Data type holding the memory modes available to client programs. Regarding these various memory-modes: - In no case shall the HarfBuzz client modify memory that is passed to HarfBuzz in a blob. If there is any such possibility, @HB_MEMORY_MODE_DUPLICATE should be used such that HarfBuzz makes a copy immediately, - Use @HB_MEMORY_MODE_READONLY otherwise, unless you really really really know what you are doing, - @HB_MEMORY_MODE_WRITABLE is appropriate if you really made a copy of data solely for the purpose of passing to HarfBuzz and doing that just once (no reuse!), - If the font is mmap()ed, it's okay to use @HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE, however, using that mode correctly is very tricky. Use @HB_MEMORY_MODE_READONLY instead. 4731
hb-blob.hh hb_blob_t 2765
hb-buffer-deserialize-json.hh 21354
hb-buffer-deserialize-json.rl 4147
hb-buffer-deserialize-text-glyphs.hh 17864
hb-buffer-deserialize-text-glyphs.rl 3798
hb-buffer-deserialize-text-unicode.hh 8362
hb-buffer-deserialize-text-unicode.rl 2935
hb-buffer-serialize.cc hb_buffer_serialize_list_formats: Returns a list of supported buffer serialization formats. Return value: (transfer none): A string array of buffer serialization formats. Should not be freed. Since: 0.9.7 26380
hb-buffer-verify.cc Check that clusters are monotone. 13530
hb-buffer.cc SECTION: hb-buffer @title: hb-buffer @short_description: Input and output buffers @include: hb.h Buffers serve a dual role in HarfBuzz; before shaping, they hold the input characters that are passed to hb_shape(), and after shaping they hold the output glyphs. The input buffer is a sequence of Unicode codepoints, with associated attributes such as direction and script. The output buffer is a sequence of glyphs, with associated attributes such as position and cluster. 60069
hb-buffer.h hb_glyph_info_t: @codepoint: either a Unicode code point (before shaping) or a glyph index (after shaping). @cluster: the index of the character in the original text that corresponds to this #hb_glyph_info_t, or whatever the client passes to hb_buffer_add(). More than one #hb_glyph_info_t can have the same @cluster value, if they resulted from the same character (e.g. one to many glyph substitution), and when more than one character gets merged in the same glyph (e.g. many to one glyph substitution) the #hb_glyph_info_t will have the smallest cluster value of them. By default some characters are merged into the same cluster (e.g. combining marks have the same cluster as their bases) even if they are separate glyphs, hb_buffer_set_cluster_level() allow selecting more fine-grained cluster handling. The #hb_glyph_info_t is the structure that holds information about the glyphs and their relation to input text. 29083
hb-buffer.hh Reserved for shapers' internal use. 20271
hb-cache.hh Implements a lockfree cache for int->int functions. The cache is a fixed-size array of 16-bit or 32-bit integers. The key is split into two parts: the cache index and the rest. The cache index is used to index into the array. The rest is used to store the key and the value. The value is stored in the least significant bits of the integer. The key is stored in the most significant bits of the integer. The key is shifted by cache_bits to the left to make room for the value. 3152
hb-cairo-utils.cc SVG currently. 23886
hb-cairo-utils.hh HB_CAIRO_UTILS_H 4364
hb-cairo.cc SECTION:hb-cairo @title: hb-cairo @short_description: Cairo integration @include: hb-cairo.h Functions for using HarfBuzz with the cairo library. HarfBuzz supports using cairo for rendering. 32889
hb-cairo.h hb_cairo_font_init_func_t: @font: The #hb_font_t being created @scaled_font: The respective #cairo_scaled_font_t @user_data: User data accompanying this method The type of a virtual method to be called when a cairo face created using hb_cairo_font_face_create_for_face() creates an #hb_font_t for a #cairo_scaled_font_t. Return value: the #hb_font_t value to use; in most cases same as @font Since: 7.0.0 3097
hb-cff-interp-common.hh === Dict operators === 20035
hb-cff-interp-cs-common.hh call stack 24089
hb-cff-interp-dict-common.hh an opstr and the parsed out dict value(s) 4900
hb-cff1-interp-cs.hh PostScript-originated legacy opcodes (OpCode_add etc) are unsupported 4296
hb-cff2-interp-cs.hh make up return or endchar op 7674
hb-common.cc SECTION:hb-common @title: hb-common @short_description: Common data types @include: hb.h Common data types used across HarfBuzz are defined here. 31216
hb-common.h !__cplusplus 30956
hb-config.hh Make test happy. 4682
hb-coretext-font.cc 13587
hb-coretext-shape.cc SECTION:hb-coretext @title: hb-coretext @short_description: CoreText integration @include: hb-coretext.h Functions for using HarfBuzz with the CoreText fonts. 43130
hb-coretext.h HB_CORETEXT_TAG_MORT: The #hb_tag_t tag for the `mort` (glyph metamorphosis) table, which holds AAT features. For more information, see https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6mort.html 2816
hb-cplusplus.hh 6262
hb-debug.hh Global runtime options. 12723
hb-deprecated.h SECTION:hb-deprecated @title: hb-deprecated @short_description: Deprecated API @include: hb.h These API have been deprecated in favor of newer API, or because they were deemed unnecessary. 10231
hb-directwrite.cc SECTION:hb-directwrite @title: hb-directwrite @short_description: DirectWrite integration @include: hb-directwrite.h Functions for using HarfBuzz with DirectWrite fonts. 25264
hb-directwrite.h HB_DIRECTWRITE_H 1367
hb-dispatch.hh Dispatch 2301
hb-draw.cc SECTION:hb-draw @title: hb-draw @short_description: Glyph drawing @include: hb.h Functions for drawing (extracting) glyph shapes. The #hb_draw_funcs_t struct can be used with hb_font_draw_glyph(). 11911
hb-draw.h hb_draw_state_t @path_open: Whether there is an open path @path_start_x: X component of the start of current path @path_start_y: Y component of the start of current path @current_x: X component of current point @current_y: Y component of current point Current drawing state. Since: 4.0.0 10118
hb-draw.hh hb_draw_funcs_t 6940
hb-face-builder.cc face-builder: A face that has add_table(). 8308
hb-face.cc SECTION:hb-face @title: hb-face @short_description: Font face objects @include: hb.h A font face is an object that represents a single face from within a font family. More precisely, a font face represents a single face in a binary font file. Font faces are typically built from a binary blob and a face index. Font faces are used to create fonts. A font face can be created from a binary blob using hb_face_create(). The face index is used to select a face from a binary blob that contains multiple faces. For example, a binary blob that contains both a regular and a bold face can be used to create two font faces, one for each face index. 19233
hb-face.h hb_face_t 5715
hb-face.hh hb_face_t 3133
hb-fallback-shape.cc shaper face data 3127
hb-features.h.in 2661
hb-font.cc SECTION:hb-font @title: hb-font @short_description: Font objects @include: hb.h Functions for working with font objects. A font object represents a font face at a specific size and with certain other parameters (pixels-per-em, points-per-em, variation settings) specified. Font objects are created from font face objects, and are used as input to hb_shape(), among other things. Client programs can optionally pass in their own functions that implement the basic, lower-level queries of font objects. This set of font functions is defined by the virtual methods in #hb_font_funcs_t. HarfBuzz provides a built-in set of lightweight default functions for each method in #hb_font_funcs_t. The default font functions are implemented in terms of the #hb_font_funcs_t methods of the parent font object. This allows client programs to override only the methods they need to, and otherwise inherit the parent font's implementation, if any. 84831
hb-font.h hb_font_funcs_t 37315
hb-font.hh hb_font_funcs_t 21551
hb-ft-colr.hh 19185
hb-ft.cc SECTION:hb-ft @title: hb-ft @short_description: FreeType integration @include: hb-ft.h Functions for using HarfBuzz with the FreeType library. HarfBuzz supports using FreeType to provide face and font data. <note>Note that FreeType is not thread-safe, therefore these functions are not thread-safe either.</note> 46678
hb-ft.h Note: FreeType is not thread-safe. Hence, these functions are not either. 4586
hb-gdi.cc SECTION:hb-gdi @title: hb-gdi @short_description: GDI integration @include: hb-gdi.h Functions for using HarfBuzz with GDI fonts. 2534
hb-gdi.h HB_GDI_H 1255
hb-geometry.hh Copied from cairo, with "o" being "a" there and "this" being "b" there. 6614
hb-glib.cc SECTION:hb-glib @title: hb-glib @short_description: GLib integration @include: hb-glib.h Functions for using HarfBuzz with the GLib library. HarfBuzz supports using GLib to provide Unicode data, by attaching GLib functions to the virtual methods in a #hb_unicode_funcs_t function structure. 6175
hb-glib.h HB_GLIB_H 1625
hb-gobject-enums.cc.tmpl 2164
hb-gobject-enums.h.tmpl 1675
hb-gobject-structs.cc SECTION:hb-gobject @title: hb-gobject @short_description: GObject integration support @include: hb-gobject.h Support for using HarfBuzz with the GObject library to provide type data. The types and functions listed here are solely a linkage between HarfBuzz's public data types and the GTypes used by the GObject framework. HarfBuzz uses GObject introspection to generate its Python bindings (and potentially other language bindings); client programs should never need to access the GObject-integration mechanics. For client programs using the GNOME and GTK software stack, please see the GLib and FreeType integration pages. 3784
hb-gobject-structs.h Object types 4236
hb-gobject.h HB_GOBJECT_H 1335
hb-graphite2.cc SECTION:hb-graphite2 @title: hb-graphite2 @short_description: Graphite2 integration @include: hb-graphite2.h Functions for using HarfBuzz with fonts that include Graphite features. For Graphite features to work, you must be sure that HarfBuzz was compiled with the `graphite2` shaping engine enabled. Currently, the default is to not enable `graphite2` shaping. 12910
hb-graphite2.h HB_GRAPHITE2_TAG_SILF: The #hb_tag_t tag for the `Silf` table, which holds Graphite features. For more information, see http://graphite.sil.org/ 1723
hb-icu.cc ICU extra semicolon, fixed since 65, https://github.com/unicode-org/icu/commit/480bec3 9560
hb-icu.h HB_ICU_H 1525
hb-iter.hh Unified iterator object. The goal of this template is to make the same iterator interface available to all types, and make it very easy and compact to use. hb_iter_tator objects are small, light-weight, objects that can be copied by value. If the collection / object being iterated on is writable, then the iterator returns lvalues, otherwise it returns rvalues. If iterator implementation implements operator!=, then it can be used in range-based for loop. That already happens if the iterator is random-access. Otherwise, the range-based for loop incurs one traversal to find end(), which can be avoided if written as a while-style for loop, or if iterator implements a faster __end__() method. 32193
hb-kern.hh namespace OT 3603
hb-limits.hh Shaping more than a billion chars? Let us know! 2980
hb-machinery.hh Casts 10946
hb-map.cc SECTION:hb-map @title: hb-map @short_description: Object representing integer to integer mapping @include: hb.h Map objects are integer-to-integer hash-maps. Currently they are not used in the HarfBuzz public API, but are provided for client's use if desired. 7866
hb-map.h HB_MAP_VALUE_INVALID: Unset #hb_map_t value. Since: 1.7.7 3347
hb-map.hh hb_hashmap_t 14812
hb-meta.hh C++ template meta-programming & fundamentals used with them. 11086
hb-ms-feature-ranges.hh Variations of this code exist in hb-coretext-shape.cc as well as hb-aat-map.cc... 7255
hb-multimap.hh hb_multimap_t 2378
hb-mutex.hh mutex 4099
hb-null.hh Static pools 7967
hb-number-parser.hh Works only for n < 512 5390
hb-number-parser.rl 3216
hb-number.cc Check if consumed whole buffer if is requested 2414
hb-number.hh HB_NUMBER_HH 1502
hb-object.hh Lockable set 8290
hb-open-file.hh The OpenType Font File 15729
hb-open-type.hh The OpenType Font File: Data Types 55764
hb-ot-cff-common.hh CFF offsets can technically be negative 11057
hb-ot-cff1-std-str.hh Make checks happy. 7048
hb-ot-cff1-table.cc SID to code 23969
hb-ot-cff1-table.hh CFF -- Compact Font Format (CFF) https://www.adobe.com/content/dam/acom/en/devnet/font/pdfs/5176.CFF.pdf 43011
hb-ot-cff2-table.cc include control points 7139
hb-ot-cff2-table.hh CFF2 -- Compact Font Format (CFF) Version 2 https://docs.microsoft.com/en-us/typography/opentype/spec/cff2 15917
hb-ot-cmap-table.hh cmap -- Character to Glyph Index Mapping https://docs.microsoft.com/en-us/typography/opentype/spec/cmap 66428
hb-ot-color.cc SECTION:hb-ot-color @title: hb-ot-color @short_description: OpenType Color Fonts @include: hb-ot.h Functions for fetching color-font information from OpenType font faces. HarfBuzz supports `COLR`/`CPAL`, `sbix`, `CBDT`, and `SVG` color fonts. 9893
hb-ot-color.h Color palettes. 4471
hb-ot-deprecated.h https://github.com/harfbuzz/harfbuzz/issues/1734 4130
hb-ot-face-table-list.hh HB_OT_FACE_TABLE_LIST_HH 4082
hb-ot-face.cc 2017
hb-ot-face.hh hb_ot_face_t 2557
hb-ot-font.cc SECTION:hb-ot-font @title: hb-ot-font @short_description: OpenType font implementation @include: hb-ot.h Functions for using OpenType fonts with hb_shape(). Note that fonts returned by hb_font_create() default to using these functions, so most clients would never need to call these functions directly. 21240
hb-ot-font.h HB_OT_FONT_H 1410
hb-ot-gasp-table.hh gasp -- Grid-fitting and Scan-conversion Procedure https://docs.microsoft.com/en-us/typography/opentype/spec/gasp 2369
hb-ot-glyf-table.hh HB_OT_GLYF_TABLE_HH 1367
hb-ot-hdmx-table.hh hdmx -- Horizontal Device Metrics https://docs.microsoft.com/en-us/typography/opentype/spec/hdmx 5139
hb-ot-head-table.hh head -- Font Header https://docs.microsoft.com/en-us/typography/opentype/spec/head 7713
hb-ot-hhea-table.hh hhea -- Horizontal Header https://docs.microsoft.com/en-us/typography/opentype/spec/hhea vhea -- Vertical Header https://docs.microsoft.com/en-us/typography/opentype/spec/vhea 3406
hb-ot-hmtx-table.hh hmtx -- Horizontal Metrics https://docs.microsoft.com/en-us/typography/opentype/spec/hmtx vmtx -- Vertical Metrics https://docs.microsoft.com/en-us/typography/opentype/spec/vmtx 16840
hb-ot-kern-table.hh kern -- Kerning https://docs.microsoft.com/en-us/typography/opentype/spec/kern https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6kern.html 12284
hb-ot-layout-base-table.hh BASE -- Baseline https://docs.microsoft.com/en-us/typography/opentype/spec/base 26945
hb-ot-layout-common.hh IN/OUT 145986
hb-ot-layout-gdef-table.hh HB_OT_LAYOUT_GDEF_TABLE_HH 1349
hb-ot-layout-gpos-table.hh Out-of-class implementation for methods recursing 2889
hb-ot-layout-gsub-table.hh Out-of-class implementation for methods recursing 3464
hb-ot-layout-gsubgpos.hh Have we visited this lookup with the current set of glyphs? 156314
hb-ot-layout-jstf-table.hh JstfModList -- Justification Modification List Tables 7249
hb-ot-layout.cc SECTION:hb-ot-layout @title: hb-ot-layout @short_description: OpenType Layout @include: hb-ot.h Functions for querying OpenType Layout features in the font face. See the [OpenType specification](http://www.microsoft.com/typography/otspec/) for details. 89532
hb-ot-layout.h HB_OT_TAG_BASE: OpenType [Baseline Table](https://docs.microsoft.com/en-us/typography/opentype/spec/base). 18997
hb-ot-layout.hh kern 19055
hb-ot-map.cc Fetch script/language indices for GSUB/GPOS. We need these later to skip features not available in either table and not waste precious bits for them. 12351
hb-ot-map.hh should be first for our bsearch to work 9619
hb-ot-math-table.hh The X or Y value in design units 37331
hb-ot-math.cc SECTION:hb-ot-math @title: hb-ot-math @short_description: OpenType Math information @include: hb-ot.h Functions for fetching mathematics layout data from OpenType fonts. HarfBuzz itself does not implement a math layout solution. The functions and types provided can be used by client programs to access the font data necessary for typesetting OpenType Math layout. 11564
hb-ot-math.h MATH 13761
hb-ot-maxp-table.hh maxp -- Maximum Profile https://docs.microsoft.com/en-us/typography/opentype/spec/maxp 5178
hb-ot-meta-table.hh meta -- Metadata Table https://docs.microsoft.com/en-us/typography/opentype/spec/meta https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6meta.html 3956
hb-ot-meta.cc SECTION:hb-ot-meta @title: hb-ot-meta @short_description: OpenType Metadata @include: hb-ot.h Functions for fetching metadata from fonts. 2433
hb-ot-meta.h hb_ot_meta_tag_t: @HB_OT_META_TAG_DESIGN_LANGUAGES: Design languages. Text, using only Basic Latin (ASCII) characters. Indicates languages and/or scripts for the user audiences that the font was primarily designed for. @HB_OT_META_TAG_SUPPORTED_LANGUAGES: Supported languages. Text, using only Basic Latin (ASCII) characters. Indicates languages and/or scripts that the font is declared to be capable of supporting. Known metadata tags from https://docs.microsoft.com/en-us/typography/opentype/spec/meta Since: 2.6.0 2553
hb-ot-metrics.cc SECTION:hb-ot-metrics @title: hb-ot-metrics @short_description: OpenType Metrics @include: hb-ot.h Functions for fetching metrics from fonts. 15524
hb-ot-metrics.h hb_ot_metrics_tag_t: @HB_OT_METRICS_TAG_HORIZONTAL_ASCENDER: horizontal ascender. @HB_OT_METRICS_TAG_HORIZONTAL_DESCENDER: horizontal descender. @HB_OT_METRICS_TAG_HORIZONTAL_LINE_GAP: horizontal line gap. @HB_OT_METRICS_TAG_HORIZONTAL_CLIPPING_ASCENT: horizontal clipping ascent. @HB_OT_METRICS_TAG_HORIZONTAL_CLIPPING_DESCENT: horizontal clipping descent. @HB_OT_METRICS_TAG_VERTICAL_ASCENDER: vertical ascender. @HB_OT_METRICS_TAG_VERTICAL_DESCENDER: vertical descender. @HB_OT_METRICS_TAG_VERTICAL_LINE_GAP: vertical line gap. @HB_OT_METRICS_TAG_HORIZONTAL_CARET_RISE: horizontal caret rise. @HB_OT_METRICS_TAG_HORIZONTAL_CARET_RUN: horizontal caret run. @HB_OT_METRICS_TAG_HORIZONTAL_CARET_OFFSET: horizontal caret offset. @HB_OT_METRICS_TAG_VERTICAL_CARET_RISE: vertical caret rise. @HB_OT_METRICS_TAG_VERTICAL_CARET_RUN: vertical caret run. @HB_OT_METRICS_TAG_VERTICAL_CARET_OFFSET: vertical caret offset. @HB_OT_METRICS_TAG_X_HEIGHT: x height. @HB_OT_METRICS_TAG_CAP_HEIGHT: cap height. @HB_OT_METRICS_TAG_SUBSCRIPT_EM_X_SIZE: subscript em x size. @HB_OT_METRICS_TAG_SUBSCRIPT_EM_Y_SIZE: subscript em y size. @HB_OT_METRICS_TAG_SUBSCRIPT_EM_X_OFFSET: subscript em x offset. @HB_OT_METRICS_TAG_SUBSCRIPT_EM_Y_OFFSET: subscript em y offset. @HB_OT_METRICS_TAG_SUPERSCRIPT_EM_X_SIZE: superscript em x size. @HB_OT_METRICS_TAG_SUPERSCRIPT_EM_Y_SIZE: superscript em y size. @HB_OT_METRICS_TAG_SUPERSCRIPT_EM_X_OFFSET: superscript em x offset. @HB_OT_METRICS_TAG_SUPERSCRIPT_EM_Y_OFFSET: superscript em y offset. @HB_OT_METRICS_TAG_STRIKEOUT_SIZE: strikeout size. @HB_OT_METRICS_TAG_STRIKEOUT_OFFSET: strikeout offset. @HB_OT_METRICS_TAG_UNDERLINE_SIZE: underline size. @HB_OT_METRICS_TAG_UNDERLINE_OFFSET: underline offset. Metric tags corresponding to [MVAR Value Tags](https://docs.microsoft.com/en-us/typography/opentype/spec/mvar#value-tags) Since: 2.6.0 6020
hb-ot-metrics.hh OUT. May be NULL. 1363
hb-ot-name-language-static.hh Following two tables were generated by joining FreeType, FontConfig, and OpenType specification language lists, then filled in missing entries using: https://docs.microsoft.com/en-us/windows/desktop/intl/language-identifier-constants-and-strings 16705
hb-ot-name-language.hh HB_OT_NAME_LANGUAGE_HH 1391
hb-ot-name-table.hh HB_OT_NAME_TABLE_HH 1232
hb-ot-name.cc SECTION:hb-ot-name @title: hb-ot-name @short_description: OpenType font name information @include: hb-ot.h Functions for fetching name strings from OpenType fonts. 6135
hb-ot-name.h HB_OT_NAME_ID_RESERVED = 15, 5536
hb-ot-os2-table.hh OS/2 and Windows Metrics https://docs.microsoft.com/en-us/typography/opentype/spec/os2 12789
hb-ot-os2-unicode-ranges.hh Note: The contents of this array was generated using gen-os2-unicode-ranges.py. 10125
hb-ot-post-macroman.hh Make checks happy. 4664
hb-ot-post-table-v2subset.hh post -- PostScript https://docs.microsoft.com/en-us/typography/opentype/spec/post 5121
hb-ot-post-table.hh post -- PostScript https://docs.microsoft.com/en-us/typography/opentype/spec/post 10243
hb-ot-shape-fallback.cc Thai / Lao need some per-character work. 19117
hb-ot-shape-fallback.hh HB_OT_SHAPE_FALLBACK_HH 1904
hb-ot-shape-normalize.cc HIGHLEVEL DESIGN: This file exports one main function: _hb_ot_shape_normalize(). This function closely reflects the Unicode Normalization Algorithm, yet it's different. Each shaper specifies whether it prefers decomposed (NFD) or composed (NFC). The logic however tries to use whatever the font can support. In general what happens is that: each grapheme is decomposed in a chain of 1:2 decompositions, marks reordered, and then recomposed if desired, so far it's like Unicode Normalization. However, the decomposition and recomposition only happens if the font supports the resulting characters. The goals are: - Try to render all canonically equivalent strings similarly. To really achieve this we have to always do the full decomposition and then selectively recompose from there. It's kinda too expensive though, so we skip some cases. For example, if composed is desired, we simply don't touch 1-character clusters that are supported by the font, even though their NFC may be different. - When a font has a precomposed character for a sequence but the 'ccmp' feature in the font is not adequate, use the precomposed character which typically has better mark positioning. - When a font does not support a combining mark, but supports it precomposed with previous base, use that. This needs the itemizer to have this knowledge too. We need to provide assistance to the itemizer. - When a font does not support a character but supports its canonical decomposition, well, use the decomposition. - The shapers can customize the compose and decompose functions to offload some of their requirements to the normalizer. For example, the Indic shaper may want to disallow recomposing of two matras. 15394
hb-ot-shape-normalize.hh buffer var allocations, used during the normalization process 3354
hb-ot-shape.cc https://github.com/harfbuzz/harfbuzz/issues/2124 40488
hb-ot-shape.h TODO port to shape-plan / set. 1757
hb-ot-shape.hh In the order that they are filled in. 4602
hb-ot-shaper-arabic-fallback.hh Features ordered the same as the entries in shaping_table rows, followed by rlig. Don't change. We currently support one subtable per lookup, and one lookup per feature. But we allow duplicate features, so we use that! 13075
hb-ot-shaper-arabic-joining-list.hh == Start of generated function == 1076
hb-ot-shaper-arabic-pua.hh == Start of generated table == 7509
hb-ot-shaper-arabic-table.hh == Start of generated table == 24942
hb-ot-shaper-arabic-win1256.hh The macros in the first part of this file are generic macros that can be used to define the bytes for OpenType table data in code in a readable manner. We can move the macros to reside with their respective struct types, but since we only use these to define one data table, the Windows-1256 Arabic shaping table in this file, we keep them here. 9674
hb-ot-shaper-arabic.cc buffer var allocations 24638
hb-ot-shaper-arabic.hh HB_OT_SHAPER_ARABIC_HH 1648
hb-ot-shaper-default.cc collect_features 2343
hb-ot-shaper-hangul.cc Hangul shaper 13166
hb-ot-shaper-hebrew.cc Hebrew presentation-form shaping. https://bugzilla.mozilla.org/show_bug.cgi?id=728866 Hebrew presentation forms with dagesh, for characters U+05D0..05EA; Note that some letters do not have a dagesh presForm encoded. 5816
hb-ot-shaper-indic-machine.hh buffer var allocations 19662
hb-ot-shaper-indic-machine.rl 4304
hb-ot-shaper-indic-table.cc == Start of generated table == 27375
hb-ot-shaper-indic.cc Indic shaper. 52445
hb-ot-shaper-indic.hh Visual positions in a syllable from left to right. 1717
hb-ot-shaper-khmer-machine.hh buffer var allocations 12157
hb-ot-shaper-khmer-machine.rl 3505
hb-ot-shaper-khmer.cc Khmer shaper. 11022
hb-ot-shaper-myanmar-machine.hh buffer var allocations 17429
hb-ot-shaper-myanmar-machine.rl 4329
hb-ot-shaper-myanmar.cc Myanmar shaper. 10808
hb-ot-shaper-syllabic.cc Insert dottedcircle after possible Repha. 3533
hb-ot-shaper-syllabic.hh HB_OT_SHAPER_SYLLABIC_HH 1611
hb-ot-shaper-thai.cc Thai / Lao shaper 12220
hb-ot-shaper-use-machine.hh buffer var allocations 36605
hb-ot-shaper-use-machine.rl 9062
hb-ot-shaper-use-table.hh == Start of generated table == 54110
hb-ot-shaper-use.cc Universal Shaping Engine. https://docs.microsoft.com/en-us/typography/script-development/use 14493
hb-ot-shaper-vowel-constraints.cc == Start of generated functions == 11271
hb-ot-shaper-vowel-constraints.hh HB_OT_SHAPER_VOWEL_CONSTRAINTS_HH 1465
hb-ot-shaper.hh buffer var allocations, used by all OT shapers 11827
hb-ot-stat-table.hh STAT -- Style Attributes https://docs.microsoft.com/en-us/typography/opentype/spec/stat 21191
hb-ot-tag-table.hh == Start of generated table == 182429
hb-ot-tag.cc hb_script_t 18536
hb-ot-var-avar-table.hh avar -- Axis Variations https://docs.microsoft.com/en-us/typography/opentype/spec/avar 11877
hb-ot-var-common.hh https://docs.microsoft.com/en-us/typography/opentype/spec/otvarcommonformats#tuplevariationheader 68117
hb-ot-var-cvar-table.hh cvar -- control value table (CVT) Variations https://docs.microsoft.com/en-us/typography/opentype/spec/cvar 8591
hb-ot-var-fvar-table.hh fvar -- Font Variations https://docs.microsoft.com/en-us/typography/opentype/spec/fvar 16145
hb-ot-var-gvar-table.hh gvar -- Glyph Variation Table https://docs.microsoft.com/en-us/typography/opentype/spec/gvar 31940
hb-ot-var-hvar-table.hh dual as TSB 15069
hb-ot-var-mvar-table.hh Four-byte tag identifying a font-wide measure. 5728
hb-ot-var-varc-table.hh HB_OT_VAR_VARC_TABLE_HH 1243
hb-ot-var.cc SECTION:hb-ot-var @title: hb-ot-var @short_description: OpenType Font Variations @include: hb-ot.h Functions for fetching information about OpenType Variable Fonts. 10043
hb-ot-var.h HB_OT_TAG_VAR_AXIS_ITALIC: Registered tag for the roman/italic axis. 5209
hb-ot-vorg-table.hh VORG -- Vertical Origin Table https://docs.microsoft.com/en-us/typography/opentype/spec/vorg 3702
hb-ot.h HB_OT_H 1502
hb-outline.cc pacify compiler 8385
hb-outline.hh HB_OUTLINE_HH 2070
hb-paint-extents.cc This file implements bounds-extraction as well as boundedness computation of COLRv1 fonts as described in: https://learn.microsoft.com/en-us/typography/opentype/spec/colr#glyph-metrics-and-boundedness 10183
hb-paint-extents.hh Transform extents and push a new clip. 3444
hb-paint.cc SECTION: hb-paint @title: hb-paint @short_description: Glyph painting @include: hb.h Functions for painting glyphs. The main purpose of these functions is to paint (extract) color glyph layers from the COLRv1 table, but the API works for drawing ordinary outlines and images as well. The #hb_paint_funcs_t struct can be used with hb_font_paint_glyph(). 21855
hb-paint.h hb_paint_funcs_t: Glyph paint callbacks. The callbacks assume that the caller maintains a stack of current transforms, clips and intermediate surfaces, as evidenced by the pairs of push/pop callbacks. The push/pop calls will be properly nested, so it is fine to store the different kinds of object on a single stack. Not all callbacks are required for all kinds of glyphs. For rendering COLRv0 or non-color outline glyphs, the gradient callbacks are not needed, and the composite callback only needs to handle simple alpha compositing (#HB_PAINT_COMPOSITE_MODE_SRC_OVER). The paint-image callback is only needed for glyphs with image blobs in the CBDT, sbix or SVG tables. The custom-palette-color callback is only necessary if you want to override colors from the font palette with custom colors. Since: 7.0.0 39766
hb-paint.hh ^--- Add new callbacks here 8427
hb-pool.hh Memory pool for persistent allocation of small objects. Some AI musings on this, not necessarily true: This is a very simple implementation, but it's good enough for our purposes. It's not thread-safe. It's not very fast. It's not very memory efficient. It's not very cache efficient. It's not very anything efficient. But it's simple and it works. And it's good enough for our purposes. If you need something more sophisticated, use a real allocator. Or use a real language. 2863
hb-priority-queue.hh hb_priority_queue_t Priority queue implemented as a binary heap. Supports extract minimum and insert operations. The priority queue is implemented as a binary heap, which is a complete binary tree. The root of the tree is the minimum element. The heap property is that the priority of a node is less than or equal to the priority of its children. The heap is stored in an array, with the children of node i stored at indices 2i + 1 and 2i + 2. 4421
hb-repacker.hh For a detailed writeup on the overflow resolution algorithm see: docs/repacker.md 17666
hb-sanitize.hh Sanitize === Introduction === The sanitize machinery is at the core of our zero-cost font loading. We mmap() font file into memory and create a blob out of it. Font subtables are returned as a readonly sub-blob of the main font blob. These table blobs are then sanitized before use, to ensure invalid memory access does not happen. The toplevel sanitize API use is like, eg. to load the 'head' table: hb_blob_t *head_blob = hb_sanitize_context_t ().reference_table<OT::head> (face); The blob then can be converted to a head table struct with: const head *head_table = head_blob->as<head> (); What the reference_table does is, to call hb_face_reference_table() to load the table blob, sanitize it and return either the sanitized blob, or empty blob if sanitization failed. The blob->as() function returns the null object of its template type argument if the blob is empty. Otherwise, it just casts the blob contents to the desired type. Sanitizing a blob of data with a type T works as follows (with minor simplification): - Cast blob content to T*, call sanitize() method of it, - If sanitize succeeded, return blob. - Otherwise, if blob is not writable, try making it writable, or copy if cannot be made writable in-place, - Call sanitize() again. Return blob if sanitize succeeded. - Return empty blob otherwise. === The sanitize() contract === The sanitize() method of each object type shall return true if it's safe to call other methods of the object, and %false otherwise. Note that what sanitize() checks for might align with what the specification describes as valid table data, but does not have to be. In particular, we do NOT want to be pedantic and concern ourselves with validity checks that are irrelevant to our use of the table. On the contrary, we want to be lenient with error handling and accept invalid data to the extent that it does not impose extra burden on us. Based on the sanitize contract, one can see that what we check for depends on how we use the data in other table methods. Ie. if other table methods assume that offsets do NOT point out of the table data block, then that's something sanitize() must check for (GSUB/GPOS/GDEF/etc work this way). On the other hand, if other methods do such checks themselves, then sanitize() does not have to bother with them (glyf/local work this way). The choice depends on the table structure and sanitize() performance. For example, to check glyf/loca offsets in sanitize() would cost O(num-glyphs). We try hard to avoid such costs during font loading. By postponing such checks to the actual glyph loading, we reduce the sanitize cost to O(1) and total runtime cost to O(used-glyphs). As such, this is preferred. The same argument can be made re GSUB/GPOS/GDEF, but there, the table structure is so complicated that by checking all offsets at sanitize() time, we make the code much simpler in other methods, as offsets and referenced objects do not need to be validated at each use site. 15002
hb-serialize.hh Serialize 23554
hb-set-digest.hh The set-digests here implement various "filters" that support "approximate member query". Conceptually these are like Bloom Filter and Quotient Filter, however, much smaller, faster, and designed to fit the requirements of our uses for glyph coverage queries. Our filters are highly accurate if the lookup covers fairly local set of glyphs, but fully flooded and ineffective if coverage is all over the place. The way these are used is that the filter is first populated by a lookup's or subtable's Coverage table(s), and then when we want to apply the lookup or subtable to a glyph, before trying to apply, we ask the filter if the glyph may be covered. If it's not, we return early. We can also match a digest against another digest. We use these filters at three levels: - If the digest for all the glyphs in the buffer as a whole does not match the digest for the lookup, skip the lookup. - For each glyph, if it doesn't match the lookup digest, skip it. - For each glyph, if it doesn't match the subtable digest, skip it. The main filter we use is a combination of three bits-pattern filters. A bits-pattern filter checks a number of bits (5 or 6) of the input number (glyph-id in this case) and checks whether its pattern is amongst the patterns of any of the accepted values. The accepted patterns are represented as a "long" integer. The check is done using four bitwise operations only. 7096
hb-set.cc SECTION:hb-set @title: hb-set @short_description: Objects representing a set of integers @include: hb.h Set objects represent a mathematical set of integer values. They are used in non-shaping APIs to query certain sets of characters or glyphs, or other integer values. 13636
hb-set.h HB_SET_VALUE_INVALID: Unset #hb_set_t value. Since: 0.9.21 5054
hb-set.hh Might return false if array looks unsorted. Used for faster rejection of corrupt data. 6983
hb-shape-plan.cc SECTION:hb-shape-plan @title: hb-shape-plan @short_description: Object representing a shaping plan @include: hb.h Shape plans are an internal mechanism. Each plan contains state describing how HarfBuzz will shape a particular text segment, based on the combination of segment properties and the capabilities in the font face in use. Shape plans are not used for shaping directly, but can be queried to access certain information about how shaping will perform, given a set of specific input parameters (script, language, direction, features, etc.). Most client programs will not need to deal with shape plans directly. 16469
hb-shape-plan.h hb_shape_plan_t: Data type for holding a shaping plan. Shape plans contain information about how HarfBuzz will shape a particular text segment, based on the segment's properties and the capabilities in the font face in use. Shape plans can be queried about how shaping will perform, given a set of specific input parameters (script, language, direction, features, etc.). 4121
hb-shape-plan.hh We don't carry a reference to face. 2429
hb-shape.cc SECTION:hb-shape @title: hb-shape @short_description: Conversion of text strings into positioned glyphs @include: hb.h Shaping is the central operation of HarfBuzz. Shaping operates on buffers, which are sequences of Unicode characters that use the same font and have the same text direction, script, and language. After shaping the buffer contains the output glyphs and their positions. 12805
hb-shape.h IN/OUT 2310
hb-shaper-impl.hh HB_SHAPER_IMPL_HH 1332
hb-shaper-list.hh HB_SHAPER_LIST_HH 1899
hb-shaper.cc Reorder shaper list to prefer requested shapers. 2985
hb-shaper.hh Type forward declaration. 4622
hb-static.cc thread_local 4157
hb-string-array.hh Make checks happy. 2901
hb-style.cc SECTION:hb-style @title: hb-style @short_description: Font Styles @include: hb.h Functions for fetching style information from fonts. 3902
hb-style.h hb_style_tag_t: @HB_STYLE_TAG_ITALIC: Used to vary between non-italic and italic. A value of 0 can be interpreted as "Roman" (non-italic); a value of 1 can be interpreted as (fully) italic. @HB_STYLE_TAG_OPTICAL_SIZE: Used to vary design to suit different text sizes. Non-zero. Values can be interpreted as text size, in points. @HB_STYLE_TAG_SLANT_ANGLE: Used to vary between upright and slanted text. Values must be greater than -90 and less than +90. Values can be interpreted as the angle, in counter-clockwise degrees, of oblique slant from whatever the designer considers to be upright for that font design. Typical right-leaning Italic fonts have a negative slant angle (typically around -12) @HB_STYLE_TAG_SLANT_RATIO: same as @HB_STYLE_TAG_SLANT_ANGLE expression as ratio. Typical right-leaning Italic fonts have a positive slant ratio (typically around 0.2) @HB_STYLE_TAG_WIDTH: Used to vary width of text from narrower to wider. Non-zero. Values can be interpreted as a percentage of whatever the font designer considers “normal width” for that font design. @HB_STYLE_TAG_WEIGHT: Used to vary stroke thicknesses or other design details to give variation from lighter to blacker. Values can be interpreted in direct comparison to values for usWeightClass in the OS/2 table, or the CSS font-weight property. Defined by [OpenType Design-Variation Axis Tag Registry](https://docs.microsoft.com/en-us/typography/opentype/spec/dvaraxisreg). Since: 3.0.0 3340
hb-subset-accelerator.hh HB_SUBSET_ACCELERATOR_HH 3766
hb-subset-cff-common.cc Disable FDSelect format 0 for compatibility with fonttools which doesn't seem choose it. Rarely any/much smaller than format 3 anyway. 6730
hb-subset-cff-common.hh Used for writing a temporary charstring 34676
hb-subset-cff1.cc a copy of a parsed out cff1_top_dict_values_t augmented with additional operators 28232
hb-subset-cff2.cc dummy opcodes in CFF2. ignore 19566
hb-subset-input.cc 22723
hb-subset-input.hh HB_SUBSET_INPUT_HH 4132
hb-subset-instancer-iup.cc This file is a straight port of the following: https://github.com/fonttools/fonttools/blob/main/Lib/fontTools/varLib/iup.py Where that file returns optimzied deltas vector, we return optimized referenced point indices. 16420
hb-subset-instancer-iup.hh given contour points and deltas, optimize a set of referenced points within error tolerance. Returns optimized referenced point indices 1721
hb-subset-instancer-solver.cc This file is a straight port of the following: https://github.com/fonttools/fonttools/blob/f73220816264fc383b8a75f2146e8d69e455d398/Lib/fontTools/varLib/instancer/solver.py Where that file returns None for a triple, we return Triple{}. This should be safe. 13910
hb-subset-instancer-solver.hh pre-normalized distances 3802
hb-subset-plan-member-list.hh HB_SUBSET_PLAN_MEMBER_LIST_HH 7408
hb-subset-plan.cc OUT 50031
hb-subset-plan.hh 7906
hb-subset-repacker.cc hb_subset_repack_or_fail: @table_tag: tag of the table being packed, needed to allow table specific optimizations. @hb_objects: raw array of struct hb_object_t, which provides object graph info @num_hb_objs: number of hb_object_t in the hb_objects array. Given the input object graph info, repack a table to eliminate offset overflows. A nullptr is returned if the repacking attempt fails. Table specific optimizations (eg. extension promotion in GSUB/GPOS) may be performed. Passing HB_TAG_NONE will disable table specific optimizations. XSince: EXPERIMENTAL 2260
hb-subset-repacker.h struct hb_link_t width: offsetSize in bytes position: position of the offset field in bytes from beginning of subtable objidx: index of subtable 2272
hb-subset.cc SECTION:hb-subset @title: hb-subset @short_description: Subsets font files. @include: hb-subset.h Subsetting reduces the codepoint coverage of font files and removes all data that is no longer needed. A subset input describes the desired subset. The input is provided along with a font to the subsetting operation. Output is a new font file containing only the data specified in the input. Currently most outline and bitmap tables are supported: glyf, CFF, CFF2, sbix, COLR, and CBDT/CBLC. This also includes fonts with variable outlines via OpenType variations. Notably EBDT/EBLC and SVG are not supported. Layout subsetting is supported only for OpenType Layout tables (GSUB, GPOS, GDEF). Notably subsetting of graphite or AAT tables is not yet supported. Fonts with graphite or AAT tables may still be subsetted but will likely need to use the retain glyph ids option and configure the subset to pass through the layout tables untouched. 21860
hb-subset.h hb_subset_input_t: Things that change based on the input. Characters to keep, etc. 9256
hb-subset.hh HB_SUBSET_HH 2468
hb-ucd-table.hh == Start of generated table == 418190
hb-ucd.cc Copyright (C) 2012 Grigori Goronzy <greg@kinoho.net> Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 7196
hb-unicode-emoji-table.hh == Start of generated table == 3281
hb-unicode.cc SECTION: hb-unicode @title: hb-unicode @short_description: Unicode character property access @include: hb.h Unicode functions are used to access Unicode character properties. With these functions, client programs can query various properties from the Unicode Character Database for any code point, such as General Category (gc), Script (sc), Canonical Combining Class (ccc), etc. Client programs can optionally pass in their own Unicode functions that implement the same queries. The set of functions available is defined by the virtual methods in #hb_unicode_funcs_t. HarfBuzz provides built-in default functions for each method in #hb_unicode_funcs_t. 17313
hb-unicode.h HB_UNICODE_MAX: Maximum valid Unicode code point. Since: 1.9.0 22980
hb-unicode.hh hb_unicode_funcs_t 14733
hb-uniscribe.cc SECTION:hb-uniscribe @title: hb-uniscribe @short_description: Windows integration @include: hb-uniscribe.h Functions for using HarfBuzz with Windows fonts. 25090
hb-uniscribe.h HB_UNISCRIBE_H 1391
hb-utf.hh Written to only accept well-formed sequences. Based on ideas from ICU's U8_NEXT. Generates one "replacement" for each ill-formed byte. 11048
hb-vector.hh < 0 means allocation failed. 14553
hb-version.h HB_VERSION_MAJOR: The major component of the library version available at compile-time. 2597
hb-version.h.in 2653
hb-wasm-api-blob.hh HB_WASM_API_BLOB_HH 1453
hb-wasm-api-buffer.hh 6054
hb-wasm-api-common.hh HB_WASM_API_COMMON_HH 1444
hb-wasm-api-face.hh HB_WASM_API_FACE_HH 2717
hb-wasm-api-font.hh 7284
hb-wasm-api-list.hh Note: the array must be static defined since runtime will keep it after registration. Also not const, because it modifies it (sorts it). https://github.com/bytecodealliance/wasm-micro-runtime/blob/main/doc/export_native_api.md TODO Allocate this lazily in _hb_wasm_init(). 3950
hb-wasm-api-shape.hh Pre-conditions that make hb_shape_full() crash should be checked here. 2148
hb-wasm-api.cc 1465
hb-wasm-api.h #include "hb.h" HB_BEGIN_DECLS HB_END_DECLS 8063
hb-wasm-api.hh Check object type. 3826
hb-wasm-shape.cc Compile wasm-micro-runtime with: $ cmake -DWAMR_BUILD_MULTI_MODULE=1 -DWAMR_BUILD_REF_TYPES=1 -DWAMR_BUILD_FAST_JIT=1 $ make If you manage to build a wasm shared module successfully and want to use it, do the following: - Add -DWAMR_BUILD_MULTI_MODULE=1 to your cmake build for wasm-micro-runtime, - Remove the #define HB_WASM_NO_MODULES line below, - Install your shared module with name ending in .wasm in $(prefix)/$(libdir)/harfbuzz/wasm/ - Build your font's wasm code importing the shared modules with the desired name. This can be done eg.: __attribute__((import_module("graphite2"))) before each symbol in the shared-module's headers. - Try shaping your font and hope for the best... I haven't been able to get this to work since emcc's support for shared libraries requires support from the host that seems to be missing from wasm-micro-runtime? 12218
hb.h HB_H 1555
hb.hh Unknown pragma 17541
justify.py 7938
main.cc _png API is so easy to use unlike the below code, don't get confused 16856
meson.build 31989
moz.build 3185
ms-use
OT
relative_to.py 102
sample.py 1832
update-unicode-tables.make 2504
wasm