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 |
|
|