| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- // Copyright ©2021 The star-tex Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE-STAR-TEX file.
- package dvi
- import (
- "modernc.org/knuth/font/fixed"
- "modernc.org/knuth/font/tfm"
- )
- // Font describes a DVI font, with TeX Font Metrics and its
- // associated font glyph data.
- type Font struct {
- name string
- font tfm.Font
- scale fixed.Int12_20
- }
- // Name returns the name of the DVI font.
- // ex: "cmr10", "cmmi10" or "cmti10".
- func (fnt *Font) Name() string {
- return fnt.name
- }
- // Size returns the DVI font size.
- func (fnt *Font) Size() fixed.Int12_20 {
- return fnt.scale
- }
- // Metrics returns the associated TeX Font Metrics.
- func (fnt *Font) Metrics() *tfm.Font {
- return &fnt.font
- }
- func (fnt *Font) advance(r rune) (fixed.Int12_20, bool) {
- w, _, _, ok := fnt.font.Box(r)
- if !ok {
- return 0, ok
- }
- return fixed.Int12_20((int64(w) * int64(fnt.scale)) >> 20), true
- }
|