Add a fallback face set
This commit is contained in:
		
							parent
							
								
									961366b00a
								
							
						
					
					
						commit
						b0672ec8ee
					
				
							
								
								
									
										35
									
								
								internal/faces/fallback/face.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								internal/faces/fallback/face.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,35 @@
 | 
			
		||||
package fallbackFaces
 | 
			
		||||
 | 
			
		||||
import "golang.org/x/image/font"
 | 
			
		||||
import "git.tebibyte.media/tomo/tomo"
 | 
			
		||||
import "golang.org/x/image/font/basicfont"
 | 
			
		||||
import "git.tebibyte.media/tomo/backend/style"
 | 
			
		||||
 | 
			
		||||
type faceSet struct {
 | 
			
		||||
	regular    font.Face
 | 
			
		||||
	bold       font.Face
 | 
			
		||||
	italic     font.Face
 | 
			
		||||
	boldItalic font.Face
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// New creates a new fallback face set.
 | 
			
		||||
func New () style.FaceSet {
 | 
			
		||||
	// TODO maybe pre-generate different variations of this face
 | 
			
		||||
	return &faceSet {
 | 
			
		||||
		regular:    basicfont.Face7x13,
 | 
			
		||||
		bold:       basicfont.Face7x13,
 | 
			
		||||
		italic:     basicfont.Face7x13,
 | 
			
		||||
		boldItalic: basicfont.Face7x13,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this *faceSet) Face (face tomo.Face) font.Face {
 | 
			
		||||
	bold   := face.Weight >= 500
 | 
			
		||||
	italic := face.Italic >= 0.1 || face.Slant >= 0.1
 | 
			
		||||
	switch {
 | 
			
		||||
	case bold && italic: return this.boldItalic
 | 
			
		||||
	case bold:           return this.bold
 | 
			
		||||
	case italic:         return this.italic
 | 
			
		||||
	default:             return this.regular
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user