diff options
author | Přemysl Janouch <p@janouch.name> | 2019-04-26 11:40:43 +0200 |
---|---|---|
committer | Přemysl Janouch <p@janouch.name> | 2019-04-26 11:40:43 +0200 |
commit | 696ea8953089c3872bca22ec24ca28139ef46cd3 (patch) | |
tree | afc3837e77f57461d13a6b95d7304c292d41d1df /bdf | |
parent | e56482d73f6d8f8f46096ca980ac9e6dcd7b8300 (diff) | |
download | sklad-696ea8953089c3872bca22ec24ca28139ef46cd3.tar.gz sklad-696ea8953089c3872bca22ec24ca28139ef46cd3.tar.xz sklad-696ea8953089c3872bca22ec24ca28139ef46cd3.zip |
label-tool: respect font ascent and descent
Also try to load the values from the BDF font file.
Diffstat (limited to 'bdf')
-rw-r--r-- | bdf/bdf.go | 28 |
1 files changed, 14 insertions, 14 deletions
@@ -49,6 +49,8 @@ func (g *glyph) At(x, y int) color.Color { // Font represents a particular bitmap font. type Font struct { Name string + Ascent int // needn't be present in the font + Descent int // needn't be present in the font glyphs map[rune]glyph fallback glyph } @@ -192,17 +194,23 @@ func (p *bdfParser) readLine() bool { return true } -func (p *bdfParser) readCharEncoding() int { +func (p *bdfParser) readIntegerArgument() int { if len(p.tokens) < 2 { panic("insufficient arguments") } if i, err := strconv.Atoi(p.tokens[1]); err != nil { panic(err) } else { - return i // Some fonts even use -1 for things outside the encoding. + return i } } +// Some fonts even use -1 for things outside the encoding. +func (p *bdfParser) readCharEncoding() int { return p.readIntegerArgument() } + +// XXX: Ignoring vertical advance since we only expect purely horizontal fonts. +func (p *bdfParser) readDwidth() int { return p.readIntegerArgument() } + func (p *bdfParser) parseProperties() { // The wording in the specification suggests that the argument // with the number of properties to follow isn't reliable. @@ -210,22 +218,14 @@ func (p *bdfParser) parseProperties() { switch p.tokens[0] { case "DEFAULT_CHAR": p.defaultChar = p.readCharEncoding() + case "FONT_ASCENT": + p.font.Ascent = p.readIntegerArgument() + case "FONT_DESCENT": + p.font.Descent = p.readIntegerArgument() } } } -// XXX: Ignoring vertical advance since we only expect purely horizontal fonts. -func (p *bdfParser) readDwidth() int { - if len(p.tokens) < 2 { - panic("insufficient arguments") - } - if i, err := strconv.Atoi(p.tokens[1]); err != nil { - panic(err) - } else { - return i - } -} - func (p *bdfParser) readBBX() image.Rectangle { if len(p.tokens) < 5 { panic("insufficient arguments") |