예제 #1
0
파일: Guide.py 프로젝트: twardoch/TypeRig
    def tag_nodes(self, mode):
        # - Init
        new_name = self.edt_tagStringNode.text.strip()

        # - Helper
        def tag(glyph, newName):
            wLayers = glyph._prepareLayers(pLayers)

            for layer in wLayers:
                for node in glyph.selectedNodes(layer):
                    node.name = newName

            glyph.updateObject(
                glyph.fl,
                'Glyph: %s; Nodes named: %s ' % (glyph.name, new_name))
            glyph.update()

        # - Process
        if mode == 'G':
            glyph = eGlyph()
            tag(glyph, new_name)

        elif mode == 'W':
            process_glyphs = []
            process_glyphs = [
                eGlyph(glyph) for glyph in pWorkspace().getTextBlockGlyphs()
            ]

            for glyph in process_glyphs:
                tag(glyph, new_name)
예제 #2
0
    def refresh(self):
        # - Init
        layerBanList = ['#', 'img', 'mask']
        self.workspace = pWorkspace()
        self.activeGlyph = tGlyph()
        self.processGlyphs = [
            tGlyph(glyph) for glyph in self.workspace.getTextBlockGlyphs()
        ]
        self.head.edt_glyphName.setText(', '.join(
            [glyph.name for glyph in self.processGlyphs]))
        self.italic_angle = pFont().getItalicAngle()

        # - TODO: Collect all layers from all glyphs set() them and return only compatible layers
        self.layers = sorted([
            layer.name for layer in self.activeGlyph.layers()
            if all([item not in layer.name for item in layerBanList])
        ])

        self.head.cmb_0.clear()
        self.head.cmb_1.clear()
        self.head.cmb_0.addItems(self.layers)
        self.head.cmb_1.addItems(self.layers)
        self.head.cmb_0.setCurrentIndex(0)
        self.head.cmb_1.setCurrentIndex(0)
        self.axis = []

        self.head.edt_stemV0.setText('1')
        self.head.edt_stemV1.setText('1')
        self.head.edt_stemH0.setText('1')
        self.head.edt_stemH1.setText('1')

        self.mixer.reset()
        self.scalerX.reset()
        self.scalerY.reset()
예제 #3
0
파일: Guide.py 프로젝트: twardoch/TypeRig
    def tag_glyphs(self, mode):
        # - Init
        new_tags = self.edt_tagString.text.replace(' ', '').split(',')

        # - Helper
        def tag(glyph, tagList):
            glyph.setTags(tagList)
            glyph.updateObject(
                glyph.fl, 'Glyph: %s; Add tags: %s ' % (glyph.name, tagList))
            glyph.update()

        # - Process
        if mode == 'G':
            glyph = eGlyph()
            tag(glyph, new_tags)

        else:
            process_glyphs = []

            if mode == 'W':
                process_glyphs = [
                    pGlyph(glyph)
                    for glyph in pWorkspace().getTextBlockGlyphs()
                ]

            elif mode == 'S':
                process_glyphs = pFont().selected_pGlyphs()

            for glyph in process_glyphs:
                tag(glyph, new_tags)

        self.edt_tagString.clear()
예제 #4
0
def getProcessGlyphs(mode=0, font=None, workspace=None):
	'''Returns a list of glyphs for processing in TypeRig gui apps

	Args:
		mode (int): 0 - Current active glyph; 1 - All glyphs in current window; 2 - All selected glyphs; 3 - All glyphs in font
		font (fgFont) - Font file (object)
		workspace (flWorkspace) - Workspace
	
	Returns:
		list(eGlyph)
	'''
	# - Dependancies
	from typerig.glyph import eGlyph
	from typerig.proxy import pFont, pWorkspace

	# - Init
	process_glyphs = []
	active_workspace = pWorkspace()
	active_font = pFont(font)
		
	# - Collect process glyphs
	if mode == 0: process_glyphs.append(eGlyph())
	if mode == 1: process_glyphs = [eGlyph(glyph) for glyph in active_workspace.getTextBlockGlyphs()]
	if mode == 2: process_glyphs = active_font.selectedGlyphs(extend=eGlyph) 
	if mode == 3: process_glyphs = active_font.glyphs(extend=eGlyph)
	
	return process_glyphs
