Documentation
¶
Index ¶
- Constants
- Variables
- func EmbeddingLevels(str []rune) []int
- func IsNewline(r rune) bool
- func IsParagraph(r rune) bool
- func IsParagraphSeparator(r rune) bool
- func IsSpace(r rune) bool
- func IsSpacelessScript(script Script) bool
- func IsVerticalScript(script Script) bool
- func LinebreakGlyphs(sfnt *font.SFNT, size float64, glyphs []Glyph, width float64, opts Options, ...) [][]Glyph
- func SpaceGlue(glyphs []Glyph, i int) (float64, float64, float64)
- type Align
- type Break
- type Breakpoint
- type Breakpoints
- type Direction
- type Glyph
- type Item
- type Items
- type Linebreaker
- type Options
- type Rotation
- type Script
- type ScriptItem
- type Shaper
- type Type
Constants ¶
const ( DirectionInvalid Direction = 0 LeftToRight = Direction(harfbuzz.LeftToRight) RightToLeft = Direction(harfbuzz.RightToLeft) TopToBottom = Direction(harfbuzz.TopToBottom) BottomToTop = Direction(harfbuzz.BottomToTop) )
see Direction
const ( ScriptInvalid Script = 0 ScriptCommon = Script(language.Common) ScriptInherited = Script(language.Inherited) ScriptUnknown = Script(language.Unknown) Arabic = Script(language.Arabic) Armenian = Script(language.Armenian) Bengali = Script(language.Bengali) Cyrillic = Script(language.Cyrillic) Devanagari = Script(language.Devanagari) Georgian = Script(language.Georgian) Greek = Script(language.Greek) Gujarati = Script(language.Gujarati) Gurmukhi = Script(language.Gurmukhi) Hangul = Script(language.Hangul) Han = Script(language.Han) Hebrew = Script(language.Hebrew) Hiragana = Script(language.Hiragana) Kannada = Script(language.Kannada) Katakana = Script(language.Katakana) Lao = Script(language.Lao) Latin = Script(language.Latin) Malayalam = Script(language.Malayalam) Oriya = Script(language.Oriya) Tamil = Script(language.Tamil) Telugu = Script(language.Telugu) Thai = Script(language.Thai) Tibetan = Script(language.Tibetan) Bopomofo = Script(language.Bopomofo) Braille = Script(language.Braille) CanadianSyllabics = Script(language.Canadian_Aboriginal) Cherokee = Script(language.Cherokee) Ethiopic = Script(language.Ethiopic) Khmer = Script(language.Khmer) Mongolian = Script(language.Mongolian) Myanmar = Script(language.Myanmar) Ogham = Script(language.Ogham) Runic = Script(language.Runic) Sinhala = Script(language.Sinhala) Syriac = Script(language.Syriac) Thaana = Script(language.Thaana) Yi = Script(language.Yi) Deseret = Script(language.Deseret) Gothic = Script(language.Gothic) OldItalic = Script(language.Old_Italic) Buhid = Script(language.Buhid) Hanunoo = Script(language.Hanunoo) Tagalog = Script(language.Tagalog) Tagbanwa = Script(language.Tagbanwa) Cypriot = Script(language.Cypriot) Limbu = Script(language.Limbu) LinearB = Script(language.Linear_B) Osmanya = Script(language.Osmanya) Shavian = Script(language.Shavian) TaiLe = Script(language.Tai_Le) Ugaritic = Script(language.Ugaritic) Buginese = Script(language.Buginese) Coptic = Script(language.Coptic) Glagolitic = Script(language.Glagolitic) Kharoshthi = Script(language.Kharoshthi) NewTaiLue = Script(language.New_Tai_Lue) OldPersian = Script(language.Old_Persian) SylotiNagri = Script(language.Syloti_Nagri) Tifinagh = Script(language.Tifinagh) Balinese = Script(language.Balinese) Cuneiform = Script(language.Cuneiform) Nko = Script(language.Nko) PhagsPa = Script(language.Phags_Pa) Phoenician = Script(language.Phoenician) Carian = Script(language.Carian) Cham = Script(language.Cham) KayahLi = Script(language.Kayah_Li) Lepcha = Script(language.Lepcha) Lycian = Script(language.Lycian) Lydian = Script(language.Lydian) OlChiki = Script(language.Ol_Chiki) Rejang = Script(language.Rejang) Saurashtra = Script(language.Saurashtra) Sundanese = Script(language.Sundanese) Vai = Script(language.Vai) Avestan = Script(language.Avestan) Bamum = Script(language.Bamum) EgyptianHieroglyphs = Script(language.Egyptian_Hieroglyphs) ImperialAramaic = Script(language.Imperial_Aramaic) InscriptionalPahlavi = Script(language.Inscriptional_Pahlavi) InscriptionalParthian = Script(language.Inscriptional_Parthian) Javanese = Script(language.Javanese) Kaithi = Script(language.Kaithi) Lisu = Script(language.Lisu) MeeteiMayek = Script(language.Meetei_Mayek) OldSouthArabian = Script(language.Old_South_Arabian) OldTurkic = Script(language.Old_Turkic) Samaritan = Script(language.Samaritan) TaiTham = Script(language.Tai_Tham) TaiViet = Script(language.Tai_Viet) Batak = Script(language.Batak) Brahmi = Script(language.Brahmi) Mandaic = Script(language.Mandaic) Chakma = Script(language.Chakma) MeroiticCursive = Script(language.Meroitic_Cursive) MeroiticHieroglyphs = Script(language.Meroitic_Hieroglyphs) Miao = Script(language.Miao) Sharada = Script(language.Sharada) SoraSompeng = Script(language.Sora_Sompeng) Takri = Script(language.Takri) BassaVah = Script(language.Bassa_Vah) CaucasianAlbanian = Script(language.Caucasian_Albanian) Duployan = Script(language.Duployan) Elbasan = Script(language.Elbasan) Grantha = Script(language.Grantha) Khojki = Script(language.Khojki) Khudawadi = Script(language.Khudawadi) LinearA = Script(language.Linear_A) Mahajani = Script(language.Mahajani) Manichaean = Script(language.Manichaean) MendeKikakui = Script(language.Mende_Kikakui) Modi = Script(language.Modi) Mro = Script(language.Mro) Nabataean = Script(language.Nabataean) OldNorthArabian = Script(language.Old_North_Arabian) OldPermic = Script(language.Old_Permic) PahawhHmong = Script(language.Pahawh_Hmong) Palmyrene = Script(language.Palmyrene) PauCinHau = Script(language.Pau_Cin_Hau) PsalterPahlavi = Script(language.Psalter_Pahlavi) Siddham = Script(language.Siddham) Tirhuta = Script(language.Tirhuta) WarangCiti = Script(language.Warang_Citi) Adlam = Script(language.Adlam) Bhaiksuki = Script(language.Bhaiksuki) Marchen = Script(language.Marchen) Osage = Script(language.Osage) Tangut = Script(language.Tangut) Newa = Script(language.Newa) MasaramGondi = Script(language.Masaram_Gondi) Nushu = Script(language.Nushu) Soyombo = Script(language.Soyombo) ZanabazarSquare = Script(language.Zanabazar_Square) Dogra = Script(language.Dogra) GunjalaGondi = Script(language.Gunjala_Gondi) HanifiRohingya = Script(language.Hanifi_Rohingya) Makasar = Script(language.Makasar) Medefaidrin = Script(language.Medefaidrin) OldSogdian = Script(language.Old_Sogdian) Sogdian = Script(language.Sogdian) Elymaic = Script(language.Elymaic) Nandinagari = Script(language.Nandinagari) NyiakengPuachueHmong = Script(language.Nyiakeng_Puachue_Hmong) Wancho = Script(language.Wancho) Chorasmian = Script(language.Chorasmian) DivesAkuru = Script(language.Dives_Akuru) KhitanSmallScript = Script(language.Khitan_Small_Script) Yezidi = Script(language.Yezidi) )
see Script
const FairyTales = "" /* 678-byte string literal not displayed */
FairyTales is an example text.
Variables ¶
var ( SentenceFactor = 3.0 ColonFactor = 2.0 SemicolonFactor = 1.5 CommaFactor = 1.25 )
Stretchability and shrinkability factors for inter-sentence and other types of spaces, not used if FrenchSpacing is set.
var DemeritsFitness = 100.0
DemeritsFitness is the badness rating for very different fitness ratings for consecutive lines. Fitness is a categorization of four types for ratio ranges.
var DemeritsFlagged = 100.0
DemeritsFlagged is the badness rating for two consecutive lines ending in hyphens.
var DemeritsLine = 10.0
DemeritsLine is the badness rating for an extra line.
var Epsilon = 1e-6
var FrenchSpacing = false
FrenchSpacing enforces equal widths for inter-word and inter-sentence spaces.
var HyphenPenalty = 50.0
HyphenPenalty is the aesthetic cost of ending a line in a hyphen.
var Infinity = 1000.0 // in case of ratio, demerits become about 1e22
Infinity specifies infinity as something finite to prevent numerical errors.
var SpaceRaggedStretch = 3.0
SpaceRaggedStretch is the stretchiness of glue (spaces) at the start or end of a line for ragged alignments (left, centre, right).
var SpaceShrink = 1.0 / 3.0 // ratio of the space that can be removed
SpaceShrink is the shrinkability of spaces.
var SpaceStretch = 1.0 / 2.0 // ratio of the space that can be added
SpaceStretch is the stretchability of spaces.
Functions ¶
func EmbeddingLevels ¶
EmbeddingLevels returns the embedding levels for each rune of a mixed LTR/RTL string. A change in level means a change in direction.
func IsParagraph ¶ added in v1.0.10
func IsParagraphSeparator ¶
IsParagraphSeparator returns true for paragraph separator runes.
func IsSpacelessScript ¶
func IsVerticalScript ¶
func LinebreakGlyphs ¶
func LinebreakGlyphs(sfnt *font.SFNT, size float64, glyphs []Glyph, width float64, opts Options, linebreaker Linebreaker) [][]Glyph
LinebreakGlyphs breaks a slice of glyphs uing the given SFNT font and font size. The indent and width specify the first line's indentation and the maximum line's width respectively. Align sets the horizontal alignment of the text. The looseness specifies whether it is desirable to have less or more lines than optimal.
Types ¶
type Break ¶ added in v1.0.10
func GreedyLinebreak ¶ added in v1.0.10
GreedyLinebreak breaks a list of items using a greedy line breaking algorithm. This is much faster than Knuth's algorithm. TODO: instead of width accept widthFunction(int) float64
func KnuthLinebreak ¶ added in v1.0.10
KnuthLinebreak breaks a list of items using Donald Knuth's line breaking algorithm. See Donald E. Knuth and Michael F. Plass, "Breaking Paragraphs into Lines", 1981 TODO: instead of width accept widthFunction(int) float64
type Breakpoint ¶
type Breakpoint struct {
Break
Line int
Fitness int
W, Y, Z float64
Demerits float64
// contains filtered or unexported fields
}
Breakpoint is a (possible) break point in the string.
func (*Breakpoint) String ¶
func (br *Breakpoint) String() string
type Breakpoints ¶
type Breakpoints struct {
// contains filtered or unexported fields
}
Breakpoints is a list of break points.
func (*Breakpoints) Has ¶
func (list *Breakpoints) Has(b *Breakpoint) bool
Has return true if it contains break point b.
func (*Breakpoints) InsertBefore ¶
func (list *Breakpoints) InsertBefore(b *Breakpoint, at *Breakpoint)
InsertBefore inserts break point b before at.
func (*Breakpoints) Push ¶
func (list *Breakpoints) Push(b *Breakpoint)
Push adds break point b to the end of the list.
func (*Breakpoints) Remove ¶
func (list *Breakpoints) Remove(b *Breakpoint)
Remove removes break point b.
func (*Breakpoints) String ¶
func (list *Breakpoints) String() string
type Glyph ¶
type Glyph struct {
SFNT *font.SFNT
Size float64
Script
Vertical bool // is false for Latin/Mongolian/etc in a vertical layout
ID uint16
Cluster uint32
XAdvance int32
YAdvance int32
XOffset int32
YOffset int32
Text rune // TODO: remove? use sfnt.cmap.tounicode
}
Glyph is a shaped glyph for the given font and font size. It specified the glyph ID, the cluster ID, its X and Y advance and offset in font units, and its representation as text.
type Item ¶
type Item struct {
Type
Width, Stretch, Shrink float64 // Width is the natural width, Stretch the width that can be added, and Shrink that can be removed
Penalty float64
Flagged bool
Size int // number of boxes (glyphs) compressed into one
}
Item is a box, glue or penalty item.
func Glue ¶
Glue returns a glue item (a space) where width is the default width, stretch*Tolerance the maximum width, and shrink*Tolerance the minimum width.
type Items ¶ added in v1.0.10
type Items []Item
func GlyphsToItems ¶
GlyphsToItems converts a slice of glyphs into the box/glue/penalty items model as used by Knuth's line breaking algorithm. The SFNT and Size of each glyph must be set. Indent and align specify the indentation width of the first line and the alignment (left, right, centered, justified) of the lines respectively.
type Linebreaker ¶ added in v1.0.10
Linebreaker is an interface for line breaking algorithms. Given a set of items and a desired text width, it will break lines to remain within the given width. It returns the breakpoints and whether it successfully broke all lines to fit within the width; it returns false if it overflows.
type ScriptItem ¶
func ScriptItemizer ¶
func ScriptItemizer(runes []rune, embeddingLevels []int) []ScriptItem
ScriptItemizer divides the string in parts for each different script. Also separates on different embedding levels and unicode.ReplacementChar (replaced by object).
func (*ScriptItem) String ¶ added in v1.0.10
func (item *ScriptItem) String() string