AFM
application/x-font-adobe-metric
Magic Bytes
Offset: 0
53 74 61 72 74 46 6F 6E 74 4D 65 74 72 69 63 73
Adobe Font Metrics (AFM) is a plain-text file format developed by Adobe Systems to store technical specification data for PostScript Type 1 fonts. These files provide character dimensions, kerning pairs, and font bounding boxes necessary for typesetting engines to calculate accurate text layouts. As a text-based format containing only measurement metadata, it is considered safe, though it has largely been superseded by modern OpenType formats that integrate metrics directly.
Validation Code
How to validate .afm files in Python
Python
def is_afm(file_path: str) -> bool:
"""Check if file is a valid AFM by magic bytes."""
signature = bytes([0x53, 0x74, 0x61, 0x72, 0x74, 0x46, 0x6F, 0x6E, 0x74, 0x4D, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73])
with open(file_path, "rb") as f:
return f.read(16) == signature
How to validate .afm files in Node.js
Node.js
function isAFM(buffer: Buffer): boolean {
const signature = Buffer.from([0x53, 0x74, 0x61, 0x72, 0x74, 0x46, 0x6F, 0x6E, 0x74, 0x4D, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73]);
return buffer.subarray(0, 16).equals(signature);
}
Go
func IsAFM(data []byte) bool {
signature := []byte{0x53, 0x74, 0x61, 0x72, 0x74, 0x46, 0x6F, 0x6E, 0x74, 0x4D, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73}
if len(data) < 16 {
return false
}
return bytes.Equal(data[:16], signature)
}
API Endpoint
GET
/api/v1/afm
curl https://filesignature.org/api/v1/afm