DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T a

⟦b715739e4⟧ TextFile

    Length: 5545 (0x15a9)
    Types: TextFile
    Names: »afm-2.y«

Derivation

└─⟦52210d11f⟧ Bits:30007239 EUUGD2: TeX 3 1992-12
    └─⟦af5ba6c8e⟧ »unix3.0/DVIWARE.tar.Z« 
        └─⟦ca79c7339⟧ 
            └─⟦this⟧ »DVIware/laser-setters/dvi-to-ps/TeXPS/pfd2tfm/src/afm-2.y« 

TextFile

/* Copyright information can be found in file "Copyright" */

/************************************************************************/
/* afm-2.y                                                              */
/************************************************************************/

%%      /* Rules Section */

program :	Initial CharMetrics Kerning Comp End
;	

Initial :       StartFontStuff InitialStuffs
;

StartFontStuff: K_StartFontMetrics T_FLOAT newlines
;

InitialStuffs:  |
                InitialStuffs InitialStuff
;

InitialStuff :  K_Ascender garbages newlines |
                K_CapHeight garbages newlines |
                Comment |
                K_Descender garbages newlines|
                K_EncodingScheme garbages newlines|
                K_FamilyName garbages newlines|
                K_FontBBox garbages newlines|
                K_FontName garbages newlines|
                K_FullName garbages newlines|
                K_ItalicAngle garbages newlines|
                IsFixedPitch |
                Notice |
                K_UnderlinePosition garbages newlines|
                K_UnderlineThickness garbages newlines|
                K_Version garbages newlines|
                K_Weight garbages newlines|
                XHeight
;

/*
 * This production is for those production which simply ignore their
 * argument, the rest of the line.
 */
garbages :
	|               garbages	garbage
;

garbage :               T_FLOAT |
                        T_ID |
                        T_INT |
                        T_SEMICOLON
;

/* Notice has to be treated the same way */
Comment :                S_Comment
       {        printf ("Comment: \"%s\"\n", $1);
	}	newlines
;

Notice :                S_Notice newlines
       {        printf ("Notice: \"%s\"\n", $1);
	}
;

XHeight:                K_XHeight T_INT newlines
{               XHeight = $2;
}
;

IsFixedPitch :          K_IsFixedPitch T_ID newlines
            {           if (strcmp ($2, "true") == 0)
                            IsFixedPitch = TRUE;
                        else {
                            if (strcmp ($2, "false") == 0)
                                IsFixedPitch = FALSE;
                            else
			        Fatal ("IsFixedPitch specification wrong\n");
			  }
	    }
;

CharMetrics :           StartCharMetrics Characters EndCharMetrics
;

StartCharMetrics :      K_StartCharMetrics T_INT newlines
	|	K_StartCharMetrics newlines
;

Characters :            Character |
                        Characters Character
;

/*
 * This is where we read in the data about each character
 */
Character :             K_C              /* field 1 in .afm file */
                        T_INT            /* field 2: character code */
                        T_SEMICOLON      /* field 3 */
                        T_ID             /* field 4, must be "WX" */
                        T_INT            /* field 5: the width */
                        T_SEMICOLON      /* field 6 */
                        T_ID             /* field 7: must be "N" */
                        T_ID             /* field 8: the name of the char.*/
                        T_SEMICOLON      /* field 9 */
                        T_ID             /* field 10: must be "B" */
                        T_INT            /* field 11: llx */
                        T_INT            /* field 12: lly */
                        T_INT            /* field 13: urx */
                        T_INT            /* field 14: ury */
                        T_SEMICOLON      /* field 15 */
         { CompareStringError ($4, "WX", "reading .afm file");
	   CompareStringError ($7, "N",  "reading .afm file");
	   CompareStringError ($10,"B",  "reading .afm file");
	   AfmCharDo($2, $8, $5, $11, $12, $13, $14);
	 }
                        Character_Ligs
                        newlines
;

Character_Ligs:          |
                        Character_Ligs Character_Lig
;

Character_Lig:
                        T_ID T_ID T_ID T_SEMICOLON
          {             CompareStringError ($1, "L",
					    "Ligature reading in .afm file");
			if (UseAfmLigatures)
			  SaveLigatureInfo (AfmCharacterName, $2, $3);
          }
;

EndCharMetrics :        K_EndCharMetrics newlines
;

/*
 * Fixed space fonts have no kerning info, therefore it is optional
 */
Kerning :               |
                        K_StartKernData newlines
                        KernPairs
                        K_EndKernData newlines
;

KernPairs :             K_StartKernPairs T_INT newlines
                        KPXs K_EndKernPairs newlines
;

KPXs:                   KPX |
                        KPXs KPX
;

/*
 * A KPX command defines the kerning between two characters.
 */
KPX :           K_KPX   T_ID   T_ID   T_INT    newlines
                {       if (UseAfmKernings)
			  SaveKerningInfo ($2, $3, $4);
		}
;

/*
 * Symbol Font has no composites, optional therefore
 */
Comp :                  |
                        K_StartComposites T_INT newlines
                        Composites 
                        K_EndComposites newlines
;

Composites :            Composite |
                        Composites Composite
;

Composite :             K_CC T_ID T_INT T_SEMICOLON
                             T_ID T_ID T_INT T_INT T_SEMICOLON
                             T_ID T_ID T_INT T_INT T_SEMICOLON
                        newlines
;

End :                   K_EndFontMetrics newlines
;

newlines:               T_AFM_NEWLINE |
                        newlines T_AFM_NEWLINE
;