#[allow(unused_imports)]
use crate::codegen_prelude::*;
#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct Index1 {
pub count: u16,
pub off_size: u8,
pub offsets: Vec<u8>,
pub data: Vec<u8>,
}
impl Index1 {
pub fn new(count: u16, off_size: u8, offsets: Vec<u8>, data: Vec<u8>) -> Self {
Self {
count,
off_size,
offsets,
data,
}
}
}
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),
}
}
}
#[allow(clippy::needless_lifetimes)]
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())
}
}
#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct Index2 {
pub count: u32,
pub off_size: u8,
pub offsets: Vec<u8>,
pub data: Vec<u8>,
}
impl Index2 {
pub fn new(count: u32, off_size: u8, offsets: Vec<u8>, data: Vec<u8>) -> Self {
Self {
count,
off_size,
offsets,
data,
}
}
}
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),
}
}
}
#[allow(clippy::needless_lifetimes)]
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())
}
}
#[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 {
pub fn format_0(fds: Vec<u8>) -> Self {
Self::Format0(FdSelectFormat0::new(fds))
}
pub fn format_3(ranges: Vec<FdSelectRange3>, sentinel: u16) -> Self {
Self::Format3(FdSelectFormat3::new(ranges, sentinel))
}
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)
}
}
#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct FdSelectFormat0 {
pub fds: Vec<u8>,
}
impl FdSelectFormat0 {
pub fn new(fds: Vec<u8>) -> Self {
Self { fds }
}
}
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),
}
}
}
#[allow(clippy::needless_lifetimes)]
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())
}
}
#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct FdSelectFormat3 {
pub ranges: Vec<FdSelectRange3>,
pub sentinel: u16,
}
impl FdSelectFormat3 {
pub fn new(ranges: Vec<FdSelectRange3>, sentinel: u16) -> Self {
Self { ranges, sentinel }
}
}
impl FontWrite for FdSelectFormat3 {
#[allow(clippy::unnecessary_cast)]
fn write_into(&self, writer: &mut TableWriter) {
(3 as u8).write_into(writer);
(u16::try_from(array_len(&self.ranges)).unwrap()).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(),
}
}
}
#[allow(clippy::needless_lifetimes)]
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())
}
}
#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct FdSelectRange3 {
pub first: u16,
pub fd: u8,
}
impl 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(),
}
}
}
#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct FdSelectFormat4 {
pub ranges: Vec<FdSelectRange4>,
pub sentinel: u32,
}
impl FdSelectFormat4 {
pub fn new(ranges: Vec<FdSelectRange4>, sentinel: u32) -> Self {
Self { ranges, sentinel }
}
}
impl FontWrite for FdSelectFormat4 {
#[allow(clippy::unnecessary_cast)]
fn write_into(&self, writer: &mut TableWriter) {
(4 as u8).write_into(writer);
(u32::try_from(array_len(&self.ranges)).unwrap()).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(),
}
}
}
#[allow(clippy::needless_lifetimes)]
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())
}
}
#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct FdSelectRange4 {
pub first: u32,
pub fd: u16,
}
impl 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(),
}
}
}
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum CustomCharset {
Format0(CharsetFormat0),
Format1(CharsetFormat1),
Format2(CharsetFormat2),
}
impl CustomCharset {
pub fn format_0(glyph: Vec<u16>) -> Self {
Self::Format0(CharsetFormat0::new(glyph))
}
pub fn format_1(ranges: Vec<CharsetRange1>) -> Self {
Self::Format1(CharsetFormat1::new(ranges))
}
pub fn format_2(ranges: Vec<CharsetRange2>) -> Self {
Self::Format2(CharsetFormat2::new(ranges))
}
}
impl Default for CustomCharset {
fn default() -> Self {
Self::Format0(Default::default())
}
}
impl FontWrite for CustomCharset {
fn write_into(&self, writer: &mut TableWriter) {
match self {
Self::Format0(item) => item.write_into(writer),
Self::Format1(item) => item.write_into(writer),
Self::Format2(item) => item.write_into(writer),
}
}
fn table_type(&self) -> TableType {
match self {
Self::Format0(item) => item.table_type(),
Self::Format1(item) => item.table_type(),
Self::Format2(item) => item.table_type(),
}
}
}
impl Validate for CustomCharset {
fn validate_impl(&self, ctx: &mut ValidationCtx) {
match self {
Self::Format0(item) => item.validate_impl(ctx),
Self::Format1(item) => item.validate_impl(ctx),
Self::Format2(item) => item.validate_impl(ctx),
}
}
}
impl FromObjRef<read_fonts::tables::postscript::CustomCharset<'_>> for CustomCharset {
fn from_obj_ref(obj: &read_fonts::tables::postscript::CustomCharset, _: FontData) -> Self {
use read_fonts::tables::postscript::CustomCharset as ObjRefType;
match obj {
ObjRefType::Format0(item) => CustomCharset::Format0(item.to_owned_table()),
ObjRefType::Format1(item) => CustomCharset::Format1(item.to_owned_table()),
ObjRefType::Format2(item) => CustomCharset::Format2(item.to_owned_table()),
}
}
}
impl FromTableRef<read_fonts::tables::postscript::CustomCharset<'_>> for CustomCharset {}
impl<'a> FontRead<'a> for CustomCharset {
fn read(data: FontData<'a>) -> Result<Self, ReadError> {
<read_fonts::tables::postscript::CustomCharset as FontRead>::read(data)
.map(|x| x.to_owned_table())
}
}
impl From<CharsetFormat0> for CustomCharset {
fn from(src: CharsetFormat0) -> CustomCharset {
CustomCharset::Format0(src)
}
}
impl From<CharsetFormat1> for CustomCharset {
fn from(src: CharsetFormat1) -> CustomCharset {
CustomCharset::Format1(src)
}
}
impl From<CharsetFormat2> for CustomCharset {
fn from(src: CharsetFormat2) -> CustomCharset {
CustomCharset::Format2(src)
}
}
#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct CharsetFormat0 {
pub glyph: Vec<u16>,
}
impl CharsetFormat0 {
pub fn new(glyph: Vec<u16>) -> Self {
Self { glyph }
}
}
impl FontWrite for CharsetFormat0 {
#[allow(clippy::unnecessary_cast)]
fn write_into(&self, writer: &mut TableWriter) {
(0 as u8).write_into(writer);
self.glyph.write_into(writer);
}
fn table_type(&self) -> TableType {
TableType::Named("CharsetFormat0")
}
}
impl Validate for CharsetFormat0 {
fn validate_impl(&self, _ctx: &mut ValidationCtx) {}
}
impl<'a> FromObjRef<read_fonts::tables::postscript::CharsetFormat0<'a>> for CharsetFormat0 {
fn from_obj_ref(obj: &read_fonts::tables::postscript::CharsetFormat0<'a>, _: FontData) -> Self {
let offset_data = obj.offset_data();
CharsetFormat0 {
glyph: obj.glyph().to_owned_obj(offset_data),
}
}
}
#[allow(clippy::needless_lifetimes)]
impl<'a> FromTableRef<read_fonts::tables::postscript::CharsetFormat0<'a>> for CharsetFormat0 {}
impl<'a> FontRead<'a> for CharsetFormat0 {
fn read(data: FontData<'a>) -> Result<Self, ReadError> {
<read_fonts::tables::postscript::CharsetFormat0 as FontRead>::read(data)
.map(|x| x.to_owned_table())
}
}
#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct CharsetFormat1 {
pub ranges: Vec<CharsetRange1>,
}
impl CharsetFormat1 {
pub fn new(ranges: Vec<CharsetRange1>) -> Self {
Self { ranges }
}
}
impl FontWrite for CharsetFormat1 {
#[allow(clippy::unnecessary_cast)]
fn write_into(&self, writer: &mut TableWriter) {
(1 as u8).write_into(writer);
self.ranges.write_into(writer);
}
fn table_type(&self) -> TableType {
TableType::Named("CharsetFormat1")
}
}
impl Validate for CharsetFormat1 {
fn validate_impl(&self, ctx: &mut ValidationCtx) {
ctx.in_table("CharsetFormat1", |ctx| {
ctx.in_field("ranges", |ctx| {
self.ranges.validate_impl(ctx);
});
})
}
}
impl<'a> FromObjRef<read_fonts::tables::postscript::CharsetFormat1<'a>> for CharsetFormat1 {
fn from_obj_ref(obj: &read_fonts::tables::postscript::CharsetFormat1<'a>, _: FontData) -> Self {
let offset_data = obj.offset_data();
CharsetFormat1 {
ranges: obj.ranges().to_owned_obj(offset_data),
}
}
}
#[allow(clippy::needless_lifetimes)]
impl<'a> FromTableRef<read_fonts::tables::postscript::CharsetFormat1<'a>> for CharsetFormat1 {}
impl<'a> FontRead<'a> for CharsetFormat1 {
fn read(data: FontData<'a>) -> Result<Self, ReadError> {
<read_fonts::tables::postscript::CharsetFormat1 as FontRead>::read(data)
.map(|x| x.to_owned_table())
}
}
#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct CharsetRange1 {
pub first: u16,
pub n_left: u8,
}
impl CharsetRange1 {
pub fn new(first: u16, n_left: u8) -> Self {
Self { first, n_left }
}
}
impl FontWrite for CharsetRange1 {
fn write_into(&self, writer: &mut TableWriter) {
self.first.write_into(writer);
self.n_left.write_into(writer);
}
fn table_type(&self) -> TableType {
TableType::Named("CharsetRange1")
}
}
impl Validate for CharsetRange1 {
fn validate_impl(&self, _ctx: &mut ValidationCtx) {}
}
impl FromObjRef<read_fonts::tables::postscript::CharsetRange1> for CharsetRange1 {
fn from_obj_ref(obj: &read_fonts::tables::postscript::CharsetRange1, _: FontData) -> Self {
CharsetRange1 {
first: obj.first(),
n_left: obj.n_left(),
}
}
}
#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct CharsetFormat2 {
pub ranges: Vec<CharsetRange2>,
}
impl CharsetFormat2 {
pub fn new(ranges: Vec<CharsetRange2>) -> Self {
Self { ranges }
}
}
impl FontWrite for CharsetFormat2 {
#[allow(clippy::unnecessary_cast)]
fn write_into(&self, writer: &mut TableWriter) {
(2 as u8).write_into(writer);
self.ranges.write_into(writer);
}
fn table_type(&self) -> TableType {
TableType::Named("CharsetFormat2")
}
}
impl Validate for CharsetFormat2 {
fn validate_impl(&self, ctx: &mut ValidationCtx) {
ctx.in_table("CharsetFormat2", |ctx| {
ctx.in_field("ranges", |ctx| {
self.ranges.validate_impl(ctx);
});
})
}
}
impl<'a> FromObjRef<read_fonts::tables::postscript::CharsetFormat2<'a>> for CharsetFormat2 {
fn from_obj_ref(obj: &read_fonts::tables::postscript::CharsetFormat2<'a>, _: FontData) -> Self {
let offset_data = obj.offset_data();
CharsetFormat2 {
ranges: obj.ranges().to_owned_obj(offset_data),
}
}
}
#[allow(clippy::needless_lifetimes)]
impl<'a> FromTableRef<read_fonts::tables::postscript::CharsetFormat2<'a>> for CharsetFormat2 {}
impl<'a> FontRead<'a> for CharsetFormat2 {
fn read(data: FontData<'a>) -> Result<Self, ReadError> {
<read_fonts::tables::postscript::CharsetFormat2 as FontRead>::read(data)
.map(|x| x.to_owned_table())
}
}
#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct CharsetRange2 {
pub first: u16,
pub n_left: u16,
}
impl CharsetRange2 {
pub fn new(first: u16, n_left: u16) -> Self {
Self { first, n_left }
}
}
impl FontWrite for CharsetRange2 {
fn write_into(&self, writer: &mut TableWriter) {
self.first.write_into(writer);
self.n_left.write_into(writer);
}
fn table_type(&self) -> TableType {
TableType::Named("CharsetRange2")
}
}
impl Validate for CharsetRange2 {
fn validate_impl(&self, _ctx: &mut ValidationCtx) {}
}
impl FromObjRef<read_fonts::tables::postscript::CharsetRange2> for CharsetRange2 {
fn from_obj_ref(obj: &read_fonts::tables::postscript::CharsetRange2, _: FontData) -> Self {
CharsetRange2 {
first: obj.first(),
n_left: obj.n_left(),
}
}
}