UNPKG

psd

Version:

A general purpose Photoshop file parser.

81 lines (67 loc) 2.24 kB
_ = require 'lodash' TypeTool = require './typetool.coffee' module.exports = class LegacyTypeTool extends TypeTool @shouldParse: (key) -> key is 'tySh' constructor: (layer, length) -> super(layer, length) @transform = {} @faces = [] @styles = [] @lines = [] @type = 0 @scalingFactor = 0 @characterCount = 0 @horzPlace = 0 @vertPlace = 0 @selectStart = 0 @selectEnd = 0 @color = null @antialias = null parse: -> @file.seek 2, true # Version @parseTransformInfo() # Font information @file.seek 2, true facesCount = @file.readShort() for i in [0...facesCount] @faces.push _({}).tap (face) => face.mark = @file.readShort() face.fontType = @file.readInt() face.fontName = @file.readString() face.fontFamilyName = @file.readString() face.fontStyleName = @file.readString() face.script = @file.readShort() face.numberAxesVector = @file.readInt() face.vector = [] for j in [0...face.numberAxesVector] face.vector.push @file.readInt() stylesCount = @file.readShort() for i in [0...stylesCount] @styles.push _({}).tap (style) => style.mark = @file.readShort() style.faceMark = @file.readShort() style.size = @file.readInt() style.tracking = @file.readInt() style.kerning = @file.readInt() style.leading = @file.readInt() style.baseShift = @file.readInt() style.autoKern = @file.readBoolean() @file.seek 1, true style.rotate = @file.readBoolean() @type = @file.readShort() @scalingFactor = @file.readInt() @characterCount = @file.readInt() @horzPlace = @file.readInt() @vertPlace = @file.readInt() @selectStart = @file.readInt() @selectEnd = @file.readInt() linesCount = @file.readShort() for i in [0...linesCount] @lines.push _({}).tap (line) -> line.charCount = @file.readInt() line.orientation = @file.readShort() line.alignment = @file.readShort() line.actualChar = @file.readShort() line.style = @file.readShort() @color = @file.readSpaceColor() @antialias = @file.readBoolean()