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(OpenTypeFile
*file
, const uint8_t *data
, size_t length
) {
19 Buffer
table(data
, length
);
20 OpenTypeVMTX
*vmtx
= new OpenTypeVMTX
;
23 if (!file
->vhea
|| !file
->maxp
) {
24 return OTS_FAILURE_MSG("vhea or maxp table missing as needed by vmtx");
27 if (!ParseMetricsTable(file
, &table
, file
->maxp
->num_glyphs
,
28 &file
->vhea
->header
, &vmtx
->metrics
)) {
29 return OTS_FAILURE_MSG("Failed to parse vmtx metrics");
35 bool ots_vmtx_should_serialise(OpenTypeFile
*file
) {
36 // vmtx should serialise when vhea and GSUB are preserved.
37 // See the comment in ots_vhea_should_serialise().
38 return file
->vmtx
!= NULL
&& file
->vhea
!= NULL
&&
39 ots_gsub_should_serialise(file
);
42 bool ots_vmtx_serialise(OTSStream
*out
, OpenTypeFile
*file
) {
43 if (!SerialiseMetricsTable(file
, out
, &file
->vmtx
->metrics
)) {
44 return OTS_FAILURE_MSG("Failed to write vmtx metrics");
49 void ots_vmtx_free(OpenTypeFile
*file
) {