예제 #5
0
    def refresh(self):
        # - Init
        self.active_workspace = pWorkspace()
        self.active_canvas = self.active_workspace.getCanvas()
        self.active_textBlockList = self.active_workspace.getTextBlockList()

        # - Build List and style it
        self.lst_textBlocks.clear()
        self.lst_textBlocks.addItems([
            'T: %s...\tG: %s\tS: %s pt\t F: %s'.expandtabs(12) %
            (item.symbolList().string(True)[:10], item.glyphsCount(),
             item.fontSize, item.frameRect)
            for item in self.active_textBlockList
        ])
예제 #6
0
파일: Corner.py 프로젝트: twardoch/TypeRig
	def capture(self):
		# - Init
		process_angles = {}
		active_workspace = pWorkspace()
		
		# - Rebuild
		self.__clear()
		self.__build()
				
		# - Collect process glyphs
		if pMode == 0: self.process_glyphs.append(eGlyph()) # Current Active Glyph
		if pMode == 1: self.process_glyphs = [eGlyph(glyph) for glyph in active_workspace.getTextBlockGlyphs()] # All glyphs in current window
		if pMode == 2: self.process_glyphs = self.active_font.selectedGlyphs(extend=eGlyph) # Selected glyphs in font window
		if pMode > 2: return

		# - Get nodes grouped by smart angle value
		if len(self.process_glyphs):
			for glyph in self.process_glyphs:
				#wLayers = glyph._prepareLayers(pLayers)
				layer = None
				pNodes = glyph.nodes(layer=layer, extend=pNode)
				
				for node in pNodes:
					smart_angle = node.getSmartAngle()
					
					if smart_angle[0]:
						process_angles.setdefault(smart_angle[1], []).append(node)

		# - Build sliders
		for angle_value, angle_nodes in process_angles.iteritems():
			new_slider = trSliderCtrl('0', '100', angle_value, 5)
			new_slider.sld_axis.valueChanged.connect(self.__processNodes)
			self.addLayout(new_slider)
			self.sliders.append([new_slider, angle_value, angle_nodes])

		# - Set undo snapshot
		self.update_glyphs(self.process_glyphs, True)
예제 #7
0
			fontPath = os.path.split(font.fg.path)[0]
			fname = QtGui.QFileDialog.getOpenFileName(self, 'Load kerning classes from file', fontPath, ';;'.join(fileFormats))
			
			if fname != None:
				with open(fname, 'r') as importFile:
					source_data = json.load(importFile)

					if source_data.has_key('masters'): # A Fontlab JSON Class kerning file
						source_data = json_class_dumb_decoder(source_data)

					return source_data

# - Init -----------------------------
font = proxy.pFont()
g = proxy.pGlyph()
ws = proxy.pWorkspace()
transform = (getLowercaseCodepoint, getUppercaseCodepoint)

load_dlg = load_classes(font)
font_kerning = {layer:proxy.pKerning(font.kerning(layer), load_dlg.classes[layer]) for layer in font.masters()}

# - This will effectively copy all of the UC:UC kerning pairs to LC:LC, UC:LC, LC:UC 
# - For Bolyar Sans project
for layer, kerning in font_kerning.iteritems():
	kerning_LC2LC = kerning.getKerningForLeaders(transform[0], transform[0])
	kerning_UC2LC = kerning.getKerningForLeaders(None, transform[0])
	kerning_LC2UC = kerning.getKerningForLeaders(transform[0], None)
	pri kerning_UC2LC

	kerning.fg.setPlainPairs(kerning_LC2LC + kerning_UC2LC + kerning_LC2UC)