1 // Copyright (c) 2009 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.
7 // prep - Control Value Program
8 // http://www.microsoft.com/typography/otspec/prep.htm
10 #define TABLE_NAME "prep"
14 bool ots_prep_parse(OpenTypeFile
*file
, const uint8_t *data
, size_t length
) {
15 Buffer
table(data
, length
);
17 OpenTypePREP
*prep
= new OpenTypePREP
;
20 if (length
>= 128 * 1024u) {
21 return OTS_FAILURE_MSG("table length %ld > 120K", length
); // almost all prep tables are less than 9k bytes.
24 if (!table
.Skip(length
)) {
25 return OTS_FAILURE_MSG("Failed to read table of length %ld", length
);
29 prep
->length
= length
;
33 bool ots_prep_should_serialise(OpenTypeFile
*file
) {
34 if (!file
->glyf
) return false; // this table is not for CFF fonts.
35 return file
->prep
!= NULL
;
38 bool ots_prep_serialise(OTSStream
*out
, OpenTypeFile
*file
) {
39 const OpenTypePREP
*prep
= file
->prep
;
41 if (!out
->Write(prep
->data
, prep
->length
)) {
42 return OTS_FAILURE_MSG("Failed to write table length");
48 void ots_prep_free(OpenTypeFile
*file
) {