123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- -- love.font
- --------------------------------------------------------------------------------
- --------------------------------------------------------------------------------
- ------------------------------------OBJECTS-------------------------------------
- --------------------------------------------------------------------------------
- --------------------------------------------------------------------------------
- -- GlyphData (love.font.newGlyphData)
- love.test.font.GlyphData = function(test)
- -- create obj
- local rasterizer = love.font.newRasterizer('resources/font.ttf')
- local gdata = love.font.newGlyphData(rasterizer, 97) -- 'a'
- test:assertObject(gdata)
- -- check properties match expected
- test:assertNotNil(gdata:getString())
- test:assertEquals(128, gdata:getSize(), 'check data size')
- test:assertEquals(9, gdata:getAdvance(), 'check advance')
- test:assertEquals('la8', gdata:getFormat(), 'check format')
- -- @TODO
- --[[
- currently these will return 0 and '' respectively as not implemented
- https://github.com/love2d/love/blob/12.0-development/src/modules/font/freetype/TrueTypeRasterizer.cpp#L140-L141
- "basically I haven't decided what to do here yet, because of the more
- advanced text shaping that happens in love 12 having a unicode codepoint
- associated with a glyph probably doesn't make sense in the first place"
- ]]--
- --test:assertEquals(97, gdata:getGlyph(), 'check glyph number') - returns 0
- --test:assertEquals('a', gdata:getGlyphString(), 'check glyph string') - returns ''
- -- check height + width
- test:assertEquals(8, gdata:getHeight(), 'check height')
- test:assertEquals(8, gdata:getWidth(), 'check width')
- -- check boundary / dimensions
- local x, y, w, h = gdata:getBoundingBox()
- local dw, dh = gdata:getDimensions()
- test:assertEquals(0, x, 'check bbox x')
- test:assertEquals(-3, y, 'check bbox y')
- test:assertEquals(8, w, 'check bbox w')
- test:assertEquals(14, h, 'check bbox h')
- test:assertEquals(8, dw, 'check dim width')
- test:assertEquals(8, dh, 'check dim height')
- -- check bearing
- local bw, bh = gdata:getBearing()
- test:assertEquals(0, bw, 'check bearing w')
- test:assertEquals(11, bh, 'check bearing h')
- end
- -- Rasterizer (love.font.newRasterizer)
- love.test.font.Rasterizer = function(test)
- -- create obj
- local rasterizer = love.font.newRasterizer('resources/font.ttf')
- test:assertObject(rasterizer)
- -- check advance
- test:assertEquals(9, rasterizer:getAdvance(), 'check advance')
- -- check ascent/descent
- test:assertEquals(9, rasterizer:getAscent(), 'check ascent')
- test:assertEquals(-3, rasterizer:getDescent(), 'check descent')
- -- check glyphcount
- test:assertEquals(77, rasterizer:getGlyphCount(), 'check glyph count')
- -- check specific glyphs
- test:assertObject(rasterizer:getGlyphData('L'))
- test:assertTrue(rasterizer:hasGlyphs('L', 'O', 'V', 'E'), 'check LOVE')
- -- check height + lineheight
- test:assertEquals(12, rasterizer:getHeight(), 'check height')
- test:assertEquals(15, rasterizer:getLineHeight(), 'check line height')
- end
- --------------------------------------------------------------------------------
- --------------------------------------------------------------------------------
- ------------------------------------METHODS-------------------------------------
- --------------------------------------------------------------------------------
- --------------------------------------------------------------------------------
- -- love.font.newBMFontRasterizer
- love.test.font.newBMFontRasterizer = function(test)
- local rasterizer = love.font.newBMFontRasterizer('resources/love.png');
- test:assertObject(rasterizer)
- end
- -- love.font.newGlyphData
- -- @NOTE this is just basic nil checking, objs have their own test method
- love.test.font.newGlyphData = function(test)
- local img = love.image.newImageData('resources/love.png')
- local rasterizer = love.font.newImageRasterizer(img, 'ABC', 0, 1);
- local glyphdata = love.font.newGlyphData(rasterizer, 65)
- test:assertObject(glyphdata)
- end
- -- love.font.newImageRasterizer
- -- @NOTE this is just basic nil checking, objs have their own test method
- love.test.font.newImageRasterizer = function(test)
- local img = love.image.newImageData('resources/love.png')
- local rasterizer = love.font.newImageRasterizer(img, 'ABC', 0, 1);
- test:assertObject(rasterizer)
- end
- -- love.font.newRasterizer
- -- @NOTE this is just basic nil checking, objs have their own test method
- love.test.font.newRasterizer = function(test)
- test:assertObject(love.font.newRasterizer('resources/font.ttf'))
- end
- -- love.font.newTrueTypeRasterizer
- -- @NOTE this is just basic nil checking, objs have their own test method
- love.test.font.newTrueTypeRasterizer = function(test)
- test:assertObject(love.font.newTrueTypeRasterizer(12, "normal", 1))
- test:assertObject(love.font.newTrueTypeRasterizer('resources/font.ttf', 8, "normal", 1))
- end
|