179 {
181
183 public:
185 protected:
186 std::unique_ptr<SkStreamAsset>
onOpenStream(
int* ttcIndex)
const override {
return nullptr; }
189 }
192 {
195 }
198 return nullptr;
199 }
203 }
207 int onGetUPEM()
const override {
return 0; }
209 public:
211 };
214 }
217 return new EmptyLocalizedStrings;
218 }
222 int coordinateCount) const override
223 {
224 return 0;
225 }
227 int parameterCount) const override
228 {
229 return -1;
230 }
233 return 0;
234 }
235 };
236
238 public:
239 TestFontStyleSet(std::initializer_list<SkFontStyle> styles) : fStyles(styles) {}
240 int count()
override {
return static_cast<int>(fStyles.size()); }
242 if (style) {
243 *style = fStyles[index];
244 }
245 }
247 if (index < 0 || this->
count() <= index) {
249 }
251 }
254 }
255 private:
256 std::vector<SkFontStyle> fStyles;
257 };
258
271
278
279 struct StyleSetTest {
280 TestFontStyleSet styleSet;
281 struct Case {
284 };
285 std::vector<Case> cases;
287 {
288 { normal_normal_500, normal_normal_400 },
289 {
290 { normal_normal_400, normal_normal_400 },
291 { normal_normal_500, normal_normal_500 },
292 },
293 },
294
295 {
296 { normal_normal_500, normal_normal_300 },
297 {
298 { normal_normal_300, normal_normal_300 },
299 { normal_normal_400, normal_normal_500 },
300 { normal_normal_500, normal_normal_500 },
301 },
302 },
303
304 {
305 { condensed_normal_100,condensed_normal_900,condensed_italic_100,condensed_italic_900,
306 expanded_normal_100, expanded_normal_900, expanded_italic_100, expanded_italic_900 },
307 {
308 { condensed_normal_100, condensed_normal_100 },
309 { condensed_normal_900, condensed_normal_900 },
310 { condensed_italic_100, condensed_italic_100 },
311 { condensed_italic_900, condensed_italic_900 },
312 { expanded_normal_100, expanded_normal_100 },
313 { expanded_normal_900, expanded_normal_900 },
314 { expanded_italic_100, expanded_italic_100 },
315 { expanded_italic_900, expanded_italic_900 },
316 },
317 },
318
319 {
320 { condensed_normal_100,condensed_italic_100,expanded_normal_100,expanded_italic_100 },
321 {
322 { condensed_normal_100, condensed_normal_100 },
323 { condensed_normal_900, condensed_normal_100 },
324 { condensed_italic_100, condensed_italic_100 },
325 { condensed_italic_900, condensed_italic_100 },
326 { expanded_normal_100, expanded_normal_100 },
327 { expanded_normal_900, expanded_normal_100 },
328 { expanded_italic_100, expanded_italic_100 },
329 { expanded_italic_900, expanded_italic_100 },
330 },
331 },
332
333 {
334 { condensed_normal_900,condensed_italic_900,expanded_normal_900,expanded_italic_900 },
335 {
336 { condensed_normal_100, condensed_normal_900 },
337 { condensed_normal_900, condensed_normal_900 },
338 { condensed_italic_100, condensed_italic_900 },
339 { condensed_italic_900, condensed_italic_900 },
340 { expanded_normal_100, expanded_normal_900 },
341 { expanded_normal_900, expanded_normal_900 },
342 { expanded_italic_100, expanded_italic_900 },
343 { expanded_italic_900, expanded_italic_900 },
344 },
345 },
346
347 {
348 { condensed_normal_100,condensed_normal_900,expanded_normal_100,expanded_normal_900 },
349 {
350 { condensed_normal_100, condensed_normal_100 },
351 { condensed_normal_900, condensed_normal_900 },
352 { condensed_italic_100, condensed_normal_100 },
353 { condensed_italic_900, condensed_normal_900 },
354 { expanded_normal_100, expanded_normal_100 },
355 { expanded_normal_900, expanded_normal_900 },
356 { expanded_italic_100, expanded_normal_100 },
357 { expanded_italic_900, expanded_normal_900 },
358 },
359 },
360
361 {
362 { condensed_normal_100,expanded_normal_100 },
363 {
364 { condensed_normal_100, condensed_normal_100 },
365 { condensed_normal_900, condensed_normal_100 },
366 { condensed_italic_100, condensed_normal_100 },
367 { condensed_italic_900, condensed_normal_100 },
368 { expanded_normal_100, expanded_normal_100 },
369 { expanded_normal_900, expanded_normal_100 },
370 { expanded_italic_100, expanded_normal_100 },
371 { expanded_italic_900, expanded_normal_100 },
372 },
373 },
374
375 {
376 { condensed_normal_900,expanded_normal_900 },
377 {
378 { condensed_normal_100, condensed_normal_900 },
379 { condensed_normal_900, condensed_normal_900 },
380 { condensed_italic_100, condensed_normal_900 },
381 { condensed_italic_900, condensed_normal_900 },
382 { expanded_normal_100, expanded_normal_900 },
383 { expanded_normal_900, expanded_normal_900 },
384 { expanded_italic_100, expanded_normal_900 },
385 { expanded_italic_900, expanded_normal_900 },
386 },
387 },
388
389 {
390 { condensed_italic_100,condensed_italic_900,expanded_italic_100,expanded_italic_900 },
391 {
392 { condensed_normal_100, condensed_italic_100 },
393 { condensed_normal_900, condensed_italic_900 },
394 { condensed_italic_100, condensed_italic_100 },
395 { condensed_italic_900, condensed_italic_900 },
396 { expanded_normal_100, expanded_italic_100 },
397 { expanded_normal_900, expanded_italic_900 },
398 { expanded_italic_100, expanded_italic_100 },
399 { expanded_italic_900, expanded_italic_900 },
400 },
401 },
402
403 {
404 { condensed_italic_100,expanded_italic_100 },
405 {
406 { condensed_normal_100, condensed_italic_100 },
407 { condensed_normal_900, condensed_italic_100 },
408 { condensed_italic_100, condensed_italic_100 },
409 { condensed_italic_900, condensed_italic_100 },
410 { expanded_normal_100, expanded_italic_100 },
411 { expanded_normal_900, expanded_italic_100 },
412 { expanded_italic_100, expanded_italic_100 },
413 { expanded_italic_900, expanded_italic_100 },
414 },
415 },
416
417 {
418 { condensed_italic_900,expanded_italic_900 },
419 {
420 { condensed_normal_100, condensed_italic_900 },
421 { condensed_normal_900, condensed_italic_900 },
422 { condensed_italic_100, condensed_italic_900 },
423 { condensed_italic_900, condensed_italic_900 },
424 { expanded_normal_100, expanded_italic_900 },
425 { expanded_normal_900, expanded_italic_900 },
426 { expanded_italic_100, expanded_italic_900 },
427 { expanded_italic_900, expanded_italic_900 },
428 },
429 },
430
431 {
432 { condensed_normal_100,condensed_normal_900,condensed_italic_100,condensed_italic_900 },
433 {
434 { condensed_normal_100, condensed_normal_100 },
435 { condensed_normal_900, condensed_normal_900 },
436 { condensed_italic_100, condensed_italic_100 },
437 { condensed_italic_900, condensed_italic_900 },
438 { expanded_normal_100, condensed_normal_100 },
439 { expanded_normal_900, condensed_normal_900 },
440 { expanded_italic_100, condensed_italic_100 },
441 { expanded_italic_900, condensed_italic_900 },
442 },
443 },
444
445 {
446 { condensed_normal_100,condensed_italic_100 },
447 {
448 { condensed_normal_100, condensed_normal_100 },
449 { condensed_normal_900, condensed_normal_100 },
450 { condensed_italic_100, condensed_italic_100 },
451 { condensed_italic_900, condensed_italic_100 },
452 { expanded_normal_100, condensed_normal_100 },
453 { expanded_normal_900, condensed_normal_100 },
454 { expanded_italic_100, condensed_italic_100 },
455 { expanded_italic_900, condensed_italic_100 },
456 },
457 },
458
459 {
460 { condensed_normal_900,condensed_italic_900 },
461 {
462 { condensed_normal_100, condensed_normal_900 },
463 { condensed_normal_900, condensed_normal_900 },
464 { condensed_italic_100, condensed_italic_900 },
465 { condensed_italic_900, condensed_italic_900 },
466 { expanded_normal_100, condensed_normal_900 },
467 { expanded_normal_900, condensed_normal_900 },
468 { expanded_italic_100, condensed_italic_900 },
469 { expanded_italic_900, condensed_italic_900 },
470 },
471 },
472
473 {
474 { condensed_normal_100,condensed_normal_900 },
475 {
476 { condensed_normal_100, condensed_normal_100 },
477 { condensed_normal_900, condensed_normal_900 },
478 { condensed_italic_100, condensed_normal_100 },
479 { condensed_italic_900, condensed_normal_900 },
480 { expanded_normal_100, condensed_normal_100 },
481 { expanded_normal_900, condensed_normal_900 },
482 { expanded_italic_100, condensed_normal_100 },
483 { expanded_italic_900, condensed_normal_900 },
484 },
485 },
486
487 {
488 { condensed_normal_100 },
489 {
490 { condensed_normal_100, condensed_normal_100 },
491 { condensed_normal_900, condensed_normal_100 },
492 { condensed_italic_100, condensed_normal_100 },
493 { condensed_italic_900, condensed_normal_100 },
494 { expanded_normal_100, condensed_normal_100 },
495 { expanded_normal_900, condensed_normal_100 },
496 { expanded_italic_100, condensed_normal_100 },
497 { expanded_italic_900, condensed_normal_100 },
498 },
499 },
500
501 {
502 { condensed_normal_900 },
503 {
504 { condensed_normal_100, condensed_normal_900 },
505 { condensed_normal_900, condensed_normal_900 },
506 { condensed_italic_100, condensed_normal_900 },
507 { condensed_italic_900, condensed_normal_900 },
508 { expanded_normal_100, condensed_normal_900 },
509 { expanded_normal_900, condensed_normal_900 },
510 { expanded_italic_100, condensed_normal_900 },
511 { expanded_italic_900, condensed_normal_900 },
512 },
513 },
514
515 {
516 { condensed_italic_100,condensed_italic_900 },
517 {
518 { condensed_normal_100, condensed_italic_100 },
519 { condensed_normal_900, condensed_italic_900 },
520 { condensed_italic_100, condensed_italic_100 },
521 { condensed_italic_900, condensed_italic_900 },
522 { expanded_normal_100, condensed_italic_100 },
523 { expanded_normal_900, condensed_italic_900 },
524 { expanded_italic_100, condensed_italic_100 },
525 { expanded_italic_900, condensed_italic_900 },
526 },
527 },
528
529 {
530 { condensed_italic_100 },
531 {
532 { condensed_normal_100, condensed_italic_100 },
533 { condensed_normal_900, condensed_italic_100 },
534 { condensed_italic_100, condensed_italic_100 },
535 { condensed_italic_900, condensed_italic_100 },
536 { expanded_normal_100, condensed_italic_100 },
537 { expanded_normal_900, condensed_italic_100 },
538 { expanded_italic_100, condensed_italic_100 },
539 { expanded_italic_900, condensed_italic_100 },
540 },
541 },
542
543 {
544 { condensed_italic_900 },
545 {
546 { condensed_normal_100, condensed_italic_900 },
547 { condensed_normal_900, condensed_italic_900 },
548 { condensed_italic_100, condensed_italic_900 },
549 { condensed_italic_900, condensed_italic_900 },
550 { expanded_normal_100, condensed_italic_900 },
551 { expanded_normal_900, condensed_italic_900 },
552 { expanded_italic_100, condensed_italic_900 },
553 { expanded_italic_900, condensed_italic_900 },
554 },
555 },
556
557 {
558 { expanded_normal_100,expanded_normal_900,
559 expanded_italic_100,expanded_italic_900 },
560 {
561 { condensed_normal_100, expanded_normal_100 },
562 { condensed_normal_900, expanded_normal_900 },
563 { condensed_italic_100, expanded_italic_100 },
564 { condensed_italic_900, expanded_italic_900 },
565 { condensed_obliqu_100, expanded_italic_100 },
566 { condensed_obliqu_900, expanded_italic_900 },
567 { expanded_normal_100, expanded_normal_100 },
568 { expanded_normal_900, expanded_normal_900 },
569 { expanded_italic_100, expanded_italic_100 },
570 { expanded_italic_900, expanded_italic_900 },
571 { expanded_obliqu_100, expanded_italic_100 },
572 { expanded_obliqu_900, expanded_italic_900 },
573 },
574 },
575
576 {
577 { expanded_normal_100,expanded_italic_100 },
578 {
579 { condensed_normal_100, expanded_normal_100 },
580 { condensed_normal_900, expanded_normal_100 },
581 { condensed_italic_100, expanded_italic_100 },
582 { condensed_italic_900, expanded_italic_100 },
583 { expanded_normal_100, expanded_normal_100 },
584 { expanded_normal_900, expanded_normal_100 },
585 { expanded_italic_100, expanded_italic_100 },
586 { expanded_italic_900, expanded_italic_100 },
587 },
588 },
589
590 {
591 { expanded_normal_900,expanded_italic_900 },
592 {
593 { condensed_normal_100, expanded_normal_900 },
594 { condensed_normal_900, expanded_normal_900 },
595 { condensed_italic_100, expanded_italic_900 },
596 { condensed_italic_900, expanded_italic_900 },
597 { expanded_normal_100, expanded_normal_900 },
598 { expanded_normal_900, expanded_normal_900 },
599 { expanded_italic_100, expanded_italic_900 },
600 { expanded_italic_900, expanded_italic_900 },
601 },
602 },
603
604 {
605 { expanded_normal_100,expanded_normal_900 },
606 {
607 { condensed_normal_100, expanded_normal_100 },
608 { condensed_normal_900, expanded_normal_900 },
609 { condensed_italic_100, expanded_normal_100 },
610 { condensed_italic_900, expanded_normal_900 },
611 { expanded_normal_100, expanded_normal_100 },
612 { expanded_normal_900, expanded_normal_900 },
613 { expanded_italic_100, expanded_normal_100 },
614 { expanded_italic_900, expanded_normal_900 },
615 },
616 },
617
618 {
619 { expanded_normal_100 },
620 {
621 { condensed_normal_100, expanded_normal_100 },
622 { condensed_normal_900, expanded_normal_100 },
623 { condensed_italic_100, expanded_normal_100 },
624 { condensed_italic_900, expanded_normal_100 },
625 { expanded_normal_100, expanded_normal_100 },
626 { expanded_normal_900, expanded_normal_100 },
627 { expanded_italic_100, expanded_normal_100 },
628 { expanded_italic_900, expanded_normal_100 },
629 },
630 },
631
632 {
633 { expanded_normal_900 },
634 {
635 { condensed_normal_100, expanded_normal_900 },
636 { condensed_normal_900, expanded_normal_900 },
637 { condensed_italic_100, expanded_normal_900 },
638 { condensed_italic_900, expanded_normal_900 },
639 { expanded_normal_100, expanded_normal_900 },
640 { expanded_normal_900, expanded_normal_900 },
641 { expanded_italic_100, expanded_normal_900 },
642 { expanded_italic_900, expanded_normal_900 },
643 },
644 },
645
646 {
647 { expanded_italic_100,expanded_italic_900 },
648 {
649 { condensed_normal_100, expanded_italic_100 },
650 { condensed_normal_900, expanded_italic_900 },
651 { condensed_italic_100, expanded_italic_100 },
652 { condensed_italic_900, expanded_italic_900 },
653 { expanded_normal_100, expanded_italic_100 },
654 { expanded_normal_900, expanded_italic_900 },
655 { expanded_italic_100, expanded_italic_100 },
656 { expanded_italic_900, expanded_italic_900 },
657 },
658 },
659
660 {
661 { expanded_italic_100 },
662 {
663 { condensed_normal_100, expanded_italic_100 },
664 { condensed_normal_900, expanded_italic_100 },
665 { condensed_italic_100, expanded_italic_100 },
666 { condensed_italic_900, expanded_italic_100 },
667 { expanded_normal_100, expanded_italic_100 },
668 { expanded_normal_900, expanded_italic_100 },
669 { expanded_italic_100, expanded_italic_100 },
670 { expanded_italic_900, expanded_italic_100 },
671 },
672 },
673
674 {
675 { expanded_italic_900 },
676 {
677 { condensed_normal_100, expanded_italic_900 },
678 { condensed_normal_900, expanded_italic_900 },
679 { condensed_italic_100, expanded_italic_900 },
680 { condensed_italic_900, expanded_italic_900 },
681 { expanded_normal_100, expanded_italic_900 },
682 { expanded_normal_900, expanded_italic_900 },
683 { expanded_italic_100, expanded_italic_900 },
684 { expanded_italic_900, expanded_italic_900 },
685 },
686 },
687
688 {
689 { normal_normal_100, normal_normal_900 },
690 {
691 { normal_normal_300, normal_normal_100 },
692 { normal_normal_400, normal_normal_100 },
693 { normal_normal_500, normal_normal_100 },
694 { normal_normal_600, normal_normal_900 },
695 },
696 },
697
698 {
699 { normal_normal_100, normal_normal_400, normal_normal_900 },
700 {
701 { normal_normal_300, normal_normal_100 },
702 { normal_normal_400, normal_normal_400 },
703 { normal_normal_500, normal_normal_400 },
704 { normal_normal_600, normal_normal_900 },
705 },
706 },
707
708 {
709 { normal_normal_100, normal_normal_500, normal_normal_900 },
710 {
711 { normal_normal_300, normal_normal_100 },
712 { normal_normal_400, normal_normal_500 },
713 { normal_normal_500, normal_normal_500 },
714 { normal_normal_600, normal_normal_900 },
715 },
716 },
717
718 {
719 { },
720 {
721 { normal_normal_300, invalidFontStyle },
722 { normal_normal_400, invalidFontStyle },
723 { normal_normal_500, invalidFontStyle },
724 { normal_normal_600, invalidFontStyle },
725 },
726 },
727 {
728 { expanded_normal_100,expanded_normal_900,
729 expanded_italic_100,expanded_italic_900,
730 expanded_obliqu_100,expanded_obliqu_900, },
731 {
732 { condensed_normal_100, expanded_normal_100 },
733 { condensed_normal_900, expanded_normal_900 },
734 { condensed_italic_100, expanded_italic_100 },
735 { condensed_italic_900, expanded_italic_900 },
736 { condensed_obliqu_100, expanded_obliqu_100 },
737 { condensed_obliqu_900, expanded_obliqu_900 },
738 { expanded_normal_100, expanded_normal_100 },
739 { expanded_normal_900, expanded_normal_900 },
740 { expanded_italic_100, expanded_italic_100 },
741 { expanded_italic_900, expanded_italic_900 },
742 { expanded_obliqu_100, expanded_obliqu_100 },
743 { expanded_obliqu_900, expanded_obliqu_900 },
744 },
745 },
746 {
747 { expanded_normal_100,expanded_normal_900,
748 expanded_obliqu_100,expanded_obliqu_900, },
749 {
750 { condensed_normal_100, expanded_normal_100 },
751 { condensed_normal_900, expanded_normal_900 },
752 { condensed_italic_100, expanded_obliqu_100 },
753 { condensed_italic_900, expanded_obliqu_900 },
754 { condensed_obliqu_100, expanded_obliqu_100 },
755 { condensed_obliqu_900, expanded_obliqu_900 },
756 { expanded_normal_100, expanded_normal_100 },
757 { expanded_normal_900, expanded_normal_900 },
758 { expanded_italic_100, expanded_obliqu_100 },
759 { expanded_italic_900, expanded_obliqu_900 },
760 { expanded_obliqu_100, expanded_obliqu_100 },
761 { expanded_obliqu_900, expanded_obliqu_900 },
762 },
763 },
764 {
765 { expanded_italic_100,expanded_italic_900,
766 expanded_obliqu_100,expanded_obliqu_900, },
767 {
768 { condensed_normal_100, expanded_obliqu_100 },
769 { condensed_normal_900, expanded_obliqu_900 },
770 { condensed_italic_100, expanded_italic_100 },
771 { condensed_italic_900, expanded_italic_900 },
772 { condensed_obliqu_100, expanded_obliqu_100 },
773 { condensed_obliqu_900, expanded_obliqu_900 },
774 { expanded_normal_100, expanded_obliqu_100 },
775 { expanded_normal_900, expanded_obliqu_900 },
776 { expanded_italic_100, expanded_italic_100 },
777 { expanded_italic_900, expanded_italic_900 },
778 { expanded_obliqu_100, expanded_obliqu_100 },
779 { expanded_obliqu_900, expanded_obliqu_900 },
780 },
781 },
782 };
783
785 for (
const StyleSetTest::Case& testCase :
test.cases) {
787 if (typeface) {
789 } else {
791 }
792 }
793 }
794}
static float next(float f)
static void sk_bzero(void *buffer, size_t size)
sk_sp< T > sk_ref_sp(T *obj)
sk_sp< SkTypeface > matchStyleCSS3(const SkFontStyle &pattern)
virtual sk_sp< SkTypeface > createTypeface(int index)=0
virtual sk_sp< SkTypeface > matchStyle(const SkFontStyle &pattern)=0
virtual void getStyle(int index, SkFontStyle *, SkString *style)=0
static std::unique_ptr< SkScalerContext > MakeEmpty(sk_sp< SkTypeface > typeface, const SkScalerContextEffects &effects, const SkDescriptor *desc)
SkFontStyle fontStyle() const
void getGlyphToUnicodeMap(SkUnichar *glyphToUnicode) const override
bool onGlyphMaskNeedsCurrentColor() const override
void onCharsToGlyphs(const SkUnichar *chars, int count, SkGlyphID glyphs[]) const override
int onGetVariationDesignPosition(SkFontArguments::VariationPosition::Coordinate coordinates[], int coordinateCount) const override
SkTypeface::LocalizedStrings * onCreateFamilyNameIterator() const override
int onGetUPEM() const override
void getPostScriptGlyphNames(SkString *) const override
bool onGetPostScriptName(SkString *) const override
std::unique_ptr< SkAdvancedTypefaceMetrics > onGetAdvancedMetrics() const override
void onGetFamilyName(SkString *familyName) const override
int onGetVariationDesignParameters(SkFontParameters::Variation::Axis parameters[], int parameterCount) const override
int onGetTableTags(SkFontTableTag tags[]) const override
std::unique_ptr< SkStreamAsset > onOpenStream(int *ttcIndex) const override
size_t onGetTableData(SkFontTableTag tag, size_t offset, size_t length, void *data) const override
std::unique_ptr< SkScalerContext > onCreateScalerContext(const SkScalerContextEffects &, const SkDescriptor *desc) const override
void onFilterRec(SkScalerContextRec *rec) const override
sk_sp< SkTypeface > onMakeClone(const SkFontArguments &args) const override
int onCountGlyphs() const override
void onGetFontDescriptor(SkFontDescriptor *desc, bool *serialize) const override
G_BEGIN_DECLS G_MODULE_EXPORT FlValue * args