Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小雨青年
freetype
提交
f9531a36
F
freetype
项目概览
小雨青年
/
freetype
通知
14
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
freetype
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
f9531a36
编写于
3月 24, 2016
作者:
N
Nigel Tao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add a face.Metrics method, and parse hhea ascent and descent.
A recent change added a Metrics method to the font.Face interface.
上级
9ce4eec9
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
25 addition
and
1 deletion
+25
-1
example/truetype/main.go
example/truetype/main.go
+8
-0
truetype/face.go
truetype/face.go
+12
-0
truetype/truetype.go
truetype/truetype.go
+5
-1
未找到文件。
example/truetype/main.go
浏览文件 @
f9531a36
...
...
@@ -77,4 +77,12 @@ func main() {
printGlyph
(
g
)
i1
:=
f
.
Index
(
c1
)
fmt
.
Printf
(
"
\n
'%c', '%c' Kern:%d
\n
"
,
c0
,
c1
,
f
.
Kern
(
fupe
,
i0
,
i1
))
fmt
.
Printf
(
"
\n
The numbers above are in FUnits.
\n
"
+
"The numbers below are in 26.6 fixed point pixels, at 12pt and 72dpi.
\n\n
"
)
a
:=
truetype
.
NewFace
(
f
,
&
truetype
.
Options
{
Size
:
12
,
DPI
:
72
,
})
fmt
.
Printf
(
"%#v
\n
"
,
a
.
Metrics
())
}
truetype/face.go
浏览文件 @
f9531a36
...
...
@@ -7,6 +7,7 @@ package truetype
import
(
"image"
"math"
"github.com/golang/freetype/raster"
"golang.org/x/image/font"
...
...
@@ -249,6 +250,17 @@ func (a *face) index(r rune) Index {
// Close satisfies the font.Face interface.
func
(
a
*
face
)
Close
()
error
{
return
nil
}
// Metrics satisfies the font.Face interface.
func
(
a
*
face
)
Metrics
()
font
.
Metrics
{
scale
:=
float64
(
a
.
scale
)
fupe
:=
float64
(
a
.
f
.
FUnitsPerEm
())
return
font
.
Metrics
{
Height
:
a
.
scale
,
Ascent
:
fixed
.
Int26_6
(
math
.
Ceil
(
scale
*
float64
(
+
a
.
f
.
ascent
)
/
fupe
)),
Descent
:
fixed
.
Int26_6
(
math
.
Ceil
(
scale
*
float64
(
-
a
.
f
.
descent
)
/
fupe
)),
}
}
// Kern satisfies the font.Face interface.
func
(
a
*
face
)
Kern
(
r0
,
r1
rune
)
fixed
.
Int26_6
{
i0
:=
a
.
index
(
r0
)
...
...
truetype/truetype.go
浏览文件 @
f9531a36
...
...
@@ -184,7 +184,9 @@ type Font struct {
locaOffsetFormat
int
nGlyph
,
nHMetric
,
nKern
int
fUnitsPerEm
int32
bounds
fixed
.
Rectangle26_6
ascent
int32
// In FUnits.
descent
int32
// In FUnits; typically negative.
bounds
fixed
.
Rectangle26_6
// In FUnits.
// Values from the maxp section.
maxTwilightPoints
,
maxStorage
,
maxFunctionDefs
,
maxStackElements
uint16
}
...
...
@@ -289,6 +291,8 @@ func (f *Font) parseHhea() error {
if
len
(
f
.
hhea
)
!=
36
{
return
FormatError
(
fmt
.
Sprintf
(
"bad hhea length: %d"
,
len
(
f
.
hhea
)))
}
f
.
ascent
=
int32
(
int16
(
u16
(
f
.
hhea
,
4
)))
f
.
descent
=
int32
(
int16
(
u16
(
f
.
hhea
,
6
)))
f
.
nHMetric
=
int
(
u16
(
f
.
hhea
,
34
))
if
4
*
f
.
nHMetric
+
2
*
(
f
.
nGlyph
-
f
.
nHMetric
)
!=
len
(
f
.
hmtx
)
{
return
FormatError
(
fmt
.
Sprintf
(
"bad hmtx length: %d"
,
len
(
f
.
hmtx
)))
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录