blob: d81fb1dc52fd960b06e217d05a85866d147b62b1 [file] [edit]
// THIS FILE IS AUTOGENERATED.
// Any changes to this file will be overwritten.
// For more information about how codegen works, see font-codegen/README.md
#[allow(unused_imports)]
use crate::codegen_prelude::*;
/// An array of variable-sized objects in a `CFF` table.
#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct Index1 {
/// Number of objects stored in INDEX.
pub count: u16,
/// Object array element size.
pub off_size: u8,
/// Bytes containing `count + 1` offsets each of `off_size`.
pub offsets: Vec<u8>,
/// Array containing the object data.
pub data: Vec<u8>,
}
impl Index1 {
/// Construct a new `Index1`
pub fn new(count: u16, off_size: u8, offsets: Vec<u8>, data: Vec<u8>) -> Self {
Self {
count,
off_size,
offsets: offsets.into_iter().map(Into::into).collect(),
data: data.into_iter().map(Into::into).collect(),
}
}
}
impl FontWrite for Index1 {
fn write_into(&self, writer: &mut TableWriter) {
self.count.write_into(writer);
self.off_size.write_into(writer);
self.offsets.write_into(writer);
self.data.write_into(writer);
}
fn table_type(&self) -> TableType {
TableType::Named("Index1")
}
}
impl Validate for Index1 {
fn validate_impl(&self, _ctx: &mut ValidationCtx) {}
}
impl<'a> FromObjRef<read_fonts::tables::postscript::Index1<'a>> for Index1 {
fn from_obj_ref(obj: &read_fonts::tables::postscript::Index1<'a>, _: FontData) -> Self {
let offset_data = obj.offset_data();
Index1 {
count: obj.count(),
off_size: obj.off_size(),
offsets: obj.offsets().to_owned_obj(offset_data),
data: obj.data().to_owned_obj(offset_data),
}
}
}
impl<'a> FromTableRef<read_fonts::tables::postscript::Index1<'a>> for Index1 {}
impl<'a> FontRead<'a> for Index1 {
fn read(data: FontData<'a>) -> Result<Self, ReadError> {
<read_fonts::tables::postscript::Index1 as FontRead>::read(data).map(|x| x.to_owned_table())
}
}
/// An array of variable-sized objects in a `CFF2` table.
#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct Index2 {
/// Number of objects stored in INDEX.
pub count: u32,
/// Object array element size.
pub off_size: u8,
/// Bytes containing `count + 1` offsets each of `off_size`.
pub offsets: Vec<u8>,
/// Array containing the object data.
pub data: Vec<u8>,
}
impl Index2 {
/// Construct a new `Index2`
pub fn new(count: u32, off_size: u8, offsets: Vec<u8>, data: Vec<u8>) -> Self {
Self {
count,
off_size,
offsets: offsets.into_iter().map(Into::into).collect(),
data: data.into_iter().map(Into::into).collect(),
}
}
}
impl FontWrite for Index2 {
fn write_into(&self, writer: &mut TableWriter) {
self.count.write_into(writer);
self.off_size.write_into(writer);
self.offsets.write_into(writer);
self.data.write_into(writer);
}
fn table_type(&self) -> TableType {
TableType::Named("Index2")
}
}
impl Validate for Index2 {
fn validate_impl(&self, _ctx: &mut ValidationCtx) {}
}
impl<'a> FromObjRef<read_fonts::tables::postscript::Index2<'a>> for Index2 {
fn from_obj_ref(obj: &read_fonts::tables::postscript::Index2<'a>, _: FontData) -> Self {
let offset_data = obj.offset_data();
Index2 {
count: obj.count(),
off_size: obj.off_size(),
offsets: obj.offsets().to_owned_obj(offset_data),
data: obj.data().to_owned_obj(offset_data),
}
}
}
impl<'a> FromTableRef<read_fonts::tables::postscript::Index2<'a>> for Index2 {}
impl<'a> FontRead<'a> for Index2 {
fn read(data: FontData<'a>) -> Result<Self, ReadError> {
<read_fonts::tables::postscript::Index2 as FontRead>::read(data).map(|x| x.to_owned_table())
}
}
/// Associates a glyph identifier with a Font DICT.
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum FdSelect {
Format0(FdSelectFormat0),
Format3(FdSelectFormat3),
Format4(FdSelectFormat4),
}
impl FdSelect {
/// Construct a new `FdSelectFormat0` subtable
pub fn format_0(fds: Vec<u8>) -> Self {
Self::Format0(FdSelectFormat0::new(fds))
}
/// Construct a new `FdSelectFormat3` subtable
pub fn format_3(ranges: Vec<FdSelectRange3>, sentinel: u16) -> Self {
Self::Format3(FdSelectFormat3::new(ranges, sentinel))
}
/// Construct a new `FdSelectFormat4` subtable
pub fn format_4(ranges: Vec<FdSelectRange4>, sentinel: u32) -> Self {
Self::Format4(FdSelectFormat4::new(ranges, sentinel))
}
}
impl Default for FdSelect {
fn default() -> Self {
Self::Format0(Default::default())
}
}
impl FontWrite for FdSelect {
fn write_into(&self, writer: &mut TableWriter) {
match self {
Self::Format0(item) => item.write_into(writer),
Self::Format3(item) => item.write_into(writer),
Self::Format4(item) => item.write_into(writer),
}
}
fn table_type(&self) -> TableType {
match self {
Self::Format0(item) => item.table_type(),
Self::Format3(item) => item.table_type(),
Self::Format4(item) => item.table_type(),
}
}
}
impl Validate for FdSelect {
fn validate_impl(&self, ctx: &mut ValidationCtx) {
match self {
Self::Format0(item) => item.validate_impl(ctx),
Self::Format3(item) => item.validate_impl(ctx),
Self::Format4(item) => item.validate_impl(ctx),
}
}
}
impl FromObjRef<read_fonts::tables::postscript::FdSelect<'_>> for FdSelect {
fn from_obj_ref(obj: &read_fonts::tables::postscript::FdSelect, _: FontData) -> Self {
use read_fonts::tables::postscript::FdSelect as ObjRefType;
match obj {
ObjRefType::Format0(item) => FdSelect::Format0(item.to_owned_table()),
ObjRefType::Format3(item) => FdSelect::Format3(item.to_owned_table()),
ObjRefType::Format4(item) => FdSelect::Format4(item.to_owned_table()),
}
}
}
impl FromTableRef<read_fonts::tables::postscript::FdSelect<'_>> for FdSelect {}
impl<'a> FontRead<'a> for FdSelect {
fn read(data: FontData<'a>) -> Result<Self, ReadError> {
<read_fonts::tables::postscript::FdSelect as FontRead>::read(data)
.map(|x| x.to_owned_table())
}
}
impl From<FdSelectFormat0> for FdSelect {
fn from(src: FdSelectFormat0) -> FdSelect {
FdSelect::Format0(src)
}
}
impl From<FdSelectFormat3> for FdSelect {
fn from(src: FdSelectFormat3) -> FdSelect {
FdSelect::Format3(src)
}
}
impl From<FdSelectFormat4> for FdSelect {
fn from(src: FdSelectFormat4) -> FdSelect {
FdSelect::Format4(src)
}
}
/// FdSelect format 0.
#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct FdSelectFormat0 {
/// FD selector array (one entry for each glyph).
pub fds: Vec<u8>,
}
impl FdSelectFormat0 {
/// Construct a new `FdSelectFormat0`
pub fn new(fds: Vec<u8>) -> Self {
Self {
fds: fds.into_iter().map(Into::into).collect(),
}
}
}
impl FontWrite for FdSelectFormat0 {
#[allow(clippy::unnecessary_cast)]
fn write_into(&self, writer: &mut TableWriter) {
(0 as u8).write_into(writer);
self.fds.write_into(writer);
}
fn table_type(&self) -> TableType {
TableType::Named("FdSelectFormat0")
}
}
impl Validate for FdSelectFormat0 {
fn validate_impl(&self, _ctx: &mut ValidationCtx) {}
}
impl<'a> FromObjRef<read_fonts::tables::postscript::FdSelectFormat0<'a>> for FdSelectFormat0 {
fn from_obj_ref(
obj: &read_fonts::tables::postscript::FdSelectFormat0<'a>,
_: FontData,
) -> Self {
let offset_data = obj.offset_data();
FdSelectFormat0 {
fds: obj.fds().to_owned_obj(offset_data),
}
}
}
impl<'a> FromTableRef<read_fonts::tables::postscript::FdSelectFormat0<'a>> for FdSelectFormat0 {}
impl<'a> FontRead<'a> for FdSelectFormat0 {
fn read(data: FontData<'a>) -> Result<Self, ReadError> {
<read_fonts::tables::postscript::FdSelectFormat0 as FontRead>::read(data)
.map(|x| x.to_owned_table())
}
}
/// FdSelect format 3.
#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct FdSelectFormat3 {
/// Range3 array.
pub ranges: Vec<FdSelectRange3>,
/// Sentinel GID. Set equal to the number of glyphs in the font.
pub sentinel: u16,
}
impl FdSelectFormat3 {
/// Construct a new `FdSelectFormat3`
pub fn new(ranges: Vec<FdSelectRange3>, sentinel: u16) -> Self {
Self {
ranges: ranges.into_iter().map(Into::into).collect(),
sentinel,
}
}
}
impl FontWrite for FdSelectFormat3 {
#[allow(clippy::unnecessary_cast)]
fn write_into(&self, writer: &mut TableWriter) {
(3 as u8).write_into(writer);
(array_len(&self.ranges).unwrap() as u16).write_into(writer);
self.ranges.write_into(writer);
self.sentinel.write_into(writer);
}
fn table_type(&self) -> TableType {
TableType::Named("FdSelectFormat3")
}
}
impl Validate for FdSelectFormat3 {
fn validate_impl(&self, ctx: &mut ValidationCtx) {
ctx.in_table("FdSelectFormat3", |ctx| {
ctx.in_field("ranges", |ctx| {
if self.ranges.len() > (u16::MAX as usize) {
ctx.report("array exceeds max length");
}
self.ranges.validate_impl(ctx);
});
})
}
}
impl<'a> FromObjRef<read_fonts::tables::postscript::FdSelectFormat3<'a>> for FdSelectFormat3 {
fn from_obj_ref(
obj: &read_fonts::tables::postscript::FdSelectFormat3<'a>,
_: FontData,
) -> Self {
let offset_data = obj.offset_data();
FdSelectFormat3 {
ranges: obj.ranges().to_owned_obj(offset_data),
sentinel: obj.sentinel(),
}
}
}
impl<'a> FromTableRef<read_fonts::tables::postscript::FdSelectFormat3<'a>> for FdSelectFormat3 {}
impl<'a> FontRead<'a> for FdSelectFormat3 {
fn read(data: FontData<'a>) -> Result<Self, ReadError> {
<read_fonts::tables::postscript::FdSelectFormat3 as FontRead>::read(data)
.map(|x| x.to_owned_table())
}
}
/// Range struct for FdSelect format 3.
#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct FdSelectRange3 {
/// First glyph index in range.
pub first: u16,
/// FD index for all glyphs in range.
pub fd: u8,
}
impl FdSelectRange3 {
/// Construct a new `FdSelectRange3`
pub fn new(first: u16, fd: u8) -> Self {
Self { first, fd }
}
}
impl FontWrite for FdSelectRange3 {
fn write_into(&self, writer: &mut TableWriter) {
self.first.write_into(writer);
self.fd.write_into(writer);
}
fn table_type(&self) -> TableType {
TableType::Named("FdSelectRange3")
}
}
impl Validate for FdSelectRange3 {
fn validate_impl(&self, _ctx: &mut ValidationCtx) {}
}
impl FromObjRef<read_fonts::tables::postscript::FdSelectRange3> for FdSelectRange3 {
fn from_obj_ref(obj: &read_fonts::tables::postscript::FdSelectRange3, _: FontData) -> Self {
FdSelectRange3 {
first: obj.first(),
fd: obj.fd(),
}
}
}
/// FdSelect format 4.
#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct FdSelectFormat4 {
/// Range4 array.
pub ranges: Vec<FdSelectRange4>,
/// Sentinel GID. Set equal to the number of glyphs in the font.
pub sentinel: u32,
}
impl FdSelectFormat4 {
/// Construct a new `FdSelectFormat4`
pub fn new(ranges: Vec<FdSelectRange4>, sentinel: u32) -> Self {
Self {
ranges: ranges.into_iter().map(Into::into).collect(),
sentinel,
}
}
}
impl FontWrite for FdSelectFormat4 {
#[allow(clippy::unnecessary_cast)]
fn write_into(&self, writer: &mut TableWriter) {
(4 as u8).write_into(writer);
(array_len(&self.ranges).unwrap() as u32).write_into(writer);
self.ranges.write_into(writer);
self.sentinel.write_into(writer);
}
fn table_type(&self) -> TableType {
TableType::Named("FdSelectFormat4")
}
}
impl Validate for FdSelectFormat4 {
fn validate_impl(&self, ctx: &mut ValidationCtx) {
ctx.in_table("FdSelectFormat4", |ctx| {
ctx.in_field("ranges", |ctx| {
if self.ranges.len() > (u32::MAX as usize) {
ctx.report("array exceeds max length");
}
self.ranges.validate_impl(ctx);
});
})
}
}
impl<'a> FromObjRef<read_fonts::tables::postscript::FdSelectFormat4<'a>> for FdSelectFormat4 {
fn from_obj_ref(
obj: &read_fonts::tables::postscript::FdSelectFormat4<'a>,
_: FontData,
) -> Self {
let offset_data = obj.offset_data();
FdSelectFormat4 {
ranges: obj.ranges().to_owned_obj(offset_data),
sentinel: obj.sentinel(),
}
}
}
impl<'a> FromTableRef<read_fonts::tables::postscript::FdSelectFormat4<'a>> for FdSelectFormat4 {}
impl<'a> FontRead<'a> for FdSelectFormat4 {
fn read(data: FontData<'a>) -> Result<Self, ReadError> {
<read_fonts::tables::postscript::FdSelectFormat4 as FontRead>::read(data)
.map(|x| x.to_owned_table())
}
}
/// Range struct for FdSelect format 4.
#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct FdSelectRange4 {
/// First glyph index in range.
pub first: u32,
/// FD index for all glyphs in range.
pub fd: u16,
}
impl FdSelectRange4 {
/// Construct a new `FdSelectRange4`
pub fn new(first: u32, fd: u16) -> Self {
Self { first, fd }
}
}
impl FontWrite for FdSelectRange4 {
fn write_into(&self, writer: &mut TableWriter) {
self.first.write_into(writer);
self.fd.write_into(writer);
}
fn table_type(&self) -> TableType {
TableType::Named("FdSelectRange4")
}
}
impl Validate for FdSelectRange4 {
fn validate_impl(&self, _ctx: &mut ValidationCtx) {}
}
impl FromObjRef<read_fonts::tables::postscript::FdSelectRange4> for FdSelectRange4 {
fn from_obj_ref(obj: &read_fonts::tables::postscript::FdSelectRange4, _: FontData) -> Self {
FdSelectRange4 {
first: obj.first(),
fd: obj.fd(),
}
}
}