1
0
mirror of https://github.com/Intervention/image.git synced 2025-08-26 15:24:37 +02:00

Fix bug when centering non-latin characters (#1366)

This commit is contained in:
Oliver Vogel
2024-06-13 14:36:55 +02:00
committed by GitHub
parent ed6ddf4aa7
commit 9fe7980bdc
3 changed files with 69 additions and 21 deletions

View File

@@ -19,19 +19,63 @@ class AbstractFontProcessorTest extends BaseTestCase
public function testTextBlock(): void
{
$text = 'AAAA BBBB CCCC';
$font = (new Font($this->getTestResourcePath('test.ttf')))->setWrapWidth(20)->setSize(50);
$font = (new Font($this->getTestResourcePath('test.ttf')))
->setWrapWidth(20)
->setSize(50)
->setLineHeight(1.25)
->setAlignment('center');
$processor = Mockery::mock(AbstractFontProcessor::class)->makePartial();
$processor->shouldReceive('boxSize')->with('T', $font)->andReturn(new Rectangle(12, 6));
$processor->shouldReceive('boxSize')->with('Hy', $font)->andReturn(new Rectangle(24, 6));
$processor->shouldReceive('boxSize')->with('AAAA', $font)->andReturn(new Rectangle(24, 6));
$processor->shouldReceive('boxSize')->with('AAAA BBBB', $font)->andReturn(new Rectangle(24, 6));
$processor->shouldReceive('boxSize')->with('BBBB', $font)->andReturn(new Rectangle(24, 6));
$processor->shouldReceive('boxSize')->with('BBBB CCCC', $font)->andReturn(new Rectangle(24, 6));
$processor->shouldReceive('boxSize')->with('CCCC', $font)->andReturn(new Rectangle(24, 6));
$processor->shouldReceive('boxSize')->with($text, $font)->andReturn(new Rectangle(100, 25));
$processor
->shouldReceive('boxSize')
->with('T', $font)
->andReturn(new Rectangle(12, 6));
$processor
->shouldReceive('boxSize')
->with('Hy', $font)
->andReturn(new Rectangle(24, 6));
$processor
->shouldReceive('boxSize')
->with('AAAA', $font)
->andReturn(new Rectangle(24, 6, new Point(1000, 0)));
$processor
->shouldReceive('boxSize')
->with('AAAA BBBB', $font)
->andReturn(new Rectangle(24, 6));
$processor
->shouldReceive('boxSize')
->with('BBBB', $font)
->andReturn(new Rectangle(24, 6, new Point(2000, 0)));
$processor
->shouldReceive('boxSize')
->with('BBBB CCCC', $font)
->andReturn(new Rectangle(24, 6));
$processor
->shouldReceive('boxSize')
->with('CCCC', $font)
->andReturn(new Rectangle(24, 6, new Point(3000, 0)));
$processor
->shouldReceive('boxSize')
->with($text, $font)
->andReturn(new Rectangle(100, 25, new Point(10, 0)));
$block = $processor->textBlock($text, $font, new Point(0, 0));
$this->assertInstanceOf(TextBlock::class, $block);
$this->assertEquals(3, $block->count());
$this->assertEquals(-512, $block->getAtPosition(0)->position()->x());
$this->assertEquals(-16, $block->getAtPosition(0)->position()->y());
$this->assertEquals(-1012, $block->getAtPosition(1)->position()->x());
$this->assertEquals(-8, $block->getAtPosition(1)->position()->y());
$this->assertEquals(-1512, $block->getAtPosition(2)->position()->x());
$this->assertEquals(0, $block->getAtPosition(2)->position()->y());
}
public function testNativeFontSize(): void