KaykCaputo / KaykCaputo/OpenCifra

Implement adjustable font size for lyrics

Open
#7 0 comments 0 reactions 0 assignees View on GitHub
accessibility enhancement good first issue
Dominant language
Python
Stars
6
Forks
1
PR merge metrics
No merged PRs in 30d

Description

## Description
Allow users to adjust the font size of lyrics and chords for better readability. This improves accessibility for users with visual impairments or different screen sizes.

## Proposed UI
Add options in the lyrics screen:
- 🔍➕ Increase font size
- 🔍➖ Decrease font size
- Min size: 8dp, Max size: 16dp, Default: 9dp

## Implementation
1. Store font size preference using Kivy's `App.user_data_dir`
2. Update the `create_label_chunk()` method to use dynamic font size
3. Add font size controls to the top bar or as floating action buttons

```python
from kivy.storage.jsonstore import JsonStore

class OpenCifraApp(MDApp):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.settings = JsonStore('settings.json')
self.font_size = self.settings.get('font_size', {}).get('value', 9)

def increase_font_size(self):
self.font_size = min(16, self.font_size + 1)
self.settings.put('font_size', value=self.font_size)
self.refresh_lyrics()

def decrease_font_size(self):
self.font_size = max(8, self.font_size - 1)
self.settings.put('font_size', value=self.font_size)
self.refresh_lyrics()
```

## Benefits
- Better accessibility
- Improved user experience across different devices
- Persistent user preferences

Contributor guide

No contributing guide indexed for this repository

Research direction

Start at the lyrics screen and the create_label_chunk() method, then inspect how the top bar or floating action buttons are built. Use Kivy's App.user_data_dir for the persistent setting, and consider the work complete when controls change lyric and chord sizes between 8dp and 16dp and the selected size survives a restart.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
accessibility, mobile
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.