/*
* Copyright 2011 Google Inc. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef SFNTLY_CPP_SRC_SFNTLY_TABLE_CORE_FONT_HEADER_TABLE_H_
#define SFNTLY_CPP_SRC_SFNTLY_TABLE_CORE_FONT_HEADER_TABLE_H_
#include "sfntly/table/table.h"
#include "sfntly/table/table_based_table_builder.h"
namespace sfntly {
struct IndexToLocFormat {
enum {
kShortOffset = 0,
kLongOffset = 1
};
};
struct FontDirectionHint {
enum {
kFullyMixed = 0,
kOnlyStrongLTR = 1,
kStrongLTRAndNeutral = 2,
kOnlyStrongRTL = -1,
kStrongRTLAndNeutral = -2
};
};
class FontHeaderTable : public Table, public RefCounted<FontHeaderTable> {
public:
class Builder : public TableBasedTableBuilder, public RefCounted<Builder> {
public:
// Constructor scope altered to public because C++ does not allow base
// class to instantiate derived class with protected constructors.
Builder(Header* header, WritableFontData* data);
Builder(Header* header, ReadableFontData* data);
virtual ~Builder();
virtual CALLER_ATTACH FontDataTable* SubBuildTable(ReadableFontData* data);
virtual int32_t TableVersion();
virtual void SetTableVersion(int32_t version);
virtual int32_t FontRevision();
virtual void SetFontRevision(int32_t revision);
virtual int64_t ChecksumAdjustment();
virtual void SetChecksumAdjustment(int64_t adjustment);
virtual int64_t MagicNumber();
virtual void SetMagicNumber(int64_t magic_number);
virtual int32_t FlagsAsInt();
virtual void SetFlagsAsInt(int32_t flags);
// TODO(arthurhsu): IMPLEMENT EnumSet<Flags> Flags()
// TODO(arthurhsu): IMPLEMENT setFlags(EnumSet<Flags> flags)
virtual int32_t UnitsPerEm();
virtual void SetUnitsPerEm(int32_t units);
virtual int64_t Created();
virtual void SetCreated(int64_t date);
virtual int64_t Modified();
virtual void SetModified(int64_t date);
virtual int32_t XMin();
virtual void SetXMin(int32_t xmin);
virtual int32_t YMin();
virtual void SetYMin(int32_t ymin);
virtual int32_t XMax();
virtual void SetXMax(int32_t xmax);
virtual int32_t YMax();
virtual void SetYMax(int32_t ymax);
virtual int32_t MacStyleAsInt();
virtual void SetMacStyleAsInt(int32_t style);
// TODO(arthurhsu): IMPLEMENT EnumSet<MacStyle> macStyle()
// TODO(arthurhsu): IMPLEMENT setMacStyle(EnumSet<MacStyle> style)
virtual int32_t LowestRecPPEM();
virtual void SetLowestRecPPEM(int32_t size);
virtual int32_t FontDirectionHint();
virtual void SetFontDirectionHint(int32_t hint);
virtual int32_t IndexToLocFormat();
virtual void SetIndexToLocFormat(int32_t format);
virtual int32_t GlyphDataFormat();
virtual void SetGlyphDataFormat(int32_t format);
static CALLER_ATTACH Builder* CreateBuilder(Header* header,
WritableFontData* data);
};
virtual ~FontHeaderTable();
int32_t TableVersion();
int32_t FontRevision();
// Get the checksum adjustment. To compute: set it to 0, sum the entire font
// as ULONG, then store 0xB1B0AFBA - sum.
int64_t ChecksumAdjustment();
// Get the magic number. Set to 0x5F0F3CF5.
int64_t MagicNumber();
// TODO(arthurhsu): IMPLEMENT: EnumSet<Flags>
int32_t FlagsAsInt();
// TODO(arthurhsu): IMPLEMENT: Flags() returning EnumSet<Flags>
int32_t UnitsPerEm();
// Get the created date. Number of seconds since 12:00 midnight, January 1,
// 1904. 64-bit integer.
int64_t Created();
// Get the modified date. Number of seconds since 12:00 midnight, January 1,
// 1904. 64-bit integer.
int64_t Modified();
// Get the x min. For all glyph bounding boxes.
int32_t XMin();
// Get the y min. For all glyph bounding boxes.
int32_t YMin();
// Get the x max. For all glyph bounding boxes.
int32_t XMax();
// Get the y max. For all glyph bounding boxes.
int32_t YMax();
// TODO(arthurhsu): IMPLEMENT: EnumSet<MacStyle>
int32_t MacStyleAsInt();
// TODO(arthurhsu): IMPLEMENT: macStyle() returning EnumSet<MacStyle>
int32_t LowestRecPPEM();
int32_t FontDirectionHint(); // Note: no AsInt() form, already int
int32_t IndexToLocFormat(); // Note: no AsInt() form, already int
int32_t GlyphDataFormat();
private:
struct Offset {
enum {
kTableVersion = 0,
kFontRevision = 4,
kCheckSumAdjustment = 8,
kMagicNumber = 12,
kFlags = 16,
kUnitsPerEm = 18,
kCreated = 20,
kModified = 28,
kXMin = 36,
kYMin = 38,
kXMax = 40,
kYMax = 42,
kMacStyle = 44,
kLowestRecPPEM = 46,
kFontDirectionHint = 48,
kIndexToLocFormat = 50,
kGlyphDataFormat = 52
};
};
FontHeaderTable(Header* header, ReadableFontData* data);
};
typedef Ptr<FontHeaderTable> FontHeaderTablePtr;
typedef Ptr<FontHeaderTable::Builder> FontHeaderTableBuilderPtr;
} // namespace sfntly
#endif // SFNTLY_CPP_SRC_SFNTLY_TABLE_CORE_FONT_HEADER_TABLE_H_

weixin_42653672
- 粉丝: 120
最新资源
- GB T 4439-1984 工业自动化仪表工作条件 振动.pdf
- Excel表格通用模板:全面实用的工资管理系统.xlsx
- open业务销售手册——微软内部资料.doc
- 2023年奥派杯电子商务运营理论考试模拟题.doc
- 2022软件公司员工辞职申请书.docx
- 常用项目管理工具.doc
- 2022软件学习心得体会.docx
- 大一C语言课程设计.doc
- 智能环境助手-硬件开发资源
- Word小功能也能助Excel一臂之力【会计实务操作教程】.pptx
- Excel电子表格信息的加工教案.pdf
- 2023年单片机原理及应用试题库.doc
- hadoop培训视频教程.pptx
- UMC-移动应用开发资源
- Java语言程序设计-JSP程序设计.ppt
- IBM服务器M阵列配置方法ServeRaidMRWebBIOSUserGuide.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


