1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
11 // vmtx - Vertical Metrics Table
12 // http://www.microsoft.com/typography/otspec/vmtx.htm
14 #define TABLE_NAME "vmtx"
18 bool ots_vmtx_parse(Font
*font
, const uint8_t *data
, size_t length
) {
19 Buffer
table(data
, length
);
20 OpenTypeVMTX
*vmtx
= new OpenTypeVMTX
;
23 if (!font
->vhea
|| !font
->maxp
) {
24 return OTS_FAILURE_MSG("vhea or maxp table missing as needed by vmtx");
27 if (!ParseMetricsTable(font
, &table
, font
->maxp
->num_glyphs
,
28 &font
->vhea
->header
, &vmtx
->metrics
)) {
29 return OTS_FAILURE_MSG("Failed to parse vmtx metrics");
35 bool ots_vmtx_should_serialise(Font
*font
) {
36 // vmtx should serialise when vhea and GSUB are preserved.
37 // See the comment in ots_vhea_should_serialise().
38 return font
->vmtx
!= NULL
&& font
->vhea
!= NULL
&&
39 ots_gsub_should_serialise(font
);
42 bool ots_vmtx_serialise(OTSStream
*out
, Font
*font
) {
43 if (!SerialiseMetricsTable(font
, out
, &font
->vmtx
->metrics
)) {
44 return OTS_FAILURE_MSG("Failed to write vmtx metrics");
49 void ots_vmtx_reuse(Font
*font
, Font
*other
) {
50 font
->vmtx
= other
->vmtx
;
51 font
->vmtx_reused
= true;
54 void ots_vmtx_free(Font
*font
) {