harfbuzz-ruby 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/CHANGELOG.md +12 -0
- data/LICENSE.txt +21 -0
- data/README.md +258 -0
- data/Rakefile +8 -0
- data/benchmark/shaping_bench.rb +77 -0
- data/examples/basic_shaping.rb +67 -0
- data/examples/glyph_outlines.rb +79 -0
- data/examples/opentype_features.rb +91 -0
- data/examples/render_svg.rb +112 -0
- data/examples/render_waterfall.rb +177 -0
- data/examples/variable_fonts.rb +73 -0
- data/lib/harfbuzz/aat/layout.rb +78 -0
- data/lib/harfbuzz/blob.rb +136 -0
- data/lib/harfbuzz/buffer.rb +497 -0
- data/lib/harfbuzz/c/aat/layout.rb +15 -0
- data/lib/harfbuzz/c/base.rb +114 -0
- data/lib/harfbuzz/c/blob.rb +23 -0
- data/lib/harfbuzz/c/buffer.rb +127 -0
- data/lib/harfbuzz/c/common.rb +39 -0
- data/lib/harfbuzz/c/draw.rb +22 -0
- data/lib/harfbuzz/c/enums.rb +146 -0
- data/lib/harfbuzz/c/face.rb +37 -0
- data/lib/harfbuzz/c/font.rb +88 -0
- data/lib/harfbuzz/c/font_funcs.rb +58 -0
- data/lib/harfbuzz/c/map.rb +28 -0
- data/lib/harfbuzz/c/ot/color.rb +32 -0
- data/lib/harfbuzz/c/ot/font.rb +7 -0
- data/lib/harfbuzz/c/ot/layout.rb +83 -0
- data/lib/harfbuzz/c/ot/math.rb +23 -0
- data/lib/harfbuzz/c/ot/meta.rb +10 -0
- data/lib/harfbuzz/c/ot/metrics.rb +16 -0
- data/lib/harfbuzz/c/ot/name.rb +13 -0
- data/lib/harfbuzz/c/ot/shape.rb +10 -0
- data/lib/harfbuzz/c/ot/var.rb +22 -0
- data/lib/harfbuzz/c/paint.rb +38 -0
- data/lib/harfbuzz/c/set.rb +42 -0
- data/lib/harfbuzz/c/shape.rb +11 -0
- data/lib/harfbuzz/c/shape_plan.rb +24 -0
- data/lib/harfbuzz/c/structs.rb +120 -0
- data/lib/harfbuzz/c/subset.rb +49 -0
- data/lib/harfbuzz/c/unicode.rb +40 -0
- data/lib/harfbuzz/c/version.rb +25 -0
- data/lib/harfbuzz/draw_funcs.rb +112 -0
- data/lib/harfbuzz/error.rb +27 -0
- data/lib/harfbuzz/face.rb +186 -0
- data/lib/harfbuzz/feature.rb +76 -0
- data/lib/harfbuzz/flags.rb +85 -0
- data/lib/harfbuzz/font.rb +404 -0
- data/lib/harfbuzz/font_funcs.rb +286 -0
- data/lib/harfbuzz/glyph_info.rb +35 -0
- data/lib/harfbuzz/glyph_position.rb +41 -0
- data/lib/harfbuzz/library.rb +98 -0
- data/lib/harfbuzz/map.rb +157 -0
- data/lib/harfbuzz/ot/color.rb +125 -0
- data/lib/harfbuzz/ot/font.rb +16 -0
- data/lib/harfbuzz/ot/layout.rb +583 -0
- data/lib/harfbuzz/ot/math.rb +111 -0
- data/lib/harfbuzz/ot/meta.rb +34 -0
- data/lib/harfbuzz/ot/metrics.rb +54 -0
- data/lib/harfbuzz/ot/name.rb +81 -0
- data/lib/harfbuzz/ot/shape.rb +34 -0
- data/lib/harfbuzz/ot/var.rb +116 -0
- data/lib/harfbuzz/paint_funcs.rb +134 -0
- data/lib/harfbuzz/set.rb +272 -0
- data/lib/harfbuzz/shape_plan.rb +115 -0
- data/lib/harfbuzz/shaping_result.rb +94 -0
- data/lib/harfbuzz/subset.rb +130 -0
- data/lib/harfbuzz/unicode_funcs.rb +201 -0
- data/lib/harfbuzz/variation.rb +49 -0
- data/lib/harfbuzz/version.rb +5 -0
- data/lib/harfbuzz-ffi.rb +4 -0
- data/lib/harfbuzz.rb +313 -0
- data/sig/harfbuzz.rbs +594 -0
- metadata +132 -0
data/sig/harfbuzz.rbs
ADDED
|
@@ -0,0 +1,594 @@
|
|
|
1
|
+
# RBS type signatures for harfbuzz-ruby
|
|
2
|
+
# HarfBuzz Ruby FFI bindings
|
|
3
|
+
|
|
4
|
+
module HarfBuzz
|
|
5
|
+
VERSION: String
|
|
6
|
+
|
|
7
|
+
# HarfBuzz library version
|
|
8
|
+
def self.version: () -> [Integer, Integer, Integer]
|
|
9
|
+
def self.version_string: () -> String
|
|
10
|
+
def self.version_atleast?: (Integer major, Integer minor, Integer micro) -> bool
|
|
11
|
+
def self.version_at_least?: (Integer major, Integer minor, Integer micro) -> bool
|
|
12
|
+
|
|
13
|
+
# OpenType tag conversions
|
|
14
|
+
def self.tag: (String | Symbol | Integer) -> Integer
|
|
15
|
+
def self.tag_to_s: (Integer tag) -> String
|
|
16
|
+
|
|
17
|
+
# Direction
|
|
18
|
+
def self.direction: (String str) -> Symbol
|
|
19
|
+
|
|
20
|
+
# Language
|
|
21
|
+
def self.language: (String str) -> FFI::Pointer
|
|
22
|
+
def self.default_language: () -> FFI::Pointer
|
|
23
|
+
def self.language_to_s: (FFI::Pointer lang) -> String
|
|
24
|
+
def self.language_matches?: (FFI::Pointer lang1, FFI::Pointer lang2) -> bool
|
|
25
|
+
|
|
26
|
+
# Script
|
|
27
|
+
def self.script: (String str) -> Integer
|
|
28
|
+
def self.script_from_tag: (Integer tag) -> Integer
|
|
29
|
+
def self.script_horizontal_direction: (Integer script) -> Symbol
|
|
30
|
+
|
|
31
|
+
# Color component extraction
|
|
32
|
+
def self.color_alpha: (Integer color) -> Integer
|
|
33
|
+
def self.color_red: (Integer color) -> Integer
|
|
34
|
+
def self.color_green: (Integer color) -> Integer
|
|
35
|
+
def self.color_blue: (Integer color) -> Integer
|
|
36
|
+
|
|
37
|
+
# Shaping
|
|
38
|
+
def self.shape: (Font font, Buffer buffer, ?Array[Feature] features, ?shapers: Array[String]?) -> void
|
|
39
|
+
def self.shapers: () -> Array[String]
|
|
40
|
+
def self.shape_text: (
|
|
41
|
+
String text,
|
|
42
|
+
font_path: String,
|
|
43
|
+
?features: Array[Feature | String] | Hash[Symbol | String, bool | Integer],
|
|
44
|
+
?direction: Symbol?,
|
|
45
|
+
?script: Integer?,
|
|
46
|
+
?language: String?
|
|
47
|
+
) -> ShapingResult
|
|
48
|
+
|
|
49
|
+
# Library path override
|
|
50
|
+
def self.library_path: () -> String
|
|
51
|
+
def self.library_path=: (String path) -> String
|
|
52
|
+
|
|
53
|
+
# Error hierarchy
|
|
54
|
+
class Error < StandardError; end
|
|
55
|
+
class AllocationError < Error; end
|
|
56
|
+
class InvalidArgumentError < Error; end
|
|
57
|
+
class FeatureParseError < Error; end
|
|
58
|
+
class VariationParseError < Error; end
|
|
59
|
+
class UnavailableError < Error; end
|
|
60
|
+
class SubsetError < Error; end
|
|
61
|
+
|
|
62
|
+
# hb_blob_t wrapper
|
|
63
|
+
class Blob
|
|
64
|
+
attr_reader ptr: FFI::Pointer
|
|
65
|
+
|
|
66
|
+
def initialize: (String data, ?mode: Symbol) -> void
|
|
67
|
+
def self.from_file: (String path) -> Blob
|
|
68
|
+
def self.from_file!: (String path) -> Blob
|
|
69
|
+
def self.empty: () -> Blob
|
|
70
|
+
def self.wrap_owned: (FFI::Pointer ptr) -> Blob
|
|
71
|
+
def self.wrap_borrowed: (FFI::Pointer ptr) -> Blob
|
|
72
|
+
|
|
73
|
+
def sub_blob: (Integer offset, Integer length) -> Blob
|
|
74
|
+
def writable_copy: () -> Blob?
|
|
75
|
+
def length: () -> Integer
|
|
76
|
+
def size: () -> Integer
|
|
77
|
+
def data: () -> String
|
|
78
|
+
def data_writable: () -> String?
|
|
79
|
+
def immutable?: () -> bool
|
|
80
|
+
def make_immutable!: () -> self
|
|
81
|
+
def inspect: () -> String
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# hb_buffer_t wrapper
|
|
85
|
+
class Buffer
|
|
86
|
+
attr_reader ptr: FFI::Pointer
|
|
87
|
+
|
|
88
|
+
def initialize: () -> void
|
|
89
|
+
def self.empty: () -> Buffer
|
|
90
|
+
def self.wrap_owned: (FFI::Pointer ptr) -> Buffer
|
|
91
|
+
def self.wrap_borrowed: (FFI::Pointer ptr) -> Buffer
|
|
92
|
+
def self.serialize_format: (String str) -> Symbol
|
|
93
|
+
def self.serialize_format_name: (Symbol fmt) -> String
|
|
94
|
+
def self.serialize_formats: () -> Array[String]
|
|
95
|
+
|
|
96
|
+
def create_similar: () -> Buffer
|
|
97
|
+
def reset: () -> self
|
|
98
|
+
def clear: () -> self
|
|
99
|
+
def pre_allocate: (Integer size) -> bool
|
|
100
|
+
def allocation_successful?: () -> bool
|
|
101
|
+
|
|
102
|
+
def add: (Integer codepoint, Integer cluster) -> self
|
|
103
|
+
def add_utf8: (String text, ?item_offset: Integer, ?item_length: Integer) -> self
|
|
104
|
+
def add_utf16: (String text, ?item_offset: Integer, ?item_length: Integer) -> self
|
|
105
|
+
def add_utf32: (String text, ?item_offset: Integer, ?item_length: Integer) -> self
|
|
106
|
+
def add_latin1: (String text, ?item_offset: Integer, ?item_length: Integer) -> self
|
|
107
|
+
def add_codepoints: (Array[Integer] codepoints, ?item_offset: Integer, ?item_length: Integer) -> self
|
|
108
|
+
def append: (Buffer other, Integer start, Integer end_) -> self
|
|
109
|
+
|
|
110
|
+
def content_type: () -> Symbol
|
|
111
|
+
def content_type=: (Symbol type) -> void
|
|
112
|
+
def direction: () -> Symbol
|
|
113
|
+
def direction=: (Symbol dir) -> void
|
|
114
|
+
def script: () -> Integer
|
|
115
|
+
def script=: (Integer script) -> void
|
|
116
|
+
def language: () -> FFI::Pointer
|
|
117
|
+
def language=: (FFI::Pointer lang) -> void
|
|
118
|
+
def unicode_funcs: () -> UnicodeFuncs
|
|
119
|
+
def unicode_funcs=: (UnicodeFuncs ufuncs) -> void
|
|
120
|
+
def segment_properties: () -> untyped
|
|
121
|
+
def segment_properties=: (untyped props) -> void
|
|
122
|
+
def guess_segment_properties: () -> self
|
|
123
|
+
|
|
124
|
+
def flags: () -> Integer
|
|
125
|
+
def flags=: (Integer flags) -> void
|
|
126
|
+
def cluster_level: () -> Symbol
|
|
127
|
+
def cluster_level=: (Symbol level) -> void
|
|
128
|
+
def replacement_codepoint: () -> Integer
|
|
129
|
+
def replacement_codepoint=: (Integer cp) -> void
|
|
130
|
+
def invisible_glyph: () -> Integer
|
|
131
|
+
def invisible_glyph=: (Integer glyph) -> void
|
|
132
|
+
def not_found_glyph: () -> Integer
|
|
133
|
+
def not_found_glyph=: (Integer glyph) -> void
|
|
134
|
+
def random_state: () -> Integer
|
|
135
|
+
def random_state=: (Integer state) -> void
|
|
136
|
+
|
|
137
|
+
def length: () -> Integer
|
|
138
|
+
def size: () -> Integer
|
|
139
|
+
def length=: (Integer len) -> void
|
|
140
|
+
|
|
141
|
+
def glyph_infos: () -> Array[GlyphInfo]
|
|
142
|
+
def glyph_positions: () -> Array[GlyphPosition]
|
|
143
|
+
def has_positions?: () -> bool
|
|
144
|
+
|
|
145
|
+
def normalize_glyphs: () -> self
|
|
146
|
+
def reverse: () -> self
|
|
147
|
+
def reverse_range: (Integer start, Integer end_) -> self
|
|
148
|
+
def reverse_clusters: () -> self
|
|
149
|
+
|
|
150
|
+
def on_message: () { (String message) -> void } -> self
|
|
151
|
+
def diff: (Buffer other, Integer dottedcircle_glyph, Integer position_fuzz) -> Integer
|
|
152
|
+
|
|
153
|
+
def serialize: (?font: Font?, ?format: Symbol, ?flags: Integer) -> String
|
|
154
|
+
def serialize_glyphs: (?font: Font?, ?format: Symbol, ?flags: Integer) -> String
|
|
155
|
+
def serialize_unicode: (?format: Symbol, ?flags: Integer) -> String
|
|
156
|
+
def deserialize_glyphs: (String str, ?font: Font?, ?format: Symbol) -> bool
|
|
157
|
+
def deserialize_unicode: (String str, ?format: Symbol) -> bool
|
|
158
|
+
|
|
159
|
+
def inspect: () -> String
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
# hb_face_t wrapper
|
|
163
|
+
class Face
|
|
164
|
+
attr_reader ptr: FFI::Pointer
|
|
165
|
+
|
|
166
|
+
def initialize: (Blob blob, ?Integer index) -> void
|
|
167
|
+
def self.for_tables: () { (Integer tag) -> Blob? } -> Face
|
|
168
|
+
def self.empty: () -> Face
|
|
169
|
+
def self.count: (Blob blob) -> Integer
|
|
170
|
+
def self.wrap_owned: (FFI::Pointer ptr) -> Face
|
|
171
|
+
def self.wrap_borrowed: (FFI::Pointer ptr) -> Face
|
|
172
|
+
|
|
173
|
+
def index: () -> Integer
|
|
174
|
+
def index=: (Integer idx) -> void
|
|
175
|
+
def upem: () -> Integer
|
|
176
|
+
def upem=: (Integer u) -> void
|
|
177
|
+
def glyph_count: () -> Integer
|
|
178
|
+
def glyph_count=: (Integer count) -> void
|
|
179
|
+
def table_tags: () -> Array[Integer]
|
|
180
|
+
def table: (Integer tag) -> Blob
|
|
181
|
+
def reference_table: (Integer tag) -> Blob
|
|
182
|
+
def blob: () -> Blob
|
|
183
|
+
def unicodes: () -> Set
|
|
184
|
+
def nominal_glyph_mapping: () -> Map
|
|
185
|
+
def variation_selectors: () -> Set
|
|
186
|
+
def variation_unicodes: (Integer selector) -> Set
|
|
187
|
+
def immutable?: () -> bool
|
|
188
|
+
def make_immutable!: () -> self
|
|
189
|
+
def inspect: () -> String
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
# hb_font_t wrapper
|
|
193
|
+
class Font
|
|
194
|
+
attr_reader ptr: FFI::Pointer
|
|
195
|
+
|
|
196
|
+
def initialize: (Face face) -> void
|
|
197
|
+
def self.empty: () -> Font
|
|
198
|
+
def self.wrap_owned: (FFI::Pointer ptr) -> Font
|
|
199
|
+
def self.wrap_borrowed: (FFI::Pointer ptr) -> Font
|
|
200
|
+
|
|
201
|
+
def face: () -> Face
|
|
202
|
+
def scale: () -> [Integer, Integer]
|
|
203
|
+
def scale=: ([Integer, Integer] xy) -> void
|
|
204
|
+
def ppem: () -> [Integer, Integer]
|
|
205
|
+
def ppem=: ([Integer, Integer] xy) -> void
|
|
206
|
+
def ptem: () -> Float
|
|
207
|
+
def ptem=: (Float ptem) -> void
|
|
208
|
+
def synthetic_bold: () -> [Float, Float, bool]
|
|
209
|
+
def set_synthetic_bold: (Float x_embolden, Float y_embolden, bool in_place) -> void
|
|
210
|
+
def synthetic_slant: () -> Float
|
|
211
|
+
def synthetic_slant=: (Float slant) -> void
|
|
212
|
+
def variations=: (Array[Variation] variations) -> void
|
|
213
|
+
def set_variation: (Integer tag, Float value) -> void
|
|
214
|
+
def var_coords_design: () -> Array[Float]
|
|
215
|
+
def var_coords_normalized: () -> Array[Integer]
|
|
216
|
+
|
|
217
|
+
def glyph_name: (Integer glyph) -> String?
|
|
218
|
+
def glyph_from_name: (String name) -> Integer?
|
|
219
|
+
def nominal_glyph: (Integer unicode) -> Integer?
|
|
220
|
+
def nominal_glyphs: (Array[Integer] unicodes) -> Array[Integer?]
|
|
221
|
+
def glyph_h_advance: (Integer glyph) -> Integer
|
|
222
|
+
def glyph_v_advance: (Integer glyph) -> Integer
|
|
223
|
+
def glyph_h_advances: (Array[Integer] glyphs) -> Array[Integer]
|
|
224
|
+
def glyph_v_advances: (Array[Integer] glyphs) -> Array[Integer]
|
|
225
|
+
def glyph_h_origin: (Integer glyph) -> [Integer, Integer]?
|
|
226
|
+
def glyph_v_origin: (Integer glyph) -> [Integer, Integer]?
|
|
227
|
+
def glyph_extents: (Integer glyph) -> Hash[Symbol, Integer]?
|
|
228
|
+
def glyph_contour_point: (Integer glyph, Integer point_index) -> [Integer, Integer]?
|
|
229
|
+
|
|
230
|
+
def draw_glyph: (Integer glyph, DrawFuncs draw_funcs, ?untyped draw_data) -> void
|
|
231
|
+
def paint_glyph: (Integer glyph, PaintFuncs paint_funcs, ?palette_index: Integer, ?foreground: Integer) -> void
|
|
232
|
+
def funcs=: (FontFuncs funcs) -> void
|
|
233
|
+
|
|
234
|
+
def immutable?: () -> bool
|
|
235
|
+
def make_immutable!: () -> self
|
|
236
|
+
def inspect: () -> String
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
# hb_map_t wrapper
|
|
240
|
+
class Map
|
|
241
|
+
include Enumerable[nil]
|
|
242
|
+
|
|
243
|
+
attr_reader ptr: FFI::Pointer
|
|
244
|
+
|
|
245
|
+
def initialize: () -> void
|
|
246
|
+
def self.empty: () -> Map
|
|
247
|
+
def self.wrap_owned: (FFI::Pointer ptr) -> Map
|
|
248
|
+
def self.wrap_borrowed: (FFI::Pointer ptr) -> Map
|
|
249
|
+
|
|
250
|
+
def []: (Integer key) -> Integer
|
|
251
|
+
def []=: (Integer key, Integer value) -> void
|
|
252
|
+
def get: (Integer key) -> Integer
|
|
253
|
+
def set: (Integer key, Integer value) -> void
|
|
254
|
+
def has?: (Integer key) -> bool
|
|
255
|
+
def delete: (Integer key) -> void
|
|
256
|
+
def clear: () -> void
|
|
257
|
+
def is_empty?: () -> bool
|
|
258
|
+
def length: () -> Integer
|
|
259
|
+
def size: () -> Integer
|
|
260
|
+
def allocation_successful?: () -> bool
|
|
261
|
+
def each: () { ([Integer, Integer] pair) -> void } -> void
|
|
262
|
+
| () -> Enumerator[[Integer, Integer], void]
|
|
263
|
+
def to_h: () -> Hash[Integer, Integer]
|
|
264
|
+
def update: (Map other) -> void
|
|
265
|
+
def replace: (Map other) -> void
|
|
266
|
+
def ==: (untyped other) -> bool
|
|
267
|
+
def inspect: () -> String
|
|
268
|
+
end
|
|
269
|
+
|
|
270
|
+
# hb_set_t wrapper
|
|
271
|
+
class Set
|
|
272
|
+
include Enumerable[Integer]
|
|
273
|
+
|
|
274
|
+
attr_reader ptr: FFI::Pointer
|
|
275
|
+
|
|
276
|
+
HB_SET_VALUE_INVALID: Integer
|
|
277
|
+
|
|
278
|
+
def initialize: () -> void
|
|
279
|
+
def self.empty: () -> Set
|
|
280
|
+
def self.wrap_owned: (FFI::Pointer ptr) -> Set
|
|
281
|
+
def self.wrap_borrowed: (FFI::Pointer ptr) -> Set
|
|
282
|
+
|
|
283
|
+
def add: (Integer cp) -> void
|
|
284
|
+
def add_range: (Integer first, Integer last) -> void
|
|
285
|
+
def del: (Integer cp) -> void
|
|
286
|
+
def del_range: (Integer first, Integer last) -> void
|
|
287
|
+
def has?: (Integer cp) -> bool
|
|
288
|
+
def clear: () -> void
|
|
289
|
+
def is_empty?: () -> bool
|
|
290
|
+
def length: () -> Integer
|
|
291
|
+
def size: () -> Integer
|
|
292
|
+
def allocation_successful?: () -> bool
|
|
293
|
+
def min: () -> Integer?
|
|
294
|
+
def max: () -> Integer?
|
|
295
|
+
def each: () { (Integer cp) -> void } -> void
|
|
296
|
+
| () -> Enumerator[Integer, void]
|
|
297
|
+
def each_range: () { ([Integer, Integer] range) -> void } -> void
|
|
298
|
+
| () -> Enumerator[[Integer, Integer], void]
|
|
299
|
+
def reverse_each: () { (Integer cp) -> void } -> void
|
|
300
|
+
| () -> Enumerator[Integer, void]
|
|
301
|
+
def to_a: () -> Array[Integer]
|
|
302
|
+
def union: (Set other) -> void
|
|
303
|
+
def intersect: (Set other) -> void
|
|
304
|
+
def subtract: (Set other) -> void
|
|
305
|
+
def symmetric_difference: (Set other) -> void
|
|
306
|
+
def subset?: (Set other) -> bool
|
|
307
|
+
def superset?: (Set other) -> bool
|
|
308
|
+
def ==: (untyped other) -> bool
|
|
309
|
+
def inspect: () -> String
|
|
310
|
+
end
|
|
311
|
+
|
|
312
|
+
# OpenType feature
|
|
313
|
+
class Feature
|
|
314
|
+
HB_FEATURE_GLOBAL_START: Integer
|
|
315
|
+
HB_FEATURE_GLOBAL_END: Integer
|
|
316
|
+
|
|
317
|
+
def initialize: (untyped struct) -> void
|
|
318
|
+
def self.from_string: (String str) -> Feature
|
|
319
|
+
def self.from_hash: (Hash[Symbol | String, bool | Integer] hash) -> Array[Feature]
|
|
320
|
+
|
|
321
|
+
def tag: () -> Integer
|
|
322
|
+
def value: () -> Integer
|
|
323
|
+
def start: () -> Integer
|
|
324
|
+
def end_index: () -> Integer
|
|
325
|
+
def to_struct: () -> untyped
|
|
326
|
+
def to_s: () -> String
|
|
327
|
+
def inspect: () -> String
|
|
328
|
+
end
|
|
329
|
+
|
|
330
|
+
# Variable font variation axis value
|
|
331
|
+
class Variation
|
|
332
|
+
def initialize: (untyped struct) -> void
|
|
333
|
+
def self.from_string: (String str) -> Variation
|
|
334
|
+
|
|
335
|
+
def tag: () -> Integer
|
|
336
|
+
def value: () -> Float
|
|
337
|
+
def to_struct: () -> untyped
|
|
338
|
+
def to_s: () -> String
|
|
339
|
+
def inspect: () -> String
|
|
340
|
+
end
|
|
341
|
+
|
|
342
|
+
# Glyph info after shaping
|
|
343
|
+
class GlyphInfo
|
|
344
|
+
def initialize: (FFI::Pointer ptr) -> void
|
|
345
|
+
def glyph_id: () -> Integer
|
|
346
|
+
def cluster: () -> Integer
|
|
347
|
+
def inspect: () -> String
|
|
348
|
+
end
|
|
349
|
+
|
|
350
|
+
# Glyph position after shaping
|
|
351
|
+
class GlyphPosition
|
|
352
|
+
def initialize: (FFI::Pointer ptr) -> void
|
|
353
|
+
def x_advance: () -> Integer
|
|
354
|
+
def y_advance: () -> Integer
|
|
355
|
+
def x_offset: () -> Integer
|
|
356
|
+
def y_offset: () -> Integer
|
|
357
|
+
def inspect: () -> String
|
|
358
|
+
end
|
|
359
|
+
|
|
360
|
+
# High-level shaping result
|
|
361
|
+
class ShapingResult
|
|
362
|
+
include Enumerable[nil]
|
|
363
|
+
|
|
364
|
+
attr_reader buffer: Buffer
|
|
365
|
+
attr_reader font: Font
|
|
366
|
+
|
|
367
|
+
def initialize: (buffer: Buffer, font: Font) -> void
|
|
368
|
+
def glyph_infos: () -> Array[GlyphInfo]
|
|
369
|
+
def glyph_positions: () -> Array[GlyphPosition]
|
|
370
|
+
def each: () { (GlyphInfo info, GlyphPosition pos) -> void } -> void
|
|
371
|
+
def length: () -> Integer
|
|
372
|
+
def size: () -> Integer
|
|
373
|
+
def total_advance: () -> [Integer, Integer]
|
|
374
|
+
def to_svg_path: () -> String
|
|
375
|
+
def inspect: () -> String
|
|
376
|
+
end
|
|
377
|
+
|
|
378
|
+
# hb_draw_funcs_t wrapper — glyph outline callbacks
|
|
379
|
+
class DrawFuncs
|
|
380
|
+
attr_reader ptr: FFI::Pointer
|
|
381
|
+
|
|
382
|
+
def initialize: () -> void
|
|
383
|
+
def self.wrap_owned: (FFI::Pointer ptr) -> DrawFuncs
|
|
384
|
+
def self.wrap_borrowed: (FFI::Pointer ptr) -> DrawFuncs
|
|
385
|
+
|
|
386
|
+
def on_move_to: () { (Float x, Float y, untyped draw_state) -> void } -> void
|
|
387
|
+
def on_line_to: () { (Float x, Float y, untyped draw_state) -> void } -> void
|
|
388
|
+
def on_quadratic_to: () { (Float cx, Float cy, Float x, Float y, untyped draw_state) -> void } -> void
|
|
389
|
+
def on_cubic_to: () { (Float c1x, Float c1y, Float c2x, Float c2y, Float x, Float y, untyped draw_state) -> void } -> void
|
|
390
|
+
def on_close_path: () { (untyped draw_state) -> void } -> void
|
|
391
|
+
def immutable?: () -> bool
|
|
392
|
+
def make_immutable!: () -> self
|
|
393
|
+
def inspect: () -> String
|
|
394
|
+
end
|
|
395
|
+
|
|
396
|
+
# hb_paint_funcs_t wrapper — color glyph paint callbacks
|
|
397
|
+
class PaintFuncs
|
|
398
|
+
attr_reader ptr: FFI::Pointer
|
|
399
|
+
|
|
400
|
+
def initialize: () -> void
|
|
401
|
+
def self.wrap_owned: (FFI::Pointer ptr) -> PaintFuncs
|
|
402
|
+
def self.wrap_borrowed: (FFI::Pointer ptr) -> PaintFuncs
|
|
403
|
+
|
|
404
|
+
def immutable?: () -> bool
|
|
405
|
+
def make_immutable!: () -> self
|
|
406
|
+
def inspect: () -> String
|
|
407
|
+
end
|
|
408
|
+
|
|
409
|
+
# hb_font_funcs_t wrapper — custom font function overrides
|
|
410
|
+
class FontFuncs
|
|
411
|
+
attr_reader ptr: FFI::Pointer
|
|
412
|
+
|
|
413
|
+
def initialize: () -> void
|
|
414
|
+
def self.empty: () -> FontFuncs
|
|
415
|
+
def self.wrap_owned: (FFI::Pointer ptr) -> FontFuncs
|
|
416
|
+
def self.wrap_borrowed: (FFI::Pointer ptr) -> FontFuncs
|
|
417
|
+
|
|
418
|
+
def immutable?: () -> bool
|
|
419
|
+
def make_immutable!: () -> self
|
|
420
|
+
def inspect: () -> String
|
|
421
|
+
end
|
|
422
|
+
|
|
423
|
+
# hb_unicode_funcs_t wrapper
|
|
424
|
+
class UnicodeFuncs
|
|
425
|
+
attr_reader ptr: FFI::Pointer
|
|
426
|
+
|
|
427
|
+
def initialize: () -> void
|
|
428
|
+
def self.default: () -> UnicodeFuncs
|
|
429
|
+
def self.empty: () -> UnicodeFuncs
|
|
430
|
+
def self.wrap_owned: (FFI::Pointer ptr) -> UnicodeFuncs
|
|
431
|
+
def self.wrap_borrowed: (FFI::Pointer ptr) -> UnicodeFuncs
|
|
432
|
+
|
|
433
|
+
def general_category: (Integer codepoint) -> Symbol
|
|
434
|
+
def combining_class: (Integer codepoint) -> Integer
|
|
435
|
+
def mirroring: (Integer codepoint) -> Integer
|
|
436
|
+
def script: (Integer codepoint) -> Integer
|
|
437
|
+
def compose: (Integer a, Integer b) -> Integer?
|
|
438
|
+
def decompose: (Integer ab) -> [Integer, Integer]?
|
|
439
|
+
def immutable?: () -> bool
|
|
440
|
+
def make_immutable!: () -> self
|
|
441
|
+
def inspect: () -> String
|
|
442
|
+
end
|
|
443
|
+
|
|
444
|
+
# hb_shape_plan_t wrapper
|
|
445
|
+
class ShapePlan
|
|
446
|
+
attr_reader ptr: FFI::Pointer
|
|
447
|
+
|
|
448
|
+
def initialize: (Face face, untyped props, ?Array[Feature] features, ?Array[String]? shapers) -> void
|
|
449
|
+
def self.create_cached: (Face face, untyped props, ?Array[Feature] features, ?Array[String]? shapers) -> ShapePlan
|
|
450
|
+
def self.empty: () -> ShapePlan
|
|
451
|
+
def self.wrap_owned: (FFI::Pointer ptr) -> ShapePlan
|
|
452
|
+
def self.wrap_borrowed: (FFI::Pointer ptr) -> ShapePlan
|
|
453
|
+
|
|
454
|
+
def execute: (Font font, Buffer buffer, ?Array[Feature] features) -> bool
|
|
455
|
+
def shaper: () -> String
|
|
456
|
+
def inspect: () -> String
|
|
457
|
+
end
|
|
458
|
+
|
|
459
|
+
# OpenType namespace
|
|
460
|
+
module OT
|
|
461
|
+
module Layout
|
|
462
|
+
def self.has_glyph_classes?: (Face face) -> bool
|
|
463
|
+
def self.glyph_class: (Face face, Integer glyph) -> Symbol
|
|
464
|
+
def self.glyphs_in_class: (Face face, Symbol klass) -> Set
|
|
465
|
+
def self.has_math_kern?: (Face face, Integer glyph, Symbol kern_type) -> bool
|
|
466
|
+
def self.script_tags: (Face face, Symbol table) -> Array[Integer]
|
|
467
|
+
def self.language_tags: (Face face, Symbol table, Integer script_index) -> Array[Integer]
|
|
468
|
+
def self.feature_tags: (Face face, Symbol table, Integer script_index, Integer language_index) -> Array[Integer]
|
|
469
|
+
def self.lookup_count: (Face face, Symbol table) -> Integer
|
|
470
|
+
def self.feature_count: (Face face, Symbol table) -> Integer
|
|
471
|
+
def self.script_count: (Face face, Symbol table) -> Integer
|
|
472
|
+
def self.tags_to_script_and_language: (Face face, Symbol table, Integer script_tag, Integer language_tag) -> [Integer, Integer]
|
|
473
|
+
def self.tag_to_script: (Integer tag) -> Integer
|
|
474
|
+
def self.tag_to_language: (Integer tag) -> Integer
|
|
475
|
+
end
|
|
476
|
+
|
|
477
|
+
module Color
|
|
478
|
+
def self.has_palettes?: (Face face) -> bool
|
|
479
|
+
def self.palette_count: (Face face) -> Integer
|
|
480
|
+
def self.color_count: (Face face) -> Integer
|
|
481
|
+
def self.palette_name_id: (Face face, Integer palette_index) -> Integer
|
|
482
|
+
def self.palette_flags: (Face face, Integer palette_index) -> Integer
|
|
483
|
+
def self.palette_colors: (Face face, Integer palette_index) -> Array[Integer]
|
|
484
|
+
def self.has_layers?: (Face face) -> bool
|
|
485
|
+
def self.glyph_layer_count: (Face face, Integer glyph) -> Integer
|
|
486
|
+
def self.glyph_layers: (Face face, Integer glyph) -> Array[Hash[Symbol, Integer]]
|
|
487
|
+
def self.has_svg?: (Face face) -> bool
|
|
488
|
+
def self.has_png?: (Face face) -> bool
|
|
489
|
+
def self.has_paint?: (Face face) -> bool
|
|
490
|
+
end
|
|
491
|
+
|
|
492
|
+
module Math
|
|
493
|
+
def self.has_data?: (Face face) -> bool
|
|
494
|
+
def self.constant: (Font font, Symbol constant) -> Integer
|
|
495
|
+
def self.glyph_italics_correction: (Font font, Integer glyph) -> Integer
|
|
496
|
+
def self.glyph_top_accent_attachment: (Font font, Integer glyph) -> Integer
|
|
497
|
+
def self.is_glyph_extended_shape: (Face face, Integer glyph) -> bool
|
|
498
|
+
def self.glyph_kerning: (Font font, Integer glyph, Symbol kern_type, Integer correction_height) -> Integer
|
|
499
|
+
def self.glyph_variant_count: (Font font, Integer glyph, Symbol direction) -> Integer
|
|
500
|
+
def self.glyph_assembly_count: (Font font, Integer glyph, Symbol direction) -> Integer
|
|
501
|
+
end
|
|
502
|
+
|
|
503
|
+
module Meta
|
|
504
|
+
def self.entry_tags: (Face face) -> Array[Integer]
|
|
505
|
+
def self.entry: (Face face, Integer tag) -> Blob
|
|
506
|
+
end
|
|
507
|
+
|
|
508
|
+
module Metrics
|
|
509
|
+
def self.x_height: (Font font, ?FFI::Pointer? language) -> Integer?
|
|
510
|
+
def self.cap_height: (Font font, ?FFI::Pointer? language) -> Integer?
|
|
511
|
+
def self.ascender: (Font font, ?FFI::Pointer? language) -> Integer?
|
|
512
|
+
def self.descender: (Font font, ?FFI::Pointer? language) -> Integer?
|
|
513
|
+
def self.underline_position: (Font font, ?FFI::Pointer? language) -> Integer?
|
|
514
|
+
def self.underline_thickness: (Font font, ?FFI::Pointer? language) -> Integer?
|
|
515
|
+
def self.strikeout_position: (Font font, ?FFI::Pointer? language) -> Integer?
|
|
516
|
+
def self.strikeout_thickness: (Font font, ?FFI::Pointer? language) -> Integer?
|
|
517
|
+
def self.variation: (Font font, Symbol metric, ?FFI::Pointer? language) -> Integer?
|
|
518
|
+
def self.x_variation: (Font font, Symbol metric) -> Integer
|
|
519
|
+
def self.y_variation: (Font font, Symbol metric) -> Integer
|
|
520
|
+
end
|
|
521
|
+
|
|
522
|
+
module Name
|
|
523
|
+
def self.name_count: (Face face) -> Integer
|
|
524
|
+
def self.name_ids: (Face face) -> Array[Integer]
|
|
525
|
+
def self.get_utf8: (Face face, Integer name_id, FFI::Pointer language) -> String?
|
|
526
|
+
def self.get_utf16: (Face face, Integer name_id, FFI::Pointer language) -> String?
|
|
527
|
+
def self.get_utf32: (Face face, Integer name_id, FFI::Pointer language) -> String?
|
|
528
|
+
end
|
|
529
|
+
|
|
530
|
+
module Shape
|
|
531
|
+
def self.glyphs_closure: (Font font, Buffer buffer, ?Array[Feature] features) -> Set
|
|
532
|
+
def self.plan_collect_lookups: (Face face, Integer script_index, Integer language_index, Integer feature_index, Symbol table) -> Set
|
|
533
|
+
end
|
|
534
|
+
|
|
535
|
+
module Var
|
|
536
|
+
def self.has_data?: (Face face) -> bool
|
|
537
|
+
def self.axis_count: (Face face) -> Integer
|
|
538
|
+
def self.axis_infos: (Face face) -> Array[Hash[Symbol, untyped]]
|
|
539
|
+
def self.find_axis_info: (Face face, Integer axis_tag) -> Hash[Symbol, untyped]?
|
|
540
|
+
def self.named_instance_count: (Face face) -> Integer
|
|
541
|
+
def self.named_instance_design_coords: (Face face, Integer instance_index) -> Array[Float]
|
|
542
|
+
def self.named_instance_named_coords: (Face face, Integer instance_index) -> Array[Integer]
|
|
543
|
+
def self.named_instance_subfamily_name_id: (Face face, Integer instance_index) -> Integer
|
|
544
|
+
def self.named_instance_postscript_name_id: (Face face, Integer instance_index) -> Integer
|
|
545
|
+
def self.normalize_variations: (Face face, Array[Variation] variations) -> Array[Integer]
|
|
546
|
+
def self.normalize_coords: (Face face, Array[Float] design_coords) -> Array[Integer]
|
|
547
|
+
end
|
|
548
|
+
|
|
549
|
+
module Font
|
|
550
|
+
def self.set_funcs: (::HarfBuzz::Font font) -> void
|
|
551
|
+
end
|
|
552
|
+
end
|
|
553
|
+
|
|
554
|
+
# Apple Advanced Typography namespace
|
|
555
|
+
module AAT
|
|
556
|
+
module Layout
|
|
557
|
+
def self.has_feature?: (Face face, Integer feature_type, Integer feature_selector) -> bool
|
|
558
|
+
def self.feature_count: (Face face) -> Integer
|
|
559
|
+
def self.feature_infos: (Face face) -> Array[Hash[Symbol, untyped]]
|
|
560
|
+
def self.language_feature_count: (Face face) -> Integer
|
|
561
|
+
end
|
|
562
|
+
end
|
|
563
|
+
|
|
564
|
+
# Font subsetting
|
|
565
|
+
module Subset
|
|
566
|
+
def self.available?: () -> bool
|
|
567
|
+
def self.subset: (::HarfBuzz::Face face, Input input) -> ::HarfBuzz::Face
|
|
568
|
+
|
|
569
|
+
class Input
|
|
570
|
+
attr_reader ptr: FFI::Pointer
|
|
571
|
+
|
|
572
|
+
def initialize: () -> void
|
|
573
|
+
def unicode_set: () -> ::HarfBuzz::Set
|
|
574
|
+
def glyph_set: () -> ::HarfBuzz::Set
|
|
575
|
+
def flags: () -> Integer
|
|
576
|
+
def flags=: (Integer flags) -> void
|
|
577
|
+
def inspect: () -> String
|
|
578
|
+
end
|
|
579
|
+
|
|
580
|
+
class Plan
|
|
581
|
+
attr_reader ptr: FFI::Pointer
|
|
582
|
+
|
|
583
|
+
def initialize: (::HarfBuzz::Face face, Input input) -> void
|
|
584
|
+
def execute: () -> ::HarfBuzz::Face
|
|
585
|
+
def old_to_new_glyph_mapping: () -> ::HarfBuzz::Map
|
|
586
|
+
def new_to_old_glyph_mapping: () -> ::HarfBuzz::Map
|
|
587
|
+
def unicode_to_old_glyph_mapping: () -> ::HarfBuzz::Map
|
|
588
|
+
def inspect: () -> String
|
|
589
|
+
end
|
|
590
|
+
end
|
|
591
|
+
end
|
|
592
|
+
|
|
593
|
+
# Compatibility alias
|
|
594
|
+
Harfbuzz = HarfBuzz
|