TextShapingTests.cs 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using NUnit.Framework;
  2. using QuestPDF.Examples.Engine;
  3. using QuestPDF.Fluent;
  4. using SkiaSharp;
  5. using SkiaSharp.HarfBuzz;
  6. namespace QuestPDF.Examples
  7. {
  8. public class TextShapingTests
  9. {
  10. // [Test]
  11. // public void ShapeText()
  12. // {
  13. // using var textPaint = new SKPaint
  14. // {
  15. // Color = SKColors.Black,
  16. // Typeface = SKTypeface.CreateDefault(),
  17. // IsAntialias = true,
  18. // TextSize = 20
  19. // };
  20. //
  21. // using var backgroundPaint = new SKPaint
  22. // {
  23. // Color = SKColors.LightGray
  24. // };
  25. //
  26. // RenderingTest
  27. // .Create()
  28. // .PageSize(550, 250)
  29. // .ProduceImages()
  30. // .ShowResults()
  31. // .Render(container =>
  32. // {
  33. // //var lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec odio ipsum, aliquam a neque a, lacinia vehicula lectus.";
  34. // //var arabic = "ينا الألم. في بعض الأحيان ونظراً للالتزامات التي يفرضها علينا الواجب والعمل سنتنازل غالباً ونرفض الشعور";
  35. //
  36. // var lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.";
  37. // var arabic = "ينا الألم. في بعض الأحيان ونظراً للالتزامات التي يفرضها علينا";
  38. //
  39. // var text = arabic;
  40. // var metrics = textPaint.FontMetrics;
  41. //
  42. // container
  43. // .Padding(25)
  44. // .Canvas((canvas, space) =>
  45. // {
  46. // canvas.Translate(0, 20);
  47. //
  48. // var width = MeasureText(text, textPaint);
  49. // var widthReal = textPaint.MeasureText(text);
  50. // canvas.DrawRect(0, metrics.Descent, width, metrics.Ascent - metrics.Descent, backgroundPaint);
  51. //
  52. // canvas.DrawShapedText(text, 0, 0, textPaint);
  53. //
  54. // canvas.Translate(0, 40);
  55. // canvas.DrawText(text, 0, 0, textPaint);
  56. // });
  57. // });
  58. // }
  59. [Test]
  60. public void MeasureTest()
  61. {
  62. using var textPaint = new SKPaint
  63. {
  64. Color = SKColors.Black,
  65. Typeface = SKTypeface.CreateDefault(),
  66. IsAntialias = true,
  67. TextSize = 20
  68. };
  69. var lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec odio ipsum, aliquam a neque a, lacinia vehicula lectus.";
  70. var arabic = "ينا الألم. في بعض الأحيان ونظراً للالتزامات التي يفرضها علينا";
  71. // 012345678901234567890123456789012345678901234567890123456
  72. var shaper = new SKShaper(textPaint.Typeface);
  73. var result = shaper.Shape(lorem, textPaint);
  74. }
  75. }
  76. }