pdfrb 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.rspec +2 -0
- data/.rubocop.yml +22 -0
- data/.rubocop_todo.yml +819 -0
- data/.yardopts +4 -0
- data/CHANGELOG.md +226 -0
- data/CLAUDE.md +110 -0
- data/Gemfile +13 -0
- data/LICENSE +25 -0
- data/README.adoc +88 -0
- data/Rakefile +45 -0
- data/benchmarks/bench.rb +49 -0
- data/data/pdfrb/afm/Courier-Bold.afm +342 -0
- data/data/pdfrb/afm/Courier-BoldOblique.afm +342 -0
- data/data/pdfrb/afm/Courier-Oblique.afm +342 -0
- data/data/pdfrb/afm/Courier.afm +342 -0
- data/data/pdfrb/afm/Helvetica-Bold.afm +2827 -0
- data/data/pdfrb/afm/Helvetica-BoldOblique.afm +2827 -0
- data/data/pdfrb/afm/Helvetica-Oblique.afm +3051 -0
- data/data/pdfrb/afm/Helvetica.afm +3051 -0
- data/data/pdfrb/afm/Symbol.afm +213 -0
- data/data/pdfrb/afm/Times-Bold.afm +2588 -0
- data/data/pdfrb/afm/Times-BoldItalic.afm +2384 -0
- data/data/pdfrb/afm/Times-Italic.afm +2667 -0
- data/data/pdfrb/afm/Times-Roman.afm +2419 -0
- data/data/pdfrb/afm/ZapfDingbats.afm +225 -0
- data/data/pdfrb/arlington/latest/3DActivation.tsv +10 -0
- data/data/pdfrb/arlington/latest/3DAnimationStyle.tsv +5 -0
- data/data/pdfrb/arlington/latest/3DBackground.tsv +6 -0
- data/data/pdfrb/arlington/latest/3DCrossSection.tsv +11 -0
- data/data/pdfrb/arlington/latest/3DLightingScheme.tsv +3 -0
- data/data/pdfrb/arlington/latest/3DMeasure3DC.tsv +12 -0
- data/data/pdfrb/arlington/latest/3DMeasureAD3.tsv +21 -0
- data/data/pdfrb/arlington/latest/3DMeasureLD3.tsv +18 -0
- data/data/pdfrb/arlington/latest/3DMeasurePD3.tsv +19 -0
- data/data/pdfrb/arlington/latest/3DMeasureRD3.tsv +23 -0
- data/data/pdfrb/arlington/latest/3DNode.tsv +9 -0
- data/data/pdfrb/arlington/latest/3DReference.tsv +3 -0
- data/data/pdfrb/arlington/latest/3DRenderMode.tsv +7 -0
- data/data/pdfrb/arlington/latest/3DStream.tsv +16 -0
- data/data/pdfrb/arlington/latest/3DUnits.tsv +10 -0
- data/data/pdfrb/arlington/latest/3DView.tsv +17 -0
- data/data/pdfrb/arlington/latest/3DViewAddEntries.tsv +19 -0
- data/data/pdfrb/arlington/latest/AAPL_ST.tsv +7 -0
- data/data/pdfrb/arlington/latest/AFEmbeddedFileParameter.tsv +6 -0
- data/data/pdfrb/arlington/latest/AFEmbeddedFileStream.tsv +12 -0
- data/data/pdfrb/arlington/latest/AFFileSpecEF.tsv +3 -0
- data/data/pdfrb/arlington/latest/AFFileSpecification.tsv +17 -0
- data/data/pdfrb/arlington/latest/ActionECMAScript.tsv +5 -0
- data/data/pdfrb/arlington/latest/ActionGoTo.tsv +6 -0
- data/data/pdfrb/arlington/latest/ActionGoTo3DView.tsv +6 -0
- data/data/pdfrb/arlington/latest/ActionGoToDp.tsv +5 -0
- data/data/pdfrb/arlington/latest/ActionGoToE.tsv +8 -0
- data/data/pdfrb/arlington/latest/ActionGoToR.tsv +8 -0
- data/data/pdfrb/arlington/latest/ActionHide.tsv +6 -0
- data/data/pdfrb/arlington/latest/ActionImportData.tsv +5 -0
- data/data/pdfrb/arlington/latest/ActionLaunch.tsv +9 -0
- data/data/pdfrb/arlington/latest/ActionMovie.tsv +7 -0
- data/data/pdfrb/arlington/latest/ActionNOP.tsv +4 -0
- data/data/pdfrb/arlington/latest/ActionNamed.tsv +5 -0
- data/data/pdfrb/arlington/latest/ActionRendition.tsv +8 -0
- data/data/pdfrb/arlington/latest/ActionResetForm.tsv +6 -0
- data/data/pdfrb/arlington/latest/ActionRichMediaExecute.tsv +7 -0
- data/data/pdfrb/arlington/latest/ActionSetOCGState.tsv +6 -0
- data/data/pdfrb/arlington/latest/ActionSetState.tsv +6 -0
- data/data/pdfrb/arlington/latest/ActionSound.tsv +9 -0
- data/data/pdfrb/arlington/latest/ActionSubmitForm.tsv +8 -0
- data/data/pdfrb/arlington/latest/ActionThread.tsv +7 -0
- data/data/pdfrb/arlington/latest/ActionTransition.tsv +5 -0
- data/data/pdfrb/arlington/latest/ActionURI.tsv +6 -0
- data/data/pdfrb/arlington/latest/AddActionCatalog.tsv +6 -0
- data/data/pdfrb/arlington/latest/AddActionFormField.tsv +5 -0
- data/data/pdfrb/arlington/latest/AddActionPageObject.tsv +3 -0
- data/data/pdfrb/arlington/latest/AddActionScreenAnnotation.tsv +9 -0
- data/data/pdfrb/arlington/latest/AddActionWidgetAnnotation.tsv +11 -0
- data/data/pdfrb/arlington/latest/AlternateImage.tsv +4 -0
- data/data/pdfrb/arlington/latest/Annot3D.tsv +27 -0
- data/data/pdfrb/arlington/latest/AnnotCaret.tsv +31 -0
- data/data/pdfrb/arlington/latest/AnnotCircle.tsv +33 -0
- data/data/pdfrb/arlington/latest/AnnotFileAttachment.tsv +31 -0
- data/data/pdfrb/arlington/latest/AnnotFreeText.tsv +37 -0
- data/data/pdfrb/arlington/latest/AnnotHighlight.tsv +30 -0
- data/data/pdfrb/arlington/latest/AnnotInk.tsv +32 -0
- data/data/pdfrb/arlington/latest/AnnotLine.tsv +40 -0
- data/data/pdfrb/arlington/latest/AnnotLink.tsv +27 -0
- data/data/pdfrb/arlington/latest/AnnotMovie.tsv +23 -0
- data/data/pdfrb/arlington/latest/AnnotPolyLine.tsv +36 -0
- data/data/pdfrb/arlington/latest/AnnotPolygon.tsv +36 -0
- data/data/pdfrb/arlington/latest/AnnotPopup.tsv +22 -0
- data/data/pdfrb/arlington/latest/AnnotPrinterMark.tsv +21 -0
- data/data/pdfrb/arlington/latest/AnnotProjection.tsv +29 -0
- data/data/pdfrb/arlington/latest/AnnotRedact.tsv +36 -0
- data/data/pdfrb/arlington/latest/AnnotRichMedia.tsv +22 -0
- data/data/pdfrb/arlington/latest/AnnotScreen.tsv +24 -0
- data/data/pdfrb/arlington/latest/AnnotSound.tsv +31 -0
- data/data/pdfrb/arlington/latest/AnnotSquare.tsv +33 -0
- data/data/pdfrb/arlington/latest/AnnotSquiggly.tsv +30 -0
- data/data/pdfrb/arlington/latest/AnnotStamp.tsv +30 -0
- data/data/pdfrb/arlington/latest/AnnotStrikeOut.tsv +30 -0
- data/data/pdfrb/arlington/latest/AnnotText.tsv +33 -0
- data/data/pdfrb/arlington/latest/AnnotTrapNetwork.tsv +24 -0
- data/data/pdfrb/arlington/latest/AnnotUnderline.tsv +30 -0
- data/data/pdfrb/arlington/latest/AnnotWatermark.tsv +21 -0
- data/data/pdfrb/arlington/latest/AnnotWidget.tsv +32 -0
- data/data/pdfrb/arlington/latest/Appearance.tsv +4 -0
- data/data/pdfrb/arlington/latest/AppearanceCharacteristics.tsv +12 -0
- data/data/pdfrb/arlington/latest/AppearancePrinterMark.tsv +4 -0
- data/data/pdfrb/arlington/latest/AppearancePrinterMarkSubDict.tsv +2 -0
- data/data/pdfrb/arlington/latest/AppearanceSubDict.tsv +2 -0
- data/data/pdfrb/arlington/latest/AppearanceTrapNet.tsv +4 -0
- data/data/pdfrb/arlington/latest/AppearanceTrapNetSubDict.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOf3DCrossSection.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOf3DMeasure.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOf3DNode.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOf3DTransMatrix.tsv +13 -0
- data/data/pdfrb/arlington/latest/ArrayOf3DView.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOf3DViewAddEntries.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOf3PDUNames.tsv +4 -0
- data/data/pdfrb/arlington/latest/ArrayOf4Functions.tsv +5 -0
- data/data/pdfrb/arlington/latest/ArrayOfAFFileSpecifications.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOfActionHideAnnots.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfActions.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfAnnotStates.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfAnnots.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfArraysInkList.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfArraysPaths.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOfArraysRBGroups.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfArraysURLStrings.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfArraysXPTSValues.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfAttributeObjects.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfAttributeRevisions.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOfBeads.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfBlendModes.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfBooleansGeneral.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIDGlyphMetricsW.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIDGlyphMetricsW2.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_AssemblingIntent.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_AssemblyItem.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_BindIn.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_BindingIntent.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_BlowIn.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_ChannelUsage.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_Coatings.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_ColorIntent.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_ComChannel.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_ContactTypes.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_FinishedDimensions.tsv +4 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_FoldingIntent.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_HoleMakingIntent.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_HolePattern.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_LABColorValue.tsv +4 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_LayoutIntent.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_MediaIntent.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_PrintProcess.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_ProductionIntent.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_Resource.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_StickOn.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfClassNamesRevisions.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOfCompressionFilterNames.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfDPartArrays.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfDParts.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfDashPatterns.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfDecodeParams.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfDescendantFonts.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfDevExtensions.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfDifferences.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfDigestMethod.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfDuration.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOfFieldChoiceOpt.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfFieldID.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfFields.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfFileSpecifications.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOfFilterNames.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfFontAndSize.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOfFonts.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfFunctions.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfGSPDashPatterns.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOfImageAlternates.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfIndirectFileSpecifications.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfIntegersGeneral.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfIntegersGreaterThanZero.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfMediaPlayerInfo.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfNamesForEnforce.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfNamesForPrintingOrder.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfNamesForProcSet.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfNamesGeneral.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfNamesInPtData.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfNamespace.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfNavigatorLayoutNames.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfNonNegativeIntegersGeneral.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfNumberFormats.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfNumbersGeneral.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfOCConfig.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfOCG.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfOCGState.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfOCGindirect.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfOCUsage.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfOPI13Color.tsv +6 -0
- data/data/pdfrb/arlington/latest/ArrayOfOPI2Inks.tsv +4 -0
- data/data/pdfrb/arlington/latest/ArrayOfOptContentGroups.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfOptContentOrderElements.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfOptContentOrders.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOfOutputIntents.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfPageTreeNodeKids.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfPages.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfPaths.tsv +7 -0
- data/data/pdfrb/arlington/latest/ArrayOfQuadPoints.tsv +9 -0
- data/data/pdfrb/arlington/latest/ArrayOfRenditions.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfRequirements.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfRequirementsHandlers.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfRichMediaConfiguration.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfRichMediaCuePoints.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfRichMediaInstances.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfSignatureReferences.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfSignatureSubFilterNames.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfSoftwareIdentifiers.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfSoftwareVersions.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfSourceInformation.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfStreamsGeneral.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfStringsASCII.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfStringsByte.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfStringsText.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfStringsTextOrNames.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfStructElem.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfStructElemKids.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfStructElemParentTree.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfSubjectDN.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfTags.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOfThreads.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfTrapNetVersionObjects.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfTrapRegions.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfURLStrings.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfURLs.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfUserProperty.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfViewParams.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfViewports.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfWebCaptureCommands.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfWebCaptureImages.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfWebCapturePages.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfXFA.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOfXPTSValues.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfXRefIndexIntegers.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOfXRefWIntegers.tsv +4 -0
- data/data/pdfrb/arlington/latest/ArrayOf_2Booleans.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOf_2DashNumbers.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOf_2Integers.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOf_2LineEndingsNames.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOf_2NonNegativeIntegers.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOf_2Numbers.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOf_2StringsByte.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOf_2StringsText.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOf_3CenterOfRotationNumbers.tsv +4 -0
- data/data/pdfrb/arlington/latest/ArrayOf_3NonNegativeIntegers.tsv +4 -0
- data/data/pdfrb/arlington/latest/ArrayOf_3Numbers.tsv +4 -0
- data/data/pdfrb/arlington/latest/ArrayOf_3OrientationNumbers.tsv +4 -0
- data/data/pdfrb/arlington/latest/ArrayOf_3RGBNumbers.tsv +4 -0
- data/data/pdfrb/arlington/latest/ArrayOf_3or4CalloutLineNumbers.tsv +7 -0
- data/data/pdfrb/arlington/latest/ArrayOf_4AnnotBorderCharacteristics.tsv +5 -0
- data/data/pdfrb/arlington/latest/ArrayOf_4BorderColorArrays.tsv +5 -0
- data/data/pdfrb/arlington/latest/ArrayOf_4BorderStyleNames.tsv +5 -0
- data/data/pdfrb/arlington/latest/ArrayOf_4BorderThicknessNumbers.tsv +5 -0
- data/data/pdfrb/arlington/latest/ArrayOf_4ColourSpaceEntries.tsv +5 -0
- data/data/pdfrb/arlington/latest/ArrayOf_4Integers.tsv +5 -0
- data/data/pdfrb/arlington/latest/ArrayOf_4Numbers.tsv +5 -0
- data/data/pdfrb/arlington/latest/ArrayOf_4NumbersColorAnnotation.tsv +5 -0
- data/data/pdfrb/arlington/latest/ArrayOf_6Numbers.tsv +7 -0
- data/data/pdfrb/arlington/latest/ArrayOf_8Numbers.tsv +9 -0
- data/data/pdfrb/arlington/latest/ArrayOf_9Numbers.tsv +10 -0
- data/data/pdfrb/arlington/latest/ArrayOf_ArrayOfNumbers.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOf_RoleMapNS.tsv +3 -0
- data/data/pdfrb/arlington/latest/AuthCode.tsv +5 -0
- data/data/pdfrb/arlington/latest/Bead.tsv +7 -0
- data/data/pdfrb/arlington/latest/BeadFirst.tsv +7 -0
- data/data/pdfrb/arlington/latest/BlackpointArray.tsv +4 -0
- data/data/pdfrb/arlington/latest/BorderEffect.tsv +3 -0
- data/data/pdfrb/arlington/latest/BorderStyle.tsv +5 -0
- data/data/pdfrb/arlington/latest/BoxColorInfo.tsv +5 -0
- data/data/pdfrb/arlington/latest/BoxStyle.tsv +5 -0
- data/data/pdfrb/arlington/latest/CIDFontDescriptorMetrics.tsv +17 -0
- data/data/pdfrb/arlington/latest/CIDSystemInfo.tsv +4 -0
- data/data/pdfrb/arlington/latest/CIP4_Address.tsv +13 -0
- data/data/pdfrb/arlington/latest/CIP4_AssemblingIntent.tsv +7 -0
- data/data/pdfrb/arlington/latest/CIP4_AssemblyItem.tsv +3 -0
- data/data/pdfrb/arlington/latest/CIP4_BindIn.tsv +3 -0
- data/data/pdfrb/arlington/latest/CIP4_BindingIntent.tsv +6 -0
- data/data/pdfrb/arlington/latest/CIP4_BlowIn.tsv +3 -0
- data/data/pdfrb/arlington/latest/CIP4_ColorIntent.tsv +3 -0
- data/data/pdfrb/arlington/latest/CIP4_ComChannel.tsv +6 -0
- data/data/pdfrb/arlington/latest/CIP4_Company.tsv +5 -0
- data/data/pdfrb/arlington/latest/CIP4_Contact.tsv +8 -0
- data/data/pdfrb/arlington/latest/CIP4_FoldingIntent.tsv +4 -0
- data/data/pdfrb/arlington/latest/CIP4_HoleMakingIntent.tsv +3 -0
- data/data/pdfrb/arlington/latest/CIP4_HolePattern.tsv +4 -0
- data/data/pdfrb/arlington/latest/CIP4_Intent.tsv +11 -0
- data/data/pdfrb/arlington/latest/CIP4_IntentSummary.tsv +10 -0
- data/data/pdfrb/arlington/latest/CIP4_LayoutIntent.tsv +5 -0
- data/data/pdfrb/arlington/latest/CIP4_MediaIntent.tsv +11 -0
- data/data/pdfrb/arlington/latest/CIP4_Metadata.tsv +11 -0
- data/data/pdfrb/arlington/latest/CIP4_Person.tsv +10 -0
- data/data/pdfrb/arlington/latest/CIP4_Production.tsv +5 -0
- data/data/pdfrb/arlington/latest/CIP4_ProductionIntent.tsv +4 -0
- data/data/pdfrb/arlington/latest/CIP4_Recipient.tsv +3 -0
- data/data/pdfrb/arlington/latest/CIP4_Root.tsv +9 -0
- data/data/pdfrb/arlington/latest/CIP4_SaddleStitching.tsv +3 -0
- data/data/pdfrb/arlington/latest/CIP4_SideStitching.tsv +3 -0
- data/data/pdfrb/arlington/latest/CIP4_StickOn.tsv +3 -0
- data/data/pdfrb/arlington/latest/CMapStream.tsv +13 -0
- data/data/pdfrb/arlington/latest/CalGrayColorSpace.tsv +3 -0
- data/data/pdfrb/arlington/latest/CalGrayDict.tsv +4 -0
- data/data/pdfrb/arlington/latest/CalRGBColorSpace.tsv +3 -0
- data/data/pdfrb/arlington/latest/CalRGBDict.tsv +5 -0
- data/data/pdfrb/arlington/latest/Catalog.tsv +33 -0
- data/data/pdfrb/arlington/latest/CertSeedValue.tsv +14 -0
- data/data/pdfrb/arlington/latest/CharProcMap.tsv +2 -0
- data/data/pdfrb/arlington/latest/ClassMap.tsv +2 -0
- data/data/pdfrb/arlington/latest/Collection.tsv +11 -0
- data/data/pdfrb/arlington/latest/CollectionColors.tsv +7 -0
- data/data/pdfrb/arlington/latest/CollectionField.tsv +7 -0
- data/data/pdfrb/arlington/latest/CollectionFolder.tsv +13 -0
- data/data/pdfrb/arlington/latest/CollectionItem.tsv +3 -0
- data/data/pdfrb/arlington/latest/CollectionSchema.tsv +3 -0
- data/data/pdfrb/arlington/latest/CollectionSort.tsv +4 -0
- data/data/pdfrb/arlington/latest/CollectionSplit.tsv +4 -0
- data/data/pdfrb/arlington/latest/CollectionSubitem.tsv +4 -0
- data/data/pdfrb/arlington/latest/ColorSpaceMap.tsv +5 -0
- data/data/pdfrb/arlington/latest/ColorantsDict.tsv +2 -0
- data/data/pdfrb/arlington/latest/CryptFilter.tsv +5 -0
- data/data/pdfrb/arlington/latest/CryptFilterMap.tsv +4 -0
- data/data/pdfrb/arlington/latest/CryptFilterPublicKey.tsv +7 -0
- data/data/pdfrb/arlington/latest/CryptFilterPublicKeyMap.tsv +4 -0
- data/data/pdfrb/arlington/latest/DPM.tsv +5 -0
- data/data/pdfrb/arlington/latest/DPart.tsv +8 -0
- data/data/pdfrb/arlington/latest/DPartRoot.tsv +5 -0
- data/data/pdfrb/arlington/latest/DSS.tsv +6 -0
- data/data/pdfrb/arlington/latest/Data.tsv +4 -0
- data/data/pdfrb/arlington/latest/Dest0Array.tsv +3 -0
- data/data/pdfrb/arlington/latest/Dest0StructArray.tsv +3 -0
- data/data/pdfrb/arlington/latest/Dest1Array.tsv +4 -0
- data/data/pdfrb/arlington/latest/Dest1StructArray.tsv +4 -0
- data/data/pdfrb/arlington/latest/Dest4Array.tsv +7 -0
- data/data/pdfrb/arlington/latest/Dest4StructArray.tsv +7 -0
- data/data/pdfrb/arlington/latest/DestDict.tsv +3 -0
- data/data/pdfrb/arlington/latest/DestOutputProfileRef.tsv +7 -0
- data/data/pdfrb/arlington/latest/DestXYZArray.tsv +6 -0
- data/data/pdfrb/arlington/latest/DestXYZStructArray.tsv +6 -0
- data/data/pdfrb/arlington/latest/DestsMap.tsv +2 -0
- data/data/pdfrb/arlington/latest/DevExtensions.tsv +6 -0
- data/data/pdfrb/arlington/latest/DeviceCMYKColorSpace.tsv +2 -0
- data/data/pdfrb/arlington/latest/DeviceGrayColorSpace.tsv +2 -0
- data/data/pdfrb/arlington/latest/DeviceNColorSpace.tsv +6 -0
- data/data/pdfrb/arlington/latest/DeviceNDict.tsv +5 -0
- data/data/pdfrb/arlington/latest/DeviceNMixingHints.tsv +4 -0
- data/data/pdfrb/arlington/latest/DeviceNProcess.tsv +3 -0
- data/data/pdfrb/arlington/latest/DeviceRGBColorSpace.tsv +2 -0
- data/data/pdfrb/arlington/latest/DictionaryOfDictionaries.tsv +2 -0
- data/data/pdfrb/arlington/latest/DictionaryOfFunctions.tsv +3 -0
- data/data/pdfrb/arlington/latest/DocInfo.tsv +13 -0
- data/data/pdfrb/arlington/latest/DocMDPTransformParameters.tsv +4 -0
- data/data/pdfrb/arlington/latest/DocTimeStamp.tsv +19 -0
- data/data/pdfrb/arlington/latest/EmbeddedFileParameter.tsv +6 -0
- data/data/pdfrb/arlington/latest/EmbeddedFileStream.tsv +12 -0
- data/data/pdfrb/arlington/latest/Encoding.tsv +4 -0
- data/data/pdfrb/arlington/latest/EncryptedPayload.tsv +4 -0
- data/data/pdfrb/arlington/latest/EncryptionPublicKey.tsv +13 -0
- data/data/pdfrb/arlington/latest/EncryptionStandard.tsv +18 -0
- data/data/pdfrb/arlington/latest/ExData3DMarkup.tsv +6 -0
- data/data/pdfrb/arlington/latest/ExDataMarkupGeo.tsv +3 -0
- data/data/pdfrb/arlington/latest/ExDataProjection.tsv +4 -0
- data/data/pdfrb/arlington/latest/Extensions.tsv +5 -0
- data/data/pdfrb/arlington/latest/FDDict.tsv +2 -0
- data/data/pdfrb/arlington/latest/Field.tsv +8 -0
- data/data/pdfrb/arlington/latest/FieldBtnCheckbox.tsv +16 -0
- data/data/pdfrb/arlington/latest/FieldBtnPush.tsv +15 -0
- data/data/pdfrb/arlington/latest/FieldBtnRadio.tsv +16 -0
- data/data/pdfrb/arlington/latest/FieldChoice.tsv +18 -0
- data/data/pdfrb/arlington/latest/FieldMDPTransformParameters.tsv +5 -0
- data/data/pdfrb/arlington/latest/FieldSig.tsv +17 -0
- data/data/pdfrb/arlington/latest/FieldTx.tsv +16 -0
- data/data/pdfrb/arlington/latest/FileSpecEF.tsv +3 -0
- data/data/pdfrb/arlington/latest/FileSpecRF.tsv +3 -0
- data/data/pdfrb/arlington/latest/FileSpecification.tsv +17 -0
- data/data/pdfrb/arlington/latest/FileTrailer.tsv +11 -0
- data/data/pdfrb/arlington/latest/FilterCCITTFaxDecode.tsv +10 -0
- data/data/pdfrb/arlington/latest/FilterCrypt.tsv +3 -0
- data/data/pdfrb/arlington/latest/FilterDCTDecode.tsv +2 -0
- data/data/pdfrb/arlington/latest/FilterFlateDecode.tsv +5 -0
- data/data/pdfrb/arlington/latest/FilterJBIG2Decode.tsv +2 -0
- data/data/pdfrb/arlington/latest/FilterLZWDecode.tsv +6 -0
- data/data/pdfrb/arlington/latest/FixedPrint.tsv +5 -0
- data/data/pdfrb/arlington/latest/FloatingWindowParameters.tsv +10 -0
- data/data/pdfrb/arlington/latest/FontCIDType0.tsv +12 -0
- data/data/pdfrb/arlington/latest/FontCIDType2.tsv +12 -0
- data/data/pdfrb/arlington/latest/FontDescriptorCIDType0.tsv +25 -0
- data/data/pdfrb/arlington/latest/FontDescriptorCIDType2.tsv +26 -0
- data/data/pdfrb/arlington/latest/FontDescriptorTrueType.tsv +22 -0
- data/data/pdfrb/arlington/latest/FontDescriptorType1.tsv +22 -0
- data/data/pdfrb/arlington/latest/FontDescriptorType3.tsv +19 -0
- data/data/pdfrb/arlington/latest/FontFile.tsv +13 -0
- data/data/pdfrb/arlington/latest/FontFile2.tsv +13 -0
- data/data/pdfrb/arlington/latest/FontFile3CIDType0.tsv +13 -0
- data/data/pdfrb/arlington/latest/FontFile3OpenType.tsv +13 -0
- data/data/pdfrb/arlington/latest/FontFile3Type1.tsv +13 -0
- data/data/pdfrb/arlington/latest/FontFileType1.tsv +13 -0
- data/data/pdfrb/arlington/latest/FontMap.tsv +2 -0
- data/data/pdfrb/arlington/latest/FontMultipleMaster.tsv +11 -0
- data/data/pdfrb/arlington/latest/FontTrueType.tsv +11 -0
- data/data/pdfrb/arlington/latest/FontType0.tsv +7 -0
- data/data/pdfrb/arlington/latest/FontType1.tsv +11 -0
- data/data/pdfrb/arlington/latest/FontType3.tsv +14 -0
- data/data/pdfrb/arlington/latest/FunctionType0.tsv +16 -0
- data/data/pdfrb/arlington/latest/FunctionType2.tsv +7 -0
- data/data/pdfrb/arlington/latest/FunctionType3.tsv +7 -0
- data/data/pdfrb/arlington/latest/FunctionType4.tsv +11 -0
- data/data/pdfrb/arlington/latest/GTS_ProcStepsGroup.tsv +4 -0
- data/data/pdfrb/arlington/latest/GTSm_DevExtensions.tsv +6 -0
- data/data/pdfrb/arlington/latest/GammaArray.tsv +4 -0
- data/data/pdfrb/arlington/latest/GeographicCoordinateSystem.tsv +4 -0
- data/data/pdfrb/arlington/latest/GraphicsStateParameter.tsv +33 -0
- data/data/pdfrb/arlington/latest/GraphicsStateParameterMap.tsv +2 -0
- data/data/pdfrb/arlington/latest/GroupAttributes.tsv +6 -0
- data/data/pdfrb/arlington/latest/HalftoneType1.tsv +9 -0
- data/data/pdfrb/arlington/latest/HalftoneType10.tsv +14 -0
- data/data/pdfrb/arlington/latest/HalftoneType16.tsv +16 -0
- data/data/pdfrb/arlington/latest/HalftoneType5.tsv +6 -0
- data/data/pdfrb/arlington/latest/HalftoneType6.tsv +14 -0
- data/data/pdfrb/arlington/latest/ICCBasedColorSpace.tsv +3 -0
- data/data/pdfrb/arlington/latest/ICCProfileStream.tsv +12 -0
- data/data/pdfrb/arlington/latest/ISO_DevExtensions.tsv +6 -0
- data/data/pdfrb/arlington/latest/IconFit.tsv +5 -0
- data/data/pdfrb/arlington/latest/IndexedColorSpace.tsv +5 -0
- data/data/pdfrb/arlington/latest/InteractiveForm.tsv +9 -0
- data/data/pdfrb/arlington/latest/LabColorSpace.tsv +3 -0
- data/data/pdfrb/arlington/latest/LabDict.tsv +4 -0
- data/data/pdfrb/arlington/latest/LabRangeArray.tsv +5 -0
- data/data/pdfrb/arlington/latest/LegalAttestation.tsv +23 -0
- data/data/pdfrb/arlington/latest/LinearizationParameterDict.tsv +9 -0
- data/data/pdfrb/arlington/latest/MDPDict.tsv +2 -0
- data/data/pdfrb/arlington/latest/Mac.tsv +4 -0
- data/data/pdfrb/arlington/latest/MarkInfo.tsv +4 -0
- data/data/pdfrb/arlington/latest/MarkedContentReference.tsv +6 -0
- data/data/pdfrb/arlington/latest/MeasureGEO.tsv +10 -0
- data/data/pdfrb/arlington/latest/MeasureRL.tsv +12 -0
- data/data/pdfrb/arlington/latest/MediaClipData.tsv +11 -0
- data/data/pdfrb/arlington/latest/MediaClipDataMHBE.tsv +2 -0
- data/data/pdfrb/arlington/latest/MediaClipSection.tsv +8 -0
- data/data/pdfrb/arlington/latest/MediaClipSectionMHBE.tsv +3 -0
- data/data/pdfrb/arlington/latest/MediaCriteria.tsv +12 -0
- data/data/pdfrb/arlington/latest/MediaDuration.tsv +4 -0
- data/data/pdfrb/arlington/latest/MediaOffsetFrame.tsv +4 -0
- data/data/pdfrb/arlington/latest/MediaOffsetMarker.tsv +4 -0
- data/data/pdfrb/arlington/latest/MediaOffsetTime.tsv +4 -0
- data/data/pdfrb/arlington/latest/MediaPermissions.tsv +3 -0
- data/data/pdfrb/arlington/latest/MediaPlayParameters.tsv +5 -0
- data/data/pdfrb/arlington/latest/MediaPlayParametersBE.tsv +7 -0
- data/data/pdfrb/arlington/latest/MediaPlayParametersMH.tsv +7 -0
- data/data/pdfrb/arlington/latest/MediaPlayerInfo.tsv +5 -0
- data/data/pdfrb/arlington/latest/MediaPlayers.tsv +5 -0
- data/data/pdfrb/arlington/latest/MediaScreenParameters.tsv +4 -0
- data/data/pdfrb/arlington/latest/MediaScreenParametersMHBE.tsv +6 -0
- data/data/pdfrb/arlington/latest/Metadata.tsv +10 -0
- data/data/pdfrb/arlington/latest/MicrosoftWindowsLaunchParam.tsv +5 -0
- data/data/pdfrb/arlington/latest/MinimumBitDepth.tsv +4 -0
- data/data/pdfrb/arlington/latest/MinimumScreenSize.tsv +4 -0
- data/data/pdfrb/arlington/latest/Movie.tsv +5 -0
- data/data/pdfrb/arlington/latest/MovieActivation.tsv +10 -0
- data/data/pdfrb/arlington/latest/Name.tsv +12 -0
- data/data/pdfrb/arlington/latest/Namespace.tsv +5 -0
- data/data/pdfrb/arlington/latest/NavNode.tsv +7 -0
- data/data/pdfrb/arlington/latest/Navigator.tsv +16 -0
- data/data/pdfrb/arlington/latest/NumberFormat.tsv +12 -0
- data/data/pdfrb/arlington/latest/OOAdditionalStmsArray.tsv +3 -0
- data/data/pdfrb/arlington/latest/OPIVersion13.tsv +2 -0
- data/data/pdfrb/arlington/latest/OPIVersion13Dict.tsv +19 -0
- data/data/pdfrb/arlington/latest/OPIVersion20.tsv +2 -0
- data/data/pdfrb/arlington/latest/OPIVersion20Dict.tsv +12 -0
- data/data/pdfrb/arlington/latest/ObjectReference.tsv +4 -0
- data/data/pdfrb/arlington/latest/ObjectStream.tsv +12 -0
- data/data/pdfrb/arlington/latest/OptContentConfig.tsv +12 -0
- data/data/pdfrb/arlington/latest/OptContentCreatorInfo.tsv +4 -0
- data/data/pdfrb/arlington/latest/OptContentExport.tsv +2 -0
- data/data/pdfrb/arlington/latest/OptContentGroup.tsv +6 -0
- data/data/pdfrb/arlington/latest/OptContentLanguage.tsv +3 -0
- data/data/pdfrb/arlington/latest/OptContentMembership.tsv +5 -0
- data/data/pdfrb/arlington/latest/OptContentPageElement.tsv +2 -0
- data/data/pdfrb/arlington/latest/OptContentPrint.tsv +3 -0
- data/data/pdfrb/arlington/latest/OptContentProperties.tsv +4 -0
- data/data/pdfrb/arlington/latest/OptContentUsage.tsv +9 -0
- data/data/pdfrb/arlington/latest/OptContentUsageApplication.tsv +4 -0
- data/data/pdfrb/arlington/latest/OptContentUser.tsv +3 -0
- data/data/pdfrb/arlington/latest/OptContentView.tsv +2 -0
- data/data/pdfrb/arlington/latest/OptContentZoom.tsv +3 -0
- data/data/pdfrb/arlington/latest/Outline.tsv +5 -0
- data/data/pdfrb/arlington/latest/OutlineItem.tsv +13 -0
- data/data/pdfrb/arlington/latest/OutputIntents.tsv +11 -0
- data/data/pdfrb/arlington/latest/PageLabel.tsv +5 -0
- data/data/pdfrb/arlington/latest/PageObject.tsv +35 -0
- data/data/pdfrb/arlington/latest/PagePiece.tsv +2 -0
- data/data/pdfrb/arlington/latest/PageTreeNode.tsv +9 -0
- data/data/pdfrb/arlington/latest/PageTreeNodeRoot.tsv +8 -0
- data/data/pdfrb/arlington/latest/PaperMetaData.tsv +13 -0
- data/data/pdfrb/arlington/latest/PatternColorSpace.tsv +3 -0
- data/data/pdfrb/arlington/latest/PatternMap.tsv +2 -0
- data/data/pdfrb/arlington/latest/PatternType1.tsv +18 -0
- data/data/pdfrb/arlington/latest/PatternType2.tsv +6 -0
- data/data/pdfrb/arlington/latest/Permissions.tsv +3 -0
- data/data/pdfrb/arlington/latest/PointData.tsv +5 -0
- data/data/pdfrb/arlington/latest/ProjectedCoordinateSystem.tsv +4 -0
- data/data/pdfrb/arlington/latest/Projection.tsv +9 -0
- data/data/pdfrb/arlington/latest/Reference.tsv +4 -0
- data/data/pdfrb/arlington/latest/RelatedFilesArray.tsv +3 -0
- data/data/pdfrb/arlington/latest/RenditionBE.tsv +2 -0
- data/data/pdfrb/arlington/latest/RenditionMH.tsv +2 -0
- data/data/pdfrb/arlington/latest/RenditionMedia.tsv +9 -0
- data/data/pdfrb/arlington/latest/RenditionSelector.tsv +7 -0
- data/data/pdfrb/arlington/latest/Requirements3DMarkup.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsAcroFormInteract.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsAction.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsAttachment.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsAttachmentEditing.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsCollection.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsCollectionEditing.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsDPartInteract.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsDigSig.tsv +7 -0
- data/data/pdfrb/arlington/latest/RequirementsDigSigMDP.tsv +7 -0
- data/data/pdfrb/arlington/latest/RequirementsDigSigValidation.tsv +7 -0
- data/data/pdfrb/arlington/latest/RequirementsEnableJavaScripts.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsEncryption.tsv +7 -0
- data/data/pdfrb/arlington/latest/RequirementsGeospatial2D.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsGeospatial3D.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsHandler.tsv +4 -0
- data/data/pdfrb/arlington/latest/RequirementsMarkup.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsMultimedia.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsNavigation.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsOCAutoStates.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsOCInteract.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsPRC.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsRichMedia.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsSTEP.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsSeparationSimulation.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsTransitions.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsU3D.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsglTF.tsv +6 -0
- data/data/pdfrb/arlington/latest/Resource.tsv +10 -0
- data/data/pdfrb/arlington/latest/RichMediaActivation.tsv +8 -0
- data/data/pdfrb/arlington/latest/RichMediaAnimation.tsv +6 -0
- data/data/pdfrb/arlington/latest/RichMediaCommand.tsv +4 -0
- data/data/pdfrb/arlington/latest/RichMediaCommandArray.tsv +2 -0
- data/data/pdfrb/arlington/latest/RichMediaConfiguration.tsv +5 -0
- data/data/pdfrb/arlington/latest/RichMediaContent.tsv +5 -0
- data/data/pdfrb/arlington/latest/RichMediaCuePoint.tsv +6 -0
- data/data/pdfrb/arlington/latest/RichMediaDeactivation.tsv +3 -0
- data/data/pdfrb/arlington/latest/RichMediaHeight.tsv +4 -0
- data/data/pdfrb/arlington/latest/RichMediaInstance.tsv +6 -0
- data/data/pdfrb/arlington/latest/RichMediaParams.tsv +7 -0
- data/data/pdfrb/arlington/latest/RichMediaPosition.tsv +6 -0
- data/data/pdfrb/arlington/latest/RichMediaPresentation.tsv +8 -0
- data/data/pdfrb/arlington/latest/RichMediaSettings.tsv +4 -0
- data/data/pdfrb/arlington/latest/RichMediaWidth.tsv +4 -0
- data/data/pdfrb/arlington/latest/RichMediaWindow.tsv +5 -0
- data/data/pdfrb/arlington/latest/RoleMap.tsv +2 -0
- data/data/pdfrb/arlington/latest/RoleMapNS.tsv +2 -0
- data/data/pdfrb/arlington/latest/Separation.tsv +4 -0
- data/data/pdfrb/arlington/latest/SeparationColorSpace.tsv +5 -0
- data/data/pdfrb/arlington/latest/ShadingMap.tsv +2 -0
- data/data/pdfrb/arlington/latest/ShadingType1.tsv +9 -0
- data/data/pdfrb/arlington/latest/ShadingType2.tsv +10 -0
- data/data/pdfrb/arlington/latest/ShadingType3.tsv +10 -0
- data/data/pdfrb/arlington/latest/ShadingType4.tsv +18 -0
- data/data/pdfrb/arlington/latest/ShadingType5.tsv +18 -0
- data/data/pdfrb/arlington/latest/ShadingType6.tsv +18 -0
- data/data/pdfrb/arlington/latest/ShadingType7.tsv +18 -0
- data/data/pdfrb/arlington/latest/SigFieldLock.tsv +5 -0
- data/data/pdfrb/arlington/latest/SigFieldSeedValue.tsv +15 -0
- data/data/pdfrb/arlington/latest/Signature.tsv +20 -0
- data/data/pdfrb/arlington/latest/SignatureBuildDataAppDict.tsv +10 -0
- data/data/pdfrb/arlington/latest/SignatureBuildDataDict.tsv +9 -0
- data/data/pdfrb/arlington/latest/SignatureBuildDataSigQDict.tsv +10 -0
- data/data/pdfrb/arlington/latest/SignatureBuildPropDict.tsv +5 -0
- data/data/pdfrb/arlington/latest/SignatureReferenceDocMDP.tsv +8 -0
- data/data/pdfrb/arlington/latest/SignatureReferenceFieldMDP.tsv +8 -0
- data/data/pdfrb/arlington/latest/SignatureReferenceIdentity.tsv +7 -0
- data/data/pdfrb/arlington/latest/SignatureReferenceUR.tsv +8 -0
- data/data/pdfrb/arlington/latest/SlideShow.tsv +5 -0
- data/data/pdfrb/arlington/latest/SoftMaskAlpha.tsv +6 -0
- data/data/pdfrb/arlington/latest/SoftMaskLuminosity.tsv +6 -0
- data/data/pdfrb/arlington/latest/SoftwareIdentifier.tsv +8 -0
- data/data/pdfrb/arlington/latest/Solidities.tsv +3 -0
- data/data/pdfrb/arlington/latest/SoundObject.tsv +15 -0
- data/data/pdfrb/arlington/latest/SourceInformation.tsv +6 -0
- data/data/pdfrb/arlington/latest/SpectralData.tsv +2 -0
- data/data/pdfrb/arlington/latest/Stream.tsv +8 -0
- data/data/pdfrb/arlington/latest/StructElem.tsv +20 -0
- data/data/pdfrb/arlington/latest/StructTreeRoot.tsv +11 -0
- data/data/pdfrb/arlington/latest/StructureAttributesDict.tsv +54 -0
- data/data/pdfrb/arlington/latest/StyleDict.tsv +2 -0
- data/data/pdfrb/arlington/latest/SubjectDN.tsv +2 -0
- data/data/pdfrb/arlington/latest/Target.tsv +6 -0
- data/data/pdfrb/arlington/latest/TargetEmbedded.tsv +6 -0
- data/data/pdfrb/arlington/latest/Thread.tsv +5 -0
- data/data/pdfrb/arlington/latest/Thumbnail.tsv +15 -0
- data/data/pdfrb/arlington/latest/TimeStampDict.tsv +3 -0
- data/data/pdfrb/arlington/latest/Timespan.tsv +4 -0
- data/data/pdfrb/arlington/latest/ToUnicodeCMapStream.tsv +13 -0
- data/data/pdfrb/arlington/latest/TrailerIDArray.tsv +3 -0
- data/data/pdfrb/arlington/latest/Transition.tsv +9 -0
- data/data/pdfrb/arlington/latest/TrapRegion.tsv +3 -0
- data/data/pdfrb/arlington/latest/URI.tsv +2 -0
- data/data/pdfrb/arlington/latest/URLAlias.tsv +3 -0
- data/data/pdfrb/arlington/latest/URTransformParamAnnotsArray.tsv +2 -0
- data/data/pdfrb/arlington/latest/URTransformParamDocumentArray.tsv +2 -0
- data/data/pdfrb/arlington/latest/URTransformParamEFArray.tsv +2 -0
- data/data/pdfrb/arlington/latest/URTransformParamFormArray.tsv +2 -0
- data/data/pdfrb/arlington/latest/URTransformParamSignatureArray.tsv +2 -0
- data/data/pdfrb/arlington/latest/URTransformParameters.tsv +10 -0
- data/data/pdfrb/arlington/latest/UserProperty.tsv +5 -0
- data/data/pdfrb/arlington/latest/VRI.tsv +7 -0
- data/data/pdfrb/arlington/latest/VRIMap.tsv +2 -0
- data/data/pdfrb/arlington/latest/ViewParams.tsv +3 -0
- data/data/pdfrb/arlington/latest/ViewerPreferences.tsv +19 -0
- data/data/pdfrb/arlington/latest/Viewport.tsv +6 -0
- data/data/pdfrb/arlington/latest/VisibilityExpressionArray.tsv +4 -0
- data/data/pdfrb/arlington/latest/WebCaptureCommand.tsv +8 -0
- data/data/pdfrb/arlington/latest/WebCaptureCommandSettings.tsv +3 -0
- data/data/pdfrb/arlington/latest/WebCaptureImageSet.tsv +9 -0
- data/data/pdfrb/arlington/latest/WebCaptureInfo.tsv +3 -0
- data/data/pdfrb/arlington/latest/WebCapturePageSet.tsv +10 -0
- data/data/pdfrb/arlington/latest/WhitepointArray.tsv +4 -0
- data/data/pdfrb/arlington/latest/XObjectFormPS.tsv +10 -0
- data/data/pdfrb/arlington/latest/XObjectFormPSpassthrough.tsv +15 -0
- data/data/pdfrb/arlington/latest/XObjectFormPrinterMark.tsv +29 -0
- data/data/pdfrb/arlington/latest/XObjectFormTrapNet.tsv +31 -0
- data/data/pdfrb/arlington/latest/XObjectFormType1.tsv +32 -0
- data/data/pdfrb/arlington/latest/XObjectImage.tsv +35 -0
- data/data/pdfrb/arlington/latest/XObjectImageMask.tsv +29 -0
- data/data/pdfrb/arlington/latest/XObjectImageSoftMask.tsv +22 -0
- data/data/pdfrb/arlington/latest/XObjectMap.tsv +2 -0
- data/data/pdfrb/arlington/latest/XRefStream.tsv +20 -0
- data/data/pdfrb/arlington/latest/_UniversalArray.tsv +2 -0
- data/data/pdfrb/arlington/latest/_UniversalDictionary.tsv +2 -0
- data/data/pdfrb/glyphlist.txt +4306 -0
- data/data/pdfrb/zapfdingbats.txt +226 -0
- data/exe/pdfrb +10 -0
- data/lib/pdfrb/arlington/field_definition.rb +128 -0
- data/lib/pdfrb/arlington/loader.rb +84 -0
- data/lib/pdfrb/arlington/object_definition.rb +45 -0
- data/lib/pdfrb/arlington/pdf_version.rb +121 -0
- data/lib/pdfrb/arlington/predicate/ast.rb +21 -0
- data/lib/pdfrb/arlington/predicate/context.rb +24 -0
- data/lib/pdfrb/arlington/predicate/evaluator.rb +113 -0
- data/lib/pdfrb/arlington/predicate/functions/arithmetic.rb +67 -0
- data/lib/pdfrb/arlington/predicate/functions/file.rb +22 -0
- data/lib/pdfrb/arlington/predicate/functions/logical.rb +38 -0
- data/lib/pdfrb/arlington/predicate/functions/presence.rb +39 -0
- data/lib/pdfrb/arlington/predicate/functions/reference.rb +28 -0
- data/lib/pdfrb/arlington/predicate/functions/version.rb +53 -0
- data/lib/pdfrb/arlington/predicate/functions.rb +34 -0
- data/lib/pdfrb/arlington/predicate/lexer.rb +177 -0
- data/lib/pdfrb/arlington/predicate/parser.rb +185 -0
- data/lib/pdfrb/arlington/predicate.rb +22 -0
- data/lib/pdfrb/arlington/type.rb +41 -0
- data/lib/pdfrb/arlington.rb +19 -0
- data/lib/pdfrb/cli.rb +135 -0
- data/lib/pdfrb/configuration.rb +64 -0
- data/lib/pdfrb/conformance/pdf_a.rb +74 -0
- data/lib/pdfrb/conformance/pdf_ua.rb +46 -0
- data/lib/pdfrb/conformance.rb +11 -0
- data/lib/pdfrb/content/canvas.rb +248 -0
- data/lib/pdfrb/content/graphic_object/arc.rb +85 -0
- data/lib/pdfrb/content/graphic_object/curve.rb +28 -0
- data/lib/pdfrb/content/graphic_object/polyline.rb +27 -0
- data/lib/pdfrb/content/graphic_object/rectangle.rb +53 -0
- data/lib/pdfrb/content/graphic_object.rb +16 -0
- data/lib/pdfrb/content/graphics_state.rb +104 -0
- data/lib/pdfrb/content/operator.rb +72 -0
- data/lib/pdfrb/content/operators/color.rb +106 -0
- data/lib/pdfrb/content/operators/general.rb +50 -0
- data/lib/pdfrb/content/operators/graphics_state_params.rb +78 -0
- data/lib/pdfrb/content/operators/marked_content.rb +51 -0
- data/lib/pdfrb/content/operators/painting.rb +82 -0
- data/lib/pdfrb/content/operators/path.rb +69 -0
- data/lib/pdfrb/content/operators/text_positioning.rb +44 -0
- data/lib/pdfrb/content/operators/text_showing.rb +48 -0
- data/lib/pdfrb/content/operators/text_state.rb +66 -0
- data/lib/pdfrb/content/parser.rb +103 -0
- data/lib/pdfrb/content/processor.rb +81 -0
- data/lib/pdfrb/content.rb +38 -0
- data/lib/pdfrb/data_dir.rb +35 -0
- data/lib/pdfrb/digital_signature/handler.rb +21 -0
- data/lib/pdfrb/digital_signature/signing.rb +29 -0
- data/lib/pdfrb/digital_signature/verification.rb +22 -0
- data/lib/pdfrb/digital_signature.rb +11 -0
- data/lib/pdfrb/document/annotations.rb +44 -0
- data/lib/pdfrb/document/destinations.rb +22 -0
- data/lib/pdfrb/document/files.rb +28 -0
- data/lib/pdfrb/document/fonts.rb +121 -0
- data/lib/pdfrb/document/images.rb +57 -0
- data/lib/pdfrb/document/metadata.rb +64 -0
- data/lib/pdfrb/document/pages.rb +134 -0
- data/lib/pdfrb/document.rb +343 -0
- data/lib/pdfrb/encryption/aes.rb +68 -0
- data/lib/pdfrb/encryption/password_verification.rb +112 -0
- data/lib/pdfrb/encryption/rc4.rb +45 -0
- data/lib/pdfrb/encryption/security_handler.rb +65 -0
- data/lib/pdfrb/encryption/standard_security_handler.rb +117 -0
- data/lib/pdfrb/encryption.rb +20 -0
- data/lib/pdfrb/error.rb +92 -0
- data/lib/pdfrb/filter/ascii_85_decode.rb +79 -0
- data/lib/pdfrb/filter/ascii_hex_decode.rb +37 -0
- data/lib/pdfrb/filter/base.rb +32 -0
- data/lib/pdfrb/filter/crypt.rb +36 -0
- data/lib/pdfrb/filter/flate_decode.rb +137 -0
- data/lib/pdfrb/filter/lzw_decode.rb +124 -0
- data/lib/pdfrb/filter/passthrough_filters.rb +55 -0
- data/lib/pdfrb/filter/run_length_decode.rb +72 -0
- data/lib/pdfrb/filter.rb +64 -0
- data/lib/pdfrb/font/afm_parser.rb +84 -0
- data/lib/pdfrb/font/cmap/parser.rb +96 -0
- data/lib/pdfrb/font/cmap/writer.rb +46 -0
- data/lib/pdfrb/font/cmap.rb +10 -0
- data/lib/pdfrb/font/encoding/mac_roman_encoding.rb +25 -0
- data/lib/pdfrb/font/encoding/pdf_doc_encoding.rb +16 -0
- data/lib/pdfrb/font/encoding/standard_encoding.rb +24 -0
- data/lib/pdfrb/font/encoding/win_ansi_encoding.rb +25 -0
- data/lib/pdfrb/font/encoding/zapf_dingbats_encoding.rb +13 -0
- data/lib/pdfrb/font/encoding.rb +36 -0
- data/lib/pdfrb/font/glyph_list.rb +56 -0
- data/lib/pdfrb/font/true_type/cmap.rb +240 -0
- data/lib/pdfrb/font/true_type/file.rb +85 -0
- data/lib/pdfrb/font/true_type/head.rb +43 -0
- data/lib/pdfrb/font/true_type/hhea.rb +36 -0
- data/lib/pdfrb/font/true_type/hmtx.rb +58 -0
- data/lib/pdfrb/font/true_type/os2.rb +51 -0
- data/lib/pdfrb/font/true_type/subsetter.rb +28 -0
- data/lib/pdfrb/font/true_type.rb +14 -0
- data/lib/pdfrb/font/type1/font_metrics.rb +46 -0
- data/lib/pdfrb/font/type1.rb +9 -0
- data/lib/pdfrb/font.rb +18 -0
- data/lib/pdfrb/font_loader/true_type.rb +62 -0
- data/lib/pdfrb/font_loader/type1.rb +27 -0
- data/lib/pdfrb/font_loader.rb +10 -0
- data/lib/pdfrb/image_loader/jpeg.rb +90 -0
- data/lib/pdfrb/image_loader/pdf.rb +28 -0
- data/lib/pdfrb/image_loader/png.rb +282 -0
- data/lib/pdfrb/image_loader.rb +64 -0
- data/lib/pdfrb/importer.rb +78 -0
- data/lib/pdfrb/model/cos/dictionary.rb +310 -0
- data/lib/pdfrb/model/cos/fields.rb +215 -0
- data/lib/pdfrb/model/cos/name_encoding.rb +64 -0
- data/lib/pdfrb/model/cos/stream.rb +96 -0
- data/lib/pdfrb/model/cos/string_encoding.rb +135 -0
- data/lib/pdfrb/model/cos.rb +20 -0
- data/lib/pdfrb/model/date.rb +82 -0
- data/lib/pdfrb/model/matrix.rb +85 -0
- data/lib/pdfrb/model/object.rb +76 -0
- data/lib/pdfrb/model/pdf_array.rb +63 -0
- data/lib/pdfrb/model/rectangle.rb +54 -0
- data/lib/pdfrb/model/reference.rb +49 -0
- data/lib/pdfrb/model/type/action.rb +33 -0
- data/lib/pdfrb/model/type/af_embedded_file.rb +12 -0
- data/lib/pdfrb/model/type/af_file_specification.rb +13 -0
- data/lib/pdfrb/model/type/annotation.rb +50 -0
- data/lib/pdfrb/model/type/catalog.rb +50 -0
- data/lib/pdfrb/model/type/cid_font.rb +13 -0
- data/lib/pdfrb/model/type/embedded_file.rb +13 -0
- data/lib/pdfrb/model/type/encryption_public_key.rb +12 -0
- data/lib/pdfrb/model/type/encryption_standard.rb +12 -0
- data/lib/pdfrb/model/type/file_specification.rb +12 -0
- data/lib/pdfrb/model/type/file_trailer.rb +14 -0
- data/lib/pdfrb/model/type/font.rb +13 -0
- data/lib/pdfrb/model/type/font_descriptor.rb +12 -0
- data/lib/pdfrb/model/type/font_true_type.rb +12 -0
- data/lib/pdfrb/model/type/font_type0.rb +12 -0
- data/lib/pdfrb/model/type/font_type1.rb +12 -0
- data/lib/pdfrb/model/type/font_type3.rb +13 -0
- data/lib/pdfrb/model/type/graphics_state_parameter.rb +17 -0
- data/lib/pdfrb/model/type/info.rb +15 -0
- data/lib/pdfrb/model/type/interactive_form.rb +12 -0
- data/lib/pdfrb/model/type/metadata.rb +18 -0
- data/lib/pdfrb/model/type/names.rb +14 -0
- data/lib/pdfrb/model/type/object_stream.rb +14 -0
- data/lib/pdfrb/model/type/optional_content_group.rb +25 -0
- data/lib/pdfrb/model/type/optional_content_membership.rb +13 -0
- data/lib/pdfrb/model/type/optional_content_properties.rb +12 -0
- data/lib/pdfrb/model/type/outline.rb +20 -0
- data/lib/pdfrb/model/type/outline_item.rb +13 -0
- data/lib/pdfrb/model/type/output_intent.rb +12 -0
- data/lib/pdfrb/model/type/page.rb +86 -0
- data/lib/pdfrb/model/type/page_tree_node.rb +46 -0
- data/lib/pdfrb/model/type/resources.rb +53 -0
- data/lib/pdfrb/model/type/struct_elem.rb +15 -0
- data/lib/pdfrb/model/type/struct_tree_root.rb +15 -0
- data/lib/pdfrb/model/type/xobject_form.rb +13 -0
- data/lib/pdfrb/model/type/xobject_image.rb +13 -0
- data/lib/pdfrb/model/type/xref_stream.rb +14 -0
- data/lib/pdfrb/model/type.rb +78 -0
- data/lib/pdfrb/model.rb +27 -0
- data/lib/pdfrb/pdf_constants.rb +42 -0
- data/lib/pdfrb/serializer.rb +174 -0
- data/lib/pdfrb/source/header_reader.rb +34 -0
- data/lib/pdfrb/source/helpers.rb +25 -0
- data/lib/pdfrb/source/linearization_detection.rb +34 -0
- data/lib/pdfrb/source/object_reader.rb +132 -0
- data/lib/pdfrb/source/object_stream_reader.rb +32 -0
- data/lib/pdfrb/source/parser.rb +281 -0
- data/lib/pdfrb/source/recovery.rb +35 -0
- data/lib/pdfrb/source/token.rb +15 -0
- data/lib/pdfrb/source/tokenizer.rb +320 -0
- data/lib/pdfrb/source/tokenizer.rb.bak +320 -0
- data/lib/pdfrb/source/trailer_reader.rb +32 -0
- data/lib/pdfrb/source/xref_stream_reader.rb +52 -0
- data/lib/pdfrb/source/xref_table_reader.rb +72 -0
- data/lib/pdfrb/source.rb +24 -0
- data/lib/pdfrb/task/extract_images.rb +53 -0
- data/lib/pdfrb/task/extract_text.rb +232 -0
- data/lib/pdfrb/task/merge.rb +47 -0
- data/lib/pdfrb/task/optimize.rb +18 -0
- data/lib/pdfrb/task.rb +13 -0
- data/lib/pdfrb/version.rb +5 -0
- data/lib/pdfrb/writer.rb +144 -0
- data/lib/pdfrb/xref_section.rb +51 -0
- data/lib/pdfrb.rb +97 -0
- metadata +890 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pdfrb
|
|
4
|
+
module Font
|
|
5
|
+
module Encoding
|
|
6
|
+
autoload :PDFDocEncoding, "pdfrb/font/encoding/pdf_doc_encoding"
|
|
7
|
+
autoload :StandardEncoding, "pdfrb/font/encoding/standard_encoding"
|
|
8
|
+
autoload :WinAnsiEncoding, "pdfrb/font/encoding/win_ansi_encoding"
|
|
9
|
+
autoload :MacRomanEncoding, "pdfrb/font/encoding/mac_roman_encoding"
|
|
10
|
+
autoload :ZapfDingbatsEncoding, "pdfrb/font/encoding/zapf_dingbats_encoding"
|
|
11
|
+
|
|
12
|
+
class << self
|
|
13
|
+
# Decode +bytes+ (one byte per glyph) using +encoding_name+
|
|
14
|
+
# (a Symbol like :WinAnsiEncoding) to Unicode.
|
|
15
|
+
def decode(encoding_name, bytes)
|
|
16
|
+
table = table_for(encoding_name)
|
|
17
|
+
return bytes unless table
|
|
18
|
+
|
|
19
|
+
bytes.each_byte.with_object(+"") do |b, buf|
|
|
20
|
+
buf << (table[b] ? [table[b]].pack("U") : "?")
|
|
21
|
+
end.encode("UTF-8")
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def table_for(name)
|
|
25
|
+
case name.to_sym
|
|
26
|
+
when :WinAnsiEncoding then WinAnsiEncoding::TABLE
|
|
27
|
+
when :MacRomanEncoding then MacRomanEncoding::TABLE
|
|
28
|
+
when :StandardEncoding then StandardEncoding::TABLE
|
|
29
|
+
when :PDFDocEncoding then PDFDocEncoding::TABLE
|
|
30
|
+
when :ZapfDingbatsEncoding then ZapfDingbatsEncoding::TABLE
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pdfrb
|
|
4
|
+
module Font
|
|
5
|
+
# Adobe Glyph List — maps glyph names to Unicode codepoints.
|
|
6
|
+
# Loaded from data/pdfrb/glyphlist.txt on first access.
|
|
7
|
+
module GlyphList
|
|
8
|
+
@table = nil
|
|
9
|
+
|
|
10
|
+
class << self
|
|
11
|
+
def table
|
|
12
|
+
return @table if @table
|
|
13
|
+
|
|
14
|
+
path = File.join(Pdfrb::DataDir.root, "glyphlist.txt")
|
|
15
|
+
@table = if File.exist?(path)
|
|
16
|
+
parse(File.read(path, encoding: "UTF-8"))
|
|
17
|
+
else
|
|
18
|
+
{}
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def [](glyph_name)
|
|
23
|
+
table[glyph_name]
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def unicode_for(glyph_name)
|
|
27
|
+
table[glyph_name]
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
private
|
|
31
|
+
|
|
32
|
+
def parse(text)
|
|
33
|
+
text.each_line.with_object({}) do |line, h|
|
|
34
|
+
next if line.start_with?("#")
|
|
35
|
+
|
|
36
|
+
parts = line.strip.split(";")
|
|
37
|
+
next unless parts.length >= 2
|
|
38
|
+
|
|
39
|
+
name = parts[0]
|
|
40
|
+
value = parts[1]
|
|
41
|
+
# Glyphlist files come in two formats: Adobe's canonical
|
|
42
|
+
# ("2013 2014" — hex codepoints space-separated) and
|
|
43
|
+
# repackagings that use literal Unicode ("–"). Detect by
|
|
44
|
+
# whether the value is all-hex.
|
|
45
|
+
h[name] = if !value.empty? && value.match?(/\A[0-9A-Fa-f ]+\z/)
|
|
46
|
+
unicodes = value.split.map { |hex| hex.to_i(16) }
|
|
47
|
+
unicodes.map { |cp| [cp].pack("U") }.join
|
|
48
|
+
else
|
|
49
|
+
value
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pdfrb
|
|
4
|
+
module Font
|
|
5
|
+
module TrueType
|
|
6
|
+
# `cmap` table parser. Resolves Unicode codepoints to glyph IDs
|
|
7
|
+
# by picking the best available subtable and applying its
|
|
8
|
+
# format-specific decoding.
|
|
9
|
+
#
|
|
10
|
+
# Supported subtable formats:
|
|
11
|
+
# * 0 — byte encoding (256 entries)
|
|
12
|
+
# * 4 — segment mapping (BMP)
|
|
13
|
+
# * 6 — trimmed table (range)
|
|
14
|
+
# * 12 — sparse coverage (full Unicode)
|
|
15
|
+
#
|
|
16
|
+
# Subtable selection prefers Unicode platforms:
|
|
17
|
+
# (3,10) Windows Unicode full > (0,* ) Unicode > (3,1) Windows BMP
|
|
18
|
+
class Cmap
|
|
19
|
+
attr_reader :subtable_offset, :platform_id, :encoding_id, :format
|
|
20
|
+
|
|
21
|
+
PREFERRED_SUBTABLES = [
|
|
22
|
+
[3, 12], # Windows Unicode full repertoire
|
|
23
|
+
[0, 6], # Unicode full (format 12-style)
|
|
24
|
+
[0, 4], # Unicode 2.0+ BMP
|
|
25
|
+
[3, 1], # Windows BMP
|
|
26
|
+
[0, 0], # Unicode 1.0
|
|
27
|
+
[0, 1], # Unicode 1.1
|
|
28
|
+
[0, 2], # Unicode 2.0 (no format declared)
|
|
29
|
+
[0, 3], # Unicode 2.0+ BMP
|
|
30
|
+
].freeze
|
|
31
|
+
private_constant :PREFERRED_SUBTABLES
|
|
32
|
+
|
|
33
|
+
def initialize(data)
|
|
34
|
+
@data = data
|
|
35
|
+
@glyph_cache = {}
|
|
36
|
+
return unless data && data.bytesize >= 4
|
|
37
|
+
|
|
38
|
+
choose_subtable
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# Unicode codepoint → glyph ID. Returns 0 (.notdef) if no
|
|
42
|
+
# mapping exists.
|
|
43
|
+
def glyph_id_for(unicode)
|
|
44
|
+
return 0 if @format.nil?
|
|
45
|
+
|
|
46
|
+
@glyph_cache[unicode] ||= lookup(unicode)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
private
|
|
50
|
+
|
|
51
|
+
def choose_subtable
|
|
52
|
+
num_tables = u16(2)
|
|
53
|
+
entries = []
|
|
54
|
+
num_tables.times do |i|
|
|
55
|
+
base = 4 + (i * 8)
|
|
56
|
+
entries << {
|
|
57
|
+
platform_id: u16(base),
|
|
58
|
+
encoding_id: u16(base + 2),
|
|
59
|
+
offset: u32(base + 4),
|
|
60
|
+
}
|
|
61
|
+
end
|
|
62
|
+
pick = PREFERRED_SUBTABLES.each do |plat, enc|
|
|
63
|
+
found = entries.find { |e| e[:platform_id] == plat && e[:encoding_id] == enc }
|
|
64
|
+
break found if found
|
|
65
|
+
end
|
|
66
|
+
return unless pick.is_a?(::Hash)
|
|
67
|
+
|
|
68
|
+
@platform_id = pick[:platform_id]
|
|
69
|
+
@encoding_id = pick[:encoding_id]
|
|
70
|
+
@subtable_offset = pick[:offset]
|
|
71
|
+
read_format_header
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def read_format_header
|
|
75
|
+
@format = u16(@subtable_offset)
|
|
76
|
+
case @format
|
|
77
|
+
when 0 then parse_format_0
|
|
78
|
+
when 4 then parse_format_4
|
|
79
|
+
when 6 then parse_format_6
|
|
80
|
+
when 12 then parse_format_12
|
|
81
|
+
else
|
|
82
|
+
@format = nil
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def lookup(unicode)
|
|
87
|
+
case @format
|
|
88
|
+
when 0 then lookup_format_0(unicode)
|
|
89
|
+
when 4 then lookup_format_4(unicode)
|
|
90
|
+
when 6 then lookup_format_6(unicode)
|
|
91
|
+
when 12 then lookup_format_12(unicode)
|
|
92
|
+
else 0
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
# Format 0: 256-entry byte table.
|
|
97
|
+
def parse_format_0
|
|
98
|
+
@f0_glyph_ids = (0..255).map { |i| u8(@subtable_offset + 6 + i) }
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def lookup_format_0(unicode)
|
|
102
|
+
return 0 unless unicode < 256
|
|
103
|
+
|
|
104
|
+
@f0_glyph_ids[unicode]
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
# Format 4: segment mapping. BMP only.
|
|
108
|
+
def parse_format_4
|
|
109
|
+
seg_count_x2 = u16(@subtable_offset + 6)
|
|
110
|
+
seg_count = seg_count_x2 / 2
|
|
111
|
+
end_codes_off = @subtable_offset + 14
|
|
112
|
+
start_codes_off = end_codes_off + seg_count_x2 + 2
|
|
113
|
+
id_deltas_off = start_codes_off + seg_count_x2
|
|
114
|
+
id_range_offsets_off = id_deltas_off + seg_count_x2
|
|
115
|
+
glyph_ids_off = id_range_offsets_off + seg_count_x2
|
|
116
|
+
@f4 = {
|
|
117
|
+
seg_count: seg_count,
|
|
118
|
+
end_codes: read_u16s(end_codes_off, seg_count),
|
|
119
|
+
start_codes: read_u16s(start_codes_off, seg_count),
|
|
120
|
+
id_deltas: read_s16s(id_deltas_off, seg_count),
|
|
121
|
+
id_range_offsets: read_u16s(id_range_offsets_off, seg_count),
|
|
122
|
+
glyph_ids_off: glyph_ids_off,
|
|
123
|
+
}
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
def lookup_format_4(unicode)
|
|
127
|
+
return 0 unless @f4
|
|
128
|
+
|
|
129
|
+
seg = @f4
|
|
130
|
+
seg[:seg_count].times do |i|
|
|
131
|
+
next if unicode > seg[:end_codes][i]
|
|
132
|
+
|
|
133
|
+
return 0 if unicode < seg[:start_codes][i]
|
|
134
|
+
|
|
135
|
+
delta = seg[:id_deltas][i]
|
|
136
|
+
range_off = seg[:id_range_offsets][i]
|
|
137
|
+
if range_off.zero?
|
|
138
|
+
return (unicode + delta) & 0xFFFF
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
# Indirect: glyph_id_addr = id_range_offset + 2*(c - startCode) + addressof(idRangeOffsets[i])
|
|
142
|
+
seg[:id_range_offsets_offset] + (i * 2) + range_off + ((unicode - seg[:start_codes][i]) * 2)
|
|
143
|
+
abs_off = id_range_offset_abs(i, range_off, unicode, seg[:start_codes][i])
|
|
144
|
+
gid = u16(abs_off)
|
|
145
|
+
gid.zero? ? 0 : (gid + delta) & 0xFFFF
|
|
146
|
+
end
|
|
147
|
+
0
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
def id_range_offset_abs(i, range_off, unicode, start_code)
|
|
151
|
+
seg = @f4
|
|
152
|
+
base = seg[:id_range_offsets_offset] + (i * 2)
|
|
153
|
+
base + range_off + ((unicode - start_code) * 2)
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
# Format 6: trimmed table.
|
|
157
|
+
def parse_format_6
|
|
158
|
+
first = u16(@subtable_offset + 6)
|
|
159
|
+
count = u16(@subtable_offset + 8)
|
|
160
|
+
@f6 = {
|
|
161
|
+
first_code: first,
|
|
162
|
+
count: count,
|
|
163
|
+
glyph_ids: read_u16s(@subtable_offset + 10, count),
|
|
164
|
+
}
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
def lookup_format_6(unicode)
|
|
168
|
+
return 0 unless @f6
|
|
169
|
+
|
|
170
|
+
idx = unicode - @f6[:first_code]
|
|
171
|
+
return 0 unless idx >= 0 && idx < @f6[:count]
|
|
172
|
+
|
|
173
|
+
@f6[:glyph_ids][idx]
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
# Format 12: sparse coverage, full Unicode.
|
|
177
|
+
def parse_format_12
|
|
178
|
+
num_groups = u32(@subtable_offset + 12)
|
|
179
|
+
@f12 = []
|
|
180
|
+
num_groups.times do |i|
|
|
181
|
+
base = @subtable_offset + 16 + (i * 12)
|
|
182
|
+
@f12 << {
|
|
183
|
+
start_char: u32(base),
|
|
184
|
+
end_char: u32(base + 4),
|
|
185
|
+
start_gid: u32(base + 8),
|
|
186
|
+
}
|
|
187
|
+
end
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
def lookup_format_12(unicode)
|
|
191
|
+
return 0 unless @f12
|
|
192
|
+
|
|
193
|
+
# Binary search for the group covering this codepoint.
|
|
194
|
+
lo = 0
|
|
195
|
+
hi = @f12.length - 1
|
|
196
|
+
while lo <= hi
|
|
197
|
+
mid = (lo + hi) / 2
|
|
198
|
+
g = @f12[mid]
|
|
199
|
+
if unicode < g[:start_char]
|
|
200
|
+
hi = mid - 1
|
|
201
|
+
elsif unicode > g[:end_char]
|
|
202
|
+
lo = mid + 1
|
|
203
|
+
else
|
|
204
|
+
return g[:start_gid] + (unicode - g[:start_char])
|
|
205
|
+
end
|
|
206
|
+
end
|
|
207
|
+
0
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
def u8(off); @data.getbyte(off); end
|
|
211
|
+
|
|
212
|
+
def u16(off)
|
|
213
|
+
return 0 if off.nil? || off + 1 >= @data.bytesize
|
|
214
|
+
|
|
215
|
+
(@data.getbyte(off) * 256) + @data.getbyte(off + 1)
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
def u32(off)
|
|
219
|
+
return 0 if off.nil? || off + 3 >= @data.bytesize
|
|
220
|
+
|
|
221
|
+
(((@data.getbyte(off) * 256) + @data.getbyte(off + 1)) * 65536) +
|
|
222
|
+
((@data.getbyte(off + 2) * 256) + @data.getbyte(off + 3))
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
def s16(off)
|
|
226
|
+
v = u16(off)
|
|
227
|
+
v >= 0x8000 ? v - 0x10000 : v
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
def read_u16s(off, count)
|
|
231
|
+
Array.new(count) { |i| u16(off + (i * 2)) }
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
def read_s16s(off, count)
|
|
235
|
+
Array.new(count) { |i| s16(off + (i * 2)) }
|
|
236
|
+
end
|
|
237
|
+
end
|
|
238
|
+
end
|
|
239
|
+
end
|
|
240
|
+
end
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pdfrb
|
|
4
|
+
module Font
|
|
5
|
+
module TrueType
|
|
6
|
+
# Minimal TrueType / OpenType font file reader. Parses the
|
|
7
|
+
# sfnt header + table directory; lazy-loads individual tables
|
|
8
|
+
# on access.
|
|
9
|
+
class File
|
|
10
|
+
attr_reader :tables, :num_tables
|
|
11
|
+
|
|
12
|
+
def initialize(data)
|
|
13
|
+
@data = data.b
|
|
14
|
+
@tables = {}
|
|
15
|
+
parse_directory
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def self.read(path)
|
|
19
|
+
new(::File.binread(path))
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def table(tag)
|
|
23
|
+
return @tables[tag][:data] if @tables[tag]
|
|
24
|
+
|
|
25
|
+
entry = find_table_entry(tag)
|
|
26
|
+
return nil unless entry
|
|
27
|
+
|
|
28
|
+
offset = entry[:offset]
|
|
29
|
+
length = entry[:length]
|
|
30
|
+
@data.byteslice(offset, length).force_encoding(::Encoding::BINARY)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def cmap_table; table("cmap"); end
|
|
34
|
+
def head_table; table("head"); end
|
|
35
|
+
def hhea_table; table("hhea"); end
|
|
36
|
+
def hmtx_table; table("hmtx"); end
|
|
37
|
+
def name_table; table("name"); end
|
|
38
|
+
def maxp_table; table("maxp"); end
|
|
39
|
+
def post_table; table("post"); end
|
|
40
|
+
def os2_table; table("OS/2"); end
|
|
41
|
+
def glyf_table; table("glyf"); end
|
|
42
|
+
def loca_table; table("loca"); end
|
|
43
|
+
|
|
44
|
+
# Parsed-table accessors. Lazy and memoised on the instance.
|
|
45
|
+
def head; @head ||= Head.new(head_table); end
|
|
46
|
+
def hhea; @hhea ||= Hhea.new(hhea_table); end
|
|
47
|
+
def os2; @os2 ||= OS2.new(os2_table); end
|
|
48
|
+
def cmap; @cmap ||= Cmap.new(cmap_table); end
|
|
49
|
+
|
|
50
|
+
def hmtx
|
|
51
|
+
@hmtx ||= Hmtx.new(hmtx_table, number_of_hmetrics: hhea.number_of_hmetrics || 0)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def num_glyphs
|
|
55
|
+
return 0 unless maxp_table
|
|
56
|
+
|
|
57
|
+
maxp_table.getbyte(4) * 256 + maxp_table.getbyte(5)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
private
|
|
61
|
+
|
|
62
|
+
def parse_directory
|
|
63
|
+
return if @data.bytesize < 12
|
|
64
|
+
|
|
65
|
+
sfnt_version = @data.getbyte(0) * 256 + @data.getbyte(1)
|
|
66
|
+
@num_tables = @data.getbyte(4) * 256 + @data.getbyte(5)
|
|
67
|
+
@raw_entries = []
|
|
68
|
+
@num_tables.times do |i|
|
|
69
|
+
base = 12 + i * 16
|
|
70
|
+
tag = @data.byteslice(base, 4)
|
|
71
|
+
checksum = @data.byteslice(base + 4, 4).unpack1("N")
|
|
72
|
+
offset = @data.byteslice(base + 8, 4).unpack1("N")
|
|
73
|
+
length = @data.byteslice(base + 12, 4).unpack1("N")
|
|
74
|
+
@raw_entries << { tag: tag, checksum: checksum,
|
|
75
|
+
offset: offset, length: length }
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def find_table_entry(tag)
|
|
80
|
+
@raw_entries&.find { |e| e[:tag] == tag }
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pdfrb
|
|
4
|
+
module Font
|
|
5
|
+
module TrueType
|
|
6
|
+
# `head` table parser. Exposes units_per_em, bbox, index_format
|
|
7
|
+
# (loca long vs short), mac_style flags.
|
|
8
|
+
#
|
|
9
|
+
# Spec: OpenType "head" v1.0 — 54 bytes.
|
|
10
|
+
class Head
|
|
11
|
+
attr_reader :units_per_em, :bbox, :index_to_loc_format,
|
|
12
|
+
:mac_style, :lowest_rec_ppem, :font_direction_hint
|
|
13
|
+
|
|
14
|
+
def initialize(data)
|
|
15
|
+
@data = data
|
|
16
|
+
return unless data && data.bytesize >= 54
|
|
17
|
+
|
|
18
|
+
@units_per_em = u16(18)
|
|
19
|
+
@bbox = [s16(36), s16(38), s16(40), s16(42)]
|
|
20
|
+
@index_to_loc_format = s16(50)
|
|
21
|
+
@mac_style = u16(44)
|
|
22
|
+
@lowest_rec_ppem = u16(48)
|
|
23
|
+
@font_direction_hint = s16(52)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def long_loca?; @index_to_loc_format == 1; end
|
|
27
|
+
def short_loca?; @index_to_loc_format.zero?; end
|
|
28
|
+
|
|
29
|
+
def bold?; (@mac_style || 0) & 0x01 != 0; end
|
|
30
|
+
def italic?; (@mac_style || 0) & 0x02 != 0; end
|
|
31
|
+
|
|
32
|
+
private
|
|
33
|
+
|
|
34
|
+
def u16(off); (@data.getbyte(off) * 256) + @data.getbyte(off + 1); end
|
|
35
|
+
|
|
36
|
+
def s16(off)
|
|
37
|
+
v = u16(off)
|
|
38
|
+
v >= 0x8000 ? v - 0x10000 : v
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pdfrb
|
|
4
|
+
module Font
|
|
5
|
+
module TrueType
|
|
6
|
+
# `hhea` (Horizontal Header) table parser. Exposes ascender,
|
|
7
|
+
# descender, line_gap, number_of_hmetrics (used by `hmtx`).
|
|
8
|
+
#
|
|
9
|
+
# Spec: OpenType "hhea" v1.0 — 36 bytes.
|
|
10
|
+
class Hhea
|
|
11
|
+
attr_reader :ascender, :descender, :line_gap,
|
|
12
|
+
:number_of_hmetrics, :advance_width_max
|
|
13
|
+
|
|
14
|
+
def initialize(data)
|
|
15
|
+
@data = data
|
|
16
|
+
return unless data && data.bytesize >= 36
|
|
17
|
+
|
|
18
|
+
@ascender = s16(4)
|
|
19
|
+
@descender = s16(6)
|
|
20
|
+
@line_gap = s16(8)
|
|
21
|
+
@advance_width_max = u16(10)
|
|
22
|
+
@number_of_hmetrics = u16(34)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
private
|
|
26
|
+
|
|
27
|
+
def u16(off); (@data.getbyte(off) * 256) + @data.getbyte(off + 1); end
|
|
28
|
+
|
|
29
|
+
def s16(off)
|
|
30
|
+
v = u16(off)
|
|
31
|
+
v >= 0x8000 ? v - 0x10000 : v
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pdfrb
|
|
4
|
+
module Font
|
|
5
|
+
module TrueType
|
|
6
|
+
# `hmtx` (Horizontal Metrics) table parser. Provides per-glyph
|
|
7
|
+
# advance widths and left-side bearings.
|
|
8
|
+
#
|
|
9
|
+
# Layout: `numberOfHMetrics` records of (u16 advance, u16 lsb),
|
|
10
|
+
# followed by (`numGlyphs - numberOfHMetrics`) u16 lsbs (those
|
|
11
|
+
# glyphs share the last advance width).
|
|
12
|
+
class Hmtx
|
|
13
|
+
attr_reader :advances, :lsbs, :number_of_hmetrics
|
|
14
|
+
|
|
15
|
+
def initialize(data, number_of_hmetrics:)
|
|
16
|
+
@data = data || "".b
|
|
17
|
+
@number_of_hmetrics = number_of_hmetrics
|
|
18
|
+
parse
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def advance_width(glyph_id)
|
|
22
|
+
return 0 if @advances.empty?
|
|
23
|
+
|
|
24
|
+
if glyph_id < @number_of_hmetrics
|
|
25
|
+
@advances[glyph_id]
|
|
26
|
+
else
|
|
27
|
+
@advances.last
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def lsb(glyph_id)
|
|
32
|
+
@lsbs[glyph_id] || @lsbs.last || 0
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
private
|
|
36
|
+
|
|
37
|
+
def parse
|
|
38
|
+
@advances = []
|
|
39
|
+
@lsbs = []
|
|
40
|
+
return if @data.bytesize < @number_of_hmetrics * 4
|
|
41
|
+
|
|
42
|
+
@number_of_hmetrics.times do |i|
|
|
43
|
+
base = i * 4
|
|
44
|
+
@advances << u16(base)
|
|
45
|
+
@lsbs << s16(base + 2)
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def u16(off); (@data.getbyte(off) * 256) + @data.getbyte(off + 1); end
|
|
50
|
+
|
|
51
|
+
def s16(off)
|
|
52
|
+
v = u16(off)
|
|
53
|
+
v >= 0x8000 ? v - 0x10000 : v
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pdfrb
|
|
4
|
+
module Font
|
|
5
|
+
module TrueType
|
|
6
|
+
# `OS/2` table parser. Exposes typographic extents and Windows
|
|
7
|
+
# metrics used to compute font ascent / descent / cap height
|
|
8
|
+
# for layout.
|
|
9
|
+
#
|
|
10
|
+
# Spec: OpenType "OS/2" versions 1–5; offsets vary by version.
|
|
11
|
+
# Only the fields relevant to layout are exposed.
|
|
12
|
+
class OS2
|
|
13
|
+
attr_reader :version, :s_typo_ascender, :s_typo_descender,
|
|
14
|
+
:s_typo_line_gap, :us_win_ascent, :us_win_descent,
|
|
15
|
+
:sx_height, :s_cap_height, :us_weight_class,
|
|
16
|
+
:fs_selection
|
|
17
|
+
|
|
18
|
+
def initialize(data)
|
|
19
|
+
@data = data
|
|
20
|
+
return unless data && data.bytesize >= 78
|
|
21
|
+
|
|
22
|
+
@version = u16(0)
|
|
23
|
+
@s_typo_ascender = s16(68)
|
|
24
|
+
@s_typo_descender = s16(70)
|
|
25
|
+
@s_typo_line_gap = s16(72)
|
|
26
|
+
@us_win_ascent = u16(74)
|
|
27
|
+
@us_win_descent = u16(76)
|
|
28
|
+
|
|
29
|
+
return unless @version >= 2 && data.bytesize >= 96
|
|
30
|
+
|
|
31
|
+
@sx_height = s16(86)
|
|
32
|
+
@s_cap_height = s16(88)
|
|
33
|
+
@us_weight_class = u16(4)
|
|
34
|
+
@fs_selection = u16(62)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def bold?; (@fs_selection || 0) & 0x20 != 0; end
|
|
38
|
+
def italic?; (@fs_selection || 0) & 0x01 != 0; end
|
|
39
|
+
|
|
40
|
+
private
|
|
41
|
+
|
|
42
|
+
def u16(off); (@data.getbyte(off) * 256) + @data.getbyte(off + 1); end
|
|
43
|
+
|
|
44
|
+
def s16(off)
|
|
45
|
+
v = u16(off)
|
|
46
|
+
v >= 0x8000 ? v - 0x10000 : v
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pdfrb
|
|
4
|
+
module Font
|
|
5
|
+
module TrueType
|
|
6
|
+
# Glyph subsetting for embedded TrueType fonts. Given a set of
|
|
7
|
+
# used glyph IDs, produces a new TTF with only those glyphs.
|
|
8
|
+
# This is a stub — full subsetting (table rewriting, composite
|
|
9
|
+
# glyph handling, CMap format 4 rewrite) is complex.
|
|
10
|
+
class Subsetter
|
|
11
|
+
attr_reader :source_file, :glyph_ids
|
|
12
|
+
|
|
13
|
+
def initialize(source_file, glyph_ids)
|
|
14
|
+
@source_file = source_file
|
|
15
|
+
@glyph_ids = glyph_ids.sort.uniq
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# Returns the subset font bytes. Currently a stub that
|
|
19
|
+
# returns the original file unmodified (no subsetting).
|
|
20
|
+
# Full implementation would rewrite glyf, loca, cmap, hmtx,
|
|
21
|
+
# maxp, OS/2 tables.
|
|
22
|
+
def subset
|
|
23
|
+
@source_file.instance_variable_get(:@data)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pdfrb
|
|
4
|
+
module Font
|
|
5
|
+
module TrueType
|
|
6
|
+
autoload :File, "pdfrb/font/true_type/file"
|
|
7
|
+
autoload :Head, "pdfrb/font/true_type/head"
|
|
8
|
+
autoload :Hhea, "pdfrb/font/true_type/hhea"
|
|
9
|
+
autoload :Hmtx, "pdfrb/font/true_type/hmtx"
|
|
10
|
+
autoload :Cmap, "pdfrb/font/true_type/cmap"
|
|
11
|
+
autoload :OS2, "pdfrb/font/true_type/os2"
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pdfrb
|
|
4
|
+
module Font
|
|
5
|
+
module Type1
|
|
6
|
+
# Type1 font metrics wrapper. Delegates to AFMParser for the
|
|
7
|
+
# 14 standard fonts; provides glyph-width lookup.
|
|
8
|
+
class FontMetrics
|
|
9
|
+
attr_reader :font_name, :metrics
|
|
10
|
+
|
|
11
|
+
def initialize(font_name, metrics)
|
|
12
|
+
@font_name = font_name
|
|
13
|
+
@metrics = metrics
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def self.for_standard_font(name)
|
|
17
|
+
afm_path = File.join(Pdfrb::DataDir.root, "afm", "#{name}.afm")
|
|
18
|
+
return nil unless File.exist?(afm_path)
|
|
19
|
+
|
|
20
|
+
metrics = AFMParser.from_file(afm_path)
|
|
21
|
+
new(name, metrics)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def width_for(glyph_name)
|
|
25
|
+
@metrics.width_for(glyph_name)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def bbox
|
|
29
|
+
@metrics.bbox
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def ascender
|
|
33
|
+
@metrics.ascender
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def descender
|
|
37
|
+
@metrics.descender
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def cap_height
|
|
41
|
+
@metrics.cap_height
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|