docs: @Override protected void resizeDynamicText() {
          double maxWidth = width - size * 0.1;
          double fontSize = size * textSize.factor;
  
          boolean customFontEnabled = tile.isCustomFontEnabled();
          Font    customFont        = tile.getCustomFont();
          Font    font              = (customFontEnabled && customFont != null) ? Font.font(customFont.getFamily(), fontSize) : Fonts.latoRegular(fontSize);
  
          titleText.setFont(font);
          titleText.setText(tile.getTitle());
          if (titleText.getLayoutBounds().getWidth() > maxWidth) { Helper.adjustTextSize(titleText, maxWidth, fontSize); }
          switch(tile.getTitleAlignment()) {
              default    :
              case LEFT  : titleText.relocate(size * 0.05, size * 0.05); break;
              case CENTER: titleText.relocate((width - titleText.getLayoutBounds().getWidth()) * 0.5, size * 0.05); break;
              case RIGHT : titleText.relocate(width - (size * 0.05) - titleText.getLayoutBounds().getWidth(), size * 0.05); break;
          }
          titleText.setY(size * 0.05);
  
          maxWidth = width - size * 0.8;
          amPmText.setFont(font);
          amPmText.setText(tile.getTime().get(ChronoField.AMPM_OF_DAY) == 0 ? "AM" : "PM");
          Helper.adjustTextSize(amPmText, maxWidth, fontSize);
          amPmText.setX((width - amPmText.getLayoutBounds().getWidth()) * 0.5);
          amPmText.setY(height * 0.5 - size * 0.1);
  
          maxWidth = width - size * 0.4;
          dateText.setFont(font);
          if (dateText.getLayoutBounds().getWidth() > maxWidth) { Helper.adjustTextSize(dateText, maxWidth, fontSize); }
          dateText.setX((width - dateText.getLayoutBounds().getWidth()) * 0.5);
          dateText.setY(height * 0.5 + size * 0.15);
  
          maxWidth = width - size * 0.1;
  
          text.setText(tile.getText());
          text.setFont(font);
          if (text.getLayoutBounds().getWidth() > maxWidth) { Helper.adjustTextSize(text, maxWidth, fontSize); }
          switch(tile.getTextAlignment()) {
              default    :
              case LEFT  : text.setX(size * 0.05); break;
              case CENTER: text.setX((width - text.getLayoutBounds().getWidth()) * 0.5); break;
              case RIGHT : text.setX(width - (size * 0.05) - text.getLayoutBounds().getWidth()); break;
          }
          text.setY(height - size * 0.05);
      